gecko-dev/dom/canvas
Lee Salzman 4fb52bf9bc Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert
Most of the support for presenting a WebGLFramebuffer to a swap chain existed as part of the
mechanism for opaque WebXR framebuffer support. However, such "opaque" framebuffer are meant
to be opaque in the sense that their attachments can't be inspected or changed, which does
not provide the requisite level of control for efficiently implementing Canvas2D snapshots.

To this end, the existing Present mechanism is slightly extended to allow presenting to the
swap chain already present in WebGLFramebuffer without the existence of a corresponding
MozFramebuffer.

This also fixes a bug in that AsWebgl() was no longer being utilized in CanvasRenderer, such
that a new mechanism that routed GetFrontBuffer() was needed to fix the code rot.

There are also some efforts to remove a couple redundant copies I noticed in profiles along
the way.

Differential Revision: https://phabricator.services.mozilla.com/D138119
2022-02-11 15:36:30 +00:00
..
crashtests Bug 1744172 - Fix a crash in ClientWebGLContext::DeleteQuery. r=jgilbert 2022-01-27 16:49:19 +00:00
gtest Bug 1519636 - Reformat recent changes to the Google coding style. r=sylvestre 2022-01-11 15:49:03 +00:00
test Bug 1753340 - Increase compositor stack size limit to deal with Mesa and OOP WebGL. r=jgilbert 2022-02-04 17:56:34 +00:00
BasicRenderingContext2D.h Bug 1746093 - Allow OffscreenCanvas as an input for CanvasImageSource and ImageBitmapSource. r=lsalzman,emilio 2021-12-15 21:36:21 +00:00
CacheInvalidator.cpp
CacheInvalidator.h Bug 1723050 - Part 6: Replace typedef by using in dom/canvas/ r=jgilbert 2021-07-30 15:30:52 +00:00
CanvasGradient.cpp
CanvasGradient.h
CanvasImageCache.cpp Bug 1723050 - Part 6: Replace typedef by using in dom/canvas/ r=jgilbert 2021-07-30 15:30:52 +00:00
CanvasImageCache.h Bug 1723050 - Part 6: Replace typedef by using in dom/canvas/ r=jgilbert 2021-07-30 15:30:52 +00:00
CanvasPath.h
CanvasPattern.cpp
CanvasPattern.h
CanvasRenderingContext2D.cpp Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
CanvasRenderingContext2D.h Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
CanvasRenderingContextHelper.cpp Bug 1746750 - Part 3. Implement partial OffscreenCanvasRenderingContext2D. r=lsalzman,webidl,smaug 2022-02-03 20:00:25 +00:00
CanvasRenderingContextHelper.h Bug 1746750 - Part 3. Implement partial OffscreenCanvasRenderingContext2D. r=lsalzman,webidl,smaug 2022-02-03 20:00:25 +00:00
CanvasUtils.cpp Bug 1746750 - Part 2. Add new WebIDL method variants to support OffscreenCanvasRenderingContext2D. r=lsalzman 2022-02-03 20:00:25 +00:00
CanvasUtils.h Bug 1746750 - Part 2. Add new WebIDL method variants to support OffscreenCanvasRenderingContext2D. r=lsalzman 2022-02-03 20:00:25 +00:00
ClientWebGLContext.cpp Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
ClientWebGLContext.h Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
ClientWebGLExtensions.cpp Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
ClientWebGLExtensions.h Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
DrawTargetWebgl.cpp Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
DrawTargetWebgl.h Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
DrawTargetWebglInternal.h Bug 1754130 - Implement SharedContext for sharing WebGL state among many DrawTargetWebgls. r=aosmond 2022-02-11 15:36:29 +00:00
GeneratePlaceholderCanvasData.h
HostWebGLContext.cpp Bug 1727489 - Remove PLayerTransaction. r=jrmuizel,jgilbert 2021-08-26 04:59:57 +00:00
HostWebGLContext.h Backed out 3 changesets (bug 1736066) for causing webgl failures in gfx/2d/Logging. CLOSED TREE 2021-10-28 22:10:39 +03:00
ImageBitmap.cpp Bug 1733559 - createImageBitmap() resizeWidth and resizeHeight support, r=aosmond,emilio 2022-01-20 15:38:01 +00:00
ImageBitmap.h Bug 1746093 - Allow OffscreenCanvas as an input for CanvasImageSource and ImageBitmapSource. r=lsalzman,emilio 2021-12-15 21:36:21 +00:00
ImageBitmapRenderingContext.cpp Bug 1344524 - Change ContextCleanForFrameCapture flag to a Watchable FrameCaptureState. r=jgilbert 2022-01-24 15:31:14 +00:00
ImageBitmapRenderingContext.h Bug 1344524 - Change ContextCleanForFrameCapture flag to a Watchable FrameCaptureState. r=jgilbert 2022-01-24 15:31:14 +00:00
ImageBitmapSource.h Bug 1746093 - Allow OffscreenCanvas as an input for CanvasImageSource and ImageBitmapSource. r=lsalzman,emilio 2021-12-15 21:36:21 +00:00
ImageData.cpp Bug 1712725 - Stop clearing JS things when calling mozilla::DropJSObjects. r=mccr8 2021-05-27 08:35:40 +00:00
ImageData.h
ImageUtils.cpp
ImageUtils.h
moz.build Bug 1754130 - Implement SourceSurfaceWebgl for faster snapshots of DrawTargetWebgl. r=aosmond 2022-02-11 15:36:30 +00:00
MurmurHash3.cpp
MurmurHash3.h
nsICanvasRenderingContextInternal.cpp Bug 1747176 - Make ClientWebGLContext::TexImage2D with a DOM element work with OffscreenCanvas. r=jgilbert 2022-01-18 23:45:17 +00:00
nsICanvasRenderingContextInternal.h Bug 1746750 - Part 1. Refactoring to support OffscreenCanvasRenderingContext2D. r=lsalzman 2022-02-03 20:00:24 +00:00
OffscreenCanvas.cpp Bug 1746750 - Part 3. Implement partial OffscreenCanvasRenderingContext2D. r=lsalzman,webidl,smaug 2022-02-03 20:00:25 +00:00
OffscreenCanvas.h Bug 1746750 - Part 3. Implement partial OffscreenCanvasRenderingContext2D. r=lsalzman,webidl,smaug 2022-02-03 20:00:25 +00:00
OffscreenCanvasDisplayHelper.cpp Bug 1751205 - Part 2. Ensure we y-flip surfaces with OffscreenCanvas if needed. r=gfx-reviewers,jgilbert 2022-02-01 13:20:50 +00:00
OffscreenCanvasDisplayHelper.h Bug 1751205 - Part 2. Ensure we y-flip surfaces with OffscreenCanvas if needed. r=gfx-reviewers,jgilbert 2022-02-01 13:20:50 +00:00
OffscreenCanvasRenderingContext2D.cpp Bug 1746750 - Part 3. Implement partial OffscreenCanvasRenderingContext2D. r=lsalzman,webidl,smaug 2022-02-03 20:00:25 +00:00
OffscreenCanvasRenderingContext2D.h Bug 1746750 - Part 3. Implement partial OffscreenCanvasRenderingContext2D. r=lsalzman,webidl,smaug 2022-02-03 20:00:25 +00:00
PWebGL.ipdl Bug 1736371 - Default new actors to be refcounted, r=alwu,media-playback-reviewers,mccr8 2022-02-09 17:29:47 +00:00
QueueParamTraits.h Bug 1746111 - (Re)serialize WebRTC frame SurfaceDescriptorBuffers for convert-and-upload on WebGLParent. r=gfx-reviewers,nika,lsalzman 2021-12-15 01:54:21 +00:00
SanitizeRenderer.cpp Bug 1519636 - Reformat recent changes to the Google coding style. r=sylvestre 2022-01-11 15:49:03 +00:00
SourceSurfaceWebgl.cpp Bug 1754130 - Implement SourceSurfaceWebgl for faster snapshots of DrawTargetWebgl. r=aosmond 2022-02-11 15:36:30 +00:00
SourceSurfaceWebgl.h Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
TextMetrics.h
TexUnpackBlob.cpp Bug 1747299 - [UniqueBuffer] Use UniqueBuffer::Take instead of copy constructors for void*. r=gfx-reviewers,sotaro 2021-12-25 00:31:48 +00:00
TexUnpackBlob.h
WebGL2Context.cpp
WebGL2Context.h
WebGL2ContextBuffers.cpp
WebGL2ContextFramebuffers.cpp
WebGL2ContextMRTs.cpp
WebGL2ContextQueries.cpp
WebGL2ContextRenderbuffers.cpp
WebGL2ContextSamplers.cpp
WebGL2ContextState.cpp
WebGL2ContextSync.cpp
WebGL2ContextTransformFeedback.cpp
WebGL2ContextUniforms.cpp Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLBuffer.cpp Bug 1747299 - [UniqueBuffer] Use UniqueBuffer::Take instead of copy constructors for void*. r=gfx-reviewers,sotaro 2021-12-25 00:31:48 +00:00
WebGLBuffer.h
WebGLChild.cpp
WebGLChild.h Bug 1738734 - Directly pass around handles rather than using TransportDescriptor, r=jld,media-playback-reviewers,alwu 2022-02-08 23:53:45 +00:00
WebGLCommandQueue.h Bug 1519636 - First reformat with clang-format 13.0.0. r=firefox-build-system-reviewers,sylvestre,mhentges 2021-11-16 08:07:30 +00:00
WebGLContext.cpp Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
WebGLContext.h Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
WebGLContextBuffers.cpp
WebGLContextDraw.cpp Bug 1748019 - Add GRAPHICS profile markers to WebGLParent. r=gfx-reviewers,lsalzman 2021-12-31 00:56:07 +00:00
WebGLContextExtensions.cpp Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLContextFramebufferOperations.cpp Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLContextGL.cpp Bug 1749302 - Validate mode for webgl.hint(). r=gfx-reviewers,lsalzman 2022-01-31 02:59:26 +00:00
WebGLContextLossHandler.cpp
WebGLContextLossHandler.h
WebGLContextState.cpp Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLContextTextures.cpp
WebGLContextUtils.cpp Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLContextUtils.h
WebGLContextValidate.cpp Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLContextVertexArray.cpp
WebGLContextVertices.cpp Bug 1754767 - Remove duplicate includes r=media-playback-reviewers,padenot 2022-02-11 10:01:15 +00:00
WebGLExtensions.cpp Bug 1735431 - Merge WebGLExtension* into WebGLExtensions.cpp. r=gfx-reviewers,nical 2021-10-19 23:07:00 +00:00
WebGLExtensions.h Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLFormats.cpp Bug 1739688 - Mark WebGL2 depth formats as non-filterable. r=gfx-reviewers,lsalzman 2021-11-08 19:44:27 +00:00
WebGLFormats.h Bug 1723050 - Part 6: Replace typedef by using in dom/canvas/ r=jgilbert 2021-07-30 15:30:52 +00:00
WebGLFramebuffer.cpp Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLFramebuffer.h Bug 1754130 - Support presenting a WebGLFramebuffer to its own swap chain without opaque FB. r=aosmond,jgilbert 2022-02-11 15:36:30 +00:00
WebGLInternalFormatsTable.h
WebGLIpdl.h Bug 1738734 - Directly pass around handles rather than using TransportDescriptor, r=jld,media-playback-reviewers,alwu 2022-02-08 23:53:45 +00:00
WebGLMemoryTracker.cpp
WebGLMemoryTracker.h
WebGLMethodDispatcher.h Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLObjectModel.h
WebGLParent.cpp Bug 1748019 - Add GRAPHICS profile markers to WebGLParent. r=gfx-reviewers,lsalzman 2021-12-31 00:56:07 +00:00
WebGLParent.h Bug 1746111 - (Re)serialize WebRTC frame SurfaceDescriptorBuffers for convert-and-upload on WebGLParent. r=gfx-reviewers,nika,lsalzman 2021-12-15 01:54:21 +00:00
WebGLProgram.cpp Bug 1725074 - Allow attribs with the same names as uniforms. r=gfx-reviewers,lsalzman 2021-12-13 20:42:30 +00:00
WebGLProgram.h Bug 1726265 - Prototype webgl draft ext OES_draw_buffers_indexed. r=lsalzman,emilio,webidl 2021-08-27 01:47:14 +00:00
WebGLQuery.cpp
WebGLQuery.h
WebGLQueueParamTraits.h Bug 1746111 - (Re)serialize WebRTC frame SurfaceDescriptorBuffers for convert-and-upload on WebGLParent. r=gfx-reviewers,nika,lsalzman 2021-12-15 01:54:21 +00:00
WebGLRenderbuffer.cpp
WebGLRenderbuffer.h
WebGLSampler.cpp
WebGLSampler.h
WebGLShader.cpp Bug 1747299 - [UniqueBuffer] Use UniqueBuffer::Take instead of copy constructors for void*. r=gfx-reviewers,sotaro 2021-12-25 00:31:48 +00:00
WebGLShader.h
WebGLShaderValidator.cpp Bug 1717151 - Prep ANGLE for vendoring. r=gfx-reviewers,kvark 2021-09-16 18:24:28 +00:00
WebGLShaderValidator.h
WebGLStrongTypes.h
WebGLSync.cpp
WebGLSync.h
WebGLTexelConversions.cpp Bug 1723050 - Part 6: Replace typedef by using in dom/canvas/ r=jgilbert 2021-07-30 15:30:52 +00:00
WebGLTexelConversions.h Bug 1723050 - Part 6: Replace typedef by using in dom/canvas/ r=jgilbert 2021-07-30 15:30:52 +00:00
WebGLTexture.cpp Bug 1747299 - [UniqueBuffer] Use UniqueBuffer::Take instead of copy constructors for void*. r=gfx-reviewers,sotaro 2021-12-25 00:31:48 +00:00
WebGLTexture.h
WebGLTextureUpload.cpp Bug 1751915 - Ensure WebGLRenderingContext texImage/etc support OffscreenCanvas as a source. r=jgilbert,webidl,smaug 2022-01-27 15:38:02 +00:00
WebGLTransformFeedback.cpp Bug 1715690 - Generalize WebGL RENDERER into large buckets. r=lsalzman 2021-06-14 21:27:08 +00:00
WebGLTransformFeedback.h
WebGLTypes.h Bug 1751915 - Ensure WebGLRenderingContext texImage/etc support OffscreenCanvas as a source. r=jgilbert,webidl,smaug 2022-01-27 15:38:02 +00:00
WebGLValidateStrings.cpp Bug 1725069 - Allow GLSL-invalid chars in shaderSource. r=gfx-reviewers,kvark 2021-09-16 20:19:11 +00:00
WebGLValidateStrings.h Bug 1725069 - Allow GLSL-invalid chars in shaderSource. r=gfx-reviewers,kvark 2021-09-16 20:19:11 +00:00
WebGLVertexArray.cpp
WebGLVertexArray.h
WebGLVertexArrayFake.cpp
WebGLVertexArrayFake.h
WebGLVertexArrayGL.cpp
WebGLVertexArrayGL.h
XRWebGLLayer.cpp Bug 1596772 - Make nsICanvasRenderingContextInternal::GetParentObject off-screen compatible. r=aosmond 2021-12-14 14:21:10 +00:00
XRWebGLLayer.h