[webkit-changes] [WebKit/WebKit] 37bb67: UnifiedPDF: Compositing spends time copying bitmap...
Kimmo Kinnunen
noreply at github.com
Wed Dec 11 06:41:30 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 37bb67537f13e0298596bbd34a07470c9bf0cff2
https://github.com/WebKit/WebKit/commit/37bb67537f13e0298596bbd34a07470c9bf0cff2
Author: Kimmo Kinnunen <kkinnunen at apple.com>
Date: 2024-12-11 (Wed, 11 Dec 2024)
Changed paths:
M LayoutTests/pdf/pdf-in-iframe-with-text-annotation.html
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.h
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.mm
Log Message:
-----------
UnifiedPDF: Compositing spends time copying bitmaps to GPUP
https://bugs.webkit.org/show_bug.cgi?id=284366
rdar://141214825
Reviewed by Simon Fraser and Abrar Rahman Protyasha.
Store the PDF bitmap tiles as NativeImages. ImageBuffers are mutable
draw targets, something that are drawn to. NativeImages immutable images
that are drawn from.
This allows then data to be sent to GPUP only once, avoiding numerous
full-tile copies per tile draw.
For incremental PDF tile renders, render the tile in the PDF paint queue.
Previously, the rendered region was blit to the real tile in the
main thread.
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.mm:
(WebKit::AsyncPDFRenderer::renderInfoIsValidForTile const):
(WebKit::AsyncPDFRenderer::willRepaintTile):
(WebKit::AsyncPDFRenderer::enqueueTileRenderForTileGridRepaint):
(WebKit::AsyncPDFRenderer::didRevalidateTiles):
(WebKit::AsyncPDFRenderer::enqueueTileRenderIfNecessary):
(WebKit::AsyncPDFRenderer::renderInfoForFullTile const):
(WebKit::AsyncPDFRenderer::renderInfoForTile const):
(WebKit::renderPDFTile):
(WebKit::AsyncPDFRenderer::serviceRequestQueue):
(WebKit::AsyncPDFRenderer::didCompleteTileRender):
(WebKit::AsyncPDFRenderer::paintTilesForPage):
(WebKit::AsyncPDFRenderer::pdfContentChangedInRect):
(WebKit::operator<<):
(WebKit::AsyncPDFRenderer::enqueueTilePaintForTileGridRepaint): Deleted.
(WebKit::AsyncPDFRenderer::enqueueTilePaintIfNecessary): Deleted.
Standardize on term "render" instead of "render" and "paint" for the
operation which updates the PDF tiles.
(WebKit::AsyncPDFRenderer::enqueuePaintWithClip): Deleted.
(WebKit::AsyncPDFRenderer::paintTileOnWorkQueue): Deleted.
(WebKit::AsyncPDFRenderer::paintPDFIntoBuffer): Deleted.
(WebKit::AsyncPDFRenderer::transferBufferToMainThread): Deleted.
Remove redundant member functions that were run in the paint queue
and only called once.
Canonical link: https://commits.webkit.org/287666@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