radv: Fix PSO history with RT pipelines
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

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
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38355>
(cherry picked from commit 73a31dafbc)
This commit is contained in:
Natalie Vock 2025-11-10 17:47:48 +01:00 committed by Eric Engestrom
parent 160c254722
commit 133e347a98
2 changed files with 7 additions and 3 deletions

View file

@ -14,7 +14,7 @@
"description": "radv: Fix PSO history with RT pipelines", "description": "radv: Fix PSO history with RT pipelines",
"nominated": true, "nominated": true,
"nomination_type": 1, "nomination_type": 1,
"resolution": 0, "resolution": 1,
"main_sha": null, "main_sha": null,
"because_sha": null, "because_sha": null,
"notes": null "notes": null

View file

@ -1259,9 +1259,13 @@ radv_pipeline_report_pso_history(const struct radv_device *device, struct radv_p
case RADV_PIPELINE_RAY_TRACING: { case RADV_PIPELINE_RAY_TRACING: {
struct radv_ray_tracing_pipeline *rt_pipeline = radv_pipeline_to_ray_tracing(pipeline); 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; const struct radv_shader *shader = rt_pipeline->stages[i].shader;
if (shader) if (shader)