[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