On 11/21/2017 10:01 AM, Marek Olšák wrote: > From: Marek Olšák <marek.ol...@amd.com> > > vbo_context: 21520 -> 20344 bytes > --- > src/mesa/main/mtypes.h | 8 ++++---- > src/mesa/vbo/vbo_context.h | 4 ++-- > src/mesa/vbo/vbo_exec_draw.c | 2 +- > src/mesa/vbo/vbo_save_draw.c | 2 +- > 4 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h > index 67711d8..660b1a5 100644 > --- a/src/mesa/main/mtypes.h > +++ b/src/mesa/main/mtypes.h > @@ -1452,31 +1452,31 @@ struct gl_pixelstore_attrib > }; > > > /** > * Vertex array information which is derived from gl_array_attributes > * and gl_vertex_buffer_binding information. Used by the VBO module and > * device drivers. > */ > struct gl_vertex_array > { > - GLint Size; /**< components per element (1,2,3,4) */ > GLenum16 Type; /**< datatype: GL_FLOAT, GL_INT, etc */ > GLenum16 Format; /**< default: GL_RGBA, but may be GL_BGRA */ > - GLsizei StrideB; /**< actual stride in bytes */ > - GLuint _ElementSize; /**< size of each element in bytes */ > - const GLubyte *Ptr; /**< Points to array data */ > + GLshort StrideB; /**< actual stride in bytes */
It looks like the largest value anyone currently advertises for MaxVertexAttribStride is 2048. We should probably have a check somewhere that someone doesn't try to use 65537. > + GLubyte Size; /**< components per element (1,2,3,4) */ > + GLubyte _ElementSize; /**< size of each element in bytes */ > GLboolean Normalized; /**< GL_ARB_vertex_program */ > GLboolean Integer; /**< Integer-valued? */ > GLboolean Doubles; /**< double precision values are not converted > to floats */ > GLuint InstanceDivisor; /**< GL_ARB_instanced_arrays */ > > + const GLubyte *Ptr; /**< Points to array data */ > struct gl_buffer_object *BufferObj;/**< GL_ARB_vertex_buffer_object */ > }; > > > /** > * Attributes to describe a vertex array. > * > * Contains the size, type, format and normalization flag, > * along with the index of a vertex buffer binding point. > * > diff --git a/src/mesa/vbo/vbo_context.h b/src/mesa/vbo/vbo_context.h > index 70757d0..04079b7 100644 > --- a/src/mesa/vbo/vbo_context.h > +++ b/src/mesa/vbo/vbo_context.h > @@ -60,22 +60,22 @@ > #include "main/macros.h" > > #ifdef __cplusplus > extern "C" { > #endif > > 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; > > /* Callback into the driver. This must always succeed, the driver > * is responsible for initiating any fallback actions required: > */ > vbo_draw_func draw_prims; > > /* Optional callback for indirect draws. This allows multidraws to not be > diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c > index df34f05..f34b591 100644 > --- a/src/mesa/vbo/vbo_exec_draw.c > +++ b/src/mesa/vbo/vbo_exec_draw.c > @@ -168,21 +168,21 @@ vbo_copy_vertices( struct vbo_exec_context *exec ) > > > /* TODO: populate these as the vertex is defined: > */ > static void > 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; > GLbitfield64 varying_inputs = 0x0; > bool swap_pos = false; > > /* Install the default (ie Current) attributes first, then overlay > * all active ones. > */ > switch (get_program_mode(exec->ctx)) { > case VP_NONE: > for (attr = 0; attr < VERT_ATTRIB_FF_MAX; attr++) { > diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c > index 3fad4c7..02920c9 100644 > --- a/src/mesa/vbo/vbo_save_draw.c > +++ b/src/mesa/vbo/vbo_save_draw.c > @@ -130,21 +130,21 @@ _playback_copy_to_current(struct gl_context *ctx, > * Treat the vertex storage as a VBO, define vertex arrays pointing > * into it: > */ > static void vbo_bind_vertex_list(struct gl_context *ctx, > const struct vbo_save_vertex_list *node) > { > struct vbo_context *vbo = vbo_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[] */ > GLenum16 node_attrtype[VBO_ATTRIB_MAX]; /* copy of node->attrtype[] */ > GLbitfield64 varying_inputs = 0x0; > > memcpy(node_attrsz, node->attrsz, sizeof(node->attrsz)); > memcpy(node_attrtype, node->attrtype, sizeof(node->attrtype)); > > /* Install the default (ie Current) attributes first, then overlay > * all active ones. > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev