We always call brw_merge_inputs() right before looping over the primitives but this can be called inside the loop for each primitive too. In the case we do it for the first primitive the call is redundant and can be skipped. --- src/mesa/drivers/dri/i965/brw_draw.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index fef1c06..ac21656 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -458,15 +458,14 @@ static bool brw_try_draw_prims( struct gl_context *ctx, intel_batchbuffer_require_space(brw, estimated_max_prim_size, RENDER_RING); intel_batchbuffer_save_state(brw); - if (brw->num_instances != prims[i].num_instances) { + if (brw->num_instances != prims[i].num_instances || + brw->basevertex != prims[i].basevertex) { brw->num_instances = prims[i].num_instances; - brw->state.dirty.brw |= BRW_NEW_VERTICES; - brw_merge_inputs(brw, arrays); - } - if (brw->basevertex != prims[i].basevertex) { brw->basevertex = prims[i].basevertex; - brw->state.dirty.brw |= BRW_NEW_VERTICES; - brw_merge_inputs(brw, arrays); + if (i > 0) { /* For i == 0 we just did this before the loop */ + brw->state.dirty.brw |= BRW_NEW_VERTICES; + brw_merge_inputs(brw, arrays); + } } if (brw->gen < 6) brw_set_prim(brw, &prims[i]); -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev