d72e1418ce4f66c42f20779f50f40091d3d310b0

This code was originally based on the Panfrost implementation, but has been improved in a number of ways. 1. Transform feedback programs are dispatched generically with Gallium calls, rather than emitting something hardware-specific. This is cleaner and portable to future GPUs. 2. Transform feedback with indexed draws is now fixed, by lowering to an index buffer pull. 3. Transform feedback with buffer overflows is now fixed, by correctly bounds checking in transform feedback programs. 4. Transform feedback with strips/fans/loops are fixed, by correctly tessellating to the underlying primitives as required by OpenGL. 5. Transform feedback with QUADS is fixed, by tessellating to triangles as required by OpenGL. That said, the code is still not in its final form. 1. It still does not support indirect draws. This will require a substantial overhaul to do tracking on the GPU instead of the CPU. Currently we force unroll indirect draws (slow but kosher in GL, treif in Vulkan). This isn't hard to solve but I'm not going to duplicate the code until the algorithms are otherwise complete because it's a lot easier to hack on the CPU versions than the GPU versions. 2. It still does not support primitive restart. This has especially nasty interactions with transform feedback. Again we force unroll to non-primitive restart forms, again slow but kosher in GL but treif in Vulkan. This is a lot harder to deal with. I sketched out something really nasty in my notebook (hinging on efficient GPU prefix sums) but I'm not in a hurry to type this out. 3. There will be interactions with geometry and tessellation shaders and I don't think I can get the core code here future-proofed without actually bringing up the new shader stages. As such, this is a hard fork of the panfrost code for now, I'm not trying to share the code (although it *would* clear out almost all of panfrost's transform feedback related piglit failures). Passes dEQP-GLES3.functional.transform_feedback.* and most of the relevant piglits. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>
`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://mesa3d.org/install.html>`_), but the recommended way is to use Meson (`docs/meson.rst <https://mesa3d.org/meson.html>`_): .. code-block:: sh $ mkdir build $ cd build $ meson .. $ sudo ninja 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://mesa3d.org/bugs.html>`_). Contributing ------------ Contributions are welcome, and step-by-step instructions can be found in our documentation (`docs/submittingpatches.rst <https://mesa3d.org/submittingpatches.html>`_). Note that Mesa uses gitlab for patches submission, review and discussions.
Description
Languages
C
75.3%
C++
18.2%
Python
2.7%
Assembly
1.5%
Rust
1.2%
Other
0.9%