[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