Commit 89df64fb authored by trchen's avatar trchen Committed by Commit bot

[SPv2] Disable CompositingRecorder collapsing for SPv2

CompositingRecorder collapses its begin/end display items if there is only
one drawing display item in between. This won't work if the display item
may be layerized and the compositing operation is backdrop-dependent.

For example:

<drawing content="X"/>
<composite blend=multiply>
  <drawing content="Y"/>
</composite>

Will be collapsed as:

<drawing content="X"/>
<drawing content="saveLayer(blend=multiply); Y; restore();"/>

However the result will be incorrect if the second drawing display item gets
layerized.

This CL disables this optimization in SPv2.

BUG=674805,675805
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2580143003
Cr-Commit-Position: refs/heads/master@{#439887}
parent 438fa433
...@@ -61,6 +61,8 @@ Bug(none) scrollingcoordinator/ [ Skip ] ...@@ -61,6 +61,8 @@ Bug(none) scrollingcoordinator/ [ Skip ]
Bug(none) security/ [ Skip ] Bug(none) security/ [ Skip ]
Bug(none) shadow-dom/ [ Skip ] Bug(none) shadow-dom/ [ Skip ]
Bug(none) storage/ [ Skip ] Bug(none) storage/ [ Skip ]
Bug(none) svg/clip-path/ [ Skip ]
Bug(none) svg/masking/ [ Skip ]
Bug(none) tables/ [ Skip ] Bug(none) tables/ [ Skip ]
Bug(none) third_party/ [ Skip ] Bug(none) third_party/ [ Skip ]
Bug(none) touchadjustment/ [ Skip ] Bug(none) touchadjustment/ [ Skip ]
...@@ -411,7 +413,6 @@ Bug(none) compositing/squashing/squashed-repaints.html [ Failure ] ...@@ -411,7 +413,6 @@ Bug(none) compositing/squashing/squashed-repaints.html [ Failure ]
Bug(none) compositing/squashing/squashing-inside-perspective.html [ Failure ] Bug(none) compositing/squashing/squashing-inside-perspective.html [ Failure ]
Bug(none) compositing/squashing/squashing-sparsity-heuristic.html [ Failure ] Bug(none) compositing/squashing/squashing-sparsity-heuristic.html [ Failure ]
Bug(none) compositing/tiled-layers-hidpi.html [ Failure ] Bug(none) compositing/tiled-layers-hidpi.html [ Failure ]
Bug(none) compositing/transitions/scale-transition-no-start.html [ Failure ]
Bug(none) compositing/update-paint-phases.html [ Failure ] Bug(none) compositing/update-paint-phases.html [ Failure ]
Bug(none) compositing/video/video-controls-layer-creation.html [ Failure ] Bug(none) compositing/video/video-controls-layer-creation.html [ Failure ]
Bug(none) compositing/video/video-poster.html [ Crash Failure ] Bug(none) compositing/video/video-poster.html [ Crash Failure ]
...@@ -1206,31 +1207,6 @@ Bug(none) svg/carto.net/scrollbar.svg [ Failure ] ...@@ -1206,31 +1207,6 @@ Bug(none) svg/carto.net/scrollbar.svg [ Failure ]
Bug(none) svg/carto.net/selectionlist.svg [ Failure ] Bug(none) svg/carto.net/selectionlist.svg [ Failure ]
Bug(none) svg/carto.net/slider.svg [ Failure ] Bug(none) svg/carto.net/slider.svg [ Failure ]
Bug(none) svg/carto.net/textbox.svg [ Failure ] Bug(none) svg/carto.net/textbox.svg [ Failure ]
Bug(none) svg/clip-path/clip-in-clip.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-child-clipped.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-css-transform-1.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-css-transform-2.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-evenodd-nonzero.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-evenodd.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-nonzero-evenodd.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-nonzero.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-objectBoundingBox.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-on-clipped-use.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-on-g-and-child.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-on-g.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-on-lazy-root.html [ Failure ]
Bug(none) svg/clip-path/clip-path-on-svg-and-child.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-on-svg.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-pixelation.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-shape-ellipse-2.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-transform-1.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-transform-2.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-use-as-child.svg [ Failure ]
Bug(none) svg/clip-path/clip-path-userSpaceOnUse.svg [ Failure ]
Bug(none) svg/clip-path/clipper-placement-issue.svg [ Failure ]
Bug(none) svg/clip-path/deep-nested-clip-in-mask-panning.svg [ Failure ]
Bug(none) svg/clip-path/multiple-nested-clip-paths-crash.html [ Failure ]
Bug(none) svg/clip-path/nested-empty-clip.html [ Failure ]
Bug(none) svg/css/text-shadow-multiple.xhtml [ Failure ] Bug(none) svg/css/text-shadow-multiple.xhtml [ Failure ]
Bug(none) svg/custom/absolute-root-position-masking.xhtml [ Failure ] Bug(none) svg/custom/absolute-root-position-masking.xhtml [ Failure ]
Bug(none) svg/custom/alignment-baseline-modes.svg [ Failure ] Bug(none) svg/custom/alignment-baseline-modes.svg [ Failure ]
...@@ -2012,7 +1988,6 @@ crbug.com/637316 svg/W3C-SVG-1.1/text-text-07-t.svg [ Failure ] ...@@ -2012,7 +1988,6 @@ crbug.com/637316 svg/W3C-SVG-1.1/text-text-07-t.svg [ Failure ]
crbug.com/637316 svg/W3C-SVG-1.1/text-tselect-01-b.svg [ Failure ] crbug.com/637316 svg/W3C-SVG-1.1/text-tselect-01-b.svg [ Failure ]
crbug.com/637316 svg/W3C-SVG-1.1/text-tspan-01-b.svg [ Failure ] crbug.com/637316 svg/W3C-SVG-1.1/text-tspan-01-b.svg [ Failure ]
crbug.com/637316 svg/W3C-SVG-1.1/text-ws-01-t.svg [ Failure ] crbug.com/637316 svg/W3C-SVG-1.1/text-ws-01-t.svg [ Failure ]
crbug.com/637316 svg/clip-path/clip-path-shape-circle-2.svg [ Failure ]
crbug.com/637316 svg/css/path-gradient-stroke-shadow.svg [ Failure ] crbug.com/637316 svg/css/path-gradient-stroke-shadow.svg [ Failure ]
crbug.com/637316 svg/css/rect-gradient-stroke-shadow.svg [ Failure ] crbug.com/637316 svg/css/rect-gradient-stroke-shadow.svg [ Failure ]
crbug.com/637316 svg/css/text-gradient-shadow.svg [ Failure ] crbug.com/637316 svg/css/text-gradient-shadow.svg [ Failure ]
...@@ -2042,7 +2017,6 @@ crbug.com/637316 svg/custom/recursive-pattern.svg [ Failure ] ...@@ -2042,7 +2017,6 @@ crbug.com/637316 svg/custom/recursive-pattern.svg [ Failure ]
crbug.com/637316 svg/custom/rgba-color-outline.svg [ Failure ] crbug.com/637316 svg/custom/rgba-color-outline.svg [ Failure ]
crbug.com/637316 svg/custom/rounded-rects.svg [ Failure ] crbug.com/637316 svg/custom/rounded-rects.svg [ Failure ]
crbug.com/637316 svg/custom/stroke-fallback.svg [ Failure ] crbug.com/637316 svg/custom/stroke-fallback.svg [ Failure ]
crbug.com/637316 svg/custom/svg-root-with-opacity.html [ Failure ]
crbug.com/637316 svg/custom/text-image-opacity.svg [ Failure ] crbug.com/637316 svg/custom/text-image-opacity.svg [ Failure ]
crbug.com/637316 svg/custom/text-linking.svg [ Failure ] crbug.com/637316 svg/custom/text-linking.svg [ Failure ]
crbug.com/637316 svg/custom/text-rotation.svg [ Failure ] crbug.com/637316 svg/custom/text-rotation.svg [ Failure ]
...@@ -2060,10 +2034,6 @@ Bug(none) fast/block/basic/quirk-percent-height-table-cell.html [ Failure ] ...@@ -2060,10 +2034,6 @@ Bug(none) fast/block/basic/quirk-percent-height-table-cell.html [ Failure ]
Bug(none) fast/box-shadow/transform-fringing.html [ Failure ] Bug(none) fast/box-shadow/transform-fringing.html [ Failure ]
Bug(none) svg/animations/animateMotion_changingPath.html [ Failure ] Bug(none) svg/animations/animateMotion_changingPath.html [ Failure ]
Bug(none) svg/as-object/svg-embedded-in-html-in-iframe.html [ Failure ] Bug(none) svg/as-object/svg-embedded-in-html-in-iframe.html [ Failure ]
Bug(none) svg/clip-path/clip-in-mask.svg [ Failure ]
Bug(none) svg/clip-path/nested-clip-in-mask-image-based-clipping.svg [ Failure ]
Bug(none) svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping.svg [ Failure ]
Bug(none) svg/clip-path/nested-clip-in-mask-path-based-clipping.svg [ Failure ]
Bug(none) svg/custom/mouse-move-on-svg-root-standalone.svg [ Failure ] Bug(none) svg/custom/mouse-move-on-svg-root-standalone.svg [ Failure ]
Bug(none) svg/custom/mouse-move-on-svg-root.xhtml [ Failure ] Bug(none) svg/custom/mouse-move-on-svg-root.xhtml [ Failure ]
Bug(none) svg/custom/object-sizing-explicit-height.xhtml [ Failure ] Bug(none) svg/custom/object-sizing-explicit-height.xhtml [ Failure ]
...@@ -2161,11 +2131,9 @@ Bug(none) css3/blending/effect-background-blend-mode-stacking.html [ Failure ] ...@@ -2161,11 +2131,9 @@ Bug(none) css3/blending/effect-background-blend-mode-stacking.html [ Failure ]
Bug(none) css3/blending/mix-blend-mode-2nd-stacking-context-composited.html [ Failure ] Bug(none) css3/blending/mix-blend-mode-2nd-stacking-context-composited.html [ Failure ]
Bug(none) css3/blending/mix-blend-mode-composited-layers.html [ Failure ] Bug(none) css3/blending/mix-blend-mode-composited-layers.html [ Failure ]
Bug(none) css3/blending/mix-blend-mode-composited-reason-children.html [ Failure ] Bug(none) css3/blending/mix-blend-mode-composited-reason-children.html [ Failure ]
Bug(none) css3/blending/mix-blend-mode-has-ancestor-clipping-layer.html [ Failure ]
Bug(none) css3/blending/mix-blend-mode-isolation-2-stacking-contexts.html [ Failure ] Bug(none) css3/blending/mix-blend-mode-isolation-2-stacking-contexts.html [ Failure ]
Bug(none) css3/blending/mix-blend-mode-isolation-layer.html [ Failure ] Bug(none) css3/blending/mix-blend-mode-isolation-layer.html [ Failure ]
Bug(none) css3/blending/mix-blend-mode-isolation-remove.html [ Failure ] Bug(none) css3/blending/mix-blend-mode-isolation-remove.html [ Failure ]
Bug(none) css3/blending/mix-blend-mode-multiply.html [ Failure ]
Bug(none) css3/blending/mix-blend-mode-with-masking.html [ Failure ] Bug(none) css3/blending/mix-blend-mode-with-masking.html [ Failure ]
Bug(none) css3/blending/svg-blend-color-burn.html [ Failure ] Bug(none) css3/blending/svg-blend-color-burn.html [ Failure ]
Bug(none) css3/blending/svg-blend-color-dodge.html [ Failure ] Bug(none) css3/blending/svg-blend-color-dodge.html [ Failure ]
...@@ -2187,13 +2155,47 @@ Bug(none) css3/blending/svg-blend-screen.html [ Failure ] ...@@ -2187,13 +2155,47 @@ Bug(none) css3/blending/svg-blend-screen.html [ Failure ]
Bug(none) css3/blending/svg-blend-soft-light.html [ Failure ] Bug(none) css3/blending/svg-blend-soft-light.html [ Failure ]
Bug(none) css3/blending/svg-isolation-foreign-no-isolation.html [ Failure ] Bug(none) css3/blending/svg-isolation-foreign-no-isolation.html [ Failure ]
Bug(none) svg/custom/circular-clip-path-references-crash.svg [ Failure ]
Bug(none) svg/custom/marker-zero-length-linecaps.svg [ Failure ]
Bug(none) svg/custom/mask-changes.svg [ Failure ]
Bug(none) svg/custom/mask-excessive-malloc.svg [ Failure ]
Bug(none) svg/custom/mask-on-multiple-objects.svg [ Failure ]
Bug(none) svg/custom/non-opaque-filters.svg [ Failure ]
Bug(none) svg/custom/transformedMaskFails.svg [ Failure ]
Bug(none) svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html [ Failure ]
Bug(none) svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html [ Failure ]
Bug(none) svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html [ Failure ]
Bug(none) svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html [ Failure ]
Bug(none) svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html [ Failure ]
Bug(none) svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html [ Failure ]
Bug(none) svg/filters/feSpecularLight-premultiplied.svg [ Failure ]
Bug(none) svg/foreignObject/filter.html [ Failure ]
Bug(none) fast/forms/select-popup/popup-menu-position.html [ Failure ] Bug(none) fast/forms/select-popup/popup-menu-position.html [ Failure ]
crbug.com/674805 css3/blending/mix-blend-mode-with-squashing-layer.html [ Failure ] # Text failures due to layerization differences
Bug(none) compositing/will-change/will-change-contents-suppresses-compositing.html [ Failure ]
# Failures due to rounding differences # Failures due to rounding differences
crbug.com/589265 css3/blending/background-blend-mode-tiled-gradient.html [ Failure ]
crbug.com/589265 css3/blending/effect-background-blend-mode-tiled.html [ Failure ]
crbug.com/589265 css3/blending/effect-background-blend-mode.html [ Failure ]
crbug.com/589265 css3/blending/mix-blend-mode-isolated-group-1.html [ Failure ] crbug.com/589265 css3/blending/mix-blend-mode-isolated-group-1.html [ Failure ]
crbug.com/589265 css3/blending/mix-blend-mode-isolated-group-2.html [ Failure ]
crbug.com/589265 css3/blending/mix-blend-mode-isolated-group-3.html [ Failure ] crbug.com/589265 css3/blending/mix-blend-mode-isolated-group-3.html [ Failure ]
crbug.com/589265 css3/blending/svg-isolation-nested-svg-no-isolation.html [ Failure ]
crbug.com/589265 fast/css/ZeroOpacityLayers.html [ Failure ]
crbug.com/589265 fast/css/ZeroOpacityLayers2.html [ Failure ]
crbug.com/589265 fast/dynamic/anonymous-block-layer-lost.html [ Failure ]
crbug.com/589265 fast/forms/indeterminate.html [ Failure ]
crbug.com/589265 fast/layers/add-layer-with-nested-stacking.html [ Failure ]
crbug.com/589265 fast/layers/opacity-stacking.html [ Failure ]
crbug.com/589265 svg/custom/small-rect-scale.svg [ Failure ]
crbug.com/589265 svg/filters/filter-on-svg-root-w-layer.html [ Failure ]
# Interesting one. The expectation contains an artifact due to incorrect
# Skia peephole optimization.
crbug.com/675805 fast/text/complex-text-opacity.html [ Failure ]
# Failures due to frame scrollbars not painted # Failures due to frame scrollbars not painted
crbug.com/589279 css3/blending/background-blend-mode-data-uri-svg-image.html [ Failure ] crbug.com/589279 css3/blending/background-blend-mode-data-uri-svg-image.html [ Failure ]
......
...@@ -242,7 +242,7 @@ TEST_P(PaintControllerPaintTestForSlimmingPaintV2, ChunkIdClientCacheFlag) { ...@@ -242,7 +242,7 @@ TEST_P(PaintControllerPaintTestForSlimmingPaintV2, ChunkIdClientCacheFlag) {
EXPECT_TRUE(rootPaintController().clientCacheIsValid(subDiv)); EXPECT_TRUE(rootPaintController().clientCacheIsValid(subDiv));
} }
TEST_P(PaintControllerPaintTestForSlimmingPaintV2, CompositingFold) { TEST_P(PaintControllerPaintTestForSlimmingPaintV2, CompositingNoFold) {
setBodyInnerHTML( setBodyInnerHTML(
"<div id='div' style='width: 200px; height: 200px; opacity: 0.5'>" "<div id='div' style='width: 200px; height: 200px; opacity: 0.5'>"
" <div style='width: 100px; height: 100px; background-color: " " <div style='width: 100px; height: 100px; background-color: "
...@@ -256,28 +256,26 @@ TEST_P(PaintControllerPaintTestForSlimmingPaintV2, CompositingFold) { ...@@ -256,28 +256,26 @@ TEST_P(PaintControllerPaintTestForSlimmingPaintV2, CompositingFold) {
if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
EXPECT_DISPLAY_LIST( EXPECT_DISPLAY_LIST(
rootPaintController().getDisplayItemList(), 6, rootPaintController().getDisplayItemList(), 8,
TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence), TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence),
TestDisplayItem(layoutView(), documentBackgroundType), TestDisplayItem(layoutView(), documentBackgroundType),
TestDisplayItem(htmlLayer, DisplayItem::kSubsequence), TestDisplayItem(htmlLayer, DisplayItem::kSubsequence),
// The begin and end compositing display items have been folded into TestDisplayItem(div, DisplayItem::kBeginCompositing),
// this
// one.
TestDisplayItem(subDiv, backgroundType), TestDisplayItem(subDiv, backgroundType),
TestDisplayItem(div, DisplayItem::kEndCompositing),
TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence), TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence),
TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence)); TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence));
} else { } else {
EXPECT_DISPLAY_LIST( EXPECT_DISPLAY_LIST(
rootPaintController().getDisplayItemList(), 8, rootPaintController().getDisplayItemList(), 10,
TestDisplayItem(layoutView(), TestDisplayItem(layoutView(),
DisplayItem::kClipFrameToVisibleContentRect), DisplayItem::kClipFrameToVisibleContentRect),
TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence), TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence),
TestDisplayItem(layoutView(), documentBackgroundType), TestDisplayItem(layoutView(), documentBackgroundType),
TestDisplayItem(htmlLayer, DisplayItem::kSubsequence), TestDisplayItem(htmlLayer, DisplayItem::kSubsequence),
// The begin and end compositing display items have been folded into TestDisplayItem(div, DisplayItem::kBeginCompositing),
// this
// one.
TestDisplayItem(subDiv, backgroundType), TestDisplayItem(subDiv, backgroundType),
TestDisplayItem(div, DisplayItem::kEndCompositing),
TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence), TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence),
TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence), TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence),
TestDisplayItem(layoutView(), TestDisplayItem(layoutView(),
......
...@@ -52,8 +52,8 @@ void CompositingRecorder::endCompositing(GraphicsContext& graphicsContext, ...@@ -52,8 +52,8 @@ void CompositingRecorder::endCompositing(GraphicsContext& graphicsContext,
const DisplayItem* lastDisplayItem = paintController.lastDisplayItem(0); const DisplayItem* lastDisplayItem = paintController.lastDisplayItem(0);
const DisplayItem* secondToLastDisplayItem = const DisplayItem* secondToLastDisplayItem =
paintController.lastDisplayItem(1); paintController.lastDisplayItem(1);
if (lastDisplayItem && secondToLastDisplayItem && if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled() && lastDisplayItem &&
lastDisplayItem->drawsContent() && secondToLastDisplayItem && lastDisplayItem->drawsContent() &&
secondToLastDisplayItem->getType() == DisplayItem::kBeginCompositing) { secondToLastDisplayItem->getType() == DisplayItem::kBeginCompositing) {
FloatRect cullRect( FloatRect cullRect(
((DrawingDisplayItem*)lastDisplayItem)->picture()->cullRect()); ((DrawingDisplayItem*)lastDisplayItem)->picture()->cullRect());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment