From 4c2b2c82b0f577e2d1c0f2bfc54127e2055c8cdb Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Fri, 21 Mar 2025 14:33:17 +0100 Subject: [PATCH] r600: move stores to the end of shader when required This change is inspired from 1e0e521a7de ("broadcom/compiler: move stores to the end of shader") and makes the khr cull_distance tests which were broken after dae57e184aa functionals again. Fixes: dae57e184aa ("glsl,st/mesa: always lower IO for GLSL, unlower IO for drivers") Signed-off-by: Patrick Lerda Part-of: --- src/gallium/drivers/r600/sfn/sfn_nir.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gallium/drivers/r600/sfn/sfn_nir.cpp b/src/gallium/drivers/r600/sfn/sfn_nir.cpp index 20000454e1b..198576008c3 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir.cpp @@ -771,6 +771,9 @@ r600_lower_and_optimize_nir(nir_shader *sh, (nir_lower_io_lower_64bit_to_32 | nir_lower_io_use_interpolated_input_intrinsics)); + if (sh->info.stage == MESA_SHADER_VERTEX || sh->info.stage == MESA_SHADER_TESS_EVAL) + NIR_PASS(_, sh, nir_move_output_stores_to_end); + nir_shader_gather_info(sh, nir_shader_get_entrypoint(sh)); bool lower_64bit_io_to_vec2 = (sh->info.bit_sizes_float | sh->info.bit_sizes_int) & 64;