vbo: change vbo_context attribute map arrays to GLubyte
authorBrian Paul <brianp@vmware.com>
Mon, 15 Jan 2018 21:37:04 +0000 (14:37 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 17 Jan 2018 18:17:56 +0000 (11:17 -0700)
The values will never be larger than VBO_ATTRIB_MAX (currently 44).

v2: add STATIC_ASSERT to be sure VBO_ATTRIB_MAX can fit in ubyte,
per Emil.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
src/mesa/vbo/vbo_context.c
src/mesa/vbo/vbo_context.h
src/mesa/vbo/vbo_exec_draw.c
src/mesa/vbo/vbo_save_draw.c

index a5f915d9bdb5bebff7fafa0abbed5a7ff20808b6..2d4a973ebd6f391550906d49cb478cfcfef36a45 100644 (file)
@@ -200,6 +200,9 @@ GLboolean _vbo_CreateContext( struct gl_context *ctx )
    {
       GLuint i;
 
+      /* make sure all VBO_ATTRIB_ values can fit in an unsigned byte */
+      STATIC_ASSERT(VBO_ATTRIB_MAX <= 255);
+
       /* identity mapping */
       for (i = 0; i < ARRAY_SIZE(vbo->map_vp_none); i++) 
         vbo->map_vp_none[i] = i;
index 70757d0ea4d1780370937a706ffecfa302227dca..04079b7d3299b58342a078ace6997735ff17cb9e 100644 (file)
@@ -67,8 +67,8 @@ struct vbo_context {
    struct gl_vertex_array currval[VBO_ATTRIB_MAX];
    
    /** Map VERT_ATTRIB_x to VBO_ATTRIB_y */
-   GLuint map_vp_none[VERT_ATTRIB_MAX];
-   GLuint map_vp_arb[VERT_ATTRIB_MAX];
+   GLubyte map_vp_none[VERT_ATTRIB_MAX];
+   GLubyte map_vp_arb[VERT_ATTRIB_MAX];
 
    struct vbo_exec_context exec;
    struct vbo_save_context save;
index de173220fca4d57e98299e051c121c11ea67890e..5d1e5880b6be28be1e2658f8abe22ead697486dd 100644 (file)
@@ -175,7 +175,7 @@ vbo_exec_bind_arrays( struct gl_context *ctx )
    struct vbo_context *vbo = vbo_context(ctx);
    struct vbo_exec_context *exec = &vbo->exec;
    struct gl_vertex_array *arrays = exec->vtx.arrays;
-   const GLuint *map;
+   const GLubyte *map;
    GLuint attr;
    GLbitfield varying_inputs = 0x0;
    bool swap_pos = false;
index 41010225c3c5290a0fe7090895dd53bda7bad331..c1298f95a0ce35659a1c1de0f0f6d77a9643651b 100644 (file)
@@ -137,7 +137,7 @@ bind_vertex_list(struct gl_context *ctx,
    struct vbo_save_context *save = &vbo->save;
    struct gl_vertex_array *arrays = save->arrays;
    GLuint buffer_offset = node->buffer_offset;
-   const GLuint *map;
+   const GLubyte *map;
    GLuint attr;
    GLubyte node_attrsz[VBO_ATTRIB_MAX];  /* copy of node->attrsz[] */
    GLenum node_attrtype[VBO_ATTRIB_MAX];  /* copy of node->attrtype[] */
@@ -160,7 +160,7 @@ bind_vertex_list(struct gl_context *ctx,
 
    /* Install the default (ie Current) attributes first */
    for (attr = 0; attr < VERT_ATTRIB_FF_MAX; attr++) {
-      save->inputs[attr] = &vbo->currval[VBO_ATTRIB_POS+attr];
+      save->inputs[attr] = &vbo->currval[VBO_ATTRIB_POS + attr];
    }
 
    /* Overlay other active attributes */