gecko-dev/gfx/gl
Jamie Nicol 7adec85b80 Bug 1575765 - Implement KHR_partial_update for webrender. r=sotaro,jgilbert
KHR_partial_update allows us to avoid rerendering the entire
backbuffer every frame, and instead only render what has changed on
the current frame, as well as the difference between the current
backbuffer and the current frontbuffer. It works similarily to
EXT_buffer_age, which we already support, with the additional
requirement that we must call eglSetDamageRegion each frame before
rendering to the backbuffer.

Modify GLContextEGL::GetBufferAge() so that it queries the age if
either EXT_buffer_age or KHR_partial_update are available. This will
now automatically be queried by webrender through the
PartialPresentCompositor trait. Add a new function to that trait,
set_buffer_damage_region(), whose RenderCompositorEGL implementation
calls eglSetDamageRegion(). Call this from composite_simple(), once
the damage rect has been calculated but before rendering to the
backbuffer.

Additionally, change both RenderCompositorEGL and
RenderCompositorOGL's implementations of
ShouldDrawPreviousPartialPresentRegions() to unconditionally return
true, rather than checking for the existence of EXT_buffer_age (or
adding a new check for KHR_partial_update). The lack of these
extensions does not mean that webrender is able to skip rendering
previous frames' damage. Rather the opposite, it means we cannot
render *only* the previous frames' damage, and must instead always
render the entire buffer.

Differential Revision: https://phabricator.services.mozilla.com/D91203
2020-10-02 10:23:56 +00:00
..
AndroidNativeWindow.h Bug 1648076 - Use AndroidSurfaceTexture related files only on Android r=jgilbert 2020-06-24 18:59:14 +00:00
AndroidSurfaceTexture.cpp Bug 1519636 - Reformat recent changes to the Google coding style r=andi 2020-09-20 10:14:09 +00:00
AndroidSurfaceTexture.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
DecomposeIntoNoRepeatTriangles.cpp
DecomposeIntoNoRepeatTriangles.h
ForceDiscreteGPUHelperCGL.h
GfxTexturesReporter.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GfxTexturesReporter.h Bug 1613985 - Use default for equivalent-to-default constructors/destructors in gfx. r=jrmuizel 2020-03-04 15:39:20 +00:00
GLBlitHelper.cpp Bug 1660709 - Use MacIOSurface code to determine texture formats when binding an IOSurface to a texture. r=jgilbert 2020-09-10 23:38:30 +00:00
GLBlitHelper.h
GLBlitHelperD3D.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLConsts.h
GLConsts.py
GLContext.cpp Bug 1665300 - Disable glGetGraphicsResetStatus usage on android emulator r=jgilbert 2020-09-29 04:37:22 +00:00
GLContext.h Bug 1666293 - Flush explicitly before deleting textures. r=jgilbert 2020-09-21 20:24:51 +00:00
GLContextCGL.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextEAGL.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextEGL.h Bug 1575765 - Implement KHR_partial_update for webrender. r=sotaro,jgilbert 2020-10-02 10:23:56 +00:00
GLContextFeatures.cpp Bug 1658433 - Implement WebGL draft extension EXT_texture_norm16. r=lsalzman,webidl,smaug 2020-08-12 15:19:17 +00:00
GLContextGLX.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextProvider.h Bug 1640048 - [X11] Initial EGL runtime support, r=jgilbert,rmader 2020-07-02 13:50:41 +00:00
GLContextProviderCGL.mm Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextProviderEAGL.mm Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextProviderEGL.cpp Bug 1575765 - Implement KHR_partial_update for webrender. r=sotaro,jgilbert 2020-10-02 10:23:56 +00:00
GLContextProviderGLX.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextProviderImpl.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextProviderNull.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextProviderWayland.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextProviderWGL.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextProviderX11.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLContextSymbols.h
GLContextTypes.h Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol 2020-06-15 18:25:55 +00:00
GLContextWGL.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
GLDebugUtils.cpp
GLDebugUtils.h
GLDefs.h
GLLibraryEGL.cpp Bug 1575765 - Implement KHR_partial_update for webrender. r=sotaro,jgilbert 2020-10-02 10:23:56 +00:00
GLLibraryEGL.h Bug 1575765 - Implement KHR_partial_update for webrender. r=sotaro,jgilbert 2020-10-02 10:23:56 +00:00
GLLibraryLoader.cpp Bug 1627482 - Fix non-unified build errors in gfx/gl. r=tnikkel 2020-04-05 03:50:33 +00:00
GLLibraryLoader.h Bug 1627482 - Fix non-unified build errors in gfx/gl. r=tnikkel 2020-04-05 03:50:33 +00:00
GLReadTexImageHelper.cpp Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol 2020-06-15 18:25:55 +00:00
GLReadTexImageHelper.h
GLScreenBuffer.cpp Bug 1647491 - Hold ref to previous webgl frontbuffer while in-flight. r=lsalzman 2020-07-02 01:45:36 +00:00
GLScreenBuffer.h Bug 1519636 - Reformat recent changes to the Google coding style r=andi 2020-07-04 09:38:43 +00:00
GLTextureImage.cpp Bug 1642989 - Use RemoveLastElements instead of RemoveElementsAt where possible. r=froydnj 2020-06-08 08:50:15 +00:00
GLTextureImage.h
GLTypes.h
GLUploadHelpers.cpp Bug 1536515 - Part 1: Use the correct OpenGL formats for SurfaceFormat::A8 and SurfaceFormat::A16 r=jgilbert 2020-07-07 17:56:46 +00:00
GLUploadHelpers.h
GLXLibrary.h Bug 1656472 - [X11] Drop CopySubBufferMESA and add SwapBuffersWithDamage support, r=nical 2020-07-31 16:13:54 +00:00
HeapCopyOfStackArray.h
moz.build Bug 1649088 - Add SharedSurface support with AHardwareBuffer support on android r=jgilbert 2020-09-11 03:11:45 +00:00
MozFramebuffer.cpp
MozFramebuffer.h Bug 1653011 - Simplify and make WeakPtr<Derived> usable and compact. r=froydnj,sg,geckoview-reviewers,jgilbert,kvark,snorp 2020-07-23 14:51:46 +00:00
ScopedGLHelpers.cpp
ScopedGLHelpers.h
SharedSurface.cpp Bug 1665241 - Simplify SurfaceFactory::Create() at TextureType::AndroidNativeWindow case r=jgilbert 2020-09-29 04:28:48 +00:00
SharedSurface.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
SharedSurfaceAndroidHardwareBuffer.cpp Bug 1667932 - Fix file descriptor handling in SharedSurface_AndroidHardwareBuffer::WaitForBufferOwnership() r=jgilbert 2020-09-29 22:44:33 +00:00
SharedSurfaceAndroidHardwareBuffer.h Bug 1649088 - Add SharedSurface support with AHardwareBuffer support on android r=jgilbert 2020-09-11 03:11:45 +00:00
SharedSurfaceANGLE.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
SharedSurfaceANGLE.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
SharedSurfaceD3D11Interop.cpp Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol 2020-06-15 18:25:55 +00:00
SharedSurfaceD3D11Interop.h Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol 2020-06-15 18:25:55 +00:00
SharedSurfaceDMABUF.cpp Bug 1656505 [Linux] Restore active texture when dmabuf texture is created and provide logging to dmabuf surfaces, r=jgilbert 2020-09-01 07:24:46 +00:00
SharedSurfaceDMABUF.h Bug 1646007 [Wayland] Check Wayland dmabuf backend and fallback to a default one, r=jgilbert 2020-06-25 05:57:40 +00:00
SharedSurfaceEGL.cpp Bug 1654475 - SharedSurface_SurfaceTexture: Only ReleaseTexImage if IsSingleBuffer r=jgilbert 2020-09-10 17:19:15 +00:00
SharedSurfaceEGL.h Bug 1659681 - Avoid crash in ~SharedSurace_SurfaceTexture() when GLContext is lost r=sotaro,jgilbert 2020-09-01 13:00:39 +00:00
SharedSurfaceGL.cpp Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol 2020-06-15 18:25:55 +00:00
SharedSurfaceGL.h Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol 2020-06-15 18:25:55 +00:00
SharedSurfaceGLX.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
SharedSurfaceGLX.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
SharedSurfaceIO.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
SharedSurfaceIO.h Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
SurfaceTypes.h Bug 1649088 - Add SharedSurface support with AHardwareBuffer support on android r=jgilbert 2020-09-11 03:11:45 +00:00
TextureImageEGL.cpp Bug 1656034 - Support multiple EglDisplays per GLLibraryEGL. r=lsalzman,sotaro,stransky 2020-08-07 07:14:46 +00:00
TextureImageEGL.h Bug 1627482 - Fix non-unified build errors in gfx/gl. r=tnikkel 2020-04-05 03:50:33 +00:00
WGLLibrary.h