Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b69cd22bb96f0e0ab9487cd14f3aa47fbeef02bc
https://github.com/WebKit/WebKit/commit/b69cd22bb96f0e0ab9487cd14f3aa47fbeef02bc
Author: Kimmo Kinnunen <[email protected]>
Date: 2025-09-09 (Tue, 09 Sep 2025)
Changed paths:
M
LayoutTests/fast/text/glyph-display-lists/glyph-display-list-color-expected.txt
M
LayoutTests/fast/text/glyph-display-lists/glyph-display-list-sharing-colr-expected.txt
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/graphics/BifurcatedGraphicsContext.cpp
M Source/WebCore/platform/graphics/BifurcatedGraphicsContext.h
R Source/WebCore/platform/graphics/DecomposedGlyphs.cpp
R Source/WebCore/platform/graphics/DecomposedGlyphs.h
M Source/WebCore/platform/graphics/FontCascade.cpp
M Source/WebCore/platform/graphics/GraphicsContext.cpp
M Source/WebCore/platform/graphics/GraphicsContext.h
M Source/WebCore/platform/graphics/NullGraphicsContext.h
M Source/WebCore/platform/graphics/RenderingResource.h
M Source/WebCore/platform/graphics/cairo/CairoOperationRecorder.cpp
M Source/WebCore/platform/graphics/cairo/CairoOperationRecorder.h
M Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
M Source/WebCore/platform/graphics/coretext/DrawGlyphsRecorder.cpp
M Source/WebCore/platform/graphics/coretext/DrawGlyphsRecorder.h
M Source/WebCore/platform/graphics/displaylists/DisplayList.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayList.h
M Source/WebCore/platform/graphics/displaylists/DisplayListItem.h
M Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListItems.h
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h
M Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp
M Source/WebCore/rendering/GlyphDisplayListCache.cpp
M Source/WebCore/rendering/cocoa/RenderThemeCocoa.mm
A Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp
A Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h
M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContext.cpp
M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContext.h
M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContext.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.cpp
M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.h
A Source/WebKit/GPUProcess/graphics/RemoteImageBufferGraphicsContext.cpp
A Source/WebKit/GPUProcess/graphics/RemoteImageBufferGraphicsContext.h
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp
M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h
M Source/WebKit/GPUProcess/webrtc/UserMediaCaptureManagerProxy.cpp
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
M Source/WebKit/Sources.txt
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
A Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListIdentifier.h
A
Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderIdentifier.h
A Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
A Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextIdentifier.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h
Log Message:
-----------
Implement GPU process side display lists
https://bugs.webkit.org/show_bug.cgi?id=297727
rdar://158865006
Reviewed by Simon Fraser.
Cache DisplayList data in GPUP and refer to them via
RemoteDisplayListIdentifier. Caching is done by constructing a
RemoteDisplayListRecorder IPC receiver that forwards the draw calls
to DisplayList::RecorderImpl to construct the DisplayList::DisplayList
instance.
Remove DecomposedGlyphs, it was overlapping and overly narrow
functionality.
Before, for a specific glyph run GlyphDisplayListCache would
drawGlyphs() to a DisplayList::RecorderImpl in DecomposeAndRetain mode.
This would decompose the single DrawGlyph call into Translate, Scale,
ConcatenateCTM, DrawDecomposedGlyphs, ... operations.
DrawDecomposedGlyphs would contain the DecomposedGlyphs structure, which
would be cached to GPUP upon first playback of the display list. Further
playbacks would again issue all commands of the display list, but reuse
the cached DecomposedGlyphs data.
After, we cache the whole display list. This way drawing the display
list is just one command.
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/graphics/BifurcatedGraphicsContext.cpp:
(WebCore::BifurcatedGraphicsContext::drawDecomposedGlyphs): Deleted.
* Source/WebCore/platform/graphics/BifurcatedGraphicsContext.h:
* Source/WebCore/platform/graphics/DecomposedGlyphs.cpp: Removed.
* Source/WebCore/platform/graphics/DecomposedGlyphs.h: Removed.
* Source/WebCore/platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::displayListForTextRun const):
* Source/WebCore/platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawGlyphsImmediate):
(WebCore::GraphicsContext::drawDecomposedGlyphs): Deleted.
* Source/WebCore/platform/graphics/GraphicsContext.h:
* Source/WebCore/platform/graphics/NullGraphicsContext.h:
* Source/WebCore/platform/graphics/RenderingResource.h:
(WebCore::RenderingResource::isGradient const):
(WebCore::RenderingResource::isDecomposedGlyphs const): Deleted.
* Source/WebCore/platform/graphics/cairo/CairoOperationRecorder.cpp:
(WebCore::Cairo::OperationRecorder::drawDecomposedGlyphs): Deleted.
* Source/WebCore/platform/graphics/cairo/CairoOperationRecorder.h:
* Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:
* Source/WebCore/platform/graphics/coretext/DrawGlyphsRecorder.cpp:
(WebCore::DrawGlyphsRecorder::DrawGlyphsRecorder):
(WebCore::DrawGlyphsRecorder::recordDrawGlyphs):
* Source/WebCore/platform/graphics/coretext/DrawGlyphsRecorder.h:
* Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::~DisplayList):
* Source/WebCore/platform/graphics/displaylists/DisplayList.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListItem.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::DrawDecomposedGlyphs::apply const): Deleted.
(WebCore::DisplayList::DrawDecomposedGlyphs::dump const): Deleted.
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::DrawDecomposedGlyphs::DrawDecomposedGlyphs): Deleted.
(WebCore::DisplayList::DrawDecomposedGlyphs::font const): Deleted.
(WebCore::DisplayList::DrawDecomposedGlyphs::decomposedGlyphs const): Deleted.
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::appendDisplayList):
(WebCore::DisplayList::Recorder::decomposeDrawGlyphsIfNeeded):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
(WebCore::DisplayList::RecorderImpl::drawDecomposedGlyphs): Deleted.
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:
* Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp:
* Source/WebCore/rendering/GlyphDisplayListCache.cpp:
(WebCore::GlyphDisplayListCache::canShareDisplayList):
* Source/WebCore/rendering/cocoa/RenderThemeCocoa.mm:
(WebCore::RenderThemeCocoa::paintAttachmentText):
* Source/WebKit/GPUProcess/graphics/RemoteGraphicsContext.cpp:
(WebKit::RemoteGraphicsContext::RemoteGraphicsContext):
(WebKit::RemoteGraphicsContext::controlFactory):
(WebKit::RemoteGraphicsContext::drawDisplayList):
(WebKit::RemoteGraphicsContext::drawControlPart):
(WebKit::RemoteImageBufferGraphicsContext::create):
(WebKit::RemoteImageBufferGraphicsContext::RemoteImageBufferGraphicsContext):
(WebKit::RemoteImageBufferGraphicsContext::startListeningForIPC):
(WebKit::RemoteImageBufferGraphicsContext::stopListeningForIPC):
(WebKit::RemoteDisplayListRecorder::create):
(WebKit::RemoteDisplayListRecorder::RemoteDisplayListRecorder):
(WebKit::RemoteDisplayListRecorder::startListeningForIPC):
(WebKit::RemoteDisplayListRecorder::stopListeningForIPC):
(WebKit::RemoteGraphicsContext::create): Deleted.
(WebKit::RemoteGraphicsContext::startListeningForIPC): Deleted.
(WebKit::RemoteGraphicsContext::stopListeningForIPC): Deleted.
(WebKit::RemoteGraphicsContext::drawDecomposedGlyphs): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteGraphicsContext.h:
(WebKit::RemoteGraphicsContext::context):
* Source/WebKit/GPUProcess/graphics/RemoteGraphicsContext.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.cpp:
(WebKit::RemoteImageBuffer::RemoteImageBuffer):
* Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.h:
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::ensureBufferForDisplay):
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::createDisplayListRecorder):
(WebKit::RemoteRenderingBackend::sinkDisplayListRecorderIntoDisplayList):
(WebKit::RemoteRenderingBackend::releaseDisplayList):
(WebKit::RemoteRenderingBackend::cacheDecomposedGlyphs): Deleted.
(WebKit::RemoteRenderingBackend::releaseDecomposedGlyphs): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:
(WebKit::RemoteResourceCache::cacheDisplayList):
(WebKit::RemoteResourceCache::cachedDisplayList const):
(WebKit::RemoteResourceCache::releaseDisplayList):
(WebKit::RemoteResourceCache::releaseMemory):
(WebKit::RemoteResourceCache::cacheDecomposedGlyphs): Deleted.
(WebKit::RemoteResourceCache::releaseDecomposedGlyphs): Deleted.
(WebKit::RemoteResourceCache::cachedDecomposedGlyphs const): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h:
* Source/WebKit/Scripts/webkit/messages.py:
(atomic_object_identifier):
(serialized_identifiers):
* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListIdentifier.h: Copied
from Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextIdentifier.h.
* Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextIdentifier.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextProxy.cpp:
(WebKit::RemoteGraphicsContextProxy::RemoteGraphicsContextProxy):
(WebKit::m_renderingBackend):
(WebKit::RemoteGraphicsContextProxy::drawDisplayList):
(WebKit::RemoteGraphicsContextProxy::recordResourceUse):
(WebKit::RemoteGraphicsContextProxy::drawDecomposedGlyphs): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::cacheDisplayList):
(WebKit::RemoteRenderingBackendProxy::releaseDisplayList):
(WebKit::RemoteRenderingBackendProxy::cacheDecomposedGlyphs): Deleted.
(WebKit::RemoteRenderingBackendProxy::releaseDecomposedGlyphs): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
(WebKit::RemoteResourceCacheProxy::recordDisplayListUse):
(WebKit::RemoteResourceCacheProxy::willDestroyDisplayList):
(WebKit::RemoteResourceCacheProxy::releaseMemory):
(WebKit::RemoteResourceCacheProxy::recordDecomposedGlyphsUse): Deleted.
(WebKit::RemoteResourceCacheProxy::willDestroyDecomposedGlyphs): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
Canonical link: https://commits.webkit.org/299747@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes