<?xml version="1.0"?>
<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">

<!-- Note: no GLX protocol info yet. -->

<OpenGLAPI>

<category name="GL_ARB_vertex_attrib_binding" number="125">

    <function name="BindVertexBuffer" es2="3.1" no_error="true"
              marshal_call_after="if (COMPAT) _mesa_glthread_VertexBuffer(ctx, bindingindex, buffer, offset, stride);">
        <param name="bindingindex" type="GLuint"/>
        <param name="buffer" type="GLuint"/>
        <param name="offset" type="GLintptr"/>
        <param name="stride" type="GLsizei"/>
    </function>

    <function name="VertexAttribFormat" es2="3.1"
              marshal_call_after="if (COMPAT) _mesa_glthread_AttribFormat(ctx, attribindex, MESA_PACK_VFORMAT(type, size, normalized, 0, 0), relativeoffset);">
        <param name="attribindex" type="GLuint"/>
        <param name="size" type="GLint"/>
        <param name="type" type="GLenum"/>
        <param name="normalized" type="GLboolean"/>
        <param name="relativeoffset" type="GLuint"/>
    </function>

    <function name="VertexAttribIFormat" es2="3.1"
              marshal_call_after="if (COMPAT) _mesa_glthread_AttribFormat(ctx, attribindex, MESA_PACK_VFORMAT(type, size, 0, 1, 0), relativeoffset);">
        <param name="attribindex" type="GLuint"/>
        <param name="size" type="GLint"/>
        <param name="type" type="GLenum"/>
        <param name="relativeoffset" type="GLuint"/>
    </function>

    <function name="VertexAttribLFormat"
              marshal_call_after="if (COMPAT) _mesa_glthread_AttribFormat(ctx, attribindex, MESA_PACK_VFORMAT(type, size, 0, 0, 1), relativeoffset);">
        <param name="attribindex" type="GLuint"/>
        <param name="size" type="GLint"/>
        <param name="type" type="GLenum"/>
        <param name="relativeoffset" type="GLuint"/>
    </function>

    <function name="VertexAttribBinding" es2="3.1" no_error="true"
              marshal_call_after="if (COMPAT) _mesa_glthread_AttribBinding(ctx, attribindex, bindingindex);">
        <param name="attribindex" type="GLuint"/>
        <param name="bindingindex" type="GLuint"/>
    </function>

    <function name="VertexBindingDivisor" es2="3.1" no_error="true"
              marshal_call_after="if (COMPAT) _mesa_glthread_BindingDivisor(ctx, bindingindex, divisor);">
        <param name="bindingindex" type="GLuint"/>
        <param name="divisor" type="GLuint"/>
    </function>

    <function name="VertexArrayBindVertexBufferEXT" deprecated="3.1"
              marshal_call_after="_mesa_glthread_DSAVertexBuffer(ctx, vaobj, bindingindex, buffer, offset, stride);">
        <param name="vaobj" type="GLuint"/>
        <param name="bindingindex" type="GLuint"/>
        <param name="buffer" type="GLuint"/>
        <param name="offset" type="GLintptr"/>
        <param name="stride" type="GLsizei"/>
    </function>

    <function name="VertexArrayVertexAttribFormatEXT" deprecated="3.1"
              marshal_call_after="_mesa_glthread_DSAAttribFormat(ctx, vaobj, attribindex, MESA_PACK_VFORMAT(type, size, normalized, 0, 0), relativeoffset);">
        <param name="vaobj" type="GLuint"/>
        <param name="attribindex" type="GLuint"/>
        <param name="size" type="GLint"/>
        <param name="type" type="GLenum"/>
        <param name="normalized" type="GLboolean"/>
        <param name="relativeoffset" type="GLuint"/>
    </function>

    <function name="VertexArrayVertexAttribIFormatEXT" deprecated="3.1"
              marshal_call_after="_mesa_glthread_DSAAttribFormat(ctx, vaobj, attribindex, MESA_PACK_VFORMAT(type, size, 0, 1, 0), relativeoffset);">
        <param name="vaobj" type="GLuint"/>
        <param name="attribindex" type="GLuint"/>
        <param name="size" type="GLint"/>
        <param name="type" type="GLenum"/>
        <param name="relativeoffset" type="GLuint"/>
    </function>

    <function name="VertexArrayVertexAttribLFormatEXT" deprecated="3.1"
              marshal_call_after="_mesa_glthread_DSAAttribFormat(ctx, vaobj, attribindex, MESA_PACK_VFORMAT(type, size, 0, 0, 1), relativeoffset);">
        <param name="vaobj" type="GLuint"/>
        <param name="attribindex" type="GLuint"/>
        <param name="size" type="GLint"/>
        <param name="type" type="GLenum"/>
        <param name="relativeoffset" type="GLuint"/>
    </function>

    <function name="VertexArrayVertexAttribBindingEXT" deprecated="3.1"
              marshal_call_after="_mesa_glthread_DSAAttribBinding(ctx, vaobj, attribindex, bindingindex);">
        <param name="vaobj" type="GLuint"/>
        <param name="attribindex" type="GLuint"/>
        <param name="bindingindex" type="GLuint"/>
    </function>

    <function name="VertexArrayVertexBindingDivisorEXT" deprecated="3.1"
              marshal_call_after="_mesa_glthread_DSABindingDivisor(ctx, vaobj, bindingindex, divisor);">
        <param name="vaobj" type="GLuint"/>
        <param name="bindingindex" type="GLuint"/>
        <param name="divisor" type="GLuint"/>
    </function>

    <enum name="VERTEX_ATTRIB_BINDING" value="0x82D4"/>
    <enum name="VERTEX_ATTRIB_RELATIVE_OFFSET" value="0x82D5"/>
    <enum name="VERTEX_BINDING_DIVISOR" value="0x82D6"/>
    <enum name="VERTEX_BINDING_OFFSET" value="0x82D7"/>
    <enum name="VERTEX_BINDING_STRIDE" value="0x82D8"/>
    <enum name="MAX_VERTEX_ATTRIB_RELATIVE_OFFSET" value="0x82D9"/>
    <enum name="MAX_VERTEX_ATTRIB_BINDINGS" value="0x82DA"/>
    <enum name="MAX_VERTEX_ATTRIB_STRIDE" value="0x82E5"/>

</category>
</OpenGLAPI>
