crocus: don't update draw parameters unless needed
authorDave Airlie <airlied@redhat.com>
Sun, 4 Jul 2021 20:54:15 +0000 (06:54 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 5 Jul 2021 05:03:48 +0000 (15:03 +1000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11707>

src/gallium/drivers/crocus/crocus_draw.c

index bdcebd2..73de537 100644 (file)
@@ -282,7 +282,9 @@ crocus_indirect_draw_vbo(struct crocus_context *ice,
       crocus_batch_maybe_flush(batch, 1500);
       crocus_require_statebuffer_space(batch, 2400);
 
-      crocus_update_draw_parameters(ice, &info, drawid_offset + i, &indirect, draws);
+      if (ice->state.vs_uses_draw_params ||
+         ice->state.vs_uses_derived_draw_params)
+         crocus_update_draw_parameters(ice, &info, drawid_offset + i, &indirect, draws);
 
       screen->vtbl.upload_render_state(ice, batch, &info, drawid_offset + i, &indirect, draws);
 
@@ -316,7 +318,9 @@ crocus_simple_draw_vbo(struct crocus_context *ice,
    crocus_batch_maybe_flush(batch, 1500);
    crocus_require_statebuffer_space(batch, 2400);
 
-   crocus_update_draw_parameters(ice, draw, drawid_offset, indirect, sc);
+   if (ice->state.vs_uses_draw_params ||
+       ice->state.vs_uses_derived_draw_params)
+      crocus_update_draw_parameters(ice, draw, drawid_offset, indirect, sc);
 
    screen->vtbl.upload_render_state(ice, batch, draw, drawid_offset, indirect, sc);
 }