From feccefbc86045384aa772951eadebb7bf07f244d Mon Sep 17 00:00:00 2001 From: Natalie Vock Date: Mon, 10 Nov 2025 17:47:48 +0100 Subject: [PATCH] radv: Fix PSO history with RT pipelines 1. The prolog needs to have a null check. Libraries don't have prologs. 2. We only need to print the shaders actually included in this pipeline. Libraries were already printed separately. 3. The traversal shader was wrongly omitted from the output. Cc: mesa-stable (cherry picked from commit 73a31dafbcbf390dc2427e37a1cc17ef20a42c29) Part-of: --- .pick_status.json | 2 +- src/amd/vulkan/radv_pipeline.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 887ee6fe06c..321b86cd2f0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -844,7 +844,7 @@ "description": "radv: Fix PSO history with RT pipelines", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index ffb30464fa6..358e45e2686 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -1247,9 +1247,13 @@ radv_pipeline_report_pso_history(const struct radv_device *device, struct radv_p case RADV_PIPELINE_RAY_TRACING: { struct radv_ray_tracing_pipeline *rt_pipeline = radv_pipeline_to_ray_tracing(pipeline); - radv_print_pso_history(pipeline, rt_pipeline->prolog, output); + if (rt_pipeline->prolog) + radv_print_pso_history(pipeline, rt_pipeline->prolog, output); - for (uint32_t i = 0; i < rt_pipeline->stage_count; i++) { + if (pipeline->shaders[MESA_SHADER_INTERSECTION]) + radv_print_pso_history(pipeline, pipeline->shaders[MESA_SHADER_INTERSECTION], output); + + for (uint32_t i = 0; i < rt_pipeline->non_imported_stage_count; i++) { const struct radv_shader *shader = rt_pipeline->stages[i].shader; if (shader)