From e06b1c65bc576a9b239841cbe3a8a8c2d6a8d09f Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 31 Jan 2012 09:00:48 -0700 Subject: [PATCH] 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 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45423 --- src/mesa/main/arrayobj.c | 6 +++++- src/mesa/main/mtypes.h | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c index d9ae187bbbd..c7584d903db 100644 --- a/src/mesa/main/arrayobj.c +++ b/src/mesa/main/arrayobj.c @@ -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; } } diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 99dcb389b62..d3001d35c69 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -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]; -- 2.30.2