On Tue, Jan 23, 2018 at 11:44:01AM -0700, Brian Paul wrote:
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.
I have confirmed that this resolves the regression on G33.
Please add a 'Fixes' tag so that this is applied to the new stable branch, plus
a 'Tested-by: clayton.a.cr...@intel.com' tag.


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
---
src/mesa/vbo/vbo_save.h      | 3 ++-
src/mesa/vbo/vbo_save_api.c  | 3 +++
src/mesa/vbo/vbo_save_draw.c | 5 +++--
3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/mesa/vbo/vbo_save.h b/src/mesa/vbo/vbo_save.h
index 04b9e38..51ea9cc 100644
--- a/src/mesa/vbo/vbo_save.h
+++ b/src/mesa/vbo/vbo_save.h
@@ -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 */
diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c
index e0fe5fd..11c40a2 100644
--- a/src/mesa/vbo/vbo_save_api.c
+++ b/src/mesa/vbo/vbo_save_api.c
@@ -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:
diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c
index 97e0fa0..221aa57 100644
--- a/src/mesa/vbo/vbo_save_draw.c
+++ b/src/mesa/vbo/vbo_save_draw.c
@@ -349,13 +349,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);
      }
   }
--
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to