[SPv2] Some effects are decomposited in SPv2 but composited in SPv1 |
|||||
Issue descriptionThis is a meta bug for tracking differences between SPv1 and SPv2. It doesn't affect the correctness of the rendering, but may introduce rounding differences in layout tests. This is due to SPv1 compositing decision are element-based, i.e. if an element has any compositing reason, all properties on the element will be composited. In SPv2 , compositing decision are property-based, therefore different properties on the same element can make different compositing decision. The minimal example to demonstrate such differences: <div style="transform:translateZ(0); opacity:0.5;">Foo</div> In SPv1, both the transform and opacity will be applied by the compositor. The text "Foo" rasters on the backing in local coordinate with no opacity applied. In SPv2, only the transform is applied by the compositor because 3D transform is explicit compositing hint, but opacity will be decomposited. i.e. The text "Foo" rasters on the backing in local coordinate, but with opacity applied. Not sure whether we should fix this because there can be performance advantage with the SPv2 approach, e.g. transform animation + expensive filter so the filter doesn't need to be re-rastered every frame. However it is also possible that there are legacy websites using transform compositing trigger but animating effects by scripts. Hard to say without real-world data.
,
Sep 14 2017
,
Sep 16 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef commit 45aba4086fd1d1c0e55d8d756786364d7d0aa0ef Author: Tien-Ren Chen <trchen@chromium.org> Date: Sat Sep 16 01:14:11 2017 [Blink] Make output clip nullptr for effects with no intrinsic clip Previously we set the output clip to the parent effect's input clip (a convservative maximum input region that can affect an effect's output) for effects that have no intrinsic output clip. This caused a problem because with SPv175 we often create compositing layers that have deeper clip than the parent effect's input clip, while is still a common ancestor of all contained chunks. This also improves compositing decision made by SPv2 because it allows more effects to be decomposited. For a very simple example: <div style="opacity:0.5">Foo</div> <div style="height:1000px;">Make frame scrollable.</div> This effect couldn't be decomposited previously, due to its output clip would be the input clip of the root effect, i.e., the root clip, but the text "Foo" must have the frame clip applied. However the frame clip couldn't be decomposited because it is in a different transform space from the text. With this CL, the removal of output clip also removed the implied input clip, therefore the frame clip doesn't need to be decomposited for the effect to decomposite. BUG= 763587 , 765003 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: I22ba44a3bfb1ec668ec93d5b07f06949094b4faf Reviewed-on: https://chromium-review.googlesource.com/660785 Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Commit-Queue: Tien-Ren Chen <trchen@chromium.org> Cr-Commit-Position: refs/heads/master@{#502461} [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [delete] https://crrev.com/3de644f2054e1c1c13df94dc9ab9c1534dcd871c/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/column-float-under-stacked-inline-expected.png [delete] https://crrev.com/3de644f2054e1c1c13df94dc9ab9c1534dcd871c/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/become-overlay-composited-layer-expected.png [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/float-overflow-expected.txt [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/float-overflow-right-expected.txt [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/remove-inline-layer-after-layout-expected.txt [delete] https://crrev.com/3de644f2054e1c1c13df94dc9ab9c1534dcd871c/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/svg/W3C-SVG-1.1/animate-elem-22-b-expected.png [delete] https://crrev.com/3de644f2054e1c1c13df94dc9ab9c1534dcd871c/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/svg/custom/marker-opacity-expected.png [delete] https://crrev.com/3de644f2054e1c1c13df94dc9ab9c1534dcd871c/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/svg/custom/text-image-opacity-expected.png [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/Source/platform/graphics/compositing/PaintChunksToCcLayer.cpp [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/Source/platform/graphics/compositing/PaintChunksToCcLayerTest.cpp [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/Source/platform/graphics/compositing/PropertyTreeManager.cpp [modify] https://crrev.com/45aba4086fd1d1c0e55d8d756786364d7d0aa0ef/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.cpp
,
Sep 17
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue. Sorry for the inconvenience if the bug really should have been left as Available. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Sep 18
,
Nov 26
All failure expectations have been removed from FlagExpectations/enable-slimming-paint-v2. |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by schenney@chromium.org
, Sep 14 2017Status: Available (was: Untriaged)