haikuwebkit/LayoutTests/fast/layers
Cameron McCormack d64ffd6260 Stop GraphicsLayerCA::recursiveCommitChanges recursion once cMaxLayerTreeDepth is reached
https://bugs.webkit.org/show_bug.cgi?id=227738
<rdar://42584284>

Reviewed by Simon Fraser.

Source/WebCore:

To avoid stack overflow in some configurations, stop
recursiveCommitChange recursion when we reach the same level that we
stop hooking up PlatformCALayers. This will leave GraphicsLayerCAs in
the tree with m_uncommittedChanges, but if we ever do another call to
recursiveCommitChange where the GraphicsLayerCA is now at an
appropriate depth (because some ancestors lost their structural
layers, for example), then we'll process the uncommitted changes at
that point.

Pull up the increment of commitState.treeDepth from
commitLayerChangesBeforeSublayers to recursiveCommitChanges so that
the commitLayerChangesBeforeSublayers call for a mask layer doesn't
contribute to the depth count.

Use structuralLayerPurpose() rather than null-checking
m_structuralLayer to determine whether we count an additional depth
level, since m_structuralLayer reflects whether we already have a
structural layer (which may or may not go away), and
structuralLayerPurpose() can tell us whether we will have a structural
layer.

Test: fast/layers/deep-layer-update.html

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):

LayoutTests:

Add a test that changes made to GraphicsLayerCAs that are too deep
in the tree will be committed if they later become not too deep.

* fast/layers/deep-layer-update-expected.html: Added.
* fast/layers/deep-layer-update.html: Added.


Canonical link: https://commits.webkit.org/239529@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@279756 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-07-08 22:17:38 +00:00
..
add-layer-with-nested-stacking-expected.txt More Chromium Lion rebaselines as well as some fixes for 2012-03-08 22:00:00 +00:00
add-layer-with-nested-stacking.html
assert-RenderLayer-update-positions-expected.txt
assert-RenderLayer-update-positions.html
assert-on-overlap-testing-with-frames-inside-columns-expected.txt
assert-on-overlap-testing-with-frames-inside-columns.html ASSERTION FAILED: !paintInfo.overlapTestRequests->contains(this) in WebCore::RenderWidget::paintContents 2016-09-06 21:53:07 +00:00
assert-on-self-painting-inline-with-scrolling-expected.txt
assert-on-self-painting-inline-with-scrolling.html
blank-content-when-child-layer-is-at-negative-big-number-expected.html
blank-content-when-child-layer-is-at-negative-big-number.html
clip-rects-assertion-expected.txt
clip-rects-assertion.html
clip-rects-transformed-2-expected.txt
clip-rects-transformed-2.html
clip-rects-transformed-expected.txt
clip-rects-transformed.html
deep-layer-update-expected.html Stop GraphicsLayerCA::recursiveCommitChanges recursion once cMaxLayerTreeDepth is reached 2021-07-08 22:17:38 +00:00
deep-layer-update.html Stop GraphicsLayerCA::recursiveCommitChanges recursion once cMaxLayerTreeDepth is reached 2021-07-08 22:17:38 +00:00
generated-layer-scrollbar-crash-expected.txt 2007-02-06 Mitz Pettel <mitz@webkit.org> 2007-02-06 20:26:33 +00:00
generated-layer-scrollbar-crash.html
geometry-map-accumulated-offset-assert-expected.txt Remove rounding logic in RenderGeometryMap::mapContainer 2021-04-27 06:19:01 +00:00
geometry-map-accumulated-offset-assert.html Remove rounding logic in RenderGeometryMap::mapContainer 2021-04-27 06:19:01 +00:00
geometry-map-saturated-offset-assert-expected.txt
geometry-map-saturated-offset-assert.html
geometry-map-transform-state-translation-mismatch-expected.txt
geometry-map-transform-state-translation-mismatch.html
hidpi-box-positioned-off-by-one-when-transform-is-present-expected.html
hidpi-box-positioned-off-by-one-when-transform-is-present.html
hidpi-floor-negative-coordinate-values-to-maintain-rounding-direction-expected.html
hidpi-floor-negative-coordinate-values-to-maintain-rounding-direction.html
hidpi-nested-layers-with-subpixel-accumulation-expected.html
hidpi-nested-layers-with-subpixel-accumulation.html
hidpi-transform-on-child-content-is-mispositioned-expected.html
hidpi-transform-on-child-content-is-mispositioned.html
inline-dirty-z-order-lists.html Tools: 2017-05-04 21:46:39 +00:00
layer-content-visibility-change-expected.txt Chromium garden-o-matic rebaselines for expected failures. 2012-03-30 19:06:53 +00:00
layer-content-visibility-change.html
layer-visibility-sublayer.html Remove unneeded whitespace between content and <br> 2020-10-25 19:52:34 +00:00
layer-visibility.html
negative-scroll-positions-expected.txt
negative-scroll-positions.html
nested-layers-1-expected.txt
nested-layers-1.html
nested-layers-2-expected.txt
nested-layers-2.html
nested-layers-3-expected.txt
nested-layers-3.html
nested-layers-4-expected.txt
nested-layers-4.html
no-clipping-overflow-hidden-added-after-transform-expected.html
no-clipping-overflow-hidden-added-after-transform.html
no-clipping-overflow-hidden-added-after-transition-expected.html
no-clipping-overflow-hidden-added-after-transition.html
no-clipping-overflow-hidden-hardware-acceleration-expected.html
no-clipping-overflow-hidden-hardware-acceleration.html
normal-flow-hit-test.html
opacity-outline.html
opacity-stacking-expected.txt
opacity-stacking.html
opacity-transforms.html
overflow-scroll-auto-switch.html
overflow-scroll-self-painting-expected.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
overflow-scroll-self-painting.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
overflow-scroll-transform-border-radius-expected.html Ensure scrollable transformed elements that are themselves within scrollable elements don't ignore border-radius 2021-05-13 23:19:48 +00:00
overflow-scroll-transform-border-radius.html Ensure scrollable transformed elements that are themselves within scrollable elements don't ignore border-radius 2021-05-13 23:19:48 +00:00
parent-clipping-overflow-is-overwritten-by-child-clipping-expected.html
parent-clipping-overflow-is-overwritten-by-child-clipping.html
positioned-inside-root-with-margins-expected.txt
positioned-inside-root-with-margins.html
prevent-hit-test-during-layout-expected.txt
prevent-hit-test-during-layout.html
remove-layer-with-nested-stacking.html
remove-only-this-layer-update.html
remove-scrollable-area-crash-expected.txt REGRESSION(r274025-r273811): Crash under RenderLayerBacking::updateGeometry() 2021-03-09 05:57:57 +00:00
remove-scrollable-area-crash.html REGRESSION(r274025-r273811): Crash under RenderLayerBacking::updateGeometry() 2021-03-09 05:57:57 +00:00
removed-by-scroll-handler-expected.txt
removed-by-scroll-handler.html
resize-layer-deletion-crash-expected.txt
resize-layer-deletion-crash.html
scroll-no-visible-content-but-visible-descendant-expected.html
scroll-no-visible-content-but-visible-descendant.html
scroll-overflow-no-layer-expected.txt
scroll-overflow-no-layer.html
scroll-rect-to-visible.html
scroll-with-transform-composited-layer-expected.txt
scroll-with-transform-composited-layer.html
scroll-with-transform-layer-expected.txt
scroll-with-transform-layer.html
self-painting-outline-expected.txt
self-painting-outline.html
visible-layer-with-hidden-parent-expected.txt
visible-layer-with-hidden-parent.html
wrong-clipping-semi-transparent-compositing-layer-on-subpixel-position-expected.html
wrong-clipping-semi-transparent-compositing-layer-on-subpixel-position.html
wrong-clipping-semi-transparent-layer-on-subpixel-position-expected.html
wrong-clipping-semi-transparent-layer-on-subpixel-position.html
zindex-hit-test-expected.txt
zindex-hit-test.html
zindex-inherit.html
zindex-ridonkulous-expected.txt
zindex-ridonkulous.html