mesa/docs
Alyssa Rosenzweig d72e1418ce asahi: Implement transform feedback
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>
2023-05-07 09:10:37 -04:00
..
_extra docs: move old relnotes to _extra directory 2023-03-30 10:09:01 +00:00
_exts docs: remove support for old sphinx-versions 2023-04-26 22:45:41 +00:00
ci docs: vlan -> VLAN 2023-04-26 08:09:37 +00:00
drivers zink: add ZINK_DEBUG=optimal_keys 2023-05-05 12:32:40 +00:00
gallium docs/tgsi: use \ll and \gg for left and right shift 2023-05-05 21:40:35 +02:00
isl intel: Drop some author comments and update Faith's name 2023-03-26 00:16:25 +00:00
mesa3d_theme docs: fixup About Mesa3D.org link 2023-05-04 07:22:56 +00:00
nir docs: remove needless c:expr roles 2022-11-09 12:09:17 +00:00
relnotes docs: Add sha256 sum for 23.0.3 2023-04-21 20:26:07 +00:00
vulkan vulkan: write beta extensions into generator scripts. 2023-05-04 02:40:06 +00:00
amber.rst docs: use anonymous links when possible 2022-11-07 10:58:12 +00:00
android.rst docs: format code-block as ini 2023-03-31 09:39:17 +00:00
application-issues.rst docs: update internal references 2020-06-16 20:36:38 +00:00
ARB_color_buffer_float.txt
bugs.rst docs: make most important part of bugs.rst easier to find 2021-08-08 19:53:15 +00:00
codingstyle.rst docs: upgrade some links to https 2022-11-07 10:58:12 +00:00
conf.py docs: use custom html theme 2023-04-26 22:45:41 +00:00
conform.rst docs: fix incorrect possessive form 2021-03-31 16:23:19 +00:00
debugging.rst docs: debugging: Fix path to dlist.c 2023-01-12 13:57:41 +00:00
devinfo.rst docs: update docs for new extension header. 2022-01-20 00:20:06 +00:00
dispatch.rst glx,dri: simplify indirect function call syntax 2022-11-27 02:52:41 +00:00
download.rst docs: prefer http-links over ftp 2023-03-26 19:46:48 +00:00
doxygen-wrapper.py ci: Add missing dependency on doxygen sources for docs-generation jobs. 2023-04-04 20:00:17 +00:00
egl.rst docs: do not mention EGL_MESA_drm_display 2022-11-15 10:01:15 +00:00
envvars.rst anv: make internal address space allocation more dynamic 2023-05-05 14:48:15 +03:00
extensions.rst docs: convert articles to reructuredtext 2020-06-13 10:42:00 +00:00
faq.rst docs: apply some redirects 2022-11-10 17:26:19 +01:00
favicon.ico docs: update favicon 2020-06-26 12:09:22 +00:00
favicon.svg docs: update favicon 2020-06-26 12:09:22 +00:00
features.txt asahi: Implement transform feedback 2023-05-07 09:10:37 -04:00
gallium-nine.rst meson: use a feature option for dri3 2023-01-19 16:29:03 +00:00
gitlab-ci.yml docs: use custom html theme 2023-04-26 22:45:41 +00:00
gpu-perf-tracing.rst docs/u_trace: document u_trace usage 2022-05-19 17:57:36 +00:00
helpwanted.rst docs: Rename master branch to main 2021-05-05 12:21:00 -07:00
history.rst docs: drop manual URL encoding 2022-11-10 17:17:55 +01:00
index.rst docs: use custom html theme 2023-04-26 22:45:41 +00:00
install.rst docs: include explicit setup in instructions 2023-02-22 20:07:16 +00:00
libGL.txt docs: XFree86 source files in libGL.txt are out date, remove it 2022-11-03 16:07:31 +00:00
license.rst c11: Move the implementation of threads.h into c source code 2022-06-15 17:37:17 +00:00
lists.rst docs: apply some redirects 2022-11-10 17:26:19 +01:00
macos.rst docs: Remove docs about macOS hardware drivers 2023-03-31 00:55:44 +00:00
meson.rst meson: bump minimum version to 0.60 2023-03-10 07:20:29 +00:00
opengles.rst meson: use a feature option for gles2 2023-01-19 16:29:03 +00:00
osmesa.rst docs: include explicit setup in instructions 2023-02-22 20:07:16 +00:00
perf.rst docs: spell out "environment variable" 2022-10-25 10:06:44 +00:00
perfetto.rst docs/perfetto: Fix the name of the i915 render stages data sources. 2023-01-12 20:21:03 +00:00
precompiled.rst docs: fixup rebase mistake 2022-11-02 10:49:58 +00:00
README.UVD
README.VCE
release-calendar.csv docs: update calendar for 23.0.3 2023-04-21 20:26:08 +00:00
release-calendar.rst docs: store the release-calendar information in csv (and fix tests) 2021-01-07 00:07:56 +00:00
release-maintainers-keys.asc docs: cat maintainer keys to a single file 2020-06-22 23:07:16 +00:00
releasing.rst docs/releasing: add convenient command to rebase everything since last release 2022-11-14 20:06:44 +00:00
relnotes.rst docs: add release notes for 23.0.3 2023-04-21 20:26:07 +00:00
repository.rst docs: apply some redirects 2022-11-10 17:26:19 +01:00
rusticl.rst rusticl: fix build error with valgrind being enabled 2023-01-30 03:41:39 +01:00
shading.rst docs: Claim less functionality for glsl_compiler. 2023-04-04 20:00:17 +00:00
sourcetree.rst docs: fixup broken indentation 2023-03-21 11:24:13 +00:00
submittingpatches.rst docs: clean up labels 2022-11-02 10:16:44 +00:00
systems.rst docs: There is no more swrast driver 2022-11-02 11:10:15 +00:00
u_trace.rst docs: perfetto -> Perfetto 2023-04-26 08:09:37 +00:00
utilities.rst docs: utilities: Update list of development utilities 2023-01-12 13:57:41 +00:00
viewperf.rst docs: update links to SPECviewperf 11/12 2022-11-10 17:26:19 +01:00
xlibdriver.rst docs: remove stale envvar-reference 2022-11-15 11:25:05 +01:00

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.