[webkit-changes] [WebKit/WebKit] 2f7775: Remove InMemoryDisplayList

Said Abou-Hallawa noreply at github.com
Wed Aug 23 18:08:43 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2f7775558dc854a5ccbf94798d75f1ace93dbccd
      https://github.com/WebKit/WebKit/commit/2f7775558dc854a5ccbf94798d75f1ace93dbccd
  Author: Said Abou-Hallawa <said at apple.com>
  Date:   2023-08-23 (Wed, 23 Aug 2023)

  Changed paths:
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/html/HTMLCanvasElement.cpp
    M Source/WebCore/platform/graphics/FontCascade.cpp
    M Source/WebCore/platform/graphics/FontCascade.h
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
    M Source/WebCore/platform/graphics/displaylists/DisplayList.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayList.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListImageBuffer.h
    R Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp
    R Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.h
    R Source/WebCore/platform/graphics/displaylists/DisplayListItemBufferIdentifier.h
    R Source/WebCore/platform/graphics/displaylists/DisplayListItemType.cpp
    R Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListItems.h
    R Source/WebCore/platform/graphics/displaylists/DisplayListIterator.cpp
    R Source/WebCore/platform/graphics/displaylists/DisplayListIterator.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h
    R Source/WebCore/platform/graphics/displaylists/InMemoryDisplayList.cpp
    R Source/WebCore/platform/graphics/displaylists/InMemoryDisplayList.h
    M Source/WebCore/rendering/GlyphDisplayListCache.cpp
    M Source/WebCore/rendering/GlyphDisplayListCache.h
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/DisplayListRecorderTests.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/cg/BifurcatedGraphicsContextTestsCG.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp

  Log Message:
  -----------
  Remove InMemoryDisplayList
https://bugs.webkit.org/show_bug.cgi?id=260213
rdar://113921399

Reviewed by Kimmo Kinnunen and Wenson Hsieh.

Make DisplayList hold a Vector of DisplayList items. There is no need for its
read and write clients anymore. They were used in the past to share the recorded
DisplayList items with GPU Process through a ring buffer. After introducing the
StreamConnection, using the DisplayList became limited to the TextPainter recording.

Simplifying this code will allow replaying back a whole DisplayList in GPU Process
all at once.

* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/HTMLCanvasElement.cpp:
* Source/WebCore/platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::displayListForTextRun const):
* Source/WebCore/platform/graphics/FontCascade.h:
(WebCore::FontCascade::displayListForTextRun):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::platformCALayerPaintContents):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::append):
(WebCore::DisplayList::DisplayList::shrinkToFit):
(WebCore::DisplayList::DisplayList::clear):
(WebCore::DisplayList::DisplayList::isEmpty const):
(WebCore::DisplayList::DisplayList::cacheImageBuffer):
(WebCore::DisplayList::DisplayList::cacheNativeImage):
(WebCore::DisplayList::DisplayList::cacheFont):
(WebCore::DisplayList::DisplayList::cacheDecomposedGlyphs):
(WebCore::DisplayList::DisplayList::cacheGradient):
(WebCore::DisplayList::DisplayList::cacheFilter):
(WebCore::DisplayList::DisplayList::asText const):
(WebCore::DisplayList::DisplayList::dump const):
(WebCore::DisplayList::DisplayList::description const): Deleted.
(WebCore::DisplayList::DisplayList::DisplayList): Deleted.
(WebCore::DisplayList::m_items): Deleted.
(WebCore::DisplayList::DisplayList::operator=): Deleted.
(WebCore::DisplayList::DisplayList::shouldDumpForFlags): Deleted.
(WebCore::DisplayList::DisplayList::sizeInBytes const): Deleted.
(WebCore::DisplayList::DisplayList::itemBuffer): Deleted.
(WebCore::DisplayList::DisplayList::setItemBufferReadingClient): Deleted.
(WebCore::DisplayList::DisplayList::setItemBufferWritingClient): Deleted.
(WebCore::DisplayList::DisplayList::prepareToAppend): Deleted.
(WebCore::DisplayList::DisplayList::forEachItemBuffer const): Deleted.
(WebCore::DisplayList::DisplayList::begin const): Deleted.
(WebCore::DisplayList::DisplayList::end const): Deleted.
* Source/WebCore/platform/graphics/displaylists/DisplayList.h:
(WebCore::DisplayList::DisplayList::items const):
(WebCore::DisplayList::DisplayList::items):
(WebCore::DisplayList::DisplayList::itemBufferIfExists const): Deleted.
(WebCore::DisplayList::DisplayList::cacheImageBuffer): Deleted.
(WebCore::DisplayList::DisplayList::cacheNativeImage): Deleted.
(WebCore::DisplayList::DisplayList::cacheFont): Deleted.
(WebCore::DisplayList::DisplayList::cacheDecomposedGlyphs): Deleted.
(WebCore::DisplayList::DisplayList::cacheGradient): Deleted.
(WebCore::DisplayList::DisplayList::cacheFilter): Deleted.
(WebCore::DisplayList::DisplayList::append): Deleted.
* Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.h:
(WebCore::DisplayList::DrawingContext::recorder):
(WebCore::DisplayList::DrawingContext::replayedDisplayList const):
(WebCore::DisplayList::DrawingContext::takeDisplayList): Deleted.
* Source/WebCore/platform/graphics/displaylists/DisplayListImageBuffer.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp: Removed.
* Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.h: Removed.
* Source/WebCore/platform/graphics/displaylists/DisplayListItemBufferIdentifier.h: Removed.
* Source/WebCore/platform/graphics/displaylists/DisplayListItemType.cpp: Removed.
* Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h: Removed.
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::Translate::dump const):
(WebCore::DisplayList::Rotate::dump const):
(WebCore::DisplayList::Scale::dump const):
(WebCore::DisplayList::SetCTM::dump const):
(WebCore::DisplayList::ConcatenateCTM::dump const):
(WebCore::DisplayList::SetInlineFillColor::dump const):
(WebCore::DisplayList::SetInlineStrokeColor::dump const):
(WebCore::DisplayList::SetStrokeThickness::dump const):
(WebCore::DisplayList::SetState::apply const):
(WebCore::DisplayList::SetState::dump const):
(WebCore::DisplayList::SetLineCap::dump const):
(WebCore::DisplayList::SetLineDash::dump const):
(WebCore::DisplayList::SetLineJoin::dump const):
(WebCore::DisplayList::SetMiterLimit::dump const):
(WebCore::DisplayList::Clip::dump const):
(WebCore::DisplayList::ClipRoundedRect::dump const):
(WebCore::DisplayList::ClipOut::dump const):
(WebCore::DisplayList::ClipOutRoundedRect::dump const):
(WebCore::DisplayList::ClipToImageBuffer::dump const):
(WebCore::DisplayList::ClipOutToPath::dump const):
(WebCore::DisplayList::ClipPath::dump const):
(WebCore::DisplayList::DrawFilteredImageBuffer::apply const):
(WebCore::DisplayList::DrawFilteredImageBuffer::dump const):
(WebCore::DisplayList::DrawGlyphs::dump const):
(WebCore::DisplayList::DrawDecomposedGlyphs::dump const):
(WebCore::DisplayList::DrawImageBuffer::dump const):
(WebCore::DisplayList::DrawNativeImage::dump const):
(WebCore::DisplayList::DrawSystemImage::dump const):
(WebCore::DisplayList::DrawPattern::dump const):
(WebCore::DisplayList::DrawRect::dump const):
(WebCore::DisplayList::DrawLine::dump const):
(WebCore::DisplayList::DrawLinesForText::dump const):
(WebCore::DisplayList::DrawDotsForDocumentMarker::apply const):
(WebCore::DisplayList::DrawDotsForDocumentMarker::dump const):
(WebCore::DisplayList::DrawEllipse::apply const):
(WebCore::DisplayList::DrawEllipse::dump const):
(WebCore::DisplayList::DrawPath::apply const):
(WebCore::DisplayList::DrawPath::dump const):
(WebCore::DisplayList::DrawFocusRingPath::apply const):
(WebCore::DisplayList::DrawFocusRingPath::dump const):
(WebCore::DisplayList::DrawFocusRingRects::apply const):
(WebCore::DisplayList::DrawFocusRingRects::dump const):
(WebCore::DisplayList::FillRect::apply const):
(WebCore::DisplayList::FillRect::dump const):
(WebCore::DisplayList::FillRectWithColor::apply const):
(WebCore::DisplayList::FillRectWithColor::dump const):
(WebCore::DisplayList::FillRectWithGradient::FillRectWithGradient):
(WebCore::DisplayList::FillRectWithGradient::apply const):
(WebCore::DisplayList::FillRectWithGradient::dump const):
(WebCore::DisplayList::FillCompositedRect::apply const):
(WebCore::DisplayList::FillCompositedRect::dump const):
(WebCore::DisplayList::FillRoundedRect::apply const):
(WebCore::DisplayList::FillRoundedRect::dump const):
(WebCore::DisplayList::FillRectWithRoundedHole::apply const):
(WebCore::DisplayList::FillRectWithRoundedHole::dump const):
(WebCore::DisplayList::FillLine::apply const):
(WebCore::DisplayList::FillLine::dump const):
(WebCore::DisplayList::FillArc::apply const):
(WebCore::DisplayList::FillArc::dump const):
(WebCore::DisplayList::FillQuadCurve::apply const):
(WebCore::DisplayList::FillQuadCurve::dump const):
(WebCore::DisplayList::FillBezierCurve::apply const):
(WebCore::DisplayList::FillBezierCurve::dump const):
(WebCore::DisplayList::FillPathSegment::apply const):
(WebCore::DisplayList::FillPathSegment::dump const):
(WebCore::DisplayList::FillPath::apply const):
(WebCore::DisplayList::FillPath::dump const):
(WebCore::DisplayList::FillEllipse::apply const):
(WebCore::DisplayList::FillEllipse::dump const):
(WebCore::DisplayList::PaintFrameForMedia::PaintFrameForMedia):
(WebCore::DisplayList::PaintFrameForMedia::apply const):
(WebCore::DisplayList::PaintFrameForMedia::dump const):
(WebCore::DisplayList::StrokeRect::apply const):
(WebCore::DisplayList::StrokeRect::dump const):
(WebCore::DisplayList::StrokePath::apply const):
(WebCore::DisplayList::StrokePath::dump const):
(WebCore::DisplayList::StrokePathSegment::apply const):
(WebCore::DisplayList::StrokePathSegment::dump const):
(WebCore::DisplayList::StrokeEllipse::apply const):
(WebCore::DisplayList::StrokeEllipse::dump const):
(WebCore::DisplayList::StrokeLine::apply const):
(WebCore::DisplayList::StrokeLine::dump const):
(WebCore::DisplayList::StrokeArc::apply const):
(WebCore::DisplayList::StrokeArc::dump const):
(WebCore::DisplayList::StrokeQuadCurve::apply const):
(WebCore::DisplayList::StrokeQuadCurve::dump const):
(WebCore::DisplayList::StrokeBezierCurve::apply const):
(WebCore::DisplayList::StrokeBezierCurve::dump const):
(WebCore::DisplayList::ClearRect::apply const):
(WebCore::DisplayList::ClearRect::dump const):
(WebCore::DisplayList::DrawControlPart::DrawControlPart):
(WebCore::DisplayList::DrawControlPart::apply const):
(WebCore::DisplayList::DrawControlPart::dump const):
(WebCore::DisplayList::BeginTransparencyLayer::apply const):
(WebCore::DisplayList::BeginTransparencyLayer::dump const):
(WebCore::DisplayList::EndTransparencyLayer::apply const):
(WebCore::DisplayList::ApplyStrokePattern::apply const):
(WebCore::DisplayList::ApplyFillPattern::apply const):
(WebCore::DisplayList::ApplyDeviceScaleFactor::apply const):
(WebCore::DisplayList::ApplyDeviceScaleFactor::dump const):
(WebCore::DisplayList::shouldDumpDisplayListItem):
(WebCore::DisplayList::dumpDisplayListItem):
(WebCore::DisplayList::SetState::apply): Deleted.
(WebCore::DisplayList::DrawControlPart::apply): Deleted.
(WebCore::DisplayList::operator<<): Deleted.
(WebCore::DisplayList::dumpItem): Deleted.
(WebCore::DisplayList::dumpItemHandle): Deleted.
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::Save::dump const):
(WebCore::DisplayList::Restore::dump const):
(WebCore::DisplayList::ClearShadow::dump const):
(WebCore::DisplayList::ResetClip::dump const):
(WebCore::DisplayList::EndTransparencyLayer::dump const):
(WebCore::DisplayList::ApplyStrokePattern::dump const):
(WebCore::DisplayList::ApplyFillPattern::dump const):
(WebCore::DisplayList::isValid):
(WebCore::DisplayList::operator<<):
* Source/WebCore/platform/graphics/displaylists/DisplayListIterator.cpp: Removed.
* Source/WebCore/platform/graphics/displaylists/DisplayListIterator.h: Removed.
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
(WebCore::DisplayList::RecorderImpl::recordSave):
(WebCore::DisplayList::RecorderImpl::recordRestore):
(WebCore::DisplayList::RecorderImpl::recordTranslate):
(WebCore::DisplayList::RecorderImpl::recordRotate):
(WebCore::DisplayList::RecorderImpl::recordScale):
(WebCore::DisplayList::RecorderImpl::recordSetCTM):
(WebCore::DisplayList::RecorderImpl::recordConcatenateCTM):
(WebCore::DisplayList::RecorderImpl::recordSetInlineFillColor):
(WebCore::DisplayList::RecorderImpl::recordSetInlineStrokeColor):
(WebCore::DisplayList::RecorderImpl::recordSetStrokeThickness):
(WebCore::DisplayList::RecorderImpl::recordSetState):
(WebCore::DisplayList::RecorderImpl::recordSetLineCap):
(WebCore::DisplayList::RecorderImpl::recordSetLineDash):
(WebCore::DisplayList::RecorderImpl::recordSetLineJoin):
(WebCore::DisplayList::RecorderImpl::recordSetMiterLimit):
(WebCore::DisplayList::RecorderImpl::recordClearShadow):
(WebCore::DisplayList::RecorderImpl::recordResetClip):
(WebCore::DisplayList::RecorderImpl::recordClip):
(WebCore::DisplayList::RecorderImpl::recordClipRoundedRect):
(WebCore::DisplayList::RecorderImpl::recordClipOut):
(WebCore::DisplayList::RecorderImpl::recordClipOutRoundedRect):
(WebCore::DisplayList::RecorderImpl::recordClipToImageBuffer):
(WebCore::DisplayList::RecorderImpl::recordClipOutToPath):
(WebCore::DisplayList::RecorderImpl::recordClipPath):
(WebCore::DisplayList::RecorderImpl::recordDrawFilteredImageBuffer):
(WebCore::DisplayList::RecorderImpl::recordDrawGlyphs):
(WebCore::DisplayList::RecorderImpl::recordDrawDecomposedGlyphs):
(WebCore::DisplayList::RecorderImpl::recordDrawImageBuffer):
(WebCore::DisplayList::RecorderImpl::recordDrawNativeImage):
(WebCore::DisplayList::RecorderImpl::recordDrawSystemImage):
(WebCore::DisplayList::RecorderImpl::recordDrawPattern):
(WebCore::DisplayList::RecorderImpl::recordBeginTransparencyLayer):
(WebCore::DisplayList::RecorderImpl::recordEndTransparencyLayer):
(WebCore::DisplayList::RecorderImpl::recordDrawRect):
(WebCore::DisplayList::RecorderImpl::recordDrawLine):
(WebCore::DisplayList::RecorderImpl::recordDrawLinesForText):
(WebCore::DisplayList::RecorderImpl::recordDrawDotsForDocumentMarker):
(WebCore::DisplayList::RecorderImpl::recordDrawEllipse):
(WebCore::DisplayList::RecorderImpl::recordDrawPath):
(WebCore::DisplayList::RecorderImpl::recordDrawFocusRingPath):
(WebCore::DisplayList::RecorderImpl::recordDrawFocusRingRects):
(WebCore::DisplayList::RecorderImpl::recordFillRect):
(WebCore::DisplayList::RecorderImpl::recordFillRectWithColor):
(WebCore::DisplayList::RecorderImpl::recordFillRectWithGradient):
(WebCore::DisplayList::RecorderImpl::recordFillCompositedRect):
(WebCore::DisplayList::RecorderImpl::recordFillRoundedRect):
(WebCore::DisplayList::RecorderImpl::recordFillRectWithRoundedHole):
(WebCore::DisplayList::RecorderImpl::recordFillLine):
(WebCore::DisplayList::RecorderImpl::recordFillArc):
(WebCore::DisplayList::RecorderImpl::recordFillQuadCurve):
(WebCore::DisplayList::RecorderImpl::recordFillBezierCurve):
(WebCore::DisplayList::RecorderImpl::recordFillPathSegment):
(WebCore::DisplayList::RecorderImpl::recordFillPath):
(WebCore::DisplayList::RecorderImpl::recordFillEllipse):
(WebCore::DisplayList::RecorderImpl::recordPaintFrameForMedia):
(WebCore::DisplayList::RecorderImpl::recordStrokeRect):
(WebCore::DisplayList::RecorderImpl::recordStrokeLine):
(WebCore::DisplayList::RecorderImpl::recordStrokeLineWithColorAndThickness):
(WebCore::DisplayList::RecorderImpl::recordStrokeArc):
(WebCore::DisplayList::RecorderImpl::recordStrokeQuadCurve):
(WebCore::DisplayList::RecorderImpl::recordStrokeBezierCurve):
(WebCore::DisplayList::RecorderImpl::recordStrokePathSegment):
(WebCore::DisplayList::RecorderImpl::recordStrokePath):
(WebCore::DisplayList::RecorderImpl::recordStrokeEllipse):
(WebCore::DisplayList::RecorderImpl::recordClearRect):
(WebCore::DisplayList::RecorderImpl::recordDrawControlPart):
(WebCore::DisplayList::RecorderImpl::recordApplyStrokePattern):
(WebCore::DisplayList::RecorderImpl::recordApplyFillPattern):
(WebCore::DisplayList::RecorderImpl::recordApplyDeviceScaleFactor):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:
(WebCore::DisplayList::RecorderImpl::append):
* Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:
(WebCore::DisplayList::applyImageBufferItem):
(WebCore::DisplayList::applyNativeImageItem):
(WebCore::DisplayList::applySourceImageItem):
(WebCore::DisplayList::applySetStateItem):
(WebCore::DisplayList::applyDrawGlyphs):
(WebCore::DisplayList::applyDrawDecomposedGlyphs):
(WebCore::DisplayList::Replayer::applyItem):
(WebCore::DisplayList::Replayer::replay):
* Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h:
* Source/WebCore/platform/graphics/displaylists/InMemoryDisplayList.cpp: Removed.
* Source/WebCore/platform/graphics/displaylists/InMemoryDisplayList.h: Removed.
* Source/WebCore/rendering/GlyphDisplayListCache.cpp:
(WebCore::GlyphDisplayListCache::get):
(WebCore::GlyphDisplayListCache::canShareDisplayList):
(WebCore::canShareDisplayListWithItem): Deleted.
(WebCore::GlyphDisplayListCache::sizeInBytes const): Deleted.
* Source/WebCore/rendering/GlyphDisplayListCache.h:
(WebCore::GlyphDisplayListCacheEntry::create):
(WebCore::GlyphDisplayListCacheEntry::displayList):
(WebCore::GlyphDisplayListCacheEntry::GlyphDisplayListCacheEntry):
* Source/WebKit/Scripts/webkit/messages.py:
(serialized_identifiers):
(headers_for_type):
* Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
(IPC::serializedIdentifiers):
* Tools/TestWebKitAPI/Tests/WebCore/DisplayListRecorderTests.cpp:
* Tools/TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/WebCore/cg/BifurcatedGraphicsContextTestsCG.cpp:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:
(TestWebKitAPI::TEST):
(): Deleted.

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




More information about the webkit-changes mailing list