mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-04 14:50:35 +02:00
SIMD1 instructions are problematic because they are considered partial writes. This increases the liveness of the destination register written by those instructions. To workaround this we use UNDEF instructions to bound the liveness of the register. But this causing other issues like in this case : undef(1) vgrf2 mov(1) vgrf2, u4.0 add(1) vgrf3, vgrf2.0, 64UD In this case the copy propagation pass in unable to see that vgrf2 in the add() instruction can be replaced with the uniform u4.0. To fix this problem, we switch NoMask SIMD8 instructions that cover the entire register. We can drop the UNDEF instructions and now copy propagation can do its job. Good results on 2 apps : Cyberpunk 2077 : Totals from 7258 (68.80% of 10549) affected shaders: Instrs: 6332210 -> 6073833 (-4.08%); split: -4.11%, +0.03% Cycles: 130667501 -> 127351268 (-2.54%); split: -3.12%, +0.58% Subgroup size: 90320 -> 90400 (+0.09%) Spill count: 90 -> 68 (-24.44%) Fill count: 82 -> 64 (-21.95%) Scratch Memory Size: 8192 -> 6144 (-25.00%) Max live registers: 385464 -> 375152 (-2.68%) Max dispatch width: 64336 -> 64424 (+0.14%); split: +0.96%, -0.82% Gaining 60 SIMD16/SIMD32 shaders, loosing 33 Strange Brigade : Totals from 2137 (53.12% of 4023) affected shaders: Instrs: 1544031 -> 1457544 (-5.60%); split: -5.60%, +0.00% Cycles: 22292564 -> 21868978 (-1.90%); split: -2.43%, +0.53% Subgroup size: 25328 -> 25344 (+0.06%) Max live registers: 113716 -> 111214 (-2.20%) Max dispatch width: 17232 -> 18608 (+7.99%); split: +8.36%, -0.37% Gaining 138 SIMD16/SIMD32 shaders, loosing 4 On app slightly negatively affected : Dota2 : Totals from 232 (14.73% of 1575) affected shaders: Instrs: 30029 -> 28194 (-6.11%) Cycles: 385155 -> 371422 (-3.57%); split: -3.59%, +0.02% Max live registers: 6792 -> 6780 (-0.18%) Max dispatch width: 2256 -> 2160 (-4.26%) Loosing 6 SIMD32 shaders Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24554> |
||
|---|---|---|
| .. | ||
| amd | ||
| android_stub | ||
| asahi | ||
| broadcom | ||
| c11 | ||
| compiler | ||
| drm-shim | ||
| egl | ||
| etnaviv | ||
| freedreno | ||
| gallium | ||
| gbm | ||
| getopt | ||
| glx | ||
| gtest | ||
| imagination | ||
| imgui | ||
| intel | ||
| loader | ||
| mapi | ||
| mesa | ||
| microsoft | ||
| nouveau | ||
| panfrost | ||
| tool | ||
| util | ||
| virtio | ||
| vulkan | ||
| .clang-format | ||
| meson.build | ||