This fixes another regression from commit
8e4efdc895ea ("vbo: optimize
some display list drawing"). The problem was the min_index, max_index
values passed to the vbo drawing function were not computed to compensate
for the biased prim::start values.
https://bugs.freedesktop.org/show_bug.cgi?id=104746
https://bugs.freedesktop.org/show_bug.cgi?id=104742
https://bugs.freedesktop.org/show_bug.cgi?id=104690
Tested-by: Clayton Craft <clayton.a.craft@intel.com>
Fixes: 8e4efdc895ea ("vbo: optimize some display list drawing")
Reviewed-by: Emil Velikov <emil.velikov@collabora.co.uk>
GLuint current_size;
GLuint buffer_offset; /**< in bytes */
- GLuint vertex_count;
+ GLuint start_vertex; /**< first vertex used by any primitive */
+ GLuint vertex_count; /**< number of vertices in this list */
GLuint wrap_count; /* number of copied vertices at start */
GLboolean dangling_attr_ref; /* current attr implicitly referenced
outside the list */
for (unsigned i = 0; i < save->prim_count; i++) {
save->prims[i].start += start_offset;
}
+ node->start_vertex = start_offset;
+ } else {
+ node->start_vertex = 0;
}
/* Reset our structures for the next run of vertices:
_mesa_update_state(ctx);
if (node->vertex_count > 0) {
+ GLuint min_index = node->start_vertex;
+ GLuint max_index = min_index + node->vertex_count - 1;
vbo_context(ctx)->draw_prims(ctx,
node->prims,
node->prim_count,
NULL,
GL_TRUE,
- 0, /* Node is a VBO, so this is ok */
- node->vertex_count - 1,
+ min_index, max_index,
NULL, 0, NULL);
}
}