anv/brw: vertex fetching component packing
What does this MR do and why?
Adding support for VF component packing.
Draft because I need to add shader stats but I already know it hurting more than it helps (fortunately only a few titles like Fortnite).
I'll make use of that feature for !31384 so that 3DSTATE_VERTEX_ELEMENTS can be completely independent of shaders (for indirectly bound pipelines)
DG2 a/b testing:
Borderlands3 -0.55%
Cyberpunk +0.38%
Superposition -0.67%
DG2 shader stats:
Blackops 3:
Totals from 265 (16.44% of 1612) affected shaders:
Instrs: 109055 -> 109080 (+0.02%); split: -0.01%, +0.04%
Cycle count: 6166549 -> 6021371 (-2.35%); split: -2.53%, +0.17%
Cyberpunk 2077:
Totals from 297 (23.50% of 1264) affected shaders:
Instrs: 197305 -> 197297 (-0.00%); split: -0.03%, +0.02%
Cycle count: 3374325 -> 3356562 (-0.53%); split: -1.23%, +0.70%
Fortnite:
Totals from 2090 (27.97% of 7471) affected shaders:
Instrs: 1777944 -> 1781070 (+0.18%); split: -0.01%, +0.18%
Cycle count: 25188758 -> 25162910 (-0.10%); split: -0.86%, +0.76%
Spill count: 1439 -> 1729 (+20.15%); split: -0.69%, +20.85%
Fill count: 1226 -> 1395 (+13.78%); split: -0.82%, +14.60%
Scratch Memory Size: 122880 -> 138240 (+12.50%); split: -1.67%, +14.17%
Hitman 3:
Totals from 490 (9.09% of 5392) affected shaders:
Instrs: 407489 -> 407486 (-0.00%); split: -0.00%, +0.00%
Cycle count: 1831149 -> 1831890 (+0.04%); split: -0.33%, +0.38%
Metro Exodus:
Totals from 4169 (9.68% of 43076) affected shaders:
Instrs: 817730 -> 817726 (-0.00%); split: -0.00%, +0.00%
Cycle count: 4646954 -> 4641559 (-0.12%); split: -0.61%, +0.50%
Xe2 shader stats :
Blackops 3:
Totals from 283 (19.46% of 1454) affected shaders:
Cycle count: 7662980 -> 7916316 (+3.31%); split: -0.38%, +3.69%
Cyberpunk 2077:
Totals from 329 (26.79% of 1228) affected shaders:
Instrs: 203312 -> 203327 (+0.01%); split: -0.01%, +0.02%
Cycle count: 4415812 -> 4434906 (+0.43%); split: -0.69%, +1.12%
Fortnite:
Totals from 1981 (30.18% of 6565) affected shaders:
Instrs: 1709583 -> 1711379 (+0.11%); split: -0.00%, +0.11%
Cycle count: 26882682 -> 26914014 (+0.12%); split: -0.66%, +0.78%
Spill count: 863 -> 1020 (+18.19%)
Fill count: 1195 -> 1271 (+6.36%)
Scratch Memory Size: 116736 -> 122880 (+5.26%)
Hitman 3:
Totals from 540 (10.56% of 5115) affected shaders:
Instrs: 478993 -> 478994 (+0.00%)
Cycle count: 3198740 -> 3198416 (-0.01%); split: -0.27%, +0.26%
Metro Exodus:
Totals from 4554 (12.28% of 37071) affected shaders:
Cycle count: 6460340 -> 6475666 (+0.24%); split: -0.38%, +0.62%
Edited by Lionel Landwerlin