From c662fcfa944de387c8cea3e1caf0e08d77d7ee8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 24 Dec 2024 13:54:33 -0500 Subject: [PATCH] radeonsi: lower IO only if io_lowered == false Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_shader_nir.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index d20c57e8120..4c5cdcf5f93 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -419,8 +419,14 @@ char *si_finalize_nir(struct pipe_screen *screen, struct nir_shader *nir) { struct si_screen *sscreen = (struct si_screen *)screen; - nir_lower_io_passes(nir, false); - NIR_PASS_V(nir, nir_remove_dead_variables, nir_var_shader_in | nir_var_shader_out, NULL); + if (nir->info.io_lowered) { + nir_foreach_variable_with_modes(var, nir, nir_var_shader_in | nir_var_shader_out) { + unreachable("no IO variables should be present with lowered IO"); + } + } else { + nir_lower_io_passes(nir, false); + NIR_PASS_V(nir, nir_remove_dead_variables, nir_var_shader_in | nir_var_shader_out, NULL); + } if (nir->info.stage == MESA_SHADER_FRAGMENT) NIR_PASS_V(nir, nir_lower_color_inputs);