[webkit-changes] [WebKit/WebKit] 4b1ca4: REGRESSION(268028 at main): Graphics artifacts when s...
Simon Fraser
noreply at github.com
Fri Feb 2 10:33:28 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4b1ca4f3add8483f04957886f45626e1e9b28a80
https://github.com/WebKit/WebKit/commit/4b1ca4f3add8483f04957886f45626e1e9b28a80
Author: Simon Fraser <simon.fraser at apple.com>
Date: 2024-02-02 (Fri, 02 Feb 2024)
Changed paths:
A LayoutTests/compositing/shared-backing/overflow-scroll/composite-via-negative-z-descendants-interrupts-sequence-expected.html
A LayoutTests/compositing/shared-backing/overflow-scroll/composite-via-negative-z-descendants-interrupts-sequence.html
A LayoutTests/compositing/shared-backing/overflow-scroll/zero-sized-fixed-interrupts-sharing-sequence-expected.txt
A LayoutTests/compositing/shared-backing/overflow-scroll/zero-sized-fixed-interrupts-sharing-sequence.html
A LayoutTests/platform/ios-wk2/compositing/shared-backing/overflow-scroll/zero-sized-fixed-interrupts-sharing-sequence-expected.txt
M Source/WebCore/rendering/RenderLayerCompositor.cpp
Log Message:
-----------
REGRESSION(268028 at main): Graphics artifacts when scrolling Heroku app
https://bugs.webkit.org/show_bug.cgi?id=266926
rdar://120373474
Reviewed by Alan Baradlay.
Backing sharing is used to reduce memory use by allowing multiple RenderLayers (normally siblings),
which share the same stacking context ancestor, to render into the same compositing layer. This has
to be done in a way that preserves back-to-front paint order. The common case where this kicks in is
a non-stacking context overflow:scroll with position:relative descendants.
A backing sharing sequence (a set of layers painting into the same shared backing) has to be interrupted
when a layer becomes composited in order to preserve paint order. 268028 at main inadvertently changed the
condition used to end a backing sharing sequence, breaking rendering with various content configurations.
Restore the condition to the previous state, which is to end the sequence if the the provider layer
is the same one we had before traversing into descendant layers.
Add two tests which detect the behavior change.
* LayoutTests/compositing/shared-backing/overflow-scroll/composite-via-negative-z-descendants-interrupts-sequence-expected.html: Added.
* LayoutTests/compositing/shared-backing/overflow-scroll/composite-via-negative-z-descendants-interrupts-sequence.html: Added.
* LayoutTests/compositing/shared-backing/overflow-scroll/zero-sized-fixed-interrupts-sharing-sequence-expected.txt: Added.
* LayoutTests/compositing/shared-backing/overflow-scroll/zero-sized-fixed-interrupts-sharing-sequence.html: Added.
* LayoutTests/platform/ios-wk2/compositing/shared-backing/overflow-scroll/zero-sized-fixed-interrupts-sharing-sequence-expected.txt: Added.
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateBackingSharingAfterDescendantTraversal):
Canonical link: https://commits.webkit.org/273999@main
More information about the webkit-changes
mailing list