[webkit-changes] [WebKit/WebKit] 59ff4f: UnifiedPDF: Implement initial support for dynamic ...
Kimmo Kinnunen
noreply at github.com
Tue Feb 25 06:42:15 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 59ff4f6298f32fe862e26734d2707b8a0f4beae4
https://github.com/WebKit/WebKit/commit/59ff4f6298f32fe862e26734d2707b8a0f4beae4
Author: Kimmo Kinnunen <kkinnunen at apple.com>
Date: 2025-02-25 (Tue, 25 Feb 2025)
Changed paths:
M Source/WebCore/platform/graphics/TiledBacking.h
M Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h
M Source/WebCore/platform/graphics/ca/TileController.cpp
M Source/WebCore/platform/graphics/ca/TileController.h
M Source/WebCore/platform/graphics/ca/TileGrid.cpp
M Source/WebCore/platform/graphics/ca/TileGrid.h
M Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.h
M Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.h
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.mm
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDiscretePresentationController.h
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDiscretePresentationController.mm
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFScrollingPresentationController.h
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFScrollingPresentationController.mm
Log Message:
-----------
UnifiedPDF: Implement initial support for dynamic content scaling
https://bugs.webkit.org/show_bug.cgi?id=287623
rdar://144775149
Reviewed by Abrar Rahman Protyasha, Tim Horton, and Simon Fraser.
Add PlatformCALayerClient::platformCALayerDynamicContentScalingDisplayList(),
a function to override when the layer contents provides the dynamic
content scaling display lists in explicit fashion.
Implement this for tiled layers that provide the PDF content through
AsyncPDFRenderer. Map the platform layer to a particular tile in a tile
grid, and map that tile into rendered PDF content. Make the PDF content,
RenderedPDFTile, to hold the DCS display list.
Generate the DCS display list by calling the PDF drawing code twice:
once with a bitmap-backed ImageBuffer, once with DCS display list
-backed ImageBuffer. The bifurcated ImageBuffer would not work, as
the PDF drawing uses the underlying platform context that is not
bifurcated.
* Source/WebCore/platform/graphics/TiledBacking.h:
* Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h:
(WebCore::PlatformCALayerClient::platformCALayerDynamicContentScalingDisplayList const):
* Source/WebCore/platform/graphics/ca/TileController.cpp:
(WebCore::TileController::dynamicContentScalingDisplayListForTile):
* Source/WebCore/platform/graphics/ca/TileController.h:
* Source/WebCore/platform/graphics/ca/TileGrid.cpp:
(WebCore::TileGrid::platformCALayerDynamicContentScalingDisplayList const):
* Source/WebCore/platform/graphics/ca/TileGrid.h:
* Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.h:
* Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.mm:
(WebKit::DynamicContentScalingImageBufferBackend::createBackendHandle const):
(WebKit::DynamicContentScalingImageBufferBackend::displayList const):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
(WebKit::RemoteLayerBackingStore::displayListHandle const):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStoreProperties::applyBackingStoreToLayer):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in:
The display list was incorrectly serialized as ImageBufferBackendHandle
a std::variant containing also DynamicContentScalingDisplayList. Instead,
mark it directly as WebCore::DynamicContentScalingDisplayList.
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm:
(WebKit::RemoteLayerWithInProcessRenderingBackingStore::displayListHandle const):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm:
(WebKit::RemoteLayerWithRemoteRenderingBackingStore::displayListHandle const):
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.mm:
(WebKit::AsyncPDFRenderer::releaseMemory):
(WebKit::AsyncPDFRenderer::dynamicContentScalingDisplayListForTile):
(WebKit::renderPDFTile):
(WebKit::renderPDFTileToImage):
(WebKit::renderPDFTileToDynamicContentScalingDisplayList):
(WebKit::AsyncPDFRenderer::serviceRequestQueues):
(WebKit::AsyncPDFRenderer::didCompleteTileRender):
(WebKit::AsyncPDFRenderer::dynamicContentScalingResourceCache):
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDiscretePresentationController.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDiscretePresentationController.mm:
(WebKit::PDFDiscretePresentationController::layerAllowsDynamicContentScaling const):
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFScrollingPresentationController.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFScrollingPresentationController.mm:
(WebKit::PDFScrollingPresentationController::layerAllowsDynamicContentScaling const):
Canonical link: https://commits.webkit.org/291019@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list