<param name="divisor" type="GLuint"/>
</function>
+ <function name="VertexArrayBindVertexBufferEXT">
+ <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">
+ <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">
+ <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">
+ <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">
+ <param name="vaobj" type="GLuint"/>
+ <param name="attribindex" type="GLuint"/>
+ <param name="bindingindex" type="GLuint"/>
+ </function>
+
+ <function name="VertexArrayVertexBindingDivisorEXT">
+ <param name="vaobj" type="GLuint"/>
+ <param name="attribindex" 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"/>
"TextureBufferRangeEXT": 1589,
"TextureStorage2DMultisampleEXT": 1590,
"TextureStorage3DMultisampleEXT": 1591,
+ "VertexArrayBindVertexBufferEXT": 1592,
+ "VertexArrayVertexAttribFormatEXT": 1593,
+ "VertexArrayVertexAttribIFormatEXT": 1594,
+ "VertexArrayVertexAttribLFormatEXT": 1595,
+ "VertexArrayVertexAttribBindingEXT": 1596,
+ "VertexArrayVertexBindingDivisorEXT": 1597,
}
functions = [
{ "glVertexAttribLFormat", 43, -1 },
{ "glVertexAttribBinding", 43, -1 },
{ "glVertexBindingDivisor", 43, -1 },
-// { "glVertexArrayBindVertexBufferEXT", 43, -1 }, // XXX: Add to xml
-// { "glVertexArrayVertexAttribFormatEXT", 43, -1 }, // XXX: Add to xml
-// { "glVertexArrayVertexAttribIFormatEXT", 43, -1 }, // XXX: Add to xml
-// { "glVertexArrayVertexAttribBindingEXT", 43, -1 }, // XXX: Add to xml
-// { "glVertexArrayVertexBindingDivisorEXT", 43, -1 }, // XXX: Add to xml
+ { "glVertexArrayBindVertexBufferEXT", 43, -1 },
+ { "glVertexArrayVertexAttribFormatEXT", 43, -1 },
+ { "glVertexArrayVertexAttribIFormatEXT", 43, -1 },
+ { "glVertexArrayVertexAttribLFormatEXT", 43, -1 },
+ { "glVertexArrayVertexAttribBindingEXT", 43, -1 },
+ { "glVertexArrayVertexBindingDivisorEXT", 43, -1 },
{ "glFramebufferParameteri", 43, -1 },
{ "glGetFramebufferParameteriv", 43, -1 },
{ "glNamedFramebufferParameteriEXT", 43, -1 },
}
+void GLAPIENTRY
+_mesa_VertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingIndex, GLuint buffer,
+ GLintptr offset, GLsizei stride)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_vertex_array_object *vao;
+ vao = _mesa_lookup_vao_err(ctx, vaobj, true, "glVertexArrayBindVertexBufferEXT");
+ if (!vao)
+ return;
+
+ vertex_array_vertex_buffer_err(ctx, vao, bindingIndex, buffer, offset,
+ stride, "glVertexArrayBindVertexBufferEXT");
+}
+
+
static ALWAYS_INLINE void
vertex_array_vertex_buffers(struct gl_context *ctx,
struct gl_vertex_array_object *vao,
}
+void GLAPIENTRY
+_mesa_VertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribIndex, GLint size,
+ GLenum type, GLboolean normalized,
+ GLuint relativeOffset)
+{
+ vertex_array_attrib_format(vaobj, true, attribIndex, size, type, normalized,
+ GL_FALSE, GL_FALSE, ATTRIB_FORMAT_TYPES_MASK,
+ BGRA_OR_4, relativeOffset,
+ "glVertexArrayVertexAttribFormatEXT");
+}
+
+
void GLAPIENTRY
_mesa_VertexArrayAttribIFormat(GLuint vaobj, GLuint attribIndex,
GLint size, GLenum type,
}
+void GLAPIENTRY
+_mesa_VertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribIndex,
+ GLint size, GLenum type,
+ GLuint relativeOffset)
+{
+ vertex_array_attrib_format(vaobj, true, attribIndex, size, type, GL_FALSE,
+ GL_TRUE, GL_FALSE, ATTRIB_IFORMAT_TYPES_MASK,
+ 4, relativeOffset,
+ "glVertexArrayVertexAttribIFormatEXT");
+}
+
+
void GLAPIENTRY
_mesa_VertexArrayAttribLFormat(GLuint vaobj, GLuint attribIndex,
GLint size, GLenum type,
}
+void GLAPIENTRY
+_mesa_VertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribIndex,
+ GLint size, GLenum type,
+ GLuint relativeOffset)
+{
+ vertex_array_attrib_format(vaobj, true, attribIndex, size, type, GL_FALSE,
+ GL_FALSE, GL_TRUE, ATTRIB_LFORMAT_TYPES_MASK,
+ 4, relativeOffset,
+ "glVertexArrayVertexAttribLFormatEXT");
+}
+
+
static void
vertex_array_attrib_binding(struct gl_context *ctx,
struct gl_vertex_array_object *vao,
}
+void GLAPIENTRY
+_mesa_VertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribIndex, GLuint bindingIndex)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_vertex_array_object *vao;
+ vao = _mesa_lookup_vao_err(ctx, vaobj, true, "glVertexArrayVertexAttribBindingEXT");
+ if (!vao)
+ return;
+
+ vertex_array_attrib_binding(ctx, vao, attribIndex, bindingIndex,
+ "glVertexArrayVertexAttribBindingEXT");
+}
+
+
static void
vertex_array_binding_divisor(struct gl_context *ctx,
struct gl_vertex_array_object *vao,
}
+void GLAPIENTRY
+_mesa_VertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingIndex,
+ GLuint divisor)
+{
+ struct gl_vertex_array_object *vao;
+ GET_CURRENT_CONTEXT(ctx);
+
+ /* The ARB_direct_state_access specification says:
+ *
+ * "An INVALID_OPERATION error is generated by VertexArrayBindingDivisor
+ * if <vaobj> is not [compatibility profile: zero or] the name of an
+ * existing vertex array object."
+ */
+ vao = _mesa_lookup_vao_err(ctx, vaobj, true, "glVertexArrayVertexBindingDivisorEXT");
+ if (!vao)
+ return;
+
+ vertex_array_binding_divisor(ctx, vao, bindingIndex, divisor,
+ "glVertexArrayVertexBindingDivisorEXT");
+}
+
+
void
_mesa_copy_vertex_attrib_array(struct gl_context *ctx,
struct gl_array_attributes *dst,
_mesa_VertexArrayVertexBuffer(GLuint vaobj, GLuint bindingIndex, GLuint buffer,
GLintptr offset, GLsizei stride);
+extern void GLAPIENTRY
+_mesa_VertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingIndex, GLuint buffer,
+ GLintptr offset, GLsizei stride);
+
void GLAPIENTRY
_mesa_BindVertexBuffers_no_error(GLuint first, GLsizei count,
const GLuint *buffers, const GLintptr *offsets,
GLenum type, GLboolean normalized,
GLuint relativeOffset);
+extern void GLAPIENTRY
+_mesa_VertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribIndex, GLint size,
+ GLenum type, GLboolean normalized,
+ GLuint relativeOffset);
+
extern void GLAPIENTRY
_mesa_VertexAttribIFormat(GLuint attribIndex, GLint size, GLenum type,
GLuint relativeOffset);
GLint size, GLenum type,
GLuint relativeOffset);
+extern void GLAPIENTRY
+_mesa_VertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribIndex,
+ GLint size, GLenum type,
+ GLuint relativeOffset);
+
extern void GLAPIENTRY
_mesa_VertexAttribLFormat(GLuint attribIndex, GLint size, GLenum type,
GLuint relativeOffset);
GLint size, GLenum type,
GLuint relativeOffset);
+extern void GLAPIENTRY
+_mesa_VertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribIndex,
+ GLint size, GLenum type,
+ GLuint relativeOffset);
+
void GLAPIENTRY
_mesa_VertexAttribBinding_no_error(GLuint attribIndex, GLuint bindingIndex);
_mesa_VertexArrayAttribBinding(GLuint vaobj, GLuint attribIndex,
GLuint bindingIndex);
+extern void GLAPIENTRY
+_mesa_VertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribIndex,
+ GLuint bindingIndex);
+
void GLAPIENTRY
_mesa_VertexBindingDivisor_no_error(GLuint bindingIndex, GLuint divisor);
_mesa_VertexArrayBindingDivisor(GLuint vaobj, GLuint bindingIndex,
GLuint divisor);
+extern void GLAPIENTRY
+_mesa_VertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingIndex,
+ GLuint divisor);
+
extern void
_mesa_copy_vertex_attrib_array(struct gl_context *ctx,