From ce5cd85211dfe964aba0e448e0d0beecfc2bc5f4 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: (cherry picked from commit 84e0f6dbd80c37d678c28cbafb86ca9737712fdd) --- .pick_status.json | 2 +- src/compiler/nir/nir_opt_dead_write_vars.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index e70c60553e0..e2b5d88c836 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -202,7 +202,7 @@ "description": "nir: Fix shader calls with nir_opt_dead_write_vars.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "5a2889327970ce2e7f342c357efb50fa25c2a5e4" }, 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))