From 985f5e0875d5329e80867e1d6dad3c3b4f3a208d Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Tue, 11 Mar 2025 14:28:21 +0100 Subject: [PATCH] lavapipe: Do not emit aabb handling if no isec shader is used Reviewed-By: Mike Blumenkrantz Part-of: --- .../frontends/lavapipe/lvp_ray_tracing_pipeline.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/gallium/frontends/lavapipe/lvp_ray_tracing_pipeline.c b/src/gallium/frontends/lavapipe/lvp_ray_tracing_pipeline.c index f9b16f6ad59..2f8dd30c990 100644 --- a/src/gallium/frontends/lavapipe/lvp_ray_tracing_pipeline.c +++ b/src/gallium/frontends/lavapipe/lvp_ray_tracing_pipeline.c @@ -550,6 +550,18 @@ lvp_handle_aabb_intersection(nir_builder *b, struct lvp_leaf_intersection *inter struct lvp_ray_tracing_pipeline_compiler *compiler = args->data; struct lvp_ray_tracing_state *state = &compiler->state; + bool has_isec = false; + for (uint32_t i = 0; i < compiler->pipeline->rt.group_count; i++) { + struct lvp_ray_tracing_group *group = compiler->pipeline->rt.groups + i; + if (group->isec_index != VK_SHADER_UNUSED_KHR) { + has_isec = true; + break; + } + } + + if (!has_isec) + return; + nir_store_var(b, state->accept, nir_imm_false(b), 0x1); nir_store_var(b, state->terminate, ray_flags->terminate_on_first_hit, 0x1); nir_store_var(b, state->opaque, intersection->opaque, 0x1);