Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 32d93d501a5dbc1eb1d660cf40eb8b9556c987a3 https://github.com/WebKit/WebKit/commit/32d93d501a5dbc1eb1d660cf40eb8b9556c987a3 Author: Kimmo Kinnunen <kkinnu...@apple.com> Date: 2025-04-24 (Thu, 24 Apr 2025)
Changed paths: M LayoutTests/displaylists/layer-dispay-list-expected.txt 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/html/canvas/PaintRenderingContext2D.cpp M Source/WebCore/html/canvas/PaintRenderingContext2D.h M Source/WebCore/platform/graphics/FontCascade.cpp M Source/WebCore/platform/graphics/FontCascade.h M Source/WebCore/platform/graphics/GraphicsContext.cpp M Source/WebCore/platform/graphics/GraphicsContext.h M Source/WebCore/platform/graphics/ImageBufferDisplayListBackend.cpp M Source/WebCore/platform/graphics/ImageBufferDisplayListBackend.h M Source/WebCore/platform/graphics/NullGraphicsContext.h M Source/WebCore/platform/graphics/adwaita/ControlFactoryAdwaita.cpp M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h M Source/WebCore/platform/graphics/controls/ControlFactory.cpp M Source/WebCore/platform/graphics/controls/ControlFactory.h M Source/WebCore/platform/graphics/displaylists/DisplayList.cpp M Source/WebCore/platform/graphics/displaylists/DisplayList.h R Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.cpp R Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.h M Source/WebCore/platform/graphics/displaylists/DisplayListItem.cpp 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 R Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp R Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h M Source/WebCore/platform/graphics/ios/controls/ControlFactoryIOS.mm M Source/WebCore/platform/graphics/mac/controls/ControlFactoryMac.mm M Source/WebCore/rendering/GlyphDisplayListCache.cpp M Source/WebCore/rendering/GlyphDisplayListCache.h M Source/WebCore/rendering/TextPainter.cpp M Source/WebCore/rendering/TextPainter.h M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj M Tools/TestWebKitAPI/Tests/WebCore/DisplayListRecorderTests.cpp R Tools/TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp M Tools/TestWebKitAPI/Tests/WebCore/cg/BifurcatedGraphicsContextTestsCG.cpp Log Message: ----------- Add display lists as first class GraphicsContext draw object https://bugs.webkit.org/show_bug.cgi?id=291952 rdar://149851725 Reviewed by Simon Fraser. Add GraphicsContext::drawDisplayList(). This way later commits can implement support for display lists that are cached in GPUP via GraphicsContext polymorphism. Remove DisplayList::Replayer. DisplayList is a list of display items, and the playback, for now, is just a for loop. Remove DisplayList::DrawingContext, it did not serve a purpose. Makes DisplayList an immutable refcounted type. * Source/WebCore/Headers.cmake: * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/html/HTMLCanvasElement.cpp: * Source/WebCore/html/canvas/PaintRenderingContext2D.cpp: (WebCore::PaintRenderingContext2D::ensureDrawingContext const): (WebCore::PaintRenderingContext2D::existingDrawingContext const): (WebCore::PaintRenderingContext2D::replayDisplayList const): * Source/WebCore/html/canvas/PaintRenderingContext2D.h: * Source/WebCore/platform/graphics/FontCascade.cpp: (WebCore::FontCascade::displayListForTextRun const): * Source/WebCore/platform/graphics/FontCascade.h: * Source/WebCore/platform/graphics/GraphicsContext.cpp: (WebCore::GraphicsContext::drawDisplayList): * Source/WebCore/platform/graphics/GraphicsContext.h: * Source/WebCore/platform/graphics/ImageBufferDisplayListBackend.cpp: (WebCore::ImageBufferDisplayListBackend::context): (WebCore::ImageBufferDisplayListBackend::copyNativeImage): (WebCore::ImageBufferDisplayListBackend::sinkIntoPDFDocument): * Source/WebCore/platform/graphics/ImageBufferDisplayListBackend.h: * Source/WebCore/platform/graphics/NullGraphicsContext.h: * 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::DisplayList): (WebCore::DisplayList::DisplayList::append): Deleted. (WebCore::DisplayList::DisplayList::shrinkToFit): Deleted. (WebCore::DisplayList::DisplayList::clear): Deleted. (WebCore::DisplayList::DisplayList::isEmpty const): Deleted. * Source/WebCore/platform/graphics/displaylists/DisplayList.h: (WebCore::DisplayList::DisplayList::items const): Deleted. (WebCore::DisplayList::DisplayList::items): Deleted. * Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.cpp: Removed. * Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.h: Removed. * Source/WebCore/platform/graphics/displaylists/DisplayListItem.cpp: (WebCore::DisplayList::applyItem): * Source/WebCore/platform/graphics/displaylists/DisplayListItem.h: * Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp: (WebCore::DisplayList::DrawDisplayList::DrawDisplayList): (WebCore::DisplayList::DrawDisplayList::displayList const): (WebCore::DisplayList::DrawDisplayList::apply const): (WebCore::DisplayList::DrawDisplayList::dump const): * Source/WebCore/platform/graphics/displaylists/DisplayListItems.h: (WebCore::DisplayList::DrawDecomposedGlyphs::DrawDecomposedGlyphs): * Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp: * Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp: (WebCore::DisplayList::RecorderImpl::RecorderImpl): (WebCore::DisplayList::RecorderImpl::takeDisplayList): (WebCore::DisplayList::RecorderImpl::copyDisplayList): (WebCore::DisplayList::RecorderImpl::save): (WebCore::DisplayList::RecorderImpl::restore): (WebCore::DisplayList::RecorderImpl::translate): (WebCore::DisplayList::RecorderImpl::rotate): (WebCore::DisplayList::RecorderImpl::scale): (WebCore::DisplayList::RecorderImpl::setCTM): (WebCore::DisplayList::RecorderImpl::concatCTM): (WebCore::DisplayList::RecorderImpl::setLineCap): (WebCore::DisplayList::RecorderImpl::setLineDash): (WebCore::DisplayList::RecorderImpl::setLineJoin): (WebCore::DisplayList::RecorderImpl::setMiterLimit): (WebCore::DisplayList::RecorderImpl::resetClip): (WebCore::DisplayList::RecorderImpl::clip): (WebCore::DisplayList::RecorderImpl::clipRoundedRect): (WebCore::DisplayList::RecorderImpl::clipOut): (WebCore::DisplayList::RecorderImpl::clipOutRoundedRect): (WebCore::DisplayList::RecorderImpl::clipToImageBuffer): (WebCore::DisplayList::RecorderImpl::clipPath): (WebCore::DisplayList::RecorderImpl::drawFilteredImageBuffer): (WebCore::DisplayList::RecorderImpl::drawGlyphsImmediate): (WebCore::DisplayList::RecorderImpl::drawDecomposedGlyphs): (WebCore::DisplayList::RecorderImpl::drawDisplayList): (WebCore::DisplayList::RecorderImpl::drawImageBuffer): (WebCore::DisplayList::RecorderImpl::drawNativeImageInternal): (WebCore::DisplayList::RecorderImpl::drawSystemImage): (WebCore::DisplayList::RecorderImpl::drawPattern): (WebCore::DisplayList::RecorderImpl::beginTransparencyLayer): (WebCore::DisplayList::RecorderImpl::endTransparencyLayer): (WebCore::DisplayList::RecorderImpl::drawRect): (WebCore::DisplayList::RecorderImpl::drawLine): (WebCore::DisplayList::RecorderImpl::drawLinesForText): (WebCore::DisplayList::RecorderImpl::drawDotsForDocumentMarker): (WebCore::DisplayList::RecorderImpl::drawEllipse): (WebCore::DisplayList::RecorderImpl::drawPath): (WebCore::DisplayList::RecorderImpl::drawFocusRing): (WebCore::DisplayList::RecorderImpl::fillRect): (WebCore::DisplayList::RecorderImpl::fillRoundedRect): (WebCore::DisplayList::RecorderImpl::fillRectWithRoundedHole): (WebCore::DisplayList::RecorderImpl::fillPath): (WebCore::DisplayList::RecorderImpl::fillEllipse): (WebCore::DisplayList::RecorderImpl::strokeRect): (WebCore::DisplayList::RecorderImpl::strokePath): (WebCore::DisplayList::RecorderImpl::strokeEllipse): (WebCore::DisplayList::RecorderImpl::clearRect): (WebCore::DisplayList::RecorderImpl::drawControlPart): (WebCore::DisplayList::RecorderImpl::applyStrokePattern): (WebCore::DisplayList::RecorderImpl::applyFillPattern): (WebCore::DisplayList::RecorderImpl::applyDeviceScaleFactor): (WebCore::DisplayList::RecorderImpl::beginPage): (WebCore::DisplayList::RecorderImpl::endPage): (WebCore::DisplayList::RecorderImpl::setURLForRect): (WebCore::DisplayList::RecorderImpl::appendStateChangeItemIfNecessary): * Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h: (WebCore::DisplayList::RecorderImpl::RecorderImpl): (WebCore::DisplayList::RecorderImpl::isEmpty const): Deleted. (WebCore::DisplayList::RecorderImpl::append): Deleted. * Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp: Removed. * Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h: Removed. * Source/WebCore/rendering/GlyphDisplayListCache.cpp: (WebCore::GlyphDisplayListCache::getDisplayList): (WebCore::GlyphDisplayListCache::get): (WebCore::GlyphDisplayListCache::getIfExistsImpl): (WebCore::GlyphDisplayListCache::getIfExists): * Source/WebCore/rendering/GlyphDisplayListCache.h: (WebCore::GlyphDisplayListCacheEntry::create): (WebCore::GlyphDisplayListCacheEntry::displayList): (WebCore::GlyphDisplayListCacheEntry::GlyphDisplayListCacheEntry): * Source/WebCore/rendering/TextPainter.cpp: (WebCore::TextPainter::paintTextOrEmphasisMarks): (WebCore::TextPainter::cachedGlyphDisplayListsForTextNodeAsText): * Source/WebCore/rendering/TextPainter.h: (WebCore::TextPainter::glyphDisplayListIfExists): * Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp: * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * Tools/TestWebKitAPI/Tests/WebCore/DisplayListRecorderTests.cpp: (TestWebKitAPI::createDisplayListTarget): Deleted. * Tools/TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp: Removed. Remove the file, it did not contain any functionality to test. The test tested that if items are added to a list, items exist in a list. This is not a relevant test, the list is just a Vector and that is tested in WTF::Vector tests. Canonical link: https://commits.webkit.org/294058@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes