From ce2138d73a8ed564ffdbf8a523a32b1ab3ec7820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Tue, 1 Apr 2025 14:23:46 +0200 Subject: [PATCH] radv: Call nir_opt_undef too after nir_opt_varyings. Shaders may have undefined output stores after nir_opt_varyings. These must be optimized out, otherwise they hit an assertion. Fixes: 17f6ab28cc40302d20cdc15d84947f38d5f02b4b Cc: mesa-stable Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_pipeline_graphics.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index 7dc2227728b..fd88b7d6949 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -1491,9 +1491,11 @@ radv_graphics_shaders_link_varyings_first(struct radv_shader_stage *producer_sta /* Run algebraic optimizations on shaders that changed. */ if (p & nir_progress_producer) { radv_optimize_nir_algebraic(producer, false, false); + NIR_PASS(_, producer, nir_opt_undef); } if (p & nir_progress_consumer) { radv_optimize_nir_algebraic(consumer, false, false); + NIR_PASS(_, consumer, nir_opt_undef); } } @@ -1520,9 +1522,11 @@ radv_graphics_shaders_link_varyings_second(struct radv_shader_stage *producer_st /* Run algebraic optimizations on shaders that changed. */ if (p & nir_progress_producer) { radv_optimize_nir_algebraic(producer, true, false); + NIR_PASS(_, producer, nir_opt_undef); } if (p & nir_progress_consumer) { radv_optimize_nir_algebraic(consumer, true, false); + NIR_PASS(_, consumer, nir_opt_undef); } /* Re-vectorize I/O for stages that output to memory (LDS or VRAM).