gecko-dev/dom/canvas
Lee Salzman 58cc63bda7 Bug 1754130 - Implement SourceSurfaceWebgl for faster snapshots of DrawTargetWebgl. r=aosmond
Now that each DrawTargetWebgl shares the same WebGL context, we can efficiently draw snapshots
of one DrawTargetWebgl to another without requiring any readback or error-prone driver-provided
shared context/resource mechanism. We just need to simply pass the WebGL texture from one target
to the other, and use it like any other texture.

This provides SourceSurfaceWebgl to store and pass along that WebGL texture. It is largely
modeled off of SourceSurfaceSkia in terms of its copy-on-write behavior. There are three
noteworthy state changes that it must track from DrawTargetWebgl - when the framebuffer
contents is changing, when the framebuffer is being destroyed, and when any cached texture
handle separate from a framebuffer is also being destroyed. It will copy, orphan, or read
back data as appropriate to handle each case.

If it needs to be mapped, it just forces a read back of the data into a CPU surface that
can be mapped as requested.

Differential Revision: https://phabricator.services.mozilla.com/D138118
2022-02-11 19:49:55 +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 Backed out 3 changesets (bug 1754130) for causing mochitest failures. CLOSED TREE 2022-02-11 18:30:11 +02:00
CanvasRenderingContext2D.h Backed out 3 changesets (bug 1754130) for causing mochitest failures. CLOSED TREE 2022-02-11 18:30:11 +02: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 Backed out 3 changesets (bug 1754130) for causing mochitest failures. CLOSED TREE 2022-02-11 18:30:11 +02:00
ClientWebGLContext.h Backed out 3 changesets (bug 1754130) for causing mochitest failures. CLOSED TREE 2022-02-11 18:30:11 +02: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 - Implement SourceSurfaceWebgl for faster snapshots of DrawTargetWebgl. r=aosmond 2022-02-11 19:49:55 +00:00
DrawTargetWebgl.h Bug 1754130 - Implement SourceSurfaceWebgl for faster snapshots of DrawTargetWebgl. r=aosmond 2022-02-11 19:49:55 +00:00
DrawTargetWebglInternal.h Bug 1754130 - Implement SharedContext for sharing WebGL state among many DrawTargetWebgls. r=aosmond 2022-02-11 19:49:55 +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 19:49:55 +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 19:49:55 +00:00
SourceSurfaceWebgl.h Bug 1754130 - Implement SourceSurfaceWebgl for faster snapshots of DrawTargetWebgl. r=aosmond 2022-02-11 19:49:55 +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 Backed out 3 changesets (bug 1754130) for causing mochitest failures. CLOSED TREE 2022-02-11 18:30:11 +02:00
WebGLContext.h Backed out 3 changesets (bug 1754130) for causing mochitest failures. CLOSED TREE 2022-02-11 18:30:11 +02: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 Backed out 3 changesets (bug 1754130) for causing mochitest failures. CLOSED TREE 2022-02-11 18:30:11 +02: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