From: Marek Olšák <marek.ol...@amd.com> RelativeOffset should actually be uint, not intptr, according to ARB_vertex_attrib_binding.
gl_vertex_array_object: 3632 -> 3112 bytes --- src/mesa/main/mtypes.h | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 6ddef05..773fa57 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1492,32 +1492,33 @@ struct gl_vertex_array * * Note that the Stride field corresponds to VERTEX_ATTRIB_ARRAY_STRIDE * and is only present for backwards compatibility reasons. * Rendering always uses VERTEX_BINDING_STRIDE. * The gl*Pointer() functions will set VERTEX_ATTRIB_ARRAY_STRIDE * and VERTEX_BINDING_STRIDE to the same value, while * glBindVertexBuffer() will only set VERTEX_BINDING_STRIDE. */ struct gl_array_attributes { - GLint Size; /**< Components per element (1,2,3,4) */ + GLuint RelativeOffset; /**< Offset of the first element relative to the binding offset */ GLenum16 Type; /**< Datatype: GL_FLOAT, GL_INT, etc */ GLenum16 Format; /**< Default: GL_RGBA, but may be GL_BGRA */ - GLsizei Stride; /**< Stride as specified with gl*Pointer() */ - const GLubyte *Ptr; /**< Points to client array data. Not used when a VBO is bound */ - GLintptr RelativeOffset; /**< Offset of the first element relative to the binding offset */ + GLshort Stride; /**< Stride as specified with gl*Pointer() */ + GLubyte Size; /**< Components per element (1,2,3,4) */ GLboolean Enabled; /**< Whether the array is enabled */ GLboolean Normalized; /**< Fixed-point values are normalized when converted to floats */ GLboolean Integer; /**< Fixed-point values are not converted to floats */ GLboolean Doubles; /**< double precision values are not converted to floats */ GLuint _ElementSize; /**< Size of each element in bytes */ GLuint BufferBindingIndex; /**< Vertex buffer binding */ + + const GLubyte *Ptr; /**< Points to client array data. Not used when a VBO is bound */ }; /** * This describes the buffer object used for a vertex array (or * multiple vertex arrays). If BufferObj points to the default/null * buffer object, then the vertex array lives in user memory and not a VBO. */ struct gl_vertex_buffer_binding { @@ -1536,38 +1537,36 @@ struct gl_vertex_buffer_binding struct gl_vertex_array_object { /** Name of the VAO as received from glGenVertexArray. */ GLuint Name; GLint RefCount; GLchar *Label; /**< GL_KHR_debug */ /** - * Has this array object been bound? - */ - GLboolean EverBound; - - /** * Derived vertex attribute arrays * * This is a legacy data structure created from gl_vertex_attrib_array and * gl_vertex_buffer_binding, for compatibility with existing driver code. */ struct gl_vertex_array _VertexAttrib[VERT_ATTRIB_MAX]; /** Vertex attribute arrays */ struct gl_array_attributes VertexAttrib[VERT_ATTRIB_MAX]; /** Vertex buffer bindings */ struct gl_vertex_buffer_binding BufferBinding[VERT_ATTRIB_MAX]; + /** Has this array object been bound? */ + GLboolean EverBound; + /** Mask indicating which vertex arrays have vertex buffer associated. */ GLbitfield VertexAttribBufferMask; /** Mask of VERT_BIT_* values indicating which arrays are enabled */ GLbitfield _Enabled; /** Mask of VERT_BIT_* values indicating changed/dirty arrays */ GLbitfield NewArrays; /** The index buffer (also known as the element array buffer in OpenGL). */ -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev