diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 1d0f1bde5b6..6e8132aa303 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -812,6 +812,8 @@ static void run_pre_link_optimization_passes(struct si_nir_shader_ctx *ctx) /* Lower all other indirect indexing to if-else ladders or scratch. */ progress |= ac_nir_lower_indirect_derefs(nir, sel->screen->info.gfx_level); + NIR_PASS(_, nir, si_nir_mark_divergent_texture_non_uniform); + if (progress) si_nir_opts(shader->selector->screen, nir, false); } diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index c9d268e7073..1a5c651e59b 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -435,6 +435,4 @@ void si_finalize_nir(struct pipe_screen *screen, struct nir_shader *nir, NIR_PASS(progress, nir, nir_opt_large_constants, glsl_get_natural_size_align_bytes, 16); if (progress) si_nir_opts(sscreen, nir, false); - - NIR_PASS(_, nir, si_nir_mark_divergent_texture_non_uniform); }