I didn't like how the getters looked in the code (I have a hard enough time keeping the ArrayObj members straight without moving some of their names farther from their usage), so I tried this cleanup. It is intended to be squashed with "[PATCH 05/11] mesa: Add ARB_vertex_attrib_binding" --- src/mesa/main/varray.c | 50 +++++++++++++++----------------------------------- 1 file changed, 15 insertions(+), 35 deletions(-)
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index 93581ea..f8837e8 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -101,23 +101,6 @@ type_to_bit(const struct gl_context *ctx, GLenum type) } } - -static inline struct gl_vertex_attrib_array * -gl_vertex_attrib_array(struct gl_context *ctx, GLuint index) -{ - ASSERT(index < Elements(arrayObj->VertexAttrib)); - return &ctx->Array.ArrayObj->VertexAttrib[index]; -} - - -static inline struct gl_vertex_buffer_binding * -gl_vertex_buffer_binding(struct gl_context *ctx, GLuint index) -{ - ASSERT(index < Elements(arrayObj->VertexBinding)); - return &ctx->Array.ArrayObj->VertexBinding[index]; -} - - /** * Sets the VertexBinding field in the vertex attribute given by attribIndex. */ @@ -125,24 +108,20 @@ static void vertex_attrib_binding(struct gl_context *ctx, GLuint attribIndex, GLuint bindingIndex) { - struct gl_vertex_attrib_array *array = - gl_vertex_attrib_array(ctx, attribIndex); + struct gl_array_object *arrayObj = ctx->Array.ArrayObj; + struct gl_vertex_attrib_array *array = &arrayObj->VertexAttrib[attribIndex]; if (array->VertexBinding != bindingIndex) { const GLbitfield64 array_bit = VERT_BIT(attribIndex); - struct gl_vertex_buffer_binding *new_binding = - gl_vertex_buffer_binding(ctx, bindingIndex); - struct gl_vertex_buffer_binding *old_binding = - gl_vertex_buffer_binding(ctx, array->VertexBinding); FLUSH_VERTICES(ctx, _NEW_ARRAY); - array->VertexBinding = bindingIndex; + arrayObj->VertexBinding[array->VertexBinding]._BoundArrays &= ~array_bit; + arrayObj->VertexBinding[bindingIndex]._BoundArrays |= array_bit; - old_binding->_BoundArrays &= ~array_bit; - new_binding->_BoundArrays |= array_bit; + array->VertexBinding = bindingIndex; - ctx->Array.ArrayObj->NewArrays |= array_bit; + arrayObj->NewArrays |= array_bit; } } @@ -156,8 +135,8 @@ bind_vertex_buffer(struct gl_context *ctx, GLuint index, struct gl_buffer_object *vbo, GLintptr offset, GLsizei stride) { - struct gl_vertex_buffer_binding *binding = - gl_vertex_buffer_binding(ctx, index); + struct gl_array_object *arrayObj = ctx->Array.ArrayObj; + struct gl_vertex_buffer_binding *binding = &arrayObj->VertexBinding[index]; if (binding->BufferObj != vbo || binding->Offset != offset || @@ -170,7 +149,7 @@ bind_vertex_buffer(struct gl_context *ctx, GLuint index, binding->Offset = offset; binding->Stride = stride; - ctx->Array.ArrayObj->NewArrays |= binding->_BoundArrays; + arrayObj->NewArrays |= binding->_BoundArrays; } } @@ -183,13 +162,14 @@ static void vertex_binding_divisor(struct gl_context *ctx, GLuint bindingIndex, GLuint divisor) { + struct gl_array_object *arrayObj = ctx->Array.ArrayObj; struct gl_vertex_buffer_binding *binding = - gl_vertex_buffer_binding(ctx, bindingIndex); + &arrayObj->VertexBinding[bindingIndex]; if (binding->InstanceDivisor != divisor) { FLUSH_VERTICES(ctx, _NEW_ARRAY); binding->InstanceDivisor = divisor; - ctx->Array.ArrayObj->NewArrays |= binding->_BoundArrays; + arrayObj->NewArrays |= binding->_BoundArrays; } } @@ -336,7 +316,7 @@ update_array_format(struct gl_context *ctx, elementSize = _mesa_bytes_per_vertex_attrib(size, type); assert(elementSize != -1); - array = gl_vertex_attrib_array(ctx, attrib); + array = &ctx->Array.ArrayObj->VertexAttrib[attrib]; array->Size = size; array->Type = type; array->Format = format; @@ -429,7 +409,7 @@ update_array(struct gl_context *ctx, vertex_attrib_binding(ctx, attrib, attrib); /* The Stride and Ptr fields are not set by update_array_format() */ - array = gl_vertex_attrib_array(ctx, attrib); + array = &ctx->Array.ArrayObj->VertexAttrib[attrib]; array->Stride = stride; array->Ptr = (const GLvoid *) ptr; @@ -1404,7 +1384,7 @@ _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset, */ if (offset < 0) { _mesa_error(ctx, GL_INVALID_VALUE, - "glBindVertexBuffer(offset=%d < 0)", offset); + "glBindVertexBuffer(offset=%lld < 0)", (long long)offset); return; } -- 1.8.4.rc3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev