From c811348dc2e14dbf4f174d8b619652beff609ebb Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Tue, 10 Feb 2026 15:32:47 +0000 Subject: [PATCH] radv: include ahit/isec shaders in radv_get_shader_from_executable_index This is necessary for GetPipelineExecutablePropertiesKHR, RADV_DEBUG and fossil-db. Signed-off-by: Rhys Perry Reviewed-by: Konstantin Seurer Part-of: --- src/amd/vulkan/radv_pipeline.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 13296a53a53..b7fb0d464e5 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -627,6 +627,8 @@ radv_get_executable_count(struct radv_pipeline *pipeline) struct radv_ray_tracing_pipeline *rt_pipeline = radv_pipeline_to_ray_tracing(pipeline); for (uint32_t i = 0; i < rt_pipeline->stage_count; i++) ret += rt_pipeline->stages[i].shader ? 1 : 0; + for (uint32_t i = 0; i < rt_pipeline->group_count; i++) + ret += rt_pipeline->groups[i].ahit_isec_shader ? 1 : 0; } for (int i = 0; i < MESA_VULKAN_SHADER_STAGES; ++i) { @@ -657,6 +659,19 @@ radv_get_shader_from_executable_index(struct radv_pipeline *pipeline, int index, return rt_stage->shader; } + index--; + } + for (uint32_t i = 0; i < rt_pipeline->group_count; i++) { + struct radv_ray_tracing_group *rt_group = &rt_pipeline->groups[i]; + if (!rt_group->ahit_isec_shader) + continue; + + if (!index) { + *stage = + rt_group->intersection_shader != VK_SHADER_UNUSED_KHR ? MESA_SHADER_INTERSECTION : MESA_SHADER_ANY_HIT; + return rt_group->ahit_isec_shader; + } + index--; } }