vbo: Use a local variable for the dlist offsets.
authorMathias Fröhlich <mathias.froehlich@web.de>
Sun, 25 Feb 2018 17:01:07 +0000 (18:01 +0100)
committerMathias Fröhlich <mathias.froehlich@web.de>
Thu, 1 Mar 2018 03:06:23 +0000 (04:06 +0100)
The master value is now stored inside the VAO already present in
struct vbo_save_vertex_list. Remove the unneeded copy from dlist storage.

Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
src/mesa/vbo/vbo_save.h
src/mesa/vbo/vbo_save_api.c

index 414a477f31c46bb29f6c1066d56b08f5a5d1c8a8..14ac831ffd7ba5f21b842ee022ba1dfaa18d3b58 100644 (file)
@@ -64,7 +64,6 @@ struct vbo_save_vertex_list {
    GLbitfield64 enabled; /**< mask of enabled vbo arrays. */
    GLubyte attrsz[VBO_ATTRIB_MAX];
    GLenum16 attrtype[VBO_ATTRIB_MAX];
-   GLuint offsets[VBO_ATTRIB_MAX];
    GLuint vertex_size;  /**< size in GLfloats */
    struct gl_vertex_array_object *VAO[VP_MODE_MAX];
 
index a87bbe08569323511c24a0bfdc137acadeba641a..b6fc7daa3567f8c605aa82fd16775342a6e0e047 100644 (file)
@@ -529,8 +529,6 @@ compile_vertex_list(struct gl_context *ctx)
    struct vbo_save_context *save = &vbo_context(ctx)->save;
    struct vbo_save_vertex_list *node;
    GLintptr buffer_offset = 0;
-   GLuint offset;
-   unsigned i;
 
    /* Allocate space for this structure in the display list currently
     * being compiled.
@@ -563,13 +561,14 @@ compile_vertex_list(struct gl_context *ctx)
        * changes in drivers.  In particular, the Gallium CSO module will
        * filter out redundant vertex buffer changes.
        */
-      offset = 0;
+      buffer_offset = 0;
    } else {
-      offset = node->buffer_offset;
+      buffer_offset = node->buffer_offset;
    }
-   for (i = 0; i < VBO_ATTRIB_MAX; ++i) {
-      node->offsets[i] = offset;
-      offset += node->attrsz[i] * sizeof(GLfloat);
+   GLuint offsets[VBO_ATTRIB_MAX];
+   for (unsigned i = 0, offset = 0; i < VBO_ATTRIB_MAX; ++i) {
+      offsets[i] = offset;
+      offset += save->attrsz[i] * sizeof(GLfloat);
    }
    node->vertex_count = save->vert_count;
    node->wrap_count = save->copied.nr;
@@ -586,7 +585,7 @@ compile_vertex_list(struct gl_context *ctx)
       update_vao(ctx, vpm, &save->VAO[vpm],
                  node->vertex_store->bufferobj, buffer_offset,
                  node->vertex_size*sizeof(GLfloat), node->enabled,
-                 node->attrsz, node->attrtype, node->offsets);
+                 node->attrsz, node->attrtype, offsets);
       /* Reference the vao in the dlist */
       node->VAO[vpm] = NULL;
       _mesa_reference_vao(ctx, &node->VAO[vpm], save->VAO[vpm]);