[webkit-changes] [WebKit/WebKit] ff9c14: ASSERT in WebCore::RenderLayerCompositor::traverse...
mattwoodrow
noreply at github.com
Wed Sep 4 18:01:36 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ff9c149d15da6f22cdf8dea8b491fae77579dff6
https://github.com/WebKit/WebKit/commit/ff9c149d15da6f22cdf8dea8b491fae77579dff6
Author: Matt Woodrow <mattwoodrow at apple.com>
Date: 2024-09-04 (Wed, 04 Sep 2024)
Changed paths:
A LayoutTests/compositing/shared-backing/overlap-bounds-change-crash-expected.txt
A LayoutTests/compositing/shared-backing/overlap-bounds-change-crash.html
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
Log Message:
-----------
ASSERT in WebCore::RenderLayerCompositor::traverseUnchangedSubtree - provider == backingSharingState.backingProviderCandidateForLayer(layer, *this, overlapMap, layerExtent).
https://bugs.webkit.org/show_bug.cgi?id=279143
<rdar://135189928>
Reviewed by Simon Fraser.
This case has a backing sharing provider, and a shared layer with a sibling in
the middle.
The sibling has a reference filter (overlapBoundsIncludeChildren() == true) and
is initially not composited. This results in the computed overlap bounds being
that of it's clipped ancestor, which may not intersect the backing sharing
provider.
If the sibling becomes composited during this compositing update, the on the
next update it will use a different clip (from itself only) and now overlap the
backing sharing provider. Nothing marks the shared layer as needing an update,
so it detects that it can't share due to overlap during the
traverseUnchangedSubtree path and asserts.
Fix this by adding a flag to the clip rect calculation that makes it not
depending on prior compositing decisions.
* LayoutTests/compositing/shared-backing/overlap-bounds-change-crash-expected.txt: Added.
* LayoutTests/compositing/shared-backing/overlap-bounds-change-crash.html: Added.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* Source/WebCore/rendering/RenderLayer.h:
Canonical link: https://commits.webkit.org/283182@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