Module: Mesa
Branch: main
Commit: 3c422ba51829c9436be50c204aba8a8170a41378
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3c422ba51829c9436be50c204aba8a8170a41378

Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Aug 29 10:54:15 2023 -0400

zink: simplify an arrayed io check during variable creation

no functional changes

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24950>

---

 src/gallium/drivers/zink/zink_compiler.c | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_compiler.c 
b/src/gallium/drivers/zink/zink_compiler.c
index d1689af5e6e..4a859a2040a 100644
--- a/src/gallium/drivers/zink/zink_compiler.c
+++ b/src/gallium/drivers/zink/zink_compiler.c
@@ -2309,6 +2309,22 @@ filter_io_instr(nir_intrinsic_instr *intr, bool 
*is_load, bool *is_input, bool *
    return true;
 }
 
+static bool
+io_instr_is_arrayed(nir_intrinsic_instr *intr)
+{
+   switch (intr->intrinsic) {
+   case nir_intrinsic_load_per_vertex_input:
+   case nir_intrinsic_load_per_vertex_output:
+   case nir_intrinsic_load_per_primitive_output:
+   case nir_intrinsic_store_per_primitive_output:
+   case nir_intrinsic_store_per_vertex_output:
+      return true;
+   default:
+      break;
+   }
+   return false;
+}
+
 static bool
 find_var_deref(nir_shader *nir, nir_variable *var)
 {
@@ -5002,10 +5018,7 @@ rework_io_vars(nir_shader *nir, nir_variable_mode mode)
                c = 0;
             const struct glsl_type *vec_type = 
glsl_vector_type(nir_get_glsl_base_type_for_nir_type(type), max_components);
             /* reset the mode for nir_is_arrayed_io to work */
-            nir_variable_mode oldmode = old_var->data.mode;
-            old_var->data.mode = mode;
-            bool is_arrayed = nir_is_arrayed_io(old_var, nir->info.stage);
-            old_var->data.mode = oldmode;
+            bool is_arrayed = io_instr_is_arrayed(intr);
             if (is_indirect) {
                /* indirect array access requires the full array in a single 
variable */
                unsigned slot_count = s.num_slots;

Reply via email to