[Mesa-dev] [PATCH 01/11] vbo: lift common code out of switch cases
Brian Paul
brianp at vmware.com
Wed Jan 17 17:39:02 UTC 2018
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?
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];
>>
>
More information about the mesa-dev
mailing list