On 01/17/2018 09:39 AM, Brian Paul wrote: > On 01/17/2018 10:08 AM, Ian Romanick wrote: >> Should probably also change the assert(0) to unreachable(). It's >> possible that will help the compiler generate slightly better code in >> release builds. > > There's a bunch of assert(0) calls in the VBO code. How about I take > care of those in a separate patch?
That works for me... maybe just send that with the next round of optimizations? > I added the const keywords in patch 7. > > -Brian > > >> >> On 01/16/2018 09:17 PM, Brian Paul wrote: >>> Both switch cases began with the same code. >>> --- >>> src/mesa/vbo/vbo_exec_draw.c | 15 ++++++--------- >>> src/mesa/vbo/vbo_save_draw.c | 15 ++++++--------- >>> 2 files changed, 12 insertions(+), 18 deletions(-) >>> >>> diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c >>> index 34cb4ff..de17322 100644 >>> --- a/src/mesa/vbo/vbo_exec_draw.c >>> +++ b/src/mesa/vbo/vbo_exec_draw.c >>> @@ -180,14 +180,14 @@ vbo_exec_bind_arrays( struct gl_context *ctx ) >>> GLbitfield varying_inputs = 0x0; >>> bool swap_pos = false; >>> - /* Install the default (ie Current) attributes first, then overlay >>> - * all active ones. >>> - */ >>> + /* Install the default (ie Current) attributes first */ >>> + for (attr = 0; attr < VERT_ATTRIB_FF_MAX; attr++) { >>> + exec->vtx.inputs[attr] = &vbo->currval[VBO_ATTRIB_POS+attr]; >>> + } >>> + >>> + /* Overlay other active attributes */ >>> switch (get_program_mode(exec->ctx)) { >>> case VP_NONE: >>> - for (attr = 0; attr < VERT_ATTRIB_FF_MAX; attr++) { >>> - exec->vtx.inputs[attr] = &vbo->currval[VBO_ATTRIB_POS+attr]; >>> - } >>> for (attr = 0; attr < MAT_ATTRIB_MAX; attr++) { >>> assert(VERT_ATTRIB_GENERIC(attr) < >>> ARRAY_SIZE(exec->vtx.inputs)); >>> exec->vtx.inputs[VERT_ATTRIB_GENERIC(attr)] = >>> @@ -196,9 +196,6 @@ vbo_exec_bind_arrays( struct gl_context *ctx ) >>> map = vbo->map_vp_none; >>> break; >>> case VP_ARB: >>> - for (attr = 0; attr < VERT_ATTRIB_FF_MAX; attr++) { >>> - exec->vtx.inputs[attr] = &vbo->currval[VBO_ATTRIB_POS+attr]; >>> - } >>> for (attr = 0; attr < VERT_ATTRIB_GENERIC_MAX; attr++) { >>> assert(VERT_ATTRIB_GENERIC(attr) < >>> ARRAY_SIZE(exec->vtx.inputs)); >>> exec->vtx.inputs[VERT_ATTRIB_GENERIC(attr)] = >>> diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c >>> index b63a9a8..4101022 100644 >>> --- a/src/mesa/vbo/vbo_save_draw.c >>> +++ b/src/mesa/vbo/vbo_save_draw.c >>> @@ -158,14 +158,14 @@ bind_vertex_list(struct gl_context *ctx, >>> buffer_offset = 0; >>> } >>> - /* Install the default (ie Current) attributes first, then overlay >>> - * all active ones. >>> - */ >>> + /* 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]; >>> + } >>> + >>> + /* Overlay other active attributes */ >>> switch (get_program_mode(ctx)) { >>> case VP_NONE: >>> - for (attr = 0; attr < VERT_ATTRIB_FF_MAX; attr++) { >>> - save->inputs[attr] = &vbo->currval[VBO_ATTRIB_POS+attr]; >>> - } >>> for (attr = 0; attr < MAT_ATTRIB_MAX; attr++) { >>> save->inputs[VERT_ATTRIB_GENERIC(attr)] = >>> &vbo->currval[VBO_ATTRIB_MAT_FRONT_AMBIENT+attr]; >>> @@ -173,9 +173,6 @@ bind_vertex_list(struct gl_context *ctx, >>> map = vbo->map_vp_none; >>> break; >>> case VP_ARB: >>> - for (attr = 0; attr < VERT_ATTRIB_FF_MAX; attr++) { >>> - save->inputs[attr] = &vbo->currval[VBO_ATTRIB_POS+attr]; >>> - } >>> for (attr = 0; attr < VERT_ATTRIB_GENERIC_MAX; attr++) { >>> save->inputs[VERT_ATTRIB_GENERIC(attr)] = >>> &vbo->currval[VBO_ATTRIB_GENERIC0+attr]; >>> >> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev