[webkit-changes] [WebKit/WebKit] f77323: ImageBuffer::backendSize() waits for GPUP to creat...

Kimmo Kinnunen noreply at github.com
Thu Sep 28 23:47:01 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f77323c9d2ad5455d94e42560ef4bdf89c0c9414
      https://github.com/WebKit/WebKit/commit/f77323c9d2ad5455d94e42560ef4bdf89c0c9414
  Author: Kimmo Kinnunen <kkinnunen at apple.com>
  Date:   2023-09-28 (Thu, 28 Sep 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/ImageBuffer.cpp
    M Source/WebCore/platform/graphics/ImageBuffer.h
    M Source/WebCore/platform/graphics/ImageBufferBackend.cpp
    M Source/WebCore/platform/graphics/ImageBufferBackend.h
    M Source/WebCore/platform/graphics/ImageBufferBackendParameters.h
    M Source/WebCore/platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.cpp
    M Source/WebCore/platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp
    M Source/WebCore/platform/graphics/cairo/ImageBufferCairoSurfaceBackend.h
    M Source/WebCore/platform/graphics/cg/IOSurfaceImageBuffer.h
    M Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp
    M Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.h
    M Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp
    M Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.h
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.h
    M Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.mm
    M Source/WebKit/Shared/UserData.cpp
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
    M Source/WebKit/Shared/WebImage.cpp
    M Source/WebKit/Shared/WebImage.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.messages.in
    M Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp
    M Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h
    M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferRemoteIOSurfaceBackend.cpp
    M Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferRemoteIOSurfaceBackend.h
    M Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp
    M Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h

  Log Message:
  -----------
  ImageBuffer::backendSize() waits for GPUP to create the backend
https://bugs.webkit.org/show_bug.cgi?id=262179
rdar://116117019

Reviewed by Matt Woodrow.

The backend size is not backend logic, it is same for all backends.
Move the backend size calculation to ImageBuffer.

The logical size is not a ImageBufferBackend parameter, it is a ImageBuffer
parameter. Store the backend size in ImageBufferBackendParameters.

Use the new struct ImageBufferParameters when client code is communicating
parameters with the use-case of creating new ImageBuffer instances in
WebImage and RemoteSerializedImageBufferProxy.

Fixes a case where RemoteImageBufferProxy would wait for the GPUP
to send the image buffer handle to WP. This is not needed, the backend
size is always known.

Later commits will simplify other properties in ImageBufferBackend that
are not backend-dependent.

* Source/WebCore/platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::ImageBuffer):
(WebCore::ImageBuffer::calculateBackendSize):
(WebCore::ImageBuffer::backendParameters):
(WebCore::ImageBuffer::backendSize const): Deleted.
* Source/WebCore/platform/graphics/ImageBuffer.h:
(WebCore::ImageBuffer::create):
(WebCore::ImageBuffer::backendSize const):
(WebCore::ImageBuffer::parameters const):
* Source/WebCore/platform/graphics/ImageBufferBackend.cpp:
(WebCore::ImageBufferBackend::convertToLuminanceMask):
(WebCore::ImageBufferBackend::getPixelBuffer):
(WebCore::ImageBufferBackend::putPixelBuffer):
(WebCore::ImageBufferBackend::calculateBaseTransform):
(WebCore::ImageBufferBackend::calculateBackendSize): Deleted.
* Source/WebCore/platform/graphics/ImageBufferBackend.h:
(WebCore::ImageBufferBackend::size const):
(WebCore::ImageBufferBackend::pixelFormat const):
(WebCore::ImageBufferBackend::backendSize const): Deleted.
(WebCore::ImageBufferBackend::logicalSize const): Deleted.
(WebCore::ImageBufferBackend::renderingPurpose const): Deleted.
(WebCore::ImageBufferBackend::logicalRect const): Deleted.
(WebCore::ImageBufferBackend::backendRect const): Deleted.
* Source/WebCore/platform/graphics/ImageBufferBackendParameters.h:
* Source/WebCore/platform/graphics/PlatformImageBuffer.h:
* Source/WebCore/platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.cpp:
(WebCore::ImageBufferCairoImageSurfaceBackend::calculateSafeBackendSize):
(WebCore::ImageBufferCairoImageSurfaceBackend::calculateMemoryCost):
(WebCore::ImageBufferCairoImageSurfaceBackend::bytesPerRow const):
* Source/WebCore/platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp:
(WebCore::ImageBufferCairoSurfaceBackend::backendSize const): Deleted.
* Source/WebCore/platform/graphics/cairo/ImageBufferCairoSurfaceBackend.h:
* Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:
(WebCore::ImageBufferCGBitmapBackend::calculateSafeBackendSize):
(WebCore::ImageBufferCGBitmapBackend::calculateMemoryCost):
(WebCore::ImageBufferCGBitmapBackend::bytesPerRow const):
(WebCore::ImageBufferCGBitmapBackend::createNativeImageReference):
(WebCore::ImageBufferCGBitmapBackend::backendSize const): Deleted.
* Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.h:
* Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:
(WebCore::ImageBufferIOSurfaceBackend::calculateSafeBackendSize):
(WebCore::ImageBufferIOSurfaceBackend::calculateMemoryCost):
(WebCore::ImageBufferIOSurfaceBackend::backendSize const): Deleted.
* Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::isSmallLayerBacking):
* Source/WebKit/Scripts/webkit/messages.py:
(headers_for_type):
* Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.h:
* Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.mm:
(WebKit::GraphicsContextDynamicContentScaling::GraphicsContextDynamicContentScaling):
(WebKit::DynamicContentScalingImageBufferBackend::calculateMemoryCost):
(WebKit::DynamicContentScalingImageBufferBackend::create):
(WebKit::DynamicContentScalingImageBufferBackend::context):
(WebKit::DynamicContentScalingImageBufferBackend::bytesPerRow const):
(WebKit::DynamicContentScalingAcceleratedImageBufferBackend::create):
(WebKit::DynamicContentScalingImageBufferBackend::backendSize const): Deleted.
* Source/WebKit/Shared/UserData.cpp:
(WebKit::UserData::decode):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/Shared/WebImage.cpp:
(WebKit::WebImage::create):
(WebKit::WebImage::parameters const):
* Source/WebKit/Shared/WebImage.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didGetImageForFindMatch):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:
(WebKit::ImageBufferShareableBitmapBackend::calculateSafeBackendSize):
(WebKit::ImageBufferShareableBitmapBackend::calculateMemoryCost):
(WebKit::ImageBufferShareableBitmapBackend::backendSize const): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp:
(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):
(WebKit::RemoteImageBufferProxy::didCreateBackend):
(WebKit::RemoteImageBufferProxy::sinkIntoSerializedImageBuffer):
(WebKit::RemoteSerializedImageBufferProxy::RemoteSerializedImageBufferProxy):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
(WebKit::RemoteImageBufferProxy::create):
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferRemoteIOSurfaceBackend.cpp:
(WebKit::ImageBufferRemoteIOSurfaceBackend::bytesPerRow const):
(WebKit::ImageBufferRemoteIOSurfaceBackend::backendSize const): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferRemoteIOSurfaceBackend.h:
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp:
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::backendSize const): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h:

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




More information about the webkit-changes mailing list