Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 61d979e4fad43706a4ef65c9baefe3a135741e87
      
https://github.com/WebKit/WebKit/commit/61d979e4fad43706a4ef65c9baefe3a135741e87
  Author: Kimmo Kinnunen <kkinnu...@apple.com>
  Date:   2023-09-08 (Fri, 08 Sep 2023)

  Changed paths:
    M Source/WebCore/html/CanvasBase.cpp
    M Source/WebCore/html/HTMLVideoElement.cpp
    M Source/WebCore/html/ImageBitmap.cpp
    M Source/WebCore/page/FrameSnapshotting.cpp
    M Source/WebCore/platform/graphics/ImageBuffer.cpp
    M Source/WebCore/platform/graphics/ImageBuffer.h
    M 
Source/WebCore/platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.cpp
    M Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp
    M Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.h
    M Source/WebCore/rendering/style/StyleFilterImage.cpp
    M Source/WebCore/svg/graphics/SVGImage.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
    M 
Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.cpp
    M Source/WebKit/WebProcess/WebPage/wc/DrawingAreaWC.cpp

  Log Message:
  -----------
  ImageBufferCreationContext is used in wrong ImageBuffer::create factory 
function
https://bugs.webkit.org/show_bug.cgi?id=261259
rdar://115098672

Reviewed by Matt Woodrow.

ImageBufferCreationContext is ad hoc amalgamation of all parameters
accepted by any ImageBufferBackend, populated for the purpose of
constructing a specific backend.

ImageBuffer::create<Backend>(..., const ImageBufferCreationContext&)
is the concrete function constructing a specific ImageBuffer type with
a specific backend.

ImageBuffer::create(...) is a polymorphic factory, which invokes the
GraphicsClient, a polymorphic interface. It doesn't request a specific
backend, rather the polymorphism selects the backend based on policy.
This function shouldn't accept ImageBufferCreationContext, there's
nothing that can be populated by the caller, except fields incorrectly
added to ImageBufferCreationContext.

Remove ImageBufferCreationContext from ImageBuffer::create(...).
It cannot be populated from the call sites, as the call sites don't know
what type of buffers will be created -- that is the part that is abstracted.

Remove GraphicsClient from ImageBufferCreationContext. GraphicsClient
is the polymorphic factory, which is pointless in context of
ImageBufferCreationContext. ImageBufferCreationContext is used when
the concrete type is known at the call site.

Move ImageBufferCreationContext::avoidIOSurfaceSizeCheckInWebProcessForTesting
as ImageBufferOptions::AvoidBackendSizeCheckForTesting. The property
is a testing property, configuring the behavior of
ImageBuffer::create(...).

* Source/WebCore/html/CanvasBase.cpp:
(WebCore::CanvasBase::allocateImageBuffer const):
* Source/WebCore/html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::createBufferForPainting const):
* Source/WebCore/html/ImageBitmap.cpp:
(WebCore::ImageBitmap::createImageBuffer):
* Source/WebCore/page/FrameSnapshotting.cpp:
(WebCore::snapshotFrameRectWithClip):
* Source/WebCore/platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::create):
* Source/WebCore/platform/graphics/ImageBuffer.h:
(WebCore::ImageBuffer::create):
(WebCore::ImageBufferCreationContext::ImageBufferCreationContext): Deleted.
* Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:
(WebCore::ImageBufferIOSurfaceBackend::create):
* Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
* Source/WebCore/rendering/style/StyleFilterImage.cpp:
(WebCore::StyleFilterImage::image const):
* Source/WebCore/svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::nativeImage):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::moveToImageBuffer):
(WebKit::RemoteRenderingBackend::createImageBuffer):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::allocateBufferForBackingStore):
* 
Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.cpp:
(WebKit::ImageBufferShareableMappedIOSurfaceBackend::create):

Canonical link: https://commits.webkit.org/267792@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to