From 84e0f6dbd80c37d678c28cbafb86ca9737712fdd Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Wed, 31 Mar 2021 02:41:15 +0200 Subject: [PATCH] nir: Fix shader calls with nir_opt_dead_write_vars. Fixes: 5a288932797 ("spirv,nir: Add ray-tracing intrinsics") Reviewed-by: Jason Ekstrand Part-of: --- 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))