Issue metadata
Sign in to add a comment
|
SlimmingPaintInvalidation performance regression because of cost of GeometryMapper |
||||||||||||||||||||||
Issue descriptionThis is separated from bug 667370. Open https://www.scirra.com/labs/bugs/containlayoutperf-workaround/, capture a trace for the animation after clicking the first item in the page. with --disable-slimming-paint-invalidation: FrameView::invalidateTree: about 17ms with --enable-slimming-paint-invalidation: FrameView::prePaint: about 24ms
,
Feb 16 2017
I wonder if CSS containment causes a full-subtree walk for non-slimming-paint. If that's true, then the problem is a higher per-element cost.
,
Feb 16 2017
Yes, CSS containment also cause full-subtree walk for non-slimming-paint-invalidation.
,
Feb 18 2017
Proposal: don't recurse into LayoutText objects for paint invalidation. Instead: * If setMayNeedPaintInvalidation is set on a LayoutText, force-invalidate the containing object. * Adjust visual rects for LayoutText to delegate to their parents. This may improve performance. Prototype (not quite working correctly) CL: https://codereview.chromium.org/2697193011 Anecdotally in local traces, it seems to help significantly on https://www.scirra.com/labs/bugs/containlayoutperf/.
,
Feb 18 2017
,
Feb 18 2017
Please note that test case only uses text as a placeholder, our real production web app uses a complex layout with lots of non-text elements.
,
Feb 18 2017
Besides some micro optimizations (that optimizes per-element performance but still keeps the full subtree walk), we should consider global optimizations to avoid unnecessary full subtree walk in the following situations: - Clip change what won't affect descendants (e.g. for overflow clip when the clip rect is bigger than the layout overflow); - Paint offset change on a big subtree (perhaps we can automatically convert some paint offset change into a paintOffsetTranslation change?)
,
Feb 18 2017
,
Feb 27 2017
Another thought: We currently invalidate display item clients regardless of the reason for paint invalidation. This means that we invalidate them when their visual rect changed, even if their contents did not. Can we stop doing that in cases were we know it's safe? In particular, it seems it could be avoided when we know clips don't change culling. This would improve display item caching. crbug.com/694609 and https://codereview.chromium.org/2702883002/ brought this question to mind. In such cases, we could issue a raster invalidation, and invalidate subsequences, but not the display items themselves.
,
Feb 27 2017
We don't invalidate display item clients if the object changes visual rect just because of ancestor clip change and is not marked for paint invalidation for any other reasons. This is achieved by ForcedSubtreeInvalidationRectUpdate which won't cause either raster invalidations or object invalidations. The ancestor with clip property changed issues raster invalidation.
,
Feb 27 2017
I see. And for the non-clip-changed cases, can we avoid invalidating the display item clients also?
,
Feb 27 2017
I feel that most visual rect changes caused by non-clip changes will cause display item client change. Do you have cases that we should not invalidate display item clients?
,
Feb 28 2017
,
Mar 1 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ea6322df1cd9d8ce956935dd925fe64ddeda0566 commit ea6322df1cd9d8ce956935dd925fe64ddeda0566 Author: wangxianzhu <wangxianzhu@chromium.org> Date: Wed Mar 01 03:05:44 2017 Remove force-update when visual rects change. This code was added in https://codereview.chromium.org/1368163002, but subsequently https://codereview.chromium.org/2668823002 landed, which does the same thing and in a more targeted way. BUG= 490725 , 692614 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 patch from issue 2706553002 at patchset 1 (http://crrev.com/2706553002#ps1) Review-Url: https://codereview.chromium.org/2702883002 Cr-Commit-Position: refs/heads/master@{#453808} [modify] https://crrev.com/ea6322df1cd9d8ce956935dd925fe64ddeda0566/third_party/WebKit/LayoutTests/paint/invalidation/clip-unclip-and-change.html [modify] https://crrev.com/ea6322df1cd9d8ce956935dd925fe64ddeda0566/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp [modify] https://crrev.com/ea6322df1cd9d8ce956935dd925fe64ddeda0566/third_party/WebKit/Source/core/paint/PaintInvalidator.h [modify] https://crrev.com/ea6322df1cd9d8ce956935dd925fe64ddeda0566/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp [modify] https://crrev.com/ea6322df1cd9d8ce956935dd925fe64ddeda0566/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.h
,
Mar 1 2017
Oh, I had overlooked that paint offset is baked into DrawingDisplayItems...
,
Mar 2 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/fd7fc207884807c1b5365c191cf6d5cb55e33f4c commit fd7fc207884807c1b5365c191cf6d5cb55e33f4c Author: wangxianzhu <wangxianzhu@chromium.org> Date: Thu Mar 02 02:13:30 2017 Add several tough paint performance tests These tests are based on the test cases in the bug reports to demostrate slow compositing, paint invalidation and perhaps also painting. BUG= 646719 , 665223 , 692614 Review-Url: https://codereview.chromium.org/2723243002 Cr-Commit-Position: refs/heads/master@{#454152} [add] https://crrev.com/fd7fc207884807c1b5365c191cf6d5cb55e33f4c/third_party/WebKit/PerformanceTests/Paint/complex-content-slow-scroll.html [add] https://crrev.com/fd7fc207884807c1b5365c191cf6d5cb55e33f4c/third_party/WebKit/PerformanceTests/Paint/containment-resize.html [add] https://crrev.com/fd7fc207884807c1b5365c191cf6d5cb55e33f4c/third_party/WebKit/PerformanceTests/Paint/fixed-and-many-layers-scroll.html
,
Mar 7 2017
,
Mar 7 2017
I think https://codereview.chromium.org/2729243002/ is the root cause of this bug. Assigning to chrishtr@ for verification.
,
Mar 7 2017
We'll use other bugs ( bug 697081 , bug 685179) to track other reasons of performance issues.
,
Mar 7 2017
Are you saying GeometryMapper is also causing a regression in Paint Invalidation time? Or is paint a lot slower on these pages also?
,
Mar 7 2017
For now I see two causes of regression of spinvalidation: - The extra work for paint property update (tracked by other bugs) - GeometryMapper (I would like to track using this bug). These are the differences between spinvaliation and non-spinvalidation. Other aspects (e.g. LayoutText paint invalidation) of spinvalidation are just the same as non-spinvalidation, so they should not cause the regression. Optimization of them will benefit both spinvalidation and non-spinvalidation, and will also help reduce or fix the regression, given that the extra cost of paint property update is unavoidable.
,
Mar 7 2017
The attachments are profiling results with modified [1] version of PerformanceTests/Paint/containinment-resize.html (which is based on https://www.scirra.com/labs/bugs/containlayoutperf-workaround/). * containment.dot: ToT PrePaintTreeWalk::walk: 61.3% PrePaintTreeWalk::invalidatePaintLayerOptimizationsIfNeeded(): 7.87% Total GeometryMapper cost: 11% * containment-opt.dot: with https://codereview.chromium.org/2729243002/. PrePaintTreeWalk::walk: 63.21% PrePaintTreeWalk::invalidatePaintLayerOptimizationsIfNeeded(): 8.15% Total GeometryMapper cost: 11.69% [1] The modification is: diff --git a/third_party/WebKit/PerformanceTests/Paint/containment-resize.html b/third_party/WebKit/PerformanceTests/Paint/containment-resize.html index 387bd17d1011..227cc8479892 100644 --- a/third_party/WebKit/PerformanceTests/Paint/containment-resize.html +++ b/third_party/WebKit/PerformanceTests/Paint/containment-resize.html @@ -35,7 +35,11 @@ for (let i = 0; i < 20000; ++i) var target = container.firstElementChild.firstElementChild; PerfTestRunner.measureFrameTime({ run: function() { - target.style.height = (target.offsetHeight - 1) + 'px'; + var newHeight = target.offsetHeight - 1; + if (newHeight < 0) + newHeight = 60; + target.style.height = newHeight + 'px'; }, + iterationCount: 10000, }); </script>
,
Mar 7 2017
Awesome, thanks! That information is a big help.
,
Mar 7 2017
With https://codereview.chromium.org/2729243002/#ps240001 I moved the caching onto the clip and transform nodes directly. The new stats are: Total GeometryMapper cost (sourceToDestinationClipRect + sourceToDestinationVisualRect): * before CL 2729243002: 11.30% * after CL 2729243002 ps240001: 9.13% Also, after CL 2729243002: PrePaintTreeWalk::walk: 67.88% PrePaintTreeWalk::invalidatePaintLayerOptimizationsIfNeeded: 7.55% It seems that optimizing GeometryMapper skewed onto those other stats for the remaining cost. I ran it twice and got similar results the second time.
,
Mar 7 2017
,
Mar 8 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc commit ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc Author: chrishtr <chrishtr@chromium.org> Date: Wed Mar 08 22:52:03 2017 Improve performance of GeometryMapper cache. 1. Store clips and transforms in vectors attached to the clip and transform nodes. This avoids all hash map lookups. Invalidation uses a global cache generation id (currently we don't support anything other than global invalidation of the GeometryMapper caches). 2. Return clips and transforms by reference, to avoid copying. #1 is expected to be a good optimization because we almost always compute clips and transforms relative to the same ancestor, so the vectors are short and hash lookups are reduced. BUG= 692614 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2729243002 Cr-Commit-Position: refs/heads/master@{#455571} [modify] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/core/paint/PaintLayerClipperTest.cpp [modify] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/BUILD.gn [modify] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/graphics/paint/ClipPaintPropertyNode.h [modify] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.cpp [modify] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h [add] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperClipCache.cpp [add] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperClipCache.h [modify] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp [add] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTransformCache.cpp [add] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTransformCache.h [modify] https://crrev.com/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.h
,
Mar 9 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b0ef4258b2832480c9086fac69210b3338a38198 commit b0ef4258b2832480c9086fac69210b3338a38198 Author: machenbach <machenbach@chromium.org> Date: Thu Mar 09 09:13:51 2017 Revert of Improve performance of GeometryMapper cache. (patchset #39 id:690001 of https://codereview.chromium.org/2729243002/ ) Reason for revert: Breaks msan: https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Linux%20Trusty%20MSAN/builds/781 Original issue's description: > Improve performance of GeometryMapper cache. > > 1. Store clips and transforms in vectors attached to the clip and transform nodes. > This avoids all hash map lookups. Invalidation uses a global cache generation id > (currently we don't support anything other than global invalidation of the > GeometryMapper caches). > > 2. Return clips and transforms by reference, to avoid copying. > > #1 is expected to be a good optimization because we almost always compute clips > and transforms relative to the same ancestor, so the vectors are short and hash > lookups are reduced. > > BUG= 692614 > CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 > > Review-Url: https://codereview.chromium.org/2729243002 > Cr-Commit-Position: refs/heads/master@{#455571} > Committed: https://chromium.googlesource.com/chromium/src/+/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc TBR=pdr@chromium.org,wangxianzhu@chromium.org,chrishtr@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= 692614 Review-Url: https://codereview.chromium.org/2738113003 Cr-Commit-Position: refs/heads/master@{#455706} [modify] https://crrev.com/b0ef4258b2832480c9086fac69210b3338a38198/third_party/WebKit/Source/core/paint/PaintLayerClipperTest.cpp [modify] https://crrev.com/b0ef4258b2832480c9086fac69210b3338a38198/third_party/WebKit/Source/platform/BUILD.gn [modify] https://crrev.com/b0ef4258b2832480c9086fac69210b3338a38198/third_party/WebKit/Source/platform/graphics/paint/ClipPaintPropertyNode.h [modify] https://crrev.com/b0ef4258b2832480c9086fac69210b3338a38198/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.cpp [modify] https://crrev.com/b0ef4258b2832480c9086fac69210b3338a38198/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h [delete] https://crrev.com/72f3c9b47d08185135faeab172c1130f34f1ca66/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperClipCache.cpp [delete] https://crrev.com/72f3c9b47d08185135faeab172c1130f34f1ca66/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperClipCache.h [modify] https://crrev.com/b0ef4258b2832480c9086fac69210b3338a38198/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp [delete] https://crrev.com/72f3c9b47d08185135faeab172c1130f34f1ca66/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTransformCache.cpp [delete] https://crrev.com/72f3c9b47d08185135faeab172c1130f34f1ca66/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTransformCache.h [modify] https://crrev.com/b0ef4258b2832480c9086fac69210b3338a38198/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.h
,
Mar 9 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/890521e5189ff65fb2c16f67c837cc09bcf503c9 commit 890521e5189ff65fb2c16f67c837cc09bcf503c9 Author: chrishtr <chrishtr@chromium.org> Date: Thu Mar 09 20:22:24 2017 Reland: Improve performance of GeometryMapper cache. New version initializes m_cacheGeneration in GeometryMapperClipCache and GeometryMapperTransformCache constructors. Verified it fixes the msan layout test failures. 1. Store clips and transforms in vectors attached to the clip and transform nodes. This avoids all hash map lookups. Invalidation uses a global cache generation id (currently we don't support anything other than global invalidation of the GeometryMapper caches). 2. Return clips and transforms by reference, to avoid copying. and transforms relative to the same ancestor, so the vectors are short and hash lookups are reduced. BUG= 692614 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2729243002 Cr-Commit-Position: refs/heads/master@{#455571} Committed: https://chromium.googlesource.com/chromium/src/+/ee72c4b5d2fd1e4882bddca66e0f89fe8784a7fc patch from issue 2729243002 at patchset 690001 (http://crrev.com/2729243002#ps690001) Review-Url: https://codereview.chromium.org/2741803002 Cr-Commit-Position: refs/heads/master@{#455850} [modify] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/core/paint/PaintLayerClipperTest.cpp [modify] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/BUILD.gn [modify] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/graphics/paint/ClipPaintPropertyNode.h [modify] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.cpp [modify] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h [add] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperClipCache.cpp [add] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperClipCache.h [modify] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp [add] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTransformCache.cpp [add] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTransformCache.h [modify] https://crrev.com/890521e5189ff65fb2c16f67c837cc09bcf503c9/third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.h
,
Mar 10 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/05c00d2035047fa9d210d95afedf8bd063bccc33 commit 05c00d2035047fa9d210d95afedf8bd063bccc33 Author: chrishtr <chrishtr@chromium.org> Date: Fri Mar 10 06:50:31 2017 Reduce copying of local data structures in GeometryMapper and PaintLayerClipper. In particular, changes return values from FloatClipRect to const FloatClipRect&, to avoid extra data structure copies. In local testing, this CL produces up to a 10% improvement on the rasterize_and_record_micro.partial_invalidation benchmark. BUG= 692614 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2745563004 Cr-Commit-Position: refs/heads/master@{#456011} [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/paint/ClipRect.h [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/paint/PaintLayerClipper.h [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.h [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/platform/graphics/paint/FloatClipRect.h [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.cpp [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h [modify] https://crrev.com/05c00d2035047fa9d210d95afedf8bd063bccc33/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp
,
Mar 10 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a2c9dcac6e64411adf0b6f047125d5ba415cce54 commit a2c9dcac6e64411adf0b6f047125d5ba415cce54 Author: kinuko <kinuko@chromium.org> Date: Fri Mar 10 09:46:29 2017 Revert of Reduce copying of local data structures in GeometryMapper and PaintLayerClipper. (patchset #10 id:170001 of https://codereview.chromium.org/2745563004/ ) Reason for revert: Speculative revert, it doesn't look related but am trying changes in the blame range. Will update if the revert has changed things / will revert the revert otherwise. https://build.chromium.org/p/chromium.win/builders/Win10%20Tests%20x64/builds/9030 Test: SitePerProcessHighDPIExpiredCertBrowserTest.InterstitialLoadsWithCorrectDeviceScaleFactor Original issue's description: > Reduce copying of local data structures in GeometryMapper and PaintLayerClipper. > > In particular, changes return values from FloatClipRect to const FloatClipRect&, > to avoid extra data structure copies. > > In local testing, this CL produces up to a 10% improvement on the > rasterize_and_record_micro.partial_invalidation benchmark. > > BUG= 692614 > CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 > > Review-Url: https://codereview.chromium.org/2745563004 > Cr-Commit-Position: refs/heads/master@{#456011} > Committed: https://chromium.googlesource.com/chromium/src/+/05c00d2035047fa9d210d95afedf8bd063bccc33 TBR=pdr@chromium.org,wangxianzhu@chromium.org,chrishtr@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= 692614 Review-Url: https://codereview.chromium.org/2743733004 Cr-Commit-Position: refs/heads/master@{#456032} [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/paint/ClipRect.h [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/paint/PaintLayerClipper.h [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.h [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/platform/graphics/paint/FloatClipRect.h [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.cpp [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h [modify] https://crrev.com/a2c9dcac6e64411adf0b6f047125d5ba415cce54/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp
,
Mar 10 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/22a37f49e50636144bbae9d5c391d9efbf9c90a6 commit 22a37f49e50636144bbae9d5c391d9efbf9c90a6 Author: kinuko <kinuko@chromium.org> Date: Fri Mar 10 10:34:41 2017 Reland of duce copying of local data structures in GeometryMapper and PaintLayerClipper. (patchset #1 id:1 of https://codereview.chromium.org/2743733004/ ) Reason for revert: Was likely a false alarm. Original issue's description: > Revert of Reduce copying of local data structures in GeometryMapper and PaintLayerClipper. (patchset #10 id:170001 of https://codereview.chromium.org/2745563004/ ) > > Reason for revert: > Speculative revert, it doesn't look related but am trying changes in the blame range. > > Will update if the revert has changed things / will revert the revert otherwise. > > https://build.chromium.org/p/chromium.win/builders/Win10%20Tests%20x64/builds/9030 > > Test: SitePerProcessHighDPIExpiredCertBrowserTest.InterstitialLoadsWithCorrectDeviceScaleFactor > > Original issue's description: > > Reduce copying of local data structures in GeometryMapper and PaintLayerClipper. > > > > In particular, changes return values from FloatClipRect to const FloatClipRect&, > > to avoid extra data structure copies. > > > > In local testing, this CL produces up to a 10% improvement on the > > rasterize_and_record_micro.partial_invalidation benchmark. > > > > BUG= 692614 > > CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 > > > > Review-Url: https://codereview.chromium.org/2745563004 > > Cr-Commit-Position: refs/heads/master@{#456011} > > Committed: https://chromium.googlesource.com/chromium/src/+/05c00d2035047fa9d210d95afedf8bd063bccc33 > > TBR=pdr@chromium.org,wangxianzhu@chromium.org,chrishtr@chromium.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG= 692614 > > Review-Url: https://codereview.chromium.org/2743733004 > Cr-Commit-Position: refs/heads/master@{#456032} > Committed: https://chromium.googlesource.com/chromium/src/+/a2c9dcac6e64411adf0b6f047125d5ba415cce54 TBR=pdr@chromium.org,wangxianzhu@chromium.org,chrishtr@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= 692614 Review-Url: https://codereview.chromium.org/2741103005 Cr-Commit-Position: refs/heads/master@{#456036} [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/paint/ClipRect.h [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/paint/PaintLayerClipper.h [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.h [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/platform/graphics/paint/FloatClipRect.h [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.cpp [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h [modify] https://crrev.com/22a37f49e50636144bbae9d5c391d9efbf9c90a6/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp
,
Mar 10 2017
Pls apply appropriate OS labels. Thank you.
,
Mar 10 2017
,
Mar 14 2017
Requesting merge of https://chromium.googlesource.com/chromium/src/+/d6782e3f3ea554066b359c025cb6dc41fc3c3d3f to fix this bug as well as others that block M58.
,
Mar 14 2017
This bug requires manual review: Reverts referenced in bugdroid comments after merge request. Please contact the milestone owner if you have questions. Owners: amineer@(Android), cmasso@(iOS), bhthompson@(ChromeOS), govind@(Desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Mar 14 2017
Before we approved merge to M58, could you please confirm change listed at #36 is well baked/verified in Canary, having enough automation coverage and safe to merge to M58?
,
Mar 15 2017
Friendly ping - can you please look at questions in #39 - we'll need to merge before 5PM tomorrow (Wednesday), since we're promoting Beta on Thursday.
,
Mar 15 2017
Yes it is well enough tested. The CL has a full complement of paint invalidation tests that must pass for it to commit.
,
Mar 15 2017
Ping - Let me know if I can merge now in advance of the deadline, thanks. This CL will re-enable the code that was present in M57 BTW.
,
Mar 15 2017
Thanks - Please go ahead and merge. Branch: 3029
,
Mar 15 2017
,
Mar 15 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/bf8d0b1e3ef35de8a57953fa30f0a4c509f393c9 commit bf8d0b1e3ef35de8a57953fa30f0a4c509f393c9 Author: Chris Harrelson <chrishtr@chromium.org> Date: Wed Mar 15 18:15:32 2017 SPInvalidation -> experimental We decided to delay launch until M59. CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2752673002 Cr-Commit-Position: refs/heads/master@{#456857} (cherry picked from commit d6782e3f3ea554066b359c025cb6dc41fc3c3d3f) BUG= 692614 Review-Url: https://codereview.chromium.org/2752883002 . Cr-Commit-Position: refs/branch-heads/3029@{#206} Cr-Branched-From: 939b32ee5ba05c396eef3fd992822fcca9a2e262-refs/heads/master@{#454471} [modify] https://crrev.com/bf8d0b1e3ef35de8a57953fa30f0a4c509f393c9/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5
,
Mar 15 2017
Retargeting as releaseblock-stable for M59 instead of M58.
,
Mar 25 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8bdfbdcc61b8235fc912bd7981bdc60f227a739c commit 8bdfbdcc61b8235fc912bd7981bdc60f227a739c Author: wangxianzhu <wangxianzhu@chromium.org> Date: Sat Mar 25 04:41:15 2017 Disable SPInvalidation by default We decided to delay launch until M59. CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 TBR=chrishtr@chromium.org BUG= 692614 NOTRY=true NOPRESUBMIT=true Review-Url: https://codereview.chromium.org/2772833003 Cr-Original-Commit-Position: refs/heads/master@{#459201} Review-Url: https://codereview.chromium.org/2777673002 Cr-Commit-Position: refs/branch-heads/3029@{#417} Cr-Branched-From: 939b32ee5ba05c396eef3fd992822fcca9a2e262-refs/heads/master@{#454471} [modify] https://crrev.com/8bdfbdcc61b8235fc912bd7981bdc60f227a739c/content/child/runtime_features.cc [modify] https://crrev.com/8bdfbdcc61b8235fc912bd7981bdc60f227a739c/content/public/common/content_features.cc
,
Mar 30 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20 commit 65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20 Author: chrishtr <chrishtr@chromium.org> Date: Thu Mar 30 17:18:35 2017 Optimize the pre-paint tree walk and ClipRects. 1. Avoid malloc for ClipRects objects. This trades reduced malloc for a somewhat larger PaintLayer. 2. Get rid of now-unnecessary logic to check clipping ancestors (GeomteryMapper now checks for transforms on infininte rects instead). 3. ALWAYS_INLINE on some helper methods of PrePaintTreeWalk. Local runs showed pre-paint time improvements in about:tracing for Paint/containment-resize.html of up to 5%. I am also running a CT analysis with and without SPInvalidation on to see effect on paint times. Early data suggests no strong change either way. (though note that this CL is mainly aimed at reducing time in pre-paint). BUG= 692614 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2784963002 Cr-Commit-Position: refs/heads/master@{#460808} [delete] https://crrev.com/b5acc4c7976d45ace977c14019593c9413d0841d/third_party/WebKit/Source/core/layout/ClipRects.h [modify] https://crrev.com/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20/third_party/WebKit/Source/core/paint/ClipRects.h [modify] https://crrev.com/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20/third_party/WebKit/Source/core/paint/ClipRectsCache.h [modify] https://crrev.com/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20/third_party/WebKit/Source/core/paint/PaintLayer.h [modify] https://crrev.com/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp [modify] https://crrev.com/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp [modify] https://crrev.com/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp [modify] https://crrev.com/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.h
,
Mar 30 2017
I'm not sure what else is actionable about GeometryMapper right now. Will watch the bots, but close this bug in the meantime. Please comment/reopen if there is something I am missing.
,
Apr 2 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e51c85fe536c1a2810a6a08904c08935b7020e5f commit e51c85fe536c1a2810a6a08904c08935b7020e5f Author: chrishtr <chrishtr@chromium.org> Date: Sun Apr 02 18:30:16 2017 Revert of Optimize the pre-paint tree walk and ClipRects (patchset #3 id:40001 of https://codereview.chromium.org/2784963002/ ) Reason for revert: On further investigation, found that this patch introduces too much inefficiency by making all PaintLayers pay the cost of a ClipRects object, rather than just ones that induce subsequences. Original issue's description: > Optimize the pre-paint tree walk and ClipRects. > > 1. Avoid malloc for ClipRects objects. This trades reduced malloc for > a somewhat larger PaintLayer. > 2. Get rid of now-unnecessary logic to check clipping ancestors (GeomteryMapper > now checks for transforms on infininte rects instead). > 3. ALWAYS_INLINE on some helper methods of PrePaintTreeWalk. > > Local runs showed pre-paint time improvements in about:tracing for > Paint/containment-resize.html of up to 5%. > > I am also running a CT analysis with and without SPInvalidation on to see effect > on paint times. Early data suggests no strong change either way. (though note that > this CL is mainly aimed at reducing time in pre-paint). > > BUG= 692614 > CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 > > Review-Url: https://codereview.chromium.org/2784963002 > Cr-Commit-Position: refs/heads/master@{#460808} > Committed: https://chromium.googlesource.com/chromium/src/+/65b5d60ab86950a42ade9f0aee9e5e67d8c3ff20 TBR=pdr@chromium.org,wangxianzhu@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG= 692614 Review-Url: https://codereview.chromium.org/2792833002 Cr-Commit-Position: refs/heads/master@{#461345} [add] https://crrev.com/e51c85fe536c1a2810a6a08904c08935b7020e5f/third_party/WebKit/Source/core/layout/ClipRects.h [modify] https://crrev.com/e51c85fe536c1a2810a6a08904c08935b7020e5f/third_party/WebKit/Source/core/paint/ClipRects.h [modify] https://crrev.com/e51c85fe536c1a2810a6a08904c08935b7020e5f/third_party/WebKit/Source/core/paint/ClipRectsCache.h [modify] https://crrev.com/e51c85fe536c1a2810a6a08904c08935b7020e5f/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/e51c85fe536c1a2810a6a08904c08935b7020e5f/third_party/WebKit/Source/core/paint/PaintLayer.h [modify] https://crrev.com/e51c85fe536c1a2810a6a08904c08935b7020e5f/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp [modify] https://crrev.com/e51c85fe536c1a2810a6a08904c08935b7020e5f/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp [modify] https://crrev.com/e51c85fe536c1a2810a6a08904c08935b7020e5f/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp [modify] https://crrev.com/e51c85fe536c1a2810a6a08904c08935b7020e5f/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.h
,
Apr 3 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ca2623e17b5c45400485a2ceb08545baa9f09c4f commit ca2623e17b5c45400485a2ceb08545baa9f09c4f Author: chrishtr <chrishtr@chromium.org> Date: Mon Apr 03 18:25:35 2017 Optimize ClipRects in the PrePaintTreeWalk. 1. Get rid of now-unnecessary logic to check clipping ancestors (GeomteryMapper now checks for transforms on infininte rects instead). 2. ALWAYS_INLINE on some helper methods of PrePaintTreeWalk. This is https://codereview.chromium.org/2784963002 without the change to remove RefPtrs for ClipRects. BUG= 692614 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2791883002 Cr-Commit-Position: refs/heads/master@{#461478} [modify] https://crrev.com/ca2623e17b5c45400485a2ceb08545baa9f09c4f/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp [modify] https://crrev.com/ca2623e17b5c45400485a2ceb08545baa9f09c4f/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp [modify] https://crrev.com/ca2623e17b5c45400485a2ceb08545baa9f09c4f/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.h
,
Apr 7 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/256619b40e56be177620efb04b57086b2f6bcbed commit 256619b40e56be177620efb04b57086b2f6bcbed Author: chrishtr <chrishtr@chromium.org> Date: Fri Apr 07 01:29:21 2017 Remove begin/end subseq. display items, and store on PaintController instead. Subsequence display items cause complications for the SPv2 compositing algorithm because they confuse the PaintChunker. Also, they are the last remaining paired display item in SPv2 that blocks simplifying the display list format. BUG= 692614 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2793233002 Cr-Commit-Position: refs/heads/master@{#462735} [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/core/paint/PaintPropertyTreeUpdateTests.cpp [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/core/paint/TablePainterTest.cpp [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/BUILD.gn [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/graphics/compositing/PaintChunksToCcLayer.cpp [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.cpp [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/graphics/paint/DisplayItemListTest.cpp [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/graphics/paint/PaintChunkTest.cpp [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/graphics/paint/PaintController.h [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp [delete] https://crrev.com/5cba6a6eeb7463afbc2445f05914f26a66874454/third_party/WebKit/Source/platform/graphics/paint/SubsequenceDisplayItem.h [modify] https://crrev.com/256619b40e56be177620efb04b57086b2f6bcbed/third_party/WebKit/Source/platform/graphics/paint/SubsequenceRecorder.cpp
,
Apr 14 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d1cf31c84ed81fce3a5033e601afafd402fee87f commit d1cf31c84ed81fce3a5033e601afafd402fee87f Author: chrishtr <chrishtr@chromium.org> Date: Fri Apr 14 03:54:48 2017 Only store previous clip rects for PaintLayers that support subsequences. To do this: 2. When updating paint properties, only invalidate painting optimizations like subsequence for PaintLayers that support it (stacking context, SVG root), or have clip-related properties BUG= 692614 , 711413 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2810503002 Cr-Commit-Position: refs/heads/master@{#464670} [modify] https://crrev.com/d1cf31c84ed81fce3a5033e601afafd402fee87f/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/d1cf31c84ed81fce3a5033e601afafd402fee87f/third_party/WebKit/Source/core/paint/PaintLayer.h [modify] https://crrev.com/d1cf31c84ed81fce3a5033e601afafd402fee87f/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp [modify] https://crrev.com/d1cf31c84ed81fce3a5033e601afafd402fee87f/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp [modify] https://crrev.com/d1cf31c84ed81fce3a5033e601afafd402fee87f/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp [modify] https://crrev.com/d1cf31c84ed81fce3a5033e601afafd402fee87f/third_party/WebKit/Source/core/paint/PrePaintTreeWalkTest.cpp
,
Apr 19 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a3ba22889b3f2565f6e430eca4a827e0e52e0301 commit a3ba22889b3f2565f6e430eca4a827e0e52e0301 Author: Chris Harrelson <chrishtr@chromium.org> Date: Wed Apr 19 18:15:44 2017 Only store previous clip rects for PaintLayers that support subsequences. To do this: 2. When updating paint properties, only invalidate painting optimizations like subsequence for PaintLayers that support it (stacking context, SVG root), or have clip-related properties BUG= 692614 , 711413 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2810503002 Cr-Commit-Position: refs/heads/master@{#464670} (cherry picked from commit d1cf31c84ed81fce3a5033e601afafd402fee87f) Review-Url: https://codereview.chromium.org/2832603002 . Cr-Commit-Position: refs/branch-heads/3071@{#57} Cr-Branched-From: a106f0abbf69dad349d4aaf4bcc4f5d376dd2377-refs/heads/master@{#464641} [modify] https://crrev.com/a3ba22889b3f2565f6e430eca4a827e0e52e0301/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/a3ba22889b3f2565f6e430eca4a827e0e52e0301/third_party/WebKit/Source/core/paint/PaintLayer.h [modify] https://crrev.com/a3ba22889b3f2565f6e430eca4a827e0e52e0301/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp [modify] https://crrev.com/a3ba22889b3f2565f6e430eca4a827e0e52e0301/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp [modify] https://crrev.com/a3ba22889b3f2565f6e430eca4a827e0e52e0301/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp [modify] https://crrev.com/a3ba22889b3f2565f6e430eca4a827e0e52e0301/third_party/WebKit/Source/core/paint/PrePaintTreeWalkTest.cpp
,
Apr 20 2017
Tested this issue on Ubuntu 14.04 using chrome latest Dev #59.0.3071.15. By opening the the link https://www.scirra.com/labs/bugs/containlayoutperf-workaround/ observed there was no lag in animation by clicking first item in the list. Tested the same on chrome latest stable #57.0.2987.133 and observed some jittery in the animation. chrishtr@ Attaching screen cast and tracing report of latest Dev #59.0.3071.15 for reference, Could you please take a look in to it and kindly let us know is this is the expected behavior of this issue, so that it will be verified from Chrome-TE end. Thanks!
,
Apr 20 2017
There is no user-visible change expected from the changes from this issue. If you see a user-visible issue, please file a new bug.
,
May 23 2017
I still see some performance problems from slimming-paint-invalidation in 59.0.3071.25 on http://www.youtube.com/tv on slower devices (~1.3GHz dual core mips, GLES+disabled-gpu-rasterization). This feature cause a drop in fps from ~45 to ~30 but with --disable-slimming-paint-invalidation I still get ~45 fps. We have a simple test that measure the fps when navigation between video thumbnails horizontally and it use requestAnimationFrame to count frames + duration between keydown and transitionend on the 'browse-highlighter' element. We don't see any loss of performance in more powerful devices (quad core) running the same test.
,
May 23 2017
johan_e@opera.com, thanks for the report. Could you file a new bug for the issue for easier tracking? |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by wangxianzhu@chromium.org
, Feb 15 2017