turnip: Multi-position output

This is an optimization for multiview that is a bit involved and hence was left out of the initial multiview enabling. The guts of the optimization are extracted from anv in !6514 (merged), so the series itself mostly involves handling the resulting optimized shaders in ir3 and turnip. However I did refactor the compilation flow to be more like anv and radv, so that we could more easily slot the optimization in (and in future do cross-stage optimizations).

I've tested this with the benchmark from crucible!58 (merged) and I'm seeing consistent speedups of around 15-20% for every view count (except for with 1 view, of course).

Edited by Connor Abbott

Merge request reports