Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c1d07b738c50f0a8a9230671117390a89389888f
      
https://github.com/WebKit/WebKit/commit/c1d07b738c50f0a8a9230671117390a89389888f
  Author: Antti Koivisto <[email protected]>
  Date:   2023-06-14 (Wed, 14 Jun 2023)

  Changed paths:
    M LayoutTests/compositing/iframes/page-cache-layer-tree-expected.txt
    M 
LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt
    M 
LayoutTests/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt
    M 
LayoutTests/fast/repaint/background-attachment-fixed-in-composited-scroll-expected.txt
    M 
LayoutTests/fast/repaint/background-attachment-fixed-in-composited-scroll.html
    M 
LayoutTests/platform/ios-wk2/compositing/iframes/page-cache-layer-tree-expected.txt
    M 
LayoutTests/platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt
    M 
LayoutTests/platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt
    M 
LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-overflow-scroll-expected.txt
    M 
LayoutTests/scrollingcoordinator/scrolling-tree/absolute-in-nested-overflow-scroll-expected.txt
    M Source/WebCore/rendering/RenderLayerCompositor.cpp
    M Source/WebCore/rendering/RenderLayerCompositor.h
    R resources/js-wrapper.png
    R resources/webkit2-process-architecture.png
    R resources/xcode-add-file.png
    R resources/xcode-build-settings-for-run.png
    R resources/xcode-export-header.png
    R resources/xcode-scheme-dumprendertree.png
    R resources/xcode-scheme-layout-test.png
    R resources/xcode-workspace-build-location.png
    R resources/xcode-workspace-settings.png

  Log Message:
  -----------
  Allow multiple providers in a backing sharing sequence
https://bugs.webkit.org/show_bug.cgi?id=258071
rdar://84376322

Reviewed by Simon Fraser.

Currently there can be exactly one backing provider layer within a stacking 
context.
With this patch we allow multiple providers as long as long as they don't 
overlap.

This enables backing sharing in the case of multiple overflow scrollers within 
a single
stacking context, as seen on walmart.com.

* LayoutTests/compositing/iframes/page-cache-layer-tree-expected.txt:
* 
LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt:
* 
LayoutTests/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt:
* 
LayoutTests/fast/repaint/background-attachment-fixed-in-composited-scroll-expected.txt:
* 
LayoutTests/fast/repaint/background-attachment-fixed-in-composited-scroll.html:
* 
LayoutTests/platform/ios-wk2/compositing/iframes/page-cache-layer-tree-expected.txt:
* 
LayoutTests/platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt:
* 
LayoutTests/platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt:
* 
LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-overflow-scroll-expected.txt:
* 
LayoutTests/scrollingcoordinator/scrolling-tree/absolute-in-nested-overflow-scroll-expected.txt:

Various test results change because more backing sharing. Visually the results 
are identical.

* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::BackingSharingState::backingProviderCandidates 
const):

Sharing layers are now tracked per-provider.

(WebCore::RenderLayerCompositor::BackingSharingState::isPotentialBackingSharingLayer
 const):
(WebCore::RenderLayerCompositor::BackingSharingState::startOrContinueBackingSharingSequence):

Append a new provider.

(WebCore::RenderLayerCompositor::BackingSharingState::endBackingSharingSequence):
(WebCore::RenderLayerCompositor::BackingSharingState::backingProviderCandidateForLayer):
(WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal):

Allow the sequence to continue even if we find another compositing layer as 
long as it doesn't overlap with
the existing providers. If applicable it will become an additional provider 
later.

(WebCore::RenderLayerCompositor::BackingSharingState::updateAfterDescendantTraversal):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
(WebCore::RenderLayerCompositor::layerRepaintTargetsBackingSharingLayer const):
(WebCore::operator<<):
(WebCore::RenderLayerCompositor::BackingSharingState::backingProviderCandidate 
const): Deleted.
(WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): 
Deleted.
(WebCore::RenderLayerCompositor::BackingSharingState::startBackingSharingSequence):
 Deleted.
(WebCore::RenderLayerCompositor::BackingSharingState::canIncludeLayer const): 
Deleted.
* Source/WebCore/rendering/RenderLayerCompositor.h:

Canonical link: https://commits.webkit.org/265184@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to