vbo: add debug code to verify that buffers are unmapped before drawing
This commit is contained in:
@@ -38,6 +38,26 @@
|
||||
#include "vbo_context.h"
|
||||
|
||||
|
||||
/**
|
||||
* All vertex buffers should be in an unmapped state when we're about
|
||||
* to draw. This debug function checks that.
|
||||
*/
|
||||
static void
|
||||
check_buffers_are_unmapped(const struct gl_client_array **inputs)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
GLuint i;
|
||||
|
||||
for (i = 0; i < VERT_ATTRIB_MAX; i++) {
|
||||
if (inputs[i]) {
|
||||
struct gl_buffer_object *obj = inputs[i]->BufferObj;
|
||||
assert(!_mesa_bufferobj_mapped(obj));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compute min and max elements by scanning the index buffer for
|
||||
* glDraw[Range]Elements() calls.
|
||||
@@ -581,6 +601,7 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start,
|
||||
|
||||
if (primCount > 0) {
|
||||
/* draw one or two prims */
|
||||
check_buffers_are_unmapped(exec->array.inputs);
|
||||
vbo->draw_prims(ctx, exec->array.inputs, prim, primCount, NULL,
|
||||
GL_TRUE, start, start + count - 1);
|
||||
}
|
||||
@@ -590,6 +611,7 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start,
|
||||
prim[0].start = start;
|
||||
prim[0].count = count;
|
||||
|
||||
check_buffers_are_unmapped(exec->array.inputs);
|
||||
vbo->draw_prims(ctx, exec->array.inputs, prim, 1, NULL,
|
||||
GL_TRUE, start, start + count - 1);
|
||||
}
|
||||
@@ -795,6 +817,7 @@ vbo_validated_drawrangeelements(struct gl_context *ctx, GLenum mode,
|
||||
* for the latter case elsewhere.
|
||||
*/
|
||||
|
||||
check_buffers_are_unmapped(exec->array.inputs);
|
||||
vbo->draw_prims( ctx, exec->array.inputs, prim, 1, &ib,
|
||||
index_bounds_valid, start, end );
|
||||
}
|
||||
@@ -1111,6 +1134,7 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode,
|
||||
prim[i].basevertex = 0;
|
||||
}
|
||||
|
||||
check_buffers_are_unmapped(exec->array.inputs);
|
||||
vbo->draw_prims(ctx, exec->array.inputs, prim, primcount, &ib,
|
||||
GL_FALSE, ~0, ~0);
|
||||
} else {
|
||||
@@ -1135,6 +1159,7 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode,
|
||||
else
|
||||
prim[0].basevertex = 0;
|
||||
|
||||
check_buffers_are_unmapped(exec->array.inputs);
|
||||
vbo->draw_prims(ctx, exec->array.inputs, prim, 1, &ib,
|
||||
GL_FALSE, ~0, ~0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user