mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 04:50:11 +01:00
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> |
||
|---|---|---|
| .. | ||
| _extra | ||
| _exts | ||
| ci | ||
| drivers | ||
| gallium | ||
| isl | ||
| mesa3d_theme | ||
| nir | ||
| relnotes | ||
| vulkan | ||
| amber.rst | ||
| android.rst | ||
| application-issues.rst | ||
| ARB_color_buffer_float.txt | ||
| bugs.rst | ||
| codingstyle.rst | ||
| conf.py | ||
| conform.rst | ||
| debugging.rst | ||
| devinfo.rst | ||
| dispatch.rst | ||
| download.rst | ||
| doxygen-wrapper.py | ||
| egl.rst | ||
| envvars.rst | ||
| extensions.rst | ||
| faq.rst | ||
| favicon.ico | ||
| favicon.svg | ||
| features.txt | ||
| gallium-nine.rst | ||
| gitlab-ci.yml | ||
| gpu-perf-tracing.rst | ||
| helpwanted.rst | ||
| history.rst | ||
| index.rst | ||
| install.rst | ||
| libGL.txt | ||
| license.rst | ||
| lists.rst | ||
| macos.rst | ||
| meson.rst | ||
| opengles.rst | ||
| osmesa.rst | ||
| perf.rst | ||
| perfetto.rst | ||
| precompiled.rst | ||
| README.UVD | ||
| README.VCE | ||
| release-calendar.csv | ||
| release-calendar.rst | ||
| release-maintainers-keys.asc | ||
| releasing.rst | ||
| relnotes.rst | ||
| repository.rst | ||
| rusticl.rst | ||
| shading.rst | ||
| sourcetree.rst | ||
| submittingpatches.rst | ||
| systems.rst | ||
| u_trace.rst | ||
| utilities.rst | ||
| viewperf.rst | ||
| xlibdriver.rst | ||
The software may implement third party technologies (e.g. third party libraries) that are not licensed to you by AMD and for which you may need to obtain licenses from other parties. Unless explicitly stated otherwise, these third party technologies are not licensed hereunder. Such third party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4, AVC, and VC-1. For MPEG-2 Intermediate Products: ANY USE OF THIS PRODUCT IN ANY MANNER OTHER THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD IS EXPRESSLY PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT PORTFOLIO, WHICH LICENSES IS AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers Green Circle, Suite 400E, Greenwood Village, Colorado 80111 U.S.A. WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR COURSE OF USAGE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS ASSUMED BY YOU. Some jurisdictions do not allow the exclusion of implied warranties, so the above exclusion may not apply to You. LIMITATION OF LIABILITY AND INDEMNIFICATION: AMD AND ITS LICENSORS WILL NOT, UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event shall AMD's total liability to You for all damages, losses, and causes of action (whether in contract, tort (including negligence) or otherwise) exceed the amount of $100 USD. You agree to defend, indemnify and hold harmless AMD and its licensors, and any of their directors, officers, employees, affiliates or agents from and against any and all loss, damage, liability and other expenses (including reasonable attorneys' fees), resulting from Your use of the Software or violation of the terms and conditions of this Agreement. U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED RIGHTS." Use, duplication, or disclosure by the Government is subject to the restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or its successor. Use of the Software by the Government constitutes acknowledgement of AMD's proprietary rights in them. EXPORT RESTRICTIONS: The Software may be subject to export restrictions as stated in the Software License Agreement.