mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 10:50:16 +01:00
vbo: fix incorrect min/max_index values in display list draw call
This fixes another regression from commit8e4efdc895("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:8e4efdc895("vbo: optimize some display list drawing") Reviewed-by: Emil Velikov <emil.velikov@collabora.co.uk>
This commit is contained in:
parent
2123bd2805
commit
365a48abdd
3 changed files with 8 additions and 3 deletions
|
|
@ -74,7 +74,8 @@ struct vbo_save_vertex_list {
|
|||
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 */
|
||||
|
|
|
|||
|
|
@ -563,6 +563,9 @@ compile_vertex_list(struct gl_context *ctx)
|
|||
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:
|
||||
|
|
|
|||
|
|
@ -325,13 +325,14 @@ vbo_save_playback_vertex_list(struct gl_context *ctx, void *data)
|
|||
_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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue