diff options
author | Friedrich Vock <friedrich.vock@gmx.de> | 2022-12-11 22:49:18 +0100 |
---|---|---|
committer | Eric Engestrom <eric@engestrom.ch> | 2022-12-14 20:47:02 +0000 |
commit | 63e1ccd5989fdc0abcdd743250e39c650ea5ee56 (patch) | |
tree | ea9b9adb1ddea824c2216ef526bdac48498e0b7b | |
parent | 3e3def9620017b83b8032d4ed20b3419cf0e6513 (diff) | |
download | mesa-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.json | 2 | ||||
-rw-r--r-- | src/amd/vulkan/radv_pipeline_rt.c | 5 |
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: |