[webkit-changes] [WebKit/WebKit] 39e422: Correct the simplified repaint optimization to app...
Alan Baradlay
noreply at github.com
Fri Sep 6 06:52:09 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 39e42283edb668a4b3fc8ed7f6ed5c001e1007bf
https://github.com/WebKit/WebKit/commit/39e42283edb668a4b3fc8ed7f6ed5c001e1007bf
Author: Alan Baradlay <zalan at apple.com>
Date: 2024-09-06 (Fri, 06 Sep 2024)
Changed paths:
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderObject.cpp
Log Message:
-----------
Correct the simplified repaint optimization to apply to simple, out-of-flow subtrees
https://bugs.webkit.org/show_bug.cgi?id=279242
<rdar://133654826>
Reviewed by Simon Fraser.
This patch disables simplified repaint (initiated by simplified layout) for subtrees with "normal child layout".
When inflow descendants of an out-of-flow container change (and assuming no other mutation happens)
1. the out-of-flow box is marked with "normal child" needs layout
2. the ancestor chain gets marked with simplified layout
(we simply turn regular layout into simplified layout when crossing out-of-flow boundary)
Now during repaint, we can safely skip clean subtrees but we may need to repaint each and every renderer within the "normal child needs layout" subtree
(as opposed to only the ones we visited during layout).
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::recursiveUpdateLayerPositions): add extra condition back now that we can identify normal-flow subtrees.
* Source/WebCore/rendering/RenderLayer.h:
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::setIsSimplifiedLayoutRootForLayerIfApplicable):
(WebCore::RenderObject::markContainingBlocksForLayout):
Canonical link: https://commits.webkit.org/283268@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