summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFriedrich Vock <friedrich.vock@gmx.de>2022-12-11 22:49:18 +0100
committerEric Engestrom <eric@engestrom.ch>2022-12-14 20:47:02 +0000
commit63e1ccd5989fdc0abcdd743250e39c650ea5ee56 (patch)
treeea9b9adb1ddea824c2216ef526bdac48498e0b7b
parent3e3def9620017b83b8032d4ed20b3419cf0e6513 (diff)
downloadmesa-63e1ccd5989fdc0abcdd743250e39c650ea5ee56.tar.gz
radv: Handle NULL miss shaders
Fixes reflections in DOOM Eternal. Fixes: 85580faa ("radv: Add ray traversal loop.") Closes: #6210 Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20270> (cherry picked from commit 568fa71ef8d825b735fdbf6747ada3d7cfe95eff)
-rw-r--r--.pick_status.json2
-rw-r--r--src/amd/vulkan/radv_pipeline_rt.c5
2 files changed, 6 insertions, 1 deletions
diff --git a/.pick_status.json b/.pick_status.json
index ac33add38aa..6d3774583fe 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 f114af5bac6..44fb143ba3b 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: