Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 6fa1d3b94cd776cb8af563c46495c66e3c483668 https://github.com/WebKit/WebKit/commit/6fa1d3b94cd776cb8af563c46495c66e3c483668 Author: Simon Fraser <simon.fra...@apple.com> Date: 2024-03-26 (Tue, 26 Mar 2024)
Changed paths: A LayoutTests/compositing/shared-backing/composited-descendants-should-prevent-sharing-expected.html A LayoutTests/compositing/shared-backing/composited-descendants-should-prevent-sharing.html M LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-overflow-scroll-expected.txt M LayoutTests/scrollingcoordinator/scrolling-tree/absolute-in-nested-overflow-scroll-expected.txt M Source/WebCore/rendering/RenderLayerCompositor.cpp Log Message: ----------- REGRESSION (273999@main): Elements fail to render in Spinnaker https://bugs.webkit.org/show_bug.cgi?id=271710 rdar://124483601 Reviewed by Alan Baradlay. 273999@main reverted some backing sharing behavior to an older configuration, but this brought back a bug which affects Spinnaker dashboards. The test reduction has a series of overflow scrollers, both siblings and nested, and an element later in the tree that ends up obscured when the bug occurs. A simplified paint-order tree dump (via the Compositing log channel) looks like this: -S---------C-c-- 0x118000810 RenderView 0x1180002c0 -S-----------c-- + 0x118001850 RenderBlock 0x118001700 HTML 0x118001050 -S---------C-c-- + 0x1180044a0 RenderBlock (relative positioned) 0x118004350 DIV 0x118003350 class='container' -S-O-----XxC---- - 0x118004740 RenderTextControl 0x118005460 TEXTAREA 0x118003c20 class='fixed' ---O-------CPc-- + 0x1180049e0 RenderBlock (relative positioned) 0x1180045f0 DIV 0x1180033d0 id='main' --NO-------C-c-- n 0x118004dd0 RenderBlock 0x118004890 DIV 0x118003530 class='outer-scroller' --NO-------C--s- n 0x118005070 RenderBlock 0x118004c80 DIV 0x1180035b0 class='scroller' ------------p-s- + 0x1180055b0 RenderBlock (relative positioned) 0x1180051c0 DIV 0x118003790 class='indicator' Note the P on '0x1180049e0' indicating that it's a shared backing provider, and the p on '0x1180055b0' showing that it paints into that shared backing. However, the normal flow descendant layers of 0x1180049e0 (0x118004dd0 and 0x118005070) are both [C]composited, so they appear on top of 0x1180055b0, which is the bug. A composited layer normally interrupts a backing sharing sequence. However, we only determined that 0x1180049e0 could be a backing provider after traversing its descendant layers in `updateBackingSharingAfterDescendantTraversal()`, and made it one despite it having composited descendants. So fix `updateBackingSharingAfterDescendantTraversal()` to check that. This undoes the backing sharing that happened in `scrollingcoordinator/scrolling-tree/absolute-in-nested-overflow-scroll`, but that sharing was undone on scrolling anyway. * LayoutTests/compositing/shared-backing/composited-descendants-should-prevent-sharing-expected.html: Added. * LayoutTests/compositing/shared-backing/composited-descendants-should-prevent-sharing.html: Added. * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateBackingSharingAfterDescendantTraversal): Canonical link: https://commits.webkit.org/276720@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes