[webkit-changes] [WebKit/WebKit] ecd29c: [GPU Process] Refactor ShareableBitmapConfiguration

Said Abou-Hallawa noreply at github.com
Mon Apr 3 17:31:29 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ecd29c94a78726d4a23e10222a1b00b5572c8fca
      https://github.com/WebKit/WebKit/commit/ecd29c94a78726d4a23e10222a1b00b5572c8fca
  Author: Said Abou-Hallawa <said at apple.com>
  Date:   2023-04-03 (Mon, 03 Apr 2023)

  Changed paths:
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
    M Source/WebKit/GPUProcess/graphics/wc/WCScene.cpp
    M Source/WebKit/GPUProcess/media/RemoteImageDecoderAVFProxy.cpp
    M Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp
    M Source/WebKit/Shared/ContextMenuContextData.cpp
    M Source/WebKit/Shared/ShareableBitmap.cpp
    M Source/WebKit/Shared/ShareableBitmap.h
    M Source/WebKit/Shared/ShareableBitmap.serialization.in
    M Source/WebKit/Shared/ShareableBitmapHandle.cpp
    M Source/WebKit/Shared/WebCoreArgumentCoders.cpp
    M Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp
    M Source/WebKit/Shared/cg/ShareableBitmapCG.cpp
    M Source/WebKit/Shared/gtk/ArgumentCodersGtk.cpp
    M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
    M Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp
    M Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h
    M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm
    M Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm
    M Source/WebKit/WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp
    M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
    M Source/WebKit/WebProcess/cocoa/TextTrackRepresentationCocoa.mm

  Log Message:
  -----------
  [GPU Process] Refactor ShareableBitmapConfiguration
https://bugs.webkit.org/show_bug.cgi?id=254925
rdar://107567337

Reviewed by Simon Fraser.

ShareableBitmapConfiguration needs to hold the size of the ShareableBitmap so it
can self calculate the sizeInBytes. Also it should hold and IPC the bitmap properties
instead of calculating them every time they are needed.

The caller should create ShareableBitmap only if sizeInBytes does not have overflow.
So ShareableBitmapConfiguration does not have to return the bitmap properties in
CheckedUint32 but just unsigned.

* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::getShareableBitmapForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getFilteredImageForImageBuffer):
* Source/WebKit/GPUProcess/graphics/wc/WCScene.cpp:
(WebKit::WCScene::update):
* Source/WebKit/GPUProcess/media/RemoteImageDecoderAVFProxy.cpp:
(WebKit::RemoteImageDecoderAVFProxy::createFrameImageAtIndex):
* Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
(WebKit::RemoteMediaPlayerManagerProxy::bitmapImageForCurrentTime):
* Source/WebKit/Shared/ContextMenuContextData.cpp:
(WebKit::ContextMenuContextData::setImage):
(WebKit::ContextMenuContextData::setPotentialQRCodeNodeSnapshotImage):
(WebKit::ContextMenuContextData::setPotentialQRCodeViewportSnapshotImage):
* Source/WebKit/Shared/ShareableBitmap.cpp:
(WebKit::ShareableBitmapConfiguration::ShareableBitmapConfiguration):
(WebKit::ShareableBitmapConfiguration::calculateSizeInBytes):
(WebKit::ShareableBitmap::create):
(WebKit::ShareableBitmap::createReadOnly):
(WebKit::ShareableBitmap::createHandle const):
(WebKit::ShareableBitmap::createReadOnlyHandle const):
(WebKit::ShareableBitmap::ShareableBitmap):
(WebKit::ShareableBitmap::numBytesForSize): Deleted.
* Source/WebKit/Shared/ShareableBitmap.h:
(WebKit::ShareableBitmapConfiguration::size const):
(WebKit::ShareableBitmapConfiguration::colorSpace const):
(WebKit::ShareableBitmapConfiguration::platformColorSpace const):
(WebKit::ShareableBitmapConfiguration::isOpaque const):
(WebKit::ShareableBitmapConfiguration::bytesPerPixel const):
(WebKit::ShareableBitmapConfiguration::bytesPerRow const):
(WebKit::ShareableBitmapConfiguration::bitmapInfo const):
(WebKit::ShareableBitmapConfiguration::sizeInBytes const):
(WebKit::ShareableBitmap::size const):
(WebKit::ShareableBitmap::bytesPerRow const):
(WebKit::ShareableBitmap::sizeInBytes const):
* Source/WebKit/Shared/ShareableBitmap.serialization.in:
* Source/WebKit/Shared/ShareableBitmapHandle.cpp:
(WebKit::ShareableBitmapHandle::ShareableBitmapHandle):
(WebKit::ShareableBitmapHandle::clear):
* Source/WebKit/Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<RefPtr<Image>>::encode):
* Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmapConfiguration::validateColorSpace):
(WebKit::ShareableBitmapConfiguration::calculateBytesPerPixel):
(WebKit::ShareableBitmapConfiguration::calculateBytesPerRow):
(WebKit::ShareableBitmap::paint):
(WebKit::ShareableBitmap::createPersistentCairoSurface):
(WebKit::ShareableBitmap::createCairoSurface):
(WebKit::ShareableBitmap::validateConfiguration): Deleted.
(WebKit::ShareableBitmap::calculateBytesPerRow): Deleted.
(WebKit::ShareableBitmap::calculateBytesPerPixel): Deleted.
* Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:
(WebKit::ShareableBitmapConfiguration::validateColorSpace):
(WebKit::wantsExtendedRange):
(WebKit::ShareableBitmapConfiguration::calculateBytesPerPixel):
(WebKit::ShareableBitmapConfiguration::calculateBytesPerRow):
(WebKit::ShareableBitmapConfiguration::calculateBitmapInfo):
(WebKit::ShareableBitmap::createGraphicsContext):
(WebKit::ShareableBitmap::paint):
(WebKit::ShareableBitmap::createCGImage const):
(WebKit::ShareableBitmap::validateConfiguration): Deleted.
(WebKit::colorSpace): Deleted.
(WebKit::bitmapInfo): Deleted.
(WebKit::ShareableBitmap::calculateBytesPerRow): Deleted.
(WebKit::ShareableBitmap::calculateBytesPerPixel): Deleted.
* Source/WebKit/Shared/gtk/ArgumentCodersGtk.cpp:
(IPC::encodeImage):
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::convertPlatformImageToBitmap):
* Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:
(WebKit::ImageBufferShareableBitmapBackend::calculateSafeBackendSize):
(WebKit::ImageBufferShareableBitmapBackend::calculateBytesPerRow):
(WebKit::ImageBufferShareableBitmapBackend::create):
(WebKit::ImageBufferShareableBitmapBackend::configuration): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
(WebKit::createShareableBitmapFromNativeImage):
* Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::snapshot):
* Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp:
(WebKit::createShareableBitmap):
* Source/WebKit/WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
(WebKit::convertCairoSurfaceToShareableBitmap):
* Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::convertDragImageToBitmap):
* Source/WebKit/WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp:
(WebKit::WebPopupMenu::setUpPlatformData):
* Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
(WebKit::DrawingAreaCoordinatedGraphics::display):
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::drawToImage):
* Source/WebKit/WebProcess/cocoa/TextTrackRepresentationCocoa.mm:
(WebKit::WebTextTrackRepresentationCocoa::update):

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




More information about the webkit-changes mailing list