6ccf2a375a1974ab5e313e3793c06bf46198d66c
Currently on platforms without EU fusion (all platforms other than gfx12.x) we were using a constant discard_weight = 1.0 regardless of SIMD width. This was far from ideal, in particular since it made the performance analysis pass fully insensitive to the presence of discard jumps, even though the scheduler is able to move code past a discard statement so the range of the program under discard control flow can vary and have a material effect on the relative performance of SIMD16 vs. SIMD32, since the scheduler is typically more constrained in SIMD32 dispatch mode. In order to fix this use a discard_weight lower than 1.0 for all dispatch modes, so that the performance analysis pass accounts for the presence and range of discard control flow. In addition use a lower discard_weight for SIMD16 dispatch like we do on Gfx12.x in order to account for the higher likelihood of divergent discard in SIMD32 mode. The specific weights were determined iteratively on PTL based on the final FPS result of several traces that are sensitive to the dispatch width of one or more fragment shaders that use discard, in order to ensure that in none of those cases we end up using the lower-performing dispatch width variant. This avoids regressions between 3.7% and 0.8% in Superposition-trace-dx11-2160p-extreme, BaldursGate3-trace-dx11-1440p-ultra and MetroExodus-trace-dx11-2160p-ultra after enabling the static analysis-based SIMD32 heuristic in PTL. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> (v1) v2: Limit to xe3+ for now since performance effect seems to be a wash on xe2. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36618>
`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.
Description
Languages
C
75.5%
C++
17.2%
Python
2.7%
Rust
1.8%
Assembly
1.5%
Other
1%