diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp index 24776f7f9c4..911284401e0 100644 --- a/src/mesa/state_tracker/st_glsl_to_nir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp @@ -665,7 +665,10 @@ st_link_nir(struct gl_context *ctx, mask = (nir_variable_mode)(mask | nir_var_shader_out); nir_shader *nir = shader->Program->nir; - NIR_PASS_V(nir, nir_lower_io_to_scalar_early, mask); + + if (is_scalar[i]) + NIR_PASS_V(nir, nir_lower_io_to_scalar_early, mask); + st_nir_opts(nir, is_scalar[i]); }