[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