Mesa (master): iris: Move VS draw parameter dirty flagging to iris_bind_vs_state

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jan 29 02:05:34 UTC 2021


Module: Mesa
Branch: master
Commit: 97fbe2d45f989dc6197c206205347e53c97a81d6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=97fbe2d45f989dc6197c206205347e53c97a81d6

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Jan 26 18:27:00 2021 -0800

iris: Move VS draw parameter dirty flagging to iris_bind_vs_state

Now that we're looking at shader info system values rather than
vs_prog_data, there's no reason we have to do this when updating
the shader variants.  We can simply check it when binding a new
shader from the API point of view.

Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8759>

---

 src/gallium/drivers/iris/iris_program.c | 46 ++++++++++++++++-----------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/src/gallium/drivers/iris/iris_program.c b/src/gallium/drivers/iris/iris_program.c
index fe597b51913..acf4a8e3874 100644
--- a/src/gallium/drivers/iris/iris_program.c
+++ b/src/gallium/drivers/iris/iris_program.c
@@ -1220,29 +1220,6 @@ iris_update_compiled_vs(struct iris_context *ice)
                                 IRIS_STAGE_DIRTY_CONSTANTS_VS;
       shs->sysvals_need_upload = true;
 
-      const struct shader_info *info = &ish->nir->info;
-      const bool uses_draw_params =
-         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_FIRST_VERTEX) ||
-         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_BASE_INSTANCE);
-      const bool uses_derived_draw_params =
-         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_DRAW_ID) ||
-         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_IS_INDEXED_DRAW);
-      const bool needs_sgvs_element = uses_draw_params ||
-         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_INSTANCE_ID) ||
-         BITSET_TEST(info->system_values_read,
-                     SYSTEM_VALUE_VERTEX_ID_ZERO_BASE);
-
-      if (ice->state.vs_uses_draw_params != uses_draw_params ||
-          ice->state.vs_uses_derived_draw_params != uses_derived_draw_params ||
-          ice->state.vs_needs_edge_flag != ish->needs_edge_flag) {
-         ice->state.dirty |= IRIS_DIRTY_VERTEX_BUFFERS |
-                             IRIS_DIRTY_VERTEX_ELEMENTS;
-      }
-      ice->state.vs_uses_draw_params = uses_draw_params;
-      ice->state.vs_uses_derived_draw_params = uses_derived_draw_params;
-      ice->state.vs_needs_sgvs_element = needs_sgvs_element;
-      ice->state.vs_needs_edge_flag = ish->needs_edge_flag;
-
       const struct brw_vue_prog_data *vue_prog_data =
          (void *) shader->prog_data;
       check_urb_size(ice, vue_prog_data->urb_entry_size, MESA_SHADER_VERTEX);
@@ -2525,6 +2502,29 @@ iris_bind_vs_state(struct pipe_context *ctx, void *state)
                              IRIS_DIRTY_RASTER |
                              IRIS_DIRTY_CC_VIEWPORT;
       }
+
+      const bool uses_draw_params =
+         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_FIRST_VERTEX) ||
+         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_BASE_INSTANCE);
+      const bool uses_derived_draw_params =
+         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_DRAW_ID) ||
+         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_IS_INDEXED_DRAW);
+      const bool needs_sgvs_element = uses_draw_params ||
+         BITSET_TEST(info->system_values_read, SYSTEM_VALUE_INSTANCE_ID) ||
+         BITSET_TEST(info->system_values_read,
+                     SYSTEM_VALUE_VERTEX_ID_ZERO_BASE);
+
+      if (ice->state.vs_uses_draw_params != uses_draw_params ||
+          ice->state.vs_uses_derived_draw_params != uses_derived_draw_params ||
+          ice->state.vs_needs_edge_flag != ish->needs_edge_flag) {
+         ice->state.dirty |= IRIS_DIRTY_VERTEX_BUFFERS |
+                             IRIS_DIRTY_VERTEX_ELEMENTS;
+      }
+
+      ice->state.vs_uses_draw_params = uses_draw_params;
+      ice->state.vs_uses_derived_draw_params = uses_derived_draw_params;
+      ice->state.vs_needs_sgvs_element = needs_sgvs_element;
+      ice->state.vs_needs_edge_flag = ish->needs_edge_flag;
    }
 
    bind_shader_state((void *) ctx, state, MESA_SHADER_VERTEX);



More information about the mesa-commit mailing list