From 91a4cd26b3283370a694e06275d26a52436af121 Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Sun, 11 Sep 2022 16:48:58 +0200 Subject: [PATCH] radv: Use constant for ray traversal exit condition. Make the stack base ssa def dead in the loop, can save a register. Reviewed-by: Konstantin Seurer Part-of: --- src/amd/vulkan/radv_pipeline_rt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_pipeline_rt.c b/src/amd/vulkan/radv_pipeline_rt.c index 6b77ba8..15348fd 100644 --- a/src/amd/vulkan/radv_pipeline_rt.c +++ b/src/amd/vulkan/radv_pipeline_rt.c @@ -1404,6 +1404,7 @@ build_traversal_shader(struct radv_device *device, nir_ssa_def *stack_base = nir_iadd_imm(&b, nir_imul_imm(&b, nir_load_local_invocation_index(&b), stack_entry_size), b.shader->info.shared_size); + nir_ssa_def *stack_exit_bound = nir_imm_int(&b, stack_entry_stride + b.shader->info.shared_size); b.shader->info.shared_size += stack_entry_stride * MAX_STACK_ENTRY_COUNT; @@ -1438,7 +1439,7 @@ build_traversal_shader(struct radv_device *device, nir_push_if(&b, nir_ieq_imm(&b, nir_load_var(&b, trav_vars.current_node), -1)); { - nir_push_if(&b, nir_ieq(&b, nir_load_var(&b, trav_vars.stack), stack_base)); + nir_push_if(&b, nir_ilt(&b, nir_load_var(&b, trav_vars.stack), stack_exit_bound)); nir_jump(&b, nir_jump_break); nir_pop_if(&b, NULL); -- 2.7.4