[webkit-changes] [WebKit/WebKit] 50a0c4: RemoteImageBufferProxy re-populates backend info a...

Kimmo Kinnunen noreply at github.com
Thu Sep 21 07:25:22 PDT 2023


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

  Changed paths:
    M LayoutTests/fast/canvas/image-buffer-backend-variants-expected.txt
    M LayoutTests/platform/ios/fast/canvas/image-buffer-backend-variants-expected.txt
    A LayoutTests/platform/mac-wk1/fast/canvas/image-buffer-backend-variants-expected.txt
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
    M Source/WebCore/platform/graphics/ImageBuffer.cpp
    A Source/WebCore/platform/graphics/NullImageBufferBackend.cpp
    A Source/WebCore/platform/graphics/NullImageBufferBackend.h
    M Source/WebCore/platform/graphics/PixelBuffer.h
    M Source/WebCore/platform/graphics/cg/PathCG.h
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.messages.in
    M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp

  Log Message:
  -----------
  RemoteImageBufferProxy re-populates backend info after getting the backend handle
https://bugs.webkit.org/show_bug.cgi?id=261027
rdar://114816328

Reviewed by Matt Woodrow.

Reland after revert with compile errors fixed.

The code is structured as if it would make sense that Caller calls
  * RemoteImageBufferProxy::create<AcceleratedImageBufferShareableMappedBackend>
  * GPUP sends ShareableBitmap::Handle

It is better that the backend type being used during ImageBuffer
creation is respected during didCreateBackend.

Implements error handling for cases where the allocation fails in GPUP.
Before, the allocation failure would result in WP hang.

This is work towards being able to create the backend during
construction, so that most operations needing the backend would not
block until the handle has been communicated.

* LayoutTests/fast/canvas/image-buffer-iosurface-disabled-expected.txt:
* LayoutTests/fast/canvas/image-buffer-iosurface-disabled.html:
Fix the test to ensure that the tested command, creating too big accelerated
image buffer, would reach the GPUP within the test. Otherwise,
failing to do so would result in failure of the next test, as this test
would finish before its commands were run on GPUP.
Next test is typically fast/canvas/image-object-in-canvas.html.

* Source/WebCore/platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::getPixelBuffer const):
(WebCore::ImageBuffer::putPixelBuffer):
* Source/WebCore/platform/graphics/ImageBufferBackend.h:
(WebCore::ImageBufferBackend::toBackendCoordinates const): Deleted.
* Source/WebCore/platform/graphics/PixelBuffer.h:
* Source/WebCore/platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp:
(WebCore::ImageBufferCairoSurfaceBackend::putPixelBuffer):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
(WebKit::RemoteDisplayListRecorder::create):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::didFailCreateImageBuffer):
(WebKit::RemoteRenderingBackend::didCreateImageBuffer):
(WebKit::RemoteRenderingBackend::createImageBuffer):
(WebKit::RemoteRenderingBackend::releaseImageBuffer):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/Scripts/webkit/messages.py:
(types_that_must_be_moved):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp:
(WebKit::RemoteImageBufferProxy::didCreateBackend):
(WebKit::RemoteImageBufferProxy::getPixelBuffer const):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.messages.in:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::createImageBuffer):

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




More information about the webkit-changes mailing list