summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2012-12-19 20:20:34 -0800
committerMatt Turner <[email protected]>2012-12-21 20:03:30 -0800
commita585b8f3a6681d1138ed1a33ed4c3195a53c2a73 (patch)
treedab74830d4dc8ae2943638debe1137c4e28a6ca0
parentfd93d55141f11069fb76a9b377ad1af88d0ecdd3 (diff)
Make IsVertexArray() return false before BindVertexArray()
Rename existing _Used flag to EverBound. The GL 4.3 and ES 3.0 specs say These names are marked as used, for the purposes of GenVertexArrays only, but they do not acquire array state until they are first bound. This also affects Apple VAOs, which is fine since the APPLE_vertex_array_object spec says A vertex array object is created by binding an unused name. This binding is accomplished by calling BindVertexArrayAPPLE with id set to the name of the new vertex array object. Fixes arb_vertex_array_object_isvertexarray. Reviewed-by: Jordan Justen <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/mesa/main/arrayobj.c8
-rw-r--r--src/mesa/main/mtypes.h2
2 files changed, 6 insertions, 4 deletions
diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c
index a909e0effaa..032af43b586 100644
--- a/src/mesa/main/arrayobj.c
+++ b/src/mesa/main/arrayobj.c
@@ -373,7 +373,7 @@ bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
save_array_object(ctx, newObj);
}
- if (!newObj->_Used) {
+ if (!newObj->EverBound) {
/* The "Interactions with APPLE_vertex_array_object" section of the
* GL_ARB_vertex_array_object spec says:
*
@@ -381,7 +381,7 @@ bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
* BindVertexArrayAPPLE, determines the semantic of the object."
*/
newObj->ARBsemantics = genRequired;
- newObj->_Used = GL_TRUE;
+ newObj->EverBound = GL_TRUE;
}
}
@@ -551,6 +551,8 @@ _mesa_IsVertexArray( GLuint id )
return GL_FALSE;
obj = lookup_arrayobj(ctx, id);
+ if (obj == NULL)
+ return GL_FALSE;
- return (obj != NULL) ? GL_TRUE : GL_FALSE;
+ return obj->EverBound;
}
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index a14520fb23c..7c513a1c522 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1595,7 +1595,7 @@ struct gl_array_object
/**
* Has this array object been bound?
*/
- GLboolean _Used;
+ GLboolean EverBound;
/** Vertex attribute arrays */
struct gl_client_array VertexAttrib[VERT_ATTRIB_MAX];