Mesa (master): nir: Fix shader calls with nir_opt_dead_write_vars.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Apr 8 11:34:19 UTC 2021


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

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Wed Mar 31 02:41:15 2021 +0200

nir: Fix shader calls with nir_opt_dead_write_vars.

Fixes: 5a288932797 ("spirv,nir: Add ray-tracing intrinsics")
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10096>

---

 src/compiler/nir/nir_opt_dead_write_vars.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/compiler/nir/nir_opt_dead_write_vars.c b/src/compiler/nir/nir_opt_dead_write_vars.c
index dc9414e05e2..aaa87667e13 100644
--- a/src/compiler/nir/nir_opt_dead_write_vars.c
+++ b/src/compiler/nir/nir_opt_dead_write_vars.c
@@ -169,6 +169,20 @@ remove_dead_write_vars_local(void *mem_ctx, nir_shader *shader, nir_block *block
          break;
       }
 
+      case nir_intrinsic_execute_callable: {
+         /* Mark payload as it can be used by the callee */
+         nir_deref_instr *src = nir_src_as_deref(intrin->src[1]);
+         clear_unused_for_read(&unused_writes, src);
+         break;
+      }
+
+      case nir_intrinsic_trace_ray: {
+         /* Mark payload as it can be used by the callees */
+         nir_deref_instr *src = nir_src_as_deref(intrin->src[10]);
+         clear_unused_for_read(&unused_writes, src);
+         break;
+      }
+
       case nir_intrinsic_load_deref: {
          nir_deref_instr *src = nir_src_as_deref(intrin->src[0]);
          if (nir_deref_mode_must_be(src, nir_var_read_only_modes))



More information about the mesa-commit mailing list