summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mesa/main/api_arrayelt.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c
index b3c33f2a79..49aa427d1a 100644
--- a/src/mesa/main/api_arrayelt.c
+++ b/src/mesa/main/api_arrayelt.c
@@ -1076,6 +1076,7 @@ static void check_vbo( AEcontext *actx,
for (i = 0; i < actx->nr_vbos; i++)
if (actx->vbo[i] == vbo)
return;
+ assert(actx->nr_vbos < VERT_ATTRIB_MAX);
actx->vbo[actx->nr_vbos++] = vbo;
}
}
@@ -1094,6 +1095,8 @@ static void _ae_update_state( GLcontext *ctx )
AEattrib *at = actx->attribs;
GLuint i;
+ actx->nr_vbos = 0;
+
/* conventional vertex arrays */
if (ctx->Array.ArrayObj->Index.Enabled) {
aa->array = &ctx->Array.ArrayObj->Index;
@@ -1296,6 +1299,11 @@ void _ae_invalidate_state( GLcontext *ctx, GLuint new_state )
{
AEcontext *actx = AE_CONTEXT(ctx);
+ /* It is possible to raise a statechange between begin/end pairs as
+ * the glMaterial calls will raise _NEW_LIGHT eventually. However,
+ * within a DrawArrays or DrawElements call (which cannot emit
+ * material data), it should never be possible.
+ */
assert(!actx->mapped_vbos);
actx->NewState |= new_state;
}