diff --git a/src/mesa/state_tracker/st_nir_builtins.c b/src/mesa/state_tracker/st_nir_builtins.c index 1a44ae20965..a1c91dcc01c 100644 --- a/src/mesa/state_tracker/st_nir_builtins.c +++ b/src/mesa/state_tracker/st_nir_builtins.c @@ -73,6 +73,12 @@ st_nir_finish_builtin_nir(struct st_context *st, nir_shader *nir) if (!screen->get_param(screen, PIPE_CAP_NIR_IMAGES_AS_DEREF)) NIR_PASS(_, nir, gl_nir_lower_images, false); + if (nir->info.io_lowered && + !(nir->options->io_options & nir_io_has_intrinsics)) { + NIR_PASS(_, nir, st_nir_unlower_io_to_vars); + gl_nir_opts(nir); + } + if (screen->finalize_nir) { char *msg = screen->finalize_nir(screen, nir); free(msg);