[webkit-changes] [WebKit/WebKit] 2e1ca5: Compositing overlap testing is broken with filters...

Simon Fraser noreply at github.com
Mon Aug 7 17:41:14 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2e1ca5ac8e801e668419d46f9c82a1dba8c5b1a3
      https://github.com/WebKit/WebKit/commit/2e1ca5ac8e801e668419d46f9c82a1dba8c5b1a3
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2023-08-07 (Mon, 07 Aug 2023)

  Changed paths:
    A LayoutTests/compositing/layer-creation/overlap-transform-filter-contribution-expected.txt
    A LayoutTests/compositing/layer-creation/overlap-transform-filter-contribution.html
    A LayoutTests/compositing/layer-creation/overlap-transform-filter-expected.txt
    A LayoutTests/compositing/layer-creation/overlap-transform-filter.html
    A LayoutTests/platform/ios-wk2/compositing/layer-creation/overlap-transform-filter-contribution-expected.txt
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  -----------
  Compositing overlap testing is broken with filters in some configurations
https://bugs.webkit.org/show_bug.cgi?id=259848
rdar://113420795

Reviewed by Alan Baradlay.

`RenderLayer::overlapBounds()` needs to return a rectangle which doesn't include the layer's own transform,
since the caller applies the transform. However, if the layer has a filter that moves pixels (causing
`overlapBoundsIncludeChildren()` to return true), then it used `defaultCalculateLayerBoundsFlags()`
which includes `IncludeSelfTransform`.

So pass a set of flags that cause the transform to be ignored.

The tests exercise a filtered layer overlapping another layer, and other layers overlapping a filtered
layer.

This is part of a set of issues that affect reddit.com (rdar://112807737).

* LayoutTests/compositing/layer-creation/overlap-transform-filter-contribution-expected.txt: Added.
* LayoutTests/compositing/layer-creation/overlap-transform-filter-contribution.html: Added.
* LayoutTests/compositing/layer-creation/overlap-transform-filter-expected.txt: Added.
* LayoutTests/compositing/layer-creation/overlap-transform-filter.html: Added.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::operator<<):

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




More information about the webkit-changes mailing list