vbo: remove node->count > 0 test in vbo_save_playback_vertex_list()

See piglit dlist-fdo31590.c test and
http://bugs.freedesktop.org/show_bug.cgi?id=31590

In this case we had node->prim_count=1 but node->count==0 because the
display list started with glBegin() but had no vertices.  The call to
glEvalCoord1f() triggered the DO_FALLBACK() path.  When replaying the
display list, the old condition basically no-op'd the call to
vbo_save_playback_vertex_list call().  That led to the invalid operation
error being raised in glEnd().

NOTE: This is a candidate for the 7.10 branch.
This commit is contained in:
Brian Paul 2011-06-08 08:05:41 -06:00
parent f1cdce95f6
commit 62811057f4

View file

@ -249,7 +249,7 @@ vbo_save_playback_vertex_list(struct gl_context *ctx, void *data)
FLUSH_CURRENT(ctx, 0);
if (node->prim_count > 0 && node->count > 0) {
if (node->prim_count > 0) {
if (ctx->Driver.CurrentExecPrimitive != PRIM_OUTSIDE_BEGIN_END &&
node->prim[0].begin) {
@ -289,14 +289,16 @@ vbo_save_playback_vertex_list(struct gl_context *ctx, void *data)
if (ctx->NewState)
_mesa_update_state( ctx );
vbo_context(ctx)->draw_prims(ctx,
save->inputs,
node->prim,
node->prim_count,
NULL,
GL_TRUE,
0, /* Node is a VBO, so this is ok */
node->count - 1);
if (node->count > 0) {
vbo_context(ctx)->draw_prims(ctx,
save->inputs,
node->prim,
node->prim_count,
NULL,
GL_TRUE,
0, /* Node is a VBO, so this is ok */
node->count - 1);
}
}
/* Copy to current?