788c49ecc66bec8caa3c09857523703ced9b9ba7
(Based on the original implementation by Lionel Landwerlin, but adapted to my respun URB lowering framework.) The mesh shader URB payload requires reading and writing fields at arbitrary DWord offsets. For example, the Primitive Indices array starts at DWord 1, and it can be a vec1[], vec2[], or vec3[] array, leading to very unaligned and sometimes double-parked elements. Still, most fields are still conveniently vec4-aligned. To handle this, we add a new cb_data::vec4_access flag. If set, access remains in vec4 units, with vec4 alignment. We use this for non-mesh stages. When unset, offset is in 32-bit units, allowing unaligned DWord access. This is trivial to support on Xe2, where the LSC URB messages support arbitrary byte-aligned addressing. On older platforms, we have to convert this to vec4 aligned offsets plus a component offset (either returning a subset of the channels loaded, or using component masking to store a subset of a vec4/vec8). Thankfully, since the OWord URB messages support accessing a vec8 at a time, this means we can do any vec4 access in one message, even if it's double-parked. We use mod-analysis to see if we can statically determine the sub-vec4 component offset required (we often can). If not, we use the ability to have dynamic writemasks to sort it out. Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38918>
`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%