[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