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);