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

Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Sep 12 12:05:09 2022 -0400

zink: simplify ntv shader descriptor emission

these can be emitted directly

Reviewed-by: Erik Faye-Lund <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18144>

---

 .../drivers/zink/nir_to_spirv/nir_to_spirv.c       | 28 ++++++----------------
 1 file changed, 7 insertions(+), 21 deletions(-)

diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c 
b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
index 5f14f83969a..0984b363239 100644
--- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
+++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
@@ -1086,20 +1086,6 @@ emit_bo(struct ntv_context *ctx, struct nir_variable 
*var)
    spirv_builder_emit_binding(&ctx->builder, var_id, var->data.binding);
 }
 
-static void
-emit_uniform(struct ntv_context *ctx, struct nir_variable *var)
-{
-   if (var->data.mode == nir_var_mem_ubo || var->data.mode == nir_var_mem_ssbo)
-      emit_bo(ctx, var);
-   else {
-      assert(var->data.mode == nir_var_uniform ||
-             var->data.mode == nir_var_image);
-      const struct glsl_type *type = glsl_without_array(var->type);
-      if (glsl_type_is_sampler(type) || glsl_type_is_image(type))
-         emit_image(ctx, var, false);
-   }
-}
-
 static SpvId
 get_vec_from_bit_size(struct ntv_context *ctx, uint32_t bit_size, uint32_t 
num_components)
 {
@@ -4334,13 +4320,13 @@ nir_to_spirv(struct nir_shader *s, const struct 
zink_shader_info *sinfo, uint32_
       emit_so_info(&ctx, sinfo, max_output);
    uint32_t tcs_vertices_out_word = 0;
 
-   /* we have to reverse iterate to match what's done in zink_compiler.c */
-   foreach_list_typed_reverse(nir_variable, var, node, &s->variables)
-      if (_nir_shader_variable_has_mode(var, nir_var_uniform |
-                                        nir_var_image |
-                                        nir_var_mem_ubo |
-                                        nir_var_mem_ssbo))
-         emit_uniform(&ctx, var);
+   nir_foreach_variable_with_modes(var, s, nir_var_mem_ubo | nir_var_mem_ssbo)
+      emit_bo(&ctx, var);
+   nir_foreach_variable_with_modes(var, s, nir_var_uniform | nir_var_image) {
+      const struct glsl_type *type = glsl_without_array(var->type);
+      if (glsl_type_is_sampler(type) || glsl_type_is_image(type))
+         emit_image(&ctx, var, false);
+   }
 
    switch (s->info.stage) {
    case MESA_SHADER_FRAGMENT:

Reply via email to