Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 5d3de50d060a1d50ca797c91a6b7d198a0d994e2 https://github.com/WebKit/WebKit/commit/5d3de50d060a1d50ca797c91a6b7d198a0d994e2 Author: Simon Fraser <simon.fra...@apple.com> Date: 2024-07-12 (Fri, 12 Jul 2024)
Changed paths: M Source/WebCore/html/CanvasBase.h M Source/WebCore/html/HTMLCanvasElement.cpp M Source/WebCore/html/HTMLCanvasElement.h M Source/WebCore/html/OffscreenCanvas.cpp M Source/WebCore/html/OffscreenCanvas.h M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp Log Message: ----------- Optimize effectiveDrawingContext() https://bugs.webkit.org/show_bug.cgi?id=276556 rdar://131636489 Reviewed by Cameron McCormack. `effectiveDrawingContext()` is called three times per canvas draw; once before drawing, and possibly twice in `didDraw()`. Both `drawingContext()` and `hasCreatedImageBuffer()` were virtual calls. Improve this by moving `m_hasCreatedImageBuffer` into CanvasBase so call to read it doesn't need to be virtual. OffscreenCanvas and HTMLCanvasElement set this. Also reduce the number of calls in `CanvasRenderingContext2DBase::didDraw()` from two to one. * Source/WebCore/html/CanvasBase.h: (WebCore::CanvasBase::setHasCreatedImageBuffer): (WebCore::CanvasBase::hasCreatedImageBuffer const): * Source/WebCore/html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::reset): (WebCore::HTMLCanvasElement::setSurfaceSize): (WebCore::HTMLCanvasElement::createImageBuffer const): (WebCore::HTMLCanvasElement::setImageBufferAndMarkDirty): (WebCore::HTMLCanvasElement::clearImageBuffer const): * Source/WebCore/html/HTMLCanvasElement.h: * Source/WebCore/html/OffscreenCanvas.cpp: (WebCore::OffscreenCanvas::createImageBuffer const): (WebCore::OffscreenCanvas::setImageBufferAndMarkDirty): (WebCore::OffscreenCanvas::reset): * Source/WebCore/html/OffscreenCanvas.h: * Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp: (WebCore::CanvasRenderingContext2DBase::didDraw): Canonical link: https://commits.webkit.org/280935@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes