From: Ian Romanick <[email protected]> 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 <[email protected]> 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 deletions(-) diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c index d9ae187..c7584d9 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 e8a9d42..5d9c7e8 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]; -- 1.7.6.4 _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
