mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 05:10:11 +01:00
read-only mirror of https://gitlab.freedesktop.org/mesa/mesa
Previously, we would spill at the NIR level any temp array over 16 vec4s. This had two problems: 1) We wouldn't spill for the worst case scenario: a MAD accessing a dst array and 3 different src arrays (that all get fully unspilled, rather than just reloading the specific reg in the operand). This would fail to register allocate. We haven't seen this in practice. 2) We would spill vec4[17] and larger arrays that weren't necessary to get the shader to register allocate. This occurred on a FS for in Stray that had a vec4[24] array and just 4 vec4s of register pressure other than the array. Instead, use NIR scratch spilling when the worst case set of vars to reference in an instruction would overflow GPR space. This makes the shader in Stray go from 11ms to .5ms, by eliminating all spilling and leaving the array in GPRs. On the other hand, if leaving the arrays unspilled in NIR means that we cause spilling in ir3, the fact that ir3 spills/reloads work on the whole array may cause the amount of spilling to increase. However, we can see the effect is very small in terms of number of shaders affected in shader-db and an overwhelmingly positive effect on spills: MaxWaves: 22522470 -> 22520664 (-0.01%) Instrs: 396093281 -> 396122221 (+0.01%); split: -0.00%, +0.01% STPs: 218915 -> 182907 (-16.45%) LDPs: 155374 -> 153364 (-1.29%); split: -2.79%, +1.50% Totals from 496 (0.03% of 1561298) affected shaders: MaxWaves: 3792 -> 1986 (-47.63%) Instrs: 441224 -> 470164 (+6.56%); split: -0.00%, +6.57% CodeSize: 926164 -> 976734 (+5.46%); split: -0.05%, +5.52% NOPs: 58896 -> 52765 (-10.41%); split: -14.95%, +4.60% MOVs: 16314 -> 57901 (+254.92%) COVs: 3293 -> 5146 (+56.27%) Full: 12876 -> 23632 (+83.54%) (ss): 18613 -> 11573 (-37.82%); split: -47.53%, +9.71% (sy): 2539 -> 2505 (-1.34%); split: -10.75%, +9.41% (ss)-stall: 40682 -> 26413 (-35.07%); split: -47.90%, +12.80% (sy)-stall: 147862 -> 117004 (-20.87%); split: -37.65%, +16.69% STPs: 38566 -> 2558 (-93.37%) LDPs: 5060 -> 3050 (-39.72%); split: -85.77%, +45.93% Cat0: 65593 -> 59487 (-9.31%); split: -13.42%, +4.15% Cat1: 19667 -> 63105 (+220.87%) Cat2: 155958 -> 157879 (+1.23%); split: -0.05%, +1.28% Cat6: 105228 -> 94910 (-9.81%); split: -12.36%, +2.54% Cat7: 2480 -> 2485 (+0.20%); split: -0.08%, +0.28% Subgroup size: 31872 -> 31744 (-0.40%) The primary impacted application from shader-db is gfxbench aztec ruins. A quick test of it showed no significant performance improvement (n=3). Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37245> |
||
|---|---|---|
| .ci-farms | ||
| .ci-farms-disabled | ||
| .github/workflows | ||
| .gitlab | ||
| .gitlab-ci | ||
| .marge/hooks | ||
| android | ||
| bin | ||
| build-support | ||
| docs | ||
| include | ||
| licenses | ||
| src | ||
| subprojects | ||
| .clang-format-ignore | ||
| .clang-format-include | ||
| .dir-locals.el | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .graphqlrc.yml | ||
| .mailmap | ||
| .mr-label-maker.yml | ||
| .shellcheckrc | ||
| CODEOWNERS | ||
| meson.build | ||
| meson.options | ||
| README.rst | ||
| rustfmt.toml | ||
| VERSION | ||
`Mesa <https://mesa3d.org>`_ - The 3D Graphics Library ====================================================== Source ------ This repository lives at https://gitlab.freedesktop.org/mesa/mesa. Other repositories are likely forks, and code found there is not supported. Build & install --------------- You can find more information in our documentation (`docs/install.rst <https://docs.mesa3d.org/install.html>`_), but the recommended way is to use Meson (`docs/meson.rst <https://docs.mesa3d.org/meson.html>`_): .. code-block:: sh $ meson setup build $ ninja -C build/ $ sudo ninja -C build/ install Support ------- Many Mesa devs hang on IRC; if you're not sure which channel is appropriate, you should ask your question on `OFTC's #dri-devel <irc://irc.oftc.net/dri-devel>`_, someone will redirect you if necessary. Remember that not everyone is in the same timezone as you, so it might take a while before someone qualified sees your question. To figure out who you're talking to, or which nick to ping for your question, check out `Who's Who on IRC <https://dri.freedesktop.org/wiki/WhosWho/>`_. The next best option is to ask your question in an email to the mailing lists: `mesa-dev\@lists.freedesktop.org <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_ Bug reports ----------- If you think something isn't working properly, please file a bug report (`docs/bugs.rst <https://docs.mesa3d.org/bugs.html>`_). Contributing ------------ Contributions are welcome, and step-by-step instructions can be found in our documentation (`docs/submittingpatches.rst <https://docs.mesa3d.org/submittingpatches.html>`_). Note that Mesa uses gitlab for patches submission, review and discussions.