diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index 25429fdeab7..5ac18e2ebc8 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -841,9 +841,6 @@ si_lower_nir(struct si_shader_selector* sel) * - ensure constant offsets for texture instructions are folded * and copy-propagated */ - NIR_PASS_V(sel->nir, nir_lower_vars_to_ssa); - NIR_PASS_V(sel->nir, nir_lower_alu_to_scalar); - NIR_PASS_V(sel->nir, nir_lower_phis_to_scalar); static const struct nir_lower_tex_options lower_tex_options = { .lower_txp = ~0u, @@ -866,6 +863,14 @@ si_lower_nir(struct si_shader_selector* sel) do { progress = false; + NIR_PASS_V(sel->nir, nir_lower_vars_to_ssa); + + NIR_PASS(progress, sel->nir, nir_opt_copy_prop_vars); + NIR_PASS(progress, sel->nir, nir_opt_dead_write_vars); + + NIR_PASS_V(sel->nir, nir_lower_alu_to_scalar); + NIR_PASS_V(sel->nir, nir_lower_phis_to_scalar); + /* (Constant) copy propagation is needed for txf with offsets. */ NIR_PASS(progress, sel->nir, nir_copy_prop); NIR_PASS(progress, sel->nir, nir_opt_remove_phis);