diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 182cb925014..77fac642ed3 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -863,6 +863,12 @@ st_create_common_variant(struct st_context *st, * are still counted as enabled IO, which breaks things. */ NIR_PASS(_, state.ir.nir, nir_opt_dce); + + /* vc4, vc5 require this. */ + if (state.ir.nir->info.stage == MESA_SHADER_VERTEX || + state.ir.nir->info.stage == MESA_SHADER_TESS_EVAL) + NIR_PASS(_, state.ir.nir, nir_move_output_stores_to_end); + NIR_PASS(_, state.ir.nir, st_nir_unlower_io_to_vars); if (state.ir.nir->info.stage == MESA_SHADER_TESS_CTRL &&