gecko-dev/dom/canvas
Lee Salzman 6fc4f6027b Bug 1923636 - Avoid copying paths when transforming. r=aosmond
TransformedCopyToBuilder is called any time in Canvas2D the transform
is modified and then a path op is used. On cases that repeatedly change
the transform while building paths, this leads to fairly significant
expense in repeatedly copying the path contents as well as allocating
and deallocating paths.

To work around this, a new primitive TransformedMoveToBuilder is provided
that allows in-place transforming of the path contents. Because paths that
are "finished" and referenced externally can't be safely modified, extra
static methods (i.e. ToBuilder) are added to guarantee that there are no
other refs to the path before modifying its contents.

One snag is that ArcParams could previously not handle transforms, so it
is modified to allow a transform to be supplied to an Arc op, which is
only flattened out when it is streamed to a sink.

Differential Revision: https://phabricator.services.mozilla.com/D225548
2024-10-14 22:48:45 +00:00
..
crashtests Bug 1914083 - Remove gfx.offscreencanvas.enabled pref r=webidl,gfx-reviewers,smaug,aosmond 2024-08-21 20:06:56 +00:00
gtest Bug 1875136 - Add RENDERER sanitization bucket for Intel Arc A750. r=gfx-reviewers,lsalzman 2024-01-23 18:01:56 +00:00
test Bug 1921286 - expand webgl skip-if/fail-if for mac to include os_version and processor. r=jgilbert 2024-10-02 20:03:15 +00:00
CacheInvalidator.cpp
CacheInvalidator.h Bug 1870585 - Add webgl::dmd_unordered_map for WebGLTexture memory reporting of cache map. r=gfx-reviewers,lsalzman,bradwerth 2024-03-11 17:37:24 +00:00
CanvasGradient.cpp
CanvasGradient.h
CanvasImageCache.cpp Bug 1891319. r=gfx-reviewers,lsalzman 2024-05-21 18:19:29 +00:00
CanvasImageCache.h Bug 1891319. r=gfx-reviewers,lsalzman 2024-05-21 18:19:29 +00:00
CanvasPath.h Bug 1714238 - Use a single SVG path representation. r=boris,longsonr,webidl,smaug 2024-06-21 16:16:01 +00:00
CanvasPattern.cpp
CanvasPattern.h
CanvasRenderingContext2D.cpp Bug 1923636 - Avoid copying paths when transforming. r=aosmond 2024-10-14 22:48:45 +00:00
CanvasRenderingContext2D.h Bug 1899874: Plumb forceSoftwareRendering down the stack. r=jgilbert 2024-08-07 00:31:45 +00:00
CanvasRenderingContextHelper.cpp Bug 1150182 - Use strong-typed CSSIntSize instead of nsIntSize for canvas sizes. r=gfx-reviewers,layout-reviewers,emilio,nical 2024-07-15 15:20:11 +00:00
CanvasRenderingContextHelper.h Bug 1150182 - Use strong-typed CSSIntSize instead of nsIntSize for canvas sizes. r=gfx-reviewers,layout-reviewers,emilio,nical 2024-07-15 15:20:11 +00:00
CanvasUtils.cpp Bug 1896175: Check canvas extraction permission before returning ImageExtraction::Randomize. r=timhuang 2024-08-14 11:13:02 +00:00
CanvasUtils.h
ClientWebGLContext.cpp Bug 1869182 - Make WebGL use SharedSurfacesChild/Parent to avoid copies with SourceSurfaceSharedData. r=gfx-reviewers,lsalzman 2024-09-24 21:00:49 +00:00
ClientWebGLContext.h Bug 1885446 Part 1: Stub the WebGL unpackColorSpace attribute. r=jgilbert,webidl,smaug 2024-09-10 23:27:57 +00:00
ClientWebGLExtensions.cpp Bug 1885032 - Support EXT_depth_clamp in webgl. r=gfx-reviewers,webidl,lsalzman,smaug 2024-07-17 21:12:23 +00:00
ClientWebGLExtensions.h Bug 1885032 - Support EXT_depth_clamp in webgl. r=gfx-reviewers,webidl,lsalzman,smaug 2024-07-17 21:12:23 +00:00
DmdStdContainers.h Bug 1870585 - Add webgl::dmd_unordered_map for WebGLTexture memory reporting of cache map. r=gfx-reviewers,lsalzman,bradwerth 2024-03-11 17:37:24 +00:00
DrawTargetWebgl.cpp Bug 1920753 - Work around buggy ANGLE/D3D drivers that may copy blocks of pixels outside the row length. r=aosmond 2024-10-11 04:37:02 +00:00
DrawTargetWebgl.h Bug 1916907 - Support linear gradients in DrawTargetWebgl. r=aosmond 2024-09-05 17:24:16 +00:00
DrawTargetWebglInternal.h Bug 1902718 - Use Etagere for DrawTargetWebgl allocation. r=nical 2024-06-25 14:16:23 +00:00
GeneratePlaceholderCanvasData.h
HostWebGLContext.cpp Bug 1887335 - Poll=4ms for WebGLSync completion, async-notify child. r=gfx-reviewers,lsalzman 2024-04-02 20:36:25 +00:00
HostWebGLContext.h Bug 1885446 Part 1: Stub the WebGL unpackColorSpace attribute. r=jgilbert,webidl,smaug 2024-09-10 23:27:57 +00:00
ImageBitmap.cpp Bug 1919689 - Cleanup WorkerRunnable subclass constructors in graphics. r=gfx-reviewers,lsalzman 2024-09-19 13:59:16 +00:00
ImageBitmap.h Bug 1904048 - Add prototype for ImageBitmap's BindingJSObjectMallocBytes. r=aosmond 2024-07-13 02:12:55 +00:00
ImageBitmapRenderingContext.cpp
ImageBitmapRenderingContext.h
ImageBitmapSource.h
ImageData.cpp
ImageData.h
ImageUtils.cpp Bug 1913462 - Ensure we check for null surfaces when getting image format. r=gfx-reviewers,lsalzman 2024-08-16 15:45:20 +00:00
ImageUtils.h Bug 1640839 - Stop using ImageBitmapFormat::EndGuard_. r=jgilbert 2024-03-02 07:50:23 +00:00
moz.build Bug 1870585 - Add webgl::dmd_unordered_map for WebGLTexture memory reporting of cache map. r=gfx-reviewers,lsalzman,bradwerth 2024-03-11 17:37:24 +00:00
MurmurHash3.cpp
MurmurHash3.h
nsICanvasRenderingContextInternal.cpp Bug 1887729 - Implement context lost/restored support for CanvasRenderingContext2D. r=webidl,gfx-reviewers,smaug,lsalzman 2024-03-28 14:50:20 +00:00
nsICanvasRenderingContextInternal.h Bug 1898238 - Don't call TexTypeForWebgl when initializing offscreen canvas. r=aosmond,jgilbert 2024-07-22 20:23:37 +00:00
OffscreenCanvas.cpp Bug 1914083 - Remove gfx.offscreencanvas.enabled pref r=webidl,gfx-reviewers,smaug,aosmond 2024-08-21 20:06:56 +00:00
OffscreenCanvas.h Bug 1914083 - Remove gfx.offscreencanvas.enabled pref r=webidl,gfx-reviewers,smaug,aosmond 2024-08-21 20:06:56 +00:00
OffscreenCanvasDisplayHelper.cpp Bug 1919689 - Cleanup WorkerRunnable subclass constructors in graphics. r=gfx-reviewers,lsalzman 2024-09-19 13:59:16 +00:00
OffscreenCanvasDisplayHelper.h Bug 1898238 - Don't call TexTypeForWebgl when initializing offscreen canvas. r=aosmond,jgilbert 2024-07-22 20:23:37 +00:00
OffscreenCanvasRenderingContext2D.cpp
OffscreenCanvasRenderingContext2D.h
PWebGL.ipdl Bug 1887335 - Poll=4ms for WebGLSync completion, async-notify child. r=gfx-reviewers,lsalzman 2024-04-02 20:36:25 +00:00
QueueParamTraits.h Bug 1454819 - Simplify SharedMemory classes r=ipc-reviewers,nika 2024-08-06 18:16:08 +00:00
SanitizeRenderer.cpp Bug 1875136 - Add RENDERER sanitization bucket for Intel Arc A750. r=gfx-reviewers,lsalzman 2024-01-23 18:01:56 +00:00
SourceSurfaceWebgl.cpp Bug 1876536 - Part 1: Remove self refcounts within constructor in dom/canvas r=gfx-reviewers,lsalzman 2024-02-01 11:03:59 +00:00
SourceSurfaceWebgl.h Bug 1876536 - Part 1: Remove self refcounts within constructor in dom/canvas r=gfx-reviewers,lsalzman 2024-02-01 11:03:59 +00:00
TextMetrics.h
TexUnpackBlob.cpp Bug 1869182 - Make WebGL use SharedSurfacesChild/Parent to avoid copies with SourceSurfaceSharedData. r=gfx-reviewers,lsalzman 2024-09-24 21:00:49 +00:00
TexUnpackBlob.h Bug 1885446 Part 2: Make ConvertImage do colorSpace conversion. r=jgilbert 2024-09-10 23:27:57 +00:00
TiedFields.h Bug 1909019 - Use ParamTraits_TiedFields/_IsEnumCase in WebRenderMessageUtils instead of PlainOldDataSerializer. (partial) r=gw,mccr8,ahale 2024-07-26 23:51:25 +00:00
TupleUtils.h
WebGL2Context.cpp
WebGL2Context.h Bug 1887335 - ClientWaitSync max-timeout check move to child, remove from parent. r=gfx-reviewers,aosmond 2024-04-02 20:36:26 +00:00
WebGL2ContextBuffers.cpp
WebGL2ContextFramebuffers.cpp Bug 1878930 - s/RawBuffer/Span/: Buffer(Sub)Data, Invalidate(Sub)Framebuffer. r=gfx-reviewers,lsalzman 2024-02-29 00:37:28 +00:00
WebGL2ContextMRTs.cpp
WebGL2ContextQueries.cpp
WebGL2ContextRenderbuffers.cpp
WebGL2ContextSamplers.cpp
WebGL2ContextState.cpp Bug 1887335 - ClientWaitSync max-timeout check move to child, remove from parent. r=gfx-reviewers,aosmond 2024-04-02 20:36:26 +00:00
WebGL2ContextSync.cpp Bug 1887335 - ClientWaitSync max-timeout check move to child, remove from parent. r=gfx-reviewers,aosmond 2024-04-02 20:36:26 +00:00
WebGL2ContextTransformFeedback.cpp
WebGL2ContextUniforms.cpp
WebGLBuffer.cpp Bug 1879178 - Add UninitializedBufferData_SizeOnly for unitialized orphaning of WebGL buffers. r=jgilbert 2024-02-08 23:36:56 +00:00
WebGLBuffer.h Bug 1879178 - Add UninitializedBufferData_SizeOnly for unitialized orphaning of WebGL buffers. r=jgilbert 2024-02-08 23:36:56 +00:00
WebGLChild.cpp Bug 1887335 - Poll=4ms for WebGLSync completion, async-notify child. r=gfx-reviewers,lsalzman 2024-04-02 20:36:25 +00:00
WebGLChild.h Bug 1887335 - Poll=4ms for WebGLSync completion, async-notify child. r=gfx-reviewers,lsalzman 2024-04-02 20:36:25 +00:00
WebGLCommandQueue.h Bug 1879228 - MethodDispatcher::DispatchCommand less noisy in stack traces. r=gfx-reviewers,lsalzman 2024-02-08 07:55:45 +00:00
WebGLContext.cpp Backed out changeset 4b1409597101 (bug 1920718) for causing bp bustages on rapl.cpp. 2024-10-08 23:27:18 +03:00
WebGLContext.h Bug 1869182 - Make WebGL use SharedSurfacesChild/Parent to avoid copies with SourceSurfaceSharedData. r=gfx-reviewers,lsalzman 2024-09-24 21:00:49 +00:00
WebGLContextBuffers.cpp Bug 1879178 - Add UninitializedBufferData_SizeOnly for unitialized orphaning of WebGL buffers. r=jgilbert 2024-02-08 23:36:56 +00:00
WebGLContextDraw.cpp
WebGLContextExtensions.cpp Bug 1885032 - Support EXT_depth_clamp in webgl. r=gfx-reviewers,webidl,lsalzman,smaug 2024-07-17 21:12:23 +00:00
WebGLContextFramebufferOperations.cpp
WebGLContextGL.cpp Bug 1908034 - Remap client HALF_FLOAT_OES<->HALF_FLOAT gl for webgl1 IMPL_COLOR_READ_TYPE. r=gfx-reviewers,lsalzman 2024-07-16 20:49:26 +00:00
WebGLContextLossHandler.cpp
WebGLContextLossHandler.h
WebGLContextState.cpp Bug 1885032 - Support EXT_depth_clamp in webgl. r=gfx-reviewers,webidl,lsalzman,smaug 2024-07-17 21:12:23 +00:00
WebGLContextTextures.cpp Bug 1885447 - Tonemap/color-manage webgl sdr/wcg output into Display profile as pre-compositor post-process. r=gfx-reviewers,webidl,smaug,ahale 2024-05-06 23:36:51 +00:00
WebGLContextUtils.cpp Bug 1916561: apply code formatting via Lando 2024-09-04 18:08:59 +00:00
WebGLContextUtils.h
WebGLContextValidate.cpp
WebGLContextVertexArray.cpp
WebGLContextVertices.cpp Bug 1914707 - Disable attrib divisor for non-array attribs. r=gfx-reviewers,lsalzman,bradwerth 2024-10-09 21:16:57 +00:00
WebGLExtensions.cpp Bug 1885032 - Support EXT_depth_clamp in webgl. r=gfx-reviewers,webidl,lsalzman,smaug 2024-07-17 21:12:23 +00:00
WebGLExtensions.h Bug 1885032 - Support EXT_depth_clamp in webgl. r=gfx-reviewers,webidl,lsalzman,smaug 2024-07-17 21:12:23 +00:00
WebGLFormats.cpp Backed out changeset 4b1409597101 (bug 1920718) for causing bp bustages on rapl.cpp. 2024-10-08 23:27:18 +03:00
WebGLFormats.h
WebGLFramebuffer.cpp Bug 1889448 - Allow FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE if WEBGL_color_buffer_float || EXT_color_buffer_half_float. r=gfx-reviewers,lsalzman 2024-04-04 21:32:41 +00:00
WebGLFramebuffer.h
WebGLInternalFormatsTable.h
WebGLIpdl.h Bug 1909019 - Use ParamTraits_TiedFields/_IsEnumCase in WebRenderMessageUtils instead of PlainOldDataSerializer. (partial) r=gw,mccr8,ahale 2024-07-26 23:51:25 +00:00
WebGLMemoryTracker.cpp Bug 1870585 - Add webgl::dmd_unordered_map for WebGLTexture memory reporting of cache map. r=gfx-reviewers,lsalzman,bradwerth 2024-03-11 17:37:24 +00:00
WebGLMemoryTracker.h Bug 1794893 - WebGLMemoryTracker ensured-registered in WebGLContext::ctor. r=gfx-reviewers,lsalzman 2024-02-06 19:34:26 +00:00
WebGLMethodDispatcher.h Bug 1885446 Part 1: Stub the WebGL unpackColorSpace attribute. r=jgilbert,webidl,smaug 2024-09-10 23:27:57 +00:00
WebGLObjectModel.h
WebGLParent.cpp Bug 1869182 - Make WebGL use SharedSurfacesChild/Parent to avoid copies with SourceSurfaceSharedData. r=gfx-reviewers,lsalzman 2024-09-24 21:00:49 +00:00
WebGLParent.h Bug 1869182 - Make WebGL use SharedSurfacesChild/Parent to avoid copies with SourceSurfaceSharedData. r=gfx-reviewers,lsalzman 2024-09-24 21:00:49 +00:00
WebGLProgram.cpp
WebGLProgram.h
WebGLQuery.cpp
WebGLQuery.h
WebGLQueueParamTraits.h Bug 1909019 - Use ParamTraits_TiedFields/_IsEnumCase in WebRenderMessageUtils instead of PlainOldDataSerializer. (partial) r=gw,mccr8,ahale 2024-07-26 23:51:25 +00:00
WebGLRenderbuffer.cpp
WebGLRenderbuffer.h
WebGLSampler.cpp
WebGLSampler.h
WebGLShader.cpp
WebGLShader.h
WebGLShaderValidator.cpp Bug 1912404 - Remove unneeded 16kiB var limit for Mesa. r=gfx-reviewers,lsalzman 2024-09-17 16:56:43 +00:00
WebGLShaderValidator.h Bug 1870585 - Add webgl::dmd_unordered_map for WebGLTexture memory reporting of cache map. r=gfx-reviewers,lsalzman,bradwerth 2024-03-11 17:37:24 +00:00
WebGLStrongTypes.h
WebGLSync.cpp Bug 1887335 - Poll=4ms for WebGLSync completion, async-notify child. r=gfx-reviewers,lsalzman 2024-04-02 20:36:25 +00:00
WebGLSync.h Bug 1887335 - Poll=4ms for WebGLSync completion, async-notify child. r=gfx-reviewers,lsalzman 2024-04-02 20:36:25 +00:00
WebGLTexelConversions.cpp Bug 1885446 Part 2: Make ConvertImage do colorSpace conversion. r=jgilbert 2024-09-10 23:27:57 +00:00
WebGLTexelConversions.h Bug 1885446 Part 2: Make ConvertImage do colorSpace conversion. r=jgilbert 2024-09-10 23:27:57 +00:00
WebGLTexture.cpp Backed out changeset 4b1409597101 (bug 1920718) for causing bp bustages on rapl.cpp. 2024-10-08 23:27:18 +03:00
WebGLTexture.h Bug 1870585 - Add webgl::dmd_unordered_map for WebGLTexture memory reporting of cache map. r=gfx-reviewers,lsalzman,bradwerth 2024-03-11 17:37:24 +00:00
WebGLTextureUpload.cpp Bug 1869182 - Make WebGL use SharedSurfacesChild/Parent to avoid copies with SourceSurfaceSharedData. r=gfx-reviewers,lsalzman 2024-09-24 21:00:49 +00:00
WebGLTextureUpload.h
WebGLTransformFeedback.cpp
WebGLTransformFeedback.h
WebGLTypes.h Bug 1923083 - Avoid usage of 0-sized array in dom/canvas/WebGLTypes.h r=ipc-reviewers,nika 2024-10-09 12:36:21 +00:00
WebGLValidateStrings.cpp
WebGLValidateStrings.h
WebGLVertexArray.cpp Bug 1914707 - Disable attrib divisor for non-array attribs. r=gfx-reviewers,lsalzman,bradwerth 2024-10-09 21:16:57 +00:00
WebGLVertexArray.h Bug 1914707 - Disable attrib divisor for non-array attribs. r=gfx-reviewers,lsalzman,bradwerth 2024-10-09 21:16:57 +00:00
WebGLVertexArrayFake.cpp Bug 1914707 - Disable attrib divisor for non-array attribs. r=gfx-reviewers,lsalzman,bradwerth 2024-10-09 21:16:57 +00:00
WebGLVertexArrayFake.h
WebGLVertexArrayGL.cpp
WebGLVertexArrayGL.h
XRWebGLLayer.cpp
XRWebGLLayer.h