Draft: st/mesa: always lower IO in the GLSL linker, then unlower IO to variables before passing to drivers
This enables nir_opt_varyings
and nir_opt_vectorize_io
for all gallium drivers, which are our best IO optimizations in Mesa so far. It also fixes some of the more complex test failures for many drivers (usually having to do with variable indexing).
It will enable code removal and restructing of all GLSL linker and st/mesa code that deals with IO.
I don't recommend drivers to start lowering IO in st/mesa yet. Doing so would only make future cleanups more difficult. For example, compact arrays are planned to be removed from GLSL compilation and NIR passes, and st_unlower_io_to_vars
will reconstruct compact arrays if drivers need them.