mesa: Set the gl_array_object::ARBsemantics flag at the right time

With 0963990 the flag was only set when Bind created the object.  In
all cases where ::ARBsemantics could be true, this path never
happened.  Instead, add a _Used flag to track whether a VAO has ever
been bound.  On the first Bind, set the _Used flag, and set the
ARBsemantics flag to the correct value.

NOTE: This is a candidate for release branches.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45423
This commit is contained in:
Ian Romanick
2012-01-31 09:00:48 -07:00
parent af1477b088
commit e06b1c65bc
2 changed files with 10 additions and 1 deletions

View File

@@ -373,6 +373,10 @@ bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
return;
}
save_array_object(ctx, newObj);
}
if (!newObj->_Used) {
/* The "Interactions with APPLE_vertex_array_object" section of the
* GL_ARB_vertex_array_object spec says:
*
@@ -380,7 +384,7 @@ bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
* BindVertexArrayAPPLE, determines the semantic of the object."
*/
newObj->ARBsemantics = genRequired;
save_array_object(ctx, newObj);
newObj->_Used = GL_TRUE;
}
}

View File

@@ -1631,6 +1631,11 @@ struct gl_array_object
*/
GLboolean ARBsemantics;
/**
* Has this array object been bound?
*/
GLboolean _Used;
/** Vertex attribute arrays */
struct gl_client_array VertexAttrib[VERT_ATTRIB_MAX];