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))