.
Plan: https://docs.google.com/document/d/1ZsL3pnRpAkkIPM1mPqaOn6coV1qfHsLdhmMFz3QkHkI/edit#heading=h.voso6de2pv1p Early prototype: https://codereview.chromium.org/2565073002
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/de314bfb82cdafe6eb2295b66a8d108e080170f0 commit de314bfb82cdafe6eb2295b66a8d108e080170f0 Author: chrishtr <chrishtr@chromium.org> Date: Wed Dec 14 05:05:03 2016 Refactor PaintChunkProperties to use PropertyTreeState BUG= 668342 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2573883002 Cr-Commit-Position: refs/heads/master@{#438437} [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/core/paint/BlockPainter.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/core/paint/BoxClipper.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/core/paint/FramePainter.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/core/paint/SVGPaintContext.h [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/graphics/paint/PaintChunkProperties.h [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/graphics/paint/PaintChunker.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/graphics/paint/PaintChunkerTest.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.h [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/testing/PaintPrinters.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/testing/PaintPropertyTestHelpers.h [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/platform/testing/TestPaintArtifact.cpp [modify] https://crrev.com/de314bfb82cdafe6eb2295b66a8d108e080170f0/third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/78f6bee5b544282274f8b962a7cca4bf98f2c621 commit 78f6bee5b544282274f8b962a7cca4bf98f2c621 Author: chrishtr <chrishtr@chromium.org> Date: Thu Dec 15 07:02:22 2016 Set a direct compositing reason for 3D transform paint property tree nodes. As part of this, starts allocating a transform node to represent direct compositing of will-change:transform elements and their stacking children. BUG= 668342 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2571043002 Cr-Commit-Position: refs/heads/master@{#438771} [modify] https://crrev.com/78f6bee5b544282274f8b962a7cca4bf98f2c621/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [modify] https://crrev.com/78f6bee5b544282274f8b962a7cca4bf98f2c621/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.cpp [modify] https://crrev.com/78f6bee5b544282274f8b962a7cca4bf98f2c621/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.h [modify] https://crrev.com/78f6bee5b544282274f8b962a7cca4bf98f2c621/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp [modify] https://crrev.com/78f6bee5b544282274f8b962a7cca4bf98f2c621/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp [delete] https://crrev.com/0ffae0a7cd06b6c571b1c7f1c7843948419039f0/third_party/WebKit/Source/core/paint/test_data/transform.html [modify] https://crrev.com/78f6bee5b544282274f8b962a7cca4bf98f2c621/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2 commit 5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2 Author: chrishtr <chrishtr@chromium.org> Date: Fri Dec 16 18:19:58 2016 Add optional debugging output of what paint chunks go into what layers. BUG= 668342 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2577123002 Cr-Commit-Position: refs/heads/master@{#439151} [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/core/frame/FrameView.cpp [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/core/frame/FrameView.h [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/core/testing/Internals.cpp [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/core/testing/Internals.h [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/core/testing/Internals.idl [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.h [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp [modify] https://crrev.com/5aa24fc6891c693c3c7f8ceee14e7cb1a0c24ef2/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7239114dd9ee5270ff6ac3e066113b34814f777d commit 7239114dd9ee5270ff6ac3e066113b34814f777d Author: chrishtr <chrishtr@chromium.org> Date: Tue Dec 27 19:19:57 2016 Implement merging non-composited paint property nodes in the PACompositor. Currently, the PaintArtifactCompositor naively puts every PaintChunk into its own composited layer. This patch improves on that by merging a PaintChunk into the same layer as the PaintChunk which precedes it, if the new PaintChunk has a compatible PropertyTreeState (no directly composited property tree nodes between the state of the new PaintChunk and the old one). This algorithm is spelled out in a design doc, see crbug.com/668342 . A large amount of this patch is additional tests and testing machinery to support the change in behavior. BUG= 668342 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2581843002 Cr-Commit-Position: refs/heads/master@{#440775} [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/LayoutTests/TestExpectations [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/core/paint/PaintLayerClipper.h [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/core/paint/README.md [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/BUILD.gn [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.h [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp [add] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/graphics/compositing/README.md [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/graphics/paint/ClipPaintPropertyNode.h [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h [add] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.h [add] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeStateTest.cpp [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/testing/PictureMatchers.cpp [modify] https://crrev.com/7239114dd9ee5270ff6ac3e066113b34814f777d/third_party/WebKit/Source/platform/testing/PictureMatchers.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/59ec2c1b938fc633a64079b176283b800d96f689 commit 59ec2c1b938fc633a64079b176283b800d96f689 Author: Rebaseline Bot <blink-rebaseline-bot@chromium.org> Date: Tue Dec 27 20:47:10 2016 Auto-rebaseline for r440775 https://chromium.googlesource.com/chromium/src/+/7239114dd9ee5 BUG= 668342 TBR=chrishtr@chromium.org Review-Url: https://codereview.chromium.org/2605723002 . Cr-Commit-Position: refs/heads/master@{#440784} [modify] https://crrev.com/59ec2c1b938fc633a64079b176283b800d96f689/third_party/WebKit/LayoutTests/TestExpectations [modify] https://crrev.com/59ec2c1b938fc633a64079b176283b800d96f689/third_party/WebKit/LayoutTests/platform/linux/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.png [modify] https://crrev.com/59ec2c1b938fc633a64079b176283b800d96f689/third_party/WebKit/LayoutTests/virtual/spv2/svg/custom/object-sizing-explicit-height-expected.png
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8624b809c7f75c609e509f17cc4ee20fc3fceb90 commit 8624b809c7f75c609e509f17cc4ee20fc3fceb90 Author: chrishtr <chrishtr@chromium.org> Date: Thu Dec 29 00:10:30 2016 Move computation of 3D descendants to the descendant-dependent flags walk. BUG= 668342 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2604973002 Cr-Commit-Position: refs/heads/master@{#440909} [modify] https://crrev.com/8624b809c7f75c609e509f17cc4ee20fc3fceb90/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [modify] https://crrev.com/8624b809c7f75c609e509f17cc4ee20fc3fceb90/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp [modify] https://crrev.com/8624b809c7f75c609e509f17cc4ee20fc3fceb90/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/8624b809c7f75c609e509f17cc4ee20fc3fceb90/third_party/WebKit/Source/core/paint/PaintLayer.h [modify] https://crrev.com/8624b809c7f75c609e509f17cc4ee20fc3fceb90/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp [modify] https://crrev.com/8624b809c7f75c609e509f17cc4ee20fc3fceb90/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp [modify] https://crrev.com/8624b809c7f75c609e509f17cc4ee20fc3fceb90/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b1e93efba353876e43c8b2007cdba51c033785cd commit b1e93efba353876e43c8b2007cdba51c033785cd Author: chrishtr <chrishtr@chromium.org> Date: Thu Dec 29 21:07:29 2016 Remove infinite clip in PaintArtifactCompositor. BUG= 668342 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2604083002 Cr-Commit-Position: refs/heads/master@{#440985} [modify] https://crrev.com/b1e93efba353876e43c8b2007cdba51c033785cd/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp [modify] https://crrev.com/b1e93efba353876e43c8b2007cdba51c033785cd/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h [modify] https://crrev.com/b1e93efba353876e43c8b2007cdba51c033785cd/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/409105d99bad5d8f18a0abbbe22caf1db9eeb8ba commit 409105d99bad5d8f18a0abbbe22caf1db9eeb8ba Author: chrishtr <chrishtr@chromium.org> Date: Thu Dec 29 21:48:24 2016 Implement PaintArtifactCompositor::mightOverlap. BUG= 668342 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2604163003 Cr-Commit-Position: refs/heads/master@{#440988} [modify] https://crrev.com/409105d99bad5d8f18a0abbbe22caf1db9eeb8ba/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp [modify] https://crrev.com/409105d99bad5d8f18a0abbbe22caf1db9eeb8ba/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.h [modify] https://crrev.com/409105d99bad5d8f18a0abbbe22caf1db9eeb8ba/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f87bb0ed27a65785ebd3bedf611ff66622b9c83a commit f87bb0ed27a65785ebd3bedf611ff66622b9c83a Author: chrishtr <chrishtr@chromium.org> Date: Fri Dec 30 00:02:16 2016 Add unittests for the bugs found in previous CL. See comment 64: https://codereview.chromium.org/2581843002#msg64 BUG= 668342 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2604093002 Cr-Commit-Position: refs/heads/master@{#441008} [modify] https://crrev.com/f87bb0ed27a65785ebd3bedf611ff66622b9c83a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.h [modify] https://crrev.com/f87bb0ed27a65785ebd3bedf611ff66622b9c83a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp [modify] https://crrev.com/f87bb0ed27a65785ebd3bedf611ff66622b9c83a/third_party/WebKit/Source/platform/testing/PictureMatchers.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2520a969f4211271744329953d28b380818801b4 commit 2520a969f4211271744329953d28b380818801b4 Author: chrishtr <chrishtr@chromium.org> Date: Wed Jan 04 02:45:08 2017 These are now passing after https://codereview.chromium.org/2570423003 committed. BUG= 668342 Review-Url: https://codereview.chromium.org/2611873002 Cr-Commit-Position: refs/heads/master@{#441302} [modify] https://crrev.com/2520a969f4211271744329953d28b380818801b4/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
Comment 1 by chrishtr@chromium.org
, Dec 13 2016