From: Friedrich Vock Date: Sun, 11 Dec 2022 21:49:18 +0000 (+0100) Subject: radv: Handle NULL miss shaders X-Git-Tag: upstream/22.3.5~251 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=63e1ccd5989fdc0abcdd743250e39c650ea5ee56;p=platform%2Fupstream%2Fmesa.git radv: Handle NULL miss shaders Fixes reflections in DOOM Eternal. Fixes: 85580faa ("radv: Add ray traversal loop.") Closes: #6210 Part-of: (cherry picked from commit 568fa71ef8d825b735fdbf6747ada3d7cfe95eff) --- diff --git a/.pick_status.json b/.pick_status.json index ac33add..6d37745 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1039,7 +1039,7 @@ "description": "radv: Handle NULL miss shaders", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "85580faa4b0b654600a137e337211ce3efff43fb" }, diff --git a/src/amd/vulkan/radv_pipeline_rt.c b/src/amd/vulkan/radv_pipeline_rt.c index f114af5..44fb143 100644 --- a/src/amd/vulkan/radv_pipeline_rt.c +++ b/src/amd/vulkan/radv_pipeline_rt.c @@ -719,6 +719,11 @@ lower_rt_instructions(nir_shader *shader, struct rt_variables *vars, unsigned ca nir_store_var(&b_shader, vars->hit_kind, undef, 0x1); nir_ssa_def *miss_index = nir_load_var(&b_shader, vars->miss_index); load_sbt_entry(&b_shader, vars, miss_index, SBT_MISS, 0); + + /* In case of a NULL miss shader, do nothing and just return. */ + nir_push_if(&b_shader, nir_ieq_imm(&b_shader, nir_load_var(&b_shader, vars->idx), 0)); + insert_rt_return(&b_shader, vars); + nir_pop_if(&b_shader, NULL); break; } default: