gecko-dev/gfx/gl
Jamie Nicol 942a3f5367 Bug 1826134 - Avoid interleaving glBufferSubData calls with draw calls in DrawTargetWebgl. r=gfx-reviewers,jgilbert,lsalzman
DrawTargetWebgl renders a path by uploading vertex data to the back of
a large VBO using glBufferSubData then issuing a draw call, orphaning
the buffer when it becomes full. This results in many glBufferSubData
calls being interleaved with draw calls. On Mali GPUs this causes
severe performance issues as the driver is unable to determine that
any pending draw calls do not reference the updated region of the
buffer, and therefore must create a copy of the buffer for each
update.

However, since *we* know that we never overwrite a region that is
referenced by a submitted draw call, we can force the driver to avoid
making these copies. We do so by adding a new function
UnsynchronizedBufferSubData(), which acts like BufferSubData so long
as this rule is followed. Internally, this uses glMapBufferRange with
GL_MAP_UNSYNCHRONIZED_BIT, allowing the driver to omit the extraneous
copies.

Differential Revision: https://phabricator.services.mozilla.com/D174685
2023-04-07 07:25:50 +00:00
..
gtest Bug 1799258 - No-op equal tfs rather than inverting. r=bradwerth 2023-03-13 21:04:10 +00:00
AndroidNativeWindow.h Bug 1706656 - Avoid creating SurfaceTextures in isolated content processes on old android versions. r=geckoview-reviewers,ohall 2023-01-17 18:54:25 +00:00
AndroidSurfaceTexture.cpp Bug 1753349 (3/9): feat(gfx): use `EGL_KHR_no_config_context` in `CreateEGLPBufferOffscreenContext` r=jgilbert 2023-01-19 04:47:52 +00:00
AndroidSurfaceTexture.h Bug 1777952 - Namespace SurfaceTexture handles by the process they were allocated in. r=gfx-reviewers,geckoview-reviewers,aosmond,calu 2022-07-07 08:12:55 +00:00
AutoMappable.h Bug 1785925 - Add LUT and Colorspace support to GLBlitHelper. r=lsalzman,media-playback-reviewers,alwu 2022-09-13 17:40:43 +00:00
Colorspaces.cpp Bug 1799258 - Fix constexpr issue on base toolchain builds. r=gfx-reviewers,lsalzman 2023-03-13 21:04:13 +00:00
Colorspaces.h Bug 1799258 - Support outByIn.size()<2 in SampleOutByIn. r=bradwerth 2023-03-13 21:04:11 +00:00
ForceDiscreteGPUHelperCGL.h
GLBlitHelper.cpp Bug 1805625 - BindAttribLocation on the correct attrib name. r=gfx-reviewers,lsalzman 2023-03-30 23:19:52 +00:00
GLBlitHelper.h Backed out changeset 0a2985a48339 (bug 1769747) for causing gl failures. 2022-10-05 01:38:13 +03:00
GLBlitHelperD3D.cpp Bug 1824068 - Make gfx/gl buildable outside of a unified build environment r=andi 2023-03-24 07:01:07 +00:00
GLConsts.h
GLConsts.py Bug 1790816 - Reformat gfx/gl/GLConsts.py with isort. r=linter-reviewers,ahal DONTBUILD 2022-12-21 16:25:54 +00:00
GLContext.cpp Bug 1826134 - Avoid interleaving glBufferSubData calls with draw calls in DrawTargetWebgl. r=gfx-reviewers,jgilbert,lsalzman 2023-04-07 07:25:50 +00:00
GLContext.h Bug 1826134 - Avoid interleaving glBufferSubData calls with draw calls in DrawTargetWebgl. r=gfx-reviewers,jgilbert,lsalzman 2023-04-07 07:25:50 +00:00
GLContextCGL.h
GLContextEAGL.h
GLContextEGL.h Bug 1753349 (4/9): refactor: rename `CreateEGLPBufferOffscreenContext` to `CreateWithoutSurface` r=jgilbert 2023-01-19 04:47:52 +00:00
GLContextFeatures.cpp Bug 1825673 - Implement WEBGL_provoking_vertex. r=gfx-reviewers,webidl,lsalzman,saschanaz 2023-04-01 00:33:25 +00:00
GLContextGLX.h Bug 1771159 - Don't use gfxXlibSurface in GLContextGLX. r=jgilbert 2022-08-08 16:06:43 +00:00
GLContextProvider.h Bug 1770111 [Linux] Build GLContextProviderLinux on other unix systems r=jgilbert 2022-05-20 12:37:08 +00:00
GLContextProviderCGL.mm Bug 1804368 - Add webgl.forbid-software/forbid-hardware on Mac. r=gfx-reviewers,lsalzman 2023-04-03 21:25:41 +00:00
GLContextProviderEAGL.mm
GLContextProviderEGL.cpp Bug 1753349 (4/9): refactor: rename `CreateEGLPBufferOffscreenContext` to `CreateWithoutSurface` r=jgilbert 2023-01-19 04:47:52 +00:00
GLContextProviderGLX.cpp Bug 1771159 - Don't use gfxXlibSurface in GLContextGLX. r=jgilbert 2022-08-08 16:06:43 +00:00
GLContextProviderImpl.h
GLContextProviderLinux.cpp Bug 1776724 - fix wayland-only build r=jgilbert 2022-07-21 09:10:59 +00:00
GLContextProviderNull.cpp
GLContextProviderWGL.cpp Bug 1824068 - Make gfx/gl buildable outside of a unified build environment r=andi 2023-03-24 07:01:07 +00:00
GLContextSymbols.h Bug 1825673 - Implement WEBGL_provoking_vertex. r=gfx-reviewers,webidl,lsalzman,saschanaz 2023-04-01 00:33:25 +00:00
GLContextTypes.h Bug 1804368 - Add webgl.forbid-software/forbid-hardware on Mac. r=gfx-reviewers,lsalzman 2023-04-03 21:25:41 +00:00
GLContextWGL.h
GLDebugUtils.cpp
GLDebugUtils.h
GLDefs.h Bug 1776470 - Explicitly ask for ANGLE debug layer iff d3d11 debug layer pref enabled. r=gfx-reviewers,bradwerth 2022-07-06 07:45:29 +00:00
GLLibraryEGL.cpp Bug 1825170 - [wayland] Improve access to nsWaylandDisplay. r=stransky 2023-03-30 09:36:31 +00:00
GLLibraryEGL.h Bug 1753349 (3/9): feat(gfx): use `EGL_KHR_no_config_context` in `CreateEGLPBufferOffscreenContext` r=jgilbert 2023-01-19 04:47:52 +00:00
GLLibraryLoader.cpp
GLLibraryLoader.h
GLReadTexImageHelper.cpp
GLReadTexImageHelper.h
GLScreenBuffer.cpp Bug 1794380 - Fix RemoteTexture with WebGL sync present on Android r=gfx-reviewers,lsalzman 2022-12-07 12:40:02 +00:00
GLScreenBuffer.h Bug 1794380 - Fix RemoteTexture with WebGL sync present on Android r=gfx-reviewers,lsalzman 2022-12-07 12:40:02 +00:00
GLTextureImage.cpp Bug 1779166 - Mark two GLContexts as not owned by single threads. r=gfx-reviewers,lsalzman 2022-07-19 02:53:56 +00:00
GLTextureImage.h
GLTypes.h
GLUploadHelpers.cpp
GLUploadHelpers.h
GLVendor.h Bug 1803375. Use different coordinates when running on AMD. r=lsalzman,jgilbert 2023-01-27 01:45:17 +00:00
GLXLibrary.h
GfxTexturesReporter.cpp
GfxTexturesReporter.h
HeapCopyOfStackArray.h
MozFramebuffer.cpp Bug 1756174 - gfxCriticalNote with details, instead of hard assert. r=gfx-reviewers,aosmond 2022-03-14 18:12:22 +00:00
MozFramebuffer.h Backed out changeset 0a2985a48339 (bug 1769747) for causing gl failures. 2022-10-05 01:38:13 +03:00
ScopedGLHelpers.cpp
ScopedGLHelpers.h
SharedSurface.cpp Bug 1810097 - Support AHardwareBuffer of out-of-process WebGL on Android r=lsalzman,gfx-reviewers 2023-01-27 21:35:26 +00:00
SharedSurface.h Bug 1777426 - Support fast readbacks in CopyToSwapChain with async present. r=sotaro,jgilbert 2022-07-12 06:56:19 +00:00
SharedSurfaceANGLE.cpp Bug 1753349 (3/9): feat(gfx): use `EGL_KHR_no_config_context` in `CreateEGLPBufferOffscreenContext` r=jgilbert 2023-01-19 04:47:52 +00:00
SharedSurfaceANGLE.h
SharedSurfaceAndroidHardwareBuffer.cpp Bug 1810097 - Support AHardwareBuffer of out-of-process WebGL on Android r=lsalzman,gfx-reviewers 2023-01-27 21:35:26 +00:00
SharedSurfaceAndroidHardwareBuffer.h
SharedSurfaceD3D11Interop.cpp Bug 1824068 - Make gfx/gl buildable outside of a unified build environment r=andi 2023-03-24 07:01:07 +00:00
SharedSurfaceD3D11Interop.h Bug 1824068 - Make gfx/gl buildable outside of a unified build environment r=andi 2023-03-24 07:01:07 +00:00
SharedSurfaceDMABUF.cpp Bug 1774075 [Linux] Don't use EGL_MESA_image_dma_buf_export on mesa/radeonsi driver r=jgilbert 2022-06-20 10:14:41 +00:00
SharedSurfaceDMABUF.h Bug 1735929 [Linux] Use EGL_MESA_image_dma_buf_export in SharedSurfaceDMABUF r=jgilbert,aosmond 2022-06-09 08:37:20 +00:00
SharedSurfaceEGL.cpp Bug 1784109 - Override SurfaceTexture transform for videos on Mediatek 6735. r=gfx-reviewers,media-playback-reviewers,lsalzman,alwu 2022-09-09 14:43:21 +00:00
SharedSurfaceEGL.h Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw 2022-03-16 18:47:08 +00:00
SharedSurfaceGL.cpp
SharedSurfaceGL.h
SharedSurfaceIO.cpp Bug 1703654 - Prototype display-p3 for WebGL canvas. r=lsalzman,emilio,webidl,smaug 2022-05-02 23:54:09 +00:00
SharedSurfaceIO.h
SurfaceTypes.h
WGLLibrary.h
moz.build Bug 1824068 - Make gfx/gl buildable outside of a unified build environment r=andi 2023-03-24 07:01:07 +00:00