[webkit-changes] [WebKit/WebKit] 6d84ae: enclosingClippingScopes() can be called twice per ...
Simon Fraser
noreply at github.com
Tue Sep 19 21:02:44 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 6d84ae0831795cf27259f2963eab24e4c5022a93
https://github.com/WebKit/WebKit/commit/6d84ae0831795cf27259f2963eab24e4c5022a93
Author: Simon Fraser <simon.fraser at apple.com>
Date: 2023-09-19 (Tue, 19 Sep 2023)
Changed paths:
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderLayerCompositor.h
Log Message:
-----------
enclosingClippingScopes() can be called twice per layer on compositing updates
https://bugs.webkit.org/show_bug.cgi?id=261756
rdar://115734407
Reviewed by Alan Baradlay.
enclosingClippingScopes() does an ancestor tree walk, and shows up in profiles on layer-heavy sites.
It's called from both layerOverlaps() and addToOverlapMap(), so we can compute `enclosingClippingScopes`
lazily and store them in OverlapExtent like we do the layer bounds.
Not using std::optional<> to follow existing style, but a future cleanup could do so.
This is a measurable perf improvement on layer-heavy content.
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeClippingScopes const):
(WebCore::RenderLayerCompositor::addToOverlapMap const):
(WebCore::RenderLayerCompositor::layerOverlaps const):
(WebCore::createsClippingScope): Deleted.
(WebCore::enclosingClippingScopes): Deleted.
* Source/WebCore/rendering/RenderLayerCompositor.h:
Canonical link: https://commits.webkit.org/268176@main
More information about the webkit-changes
mailing list