[root layer scrolls] check for performance regressions |
|||||||||||||||||||||||||
Issue description
,
Dec 19 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/942302a65c802dd5e9365e9d530a8a379065be5b commit 942302a65c802dd5e9365e9d530a8a379065be5b Author: Stefan Zager <szager@chromium.org> Date: Tue Dec 19 06:49:55 2017 Skip redundant visible size computation for root scroller. Bug: 770343 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: Ib6b21d41f1d313b8d41c077fd2372ca9f1a81ce4 Reviewed-on: https://chromium-review.googlesource.com/831489 Commit-Queue: Stefan Zager <szager@chromium.org> Reviewed-by: Steve Kobes <skobes@chromium.org> Cr-Commit-Position: refs/heads/master@{#524957} [modify] https://crrev.com/942302a65c802dd5e9365e9d530a8a379065be5b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
,
Jan 9 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/511f53a7a500a947880b2781dbbeb4b78ece571f commit 511f53a7a500a947880b2781dbbeb4b78ece571f Author: Stefan Zager <szager@chromium.org> Date: Tue Jan 09 20:45:38 2018 Don't include root layer scroll offset in PaintLayer positions. This is a performance optimization for root layer scrolling, to avoid a full layer tree walk to update layer positions on every frame scroll. BUG= 770343 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: I49ac93b3ccdc9abe042e1521cfcd0190c87ad78b Reviewed-on: https://chromium-review.googlesource.com/854628 Reviewed-by: Steve Kobes <skobes@chromium.org> Commit-Queue: Stefan Zager <szager@chromium.org> Cr-Commit-Position: refs/heads/master@{#528095} [modify] https://crrev.com/511f53a7a500a947880b2781dbbeb4b78ece571f/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/511f53a7a500a947880b2781dbbeb4b78ece571f/third_party/WebKit/Source/core/paint/PaintLayer.h
,
Jan 30 2018
,
Feb 13 2018
,
Feb 13 2018
I observed that one remaining performance difference between RLS and not-RLS is that a compositing update of type kCompositingUpdateAfterGeometryChange happens upon scroll. This is a lot of extra work if there are a number of layers. Earlier work got rid of the need to update the clip rects cache and layer positions; now we need to make the composited layer positions scroll-independent. This shouldn't be too hard, because it's always the case that the LayoutView's scroll and the offsets of sub-layers compensate for each other, except in the case of fixed-position layers, which are handled with extra code already.
,
Feb 13 2018
I observed that scrolling of the root layer still causes a compositing update of type kCompositingUpdateAfterGeometryChange. This is bad because it is work proportional to the # of composited layers. This work can be avoided by not including scroll offset of the root layer and its children in the calculations. These offsets cancel each out anyway, so are unnecessary.
,
Feb 13 2018
I looked into the compositing update issue for a bit on https://bugs.chromium.org/p/chromium/issues/detail?id=504057#c5 and decided it didn't look too bad, but if traces point to it as a hot path then we should definitely reopen.
,
Feb 16 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/32419f4422bf130d9c52331a0c7dafba9337cc99 commit 32419f4422bf130d9c52331a0c7dafba9337cc99 Author: Chris Harrelson <chrishtr@chromium.org> Date: Fri Feb 16 02:50:27 2018 [RLS] Skip compositing input step if a scroll can be applied directly. This re-introduces the fast path implemented in PLC::FrameViewDidScroll. Test coverage: all layout tests which use main-thread scrolling of a composited layer (e.g. using window.scrollBy or gestures on scrollbars). Bug: 770343 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: I93a43072d19871611fa8845758410b094d67a8f7 Reviewed-on: https://chromium-review.googlesource.com/923089 Reviewed-by: Steve Kobes <skobes@chromium.org> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#537143} [modify] https://crrev.com/32419f4422bf130d9c52331a0c7dafba9337cc99/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
,
Feb 20 2018
,
Feb 21 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e0c819ef2ef21b3580dbf5458cc3f966c2dbc9e1 commit e0c819ef2ef21b3580dbf5458cc3f966c2dbc9e1 Author: Stephen Chenney <schenney@chromium.org> Date: Wed Feb 21 17:45:02 2018 Revert "[RLS] Skip compositing input step if a scroll can be applied directly." This reverts commit 32419f4422bf130d9c52331a0c7dafba9337cc99. Reason for revert: Huge perf regression on mobile, and impact on checkerboarding metrics. https://bugs.chromium.org/p/chromium/issues/detail?id=813884 https://bugs.chromium.org/p/chromium/issues/detail?id=813875 Original change's description: > [RLS] Skip compositing input step if a scroll can be applied directly. > > This re-introduces the fast path implemented in PLC::FrameViewDidScroll. > > Test coverage: all layout tests which use main-thread scrolling of a > composited layer (e.g. using window.scrollBy or gestures on scrollbars). > > Bug: 770343 > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 > Change-Id: I93a43072d19871611fa8845758410b094d67a8f7 > Reviewed-on: https://chromium-review.googlesource.com/923089 > Reviewed-by: Steve Kobes <skobes@chromium.org> > Commit-Queue: Chris Harrelson <chrishtr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#537143} TBR=szager@chromium.org,chrishtr@chromium.org,skobes@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 770343 Change-Id: I9ea536a54cdc6868a451723e7c889086ad213cca Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Reviewed-on: https://chromium-review.googlesource.com/928861 Reviewed-by: Stephen Chenney <schenney@chromium.org> Commit-Queue: Stephen Chenney <schenney@chromium.org> Cr-Commit-Position: refs/heads/master@{#538148} [modify] https://crrev.com/e0c819ef2ef21b3580dbf5458cc3f966c2dbc9e1/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
,
Feb 21 2018
,
Feb 21 2018
,
Feb 21 2018
,
Feb 21 2018
,
Feb 21 2018
,
Feb 21 2018
,
Feb 23 2018
,
Feb 23 2018
,
Feb 25 2018
📍 Pinpoint job started. https://pinpoint-dot-chromeperf.appspot.com/job/14996190440000
,
Feb 27 2018
😿 Pinpoint job stopped with an error. https://pinpoint-dot-chromeperf.appspot.com/job/14996190440000
,
Feb 28 2018
,
Feb 28 2018
,
Mar 3 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9732521599b291a0703830c0d9d94c381916b7d8 commit 9732521599b291a0703830c0d9d94c381916b7d8 Author: Chris Harrelson <chrishtr@chromium.org> Date: Sat Mar 03 07:01:38 2018 [RLS] Re-land: skip compositing steps on frame scroll. This is mostly a re-land of https://chromium-review.googlesource.com/c/chromium/src/+/923089, now that a squashing bug was fixed in https://chromium.googlesource.com/chromium/src/+/8e4234fdc272ddda5ec9c156a2397c64d7a69f60. It differs from a straight-reland in that it also does not mark the PaintLayer with SetNeedsGraphicsLayerUpdate. Bug: 770343 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: If4a29f30b42ff45eb6a456bced4ab2e837f81d3e Reviewed-on: https://chromium-review.googlesource.com/947579 Reviewed-by: Steve Kobes <skobes@chromium.org> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#540746} [modify] https://crrev.com/9732521599b291a0703830c0d9d94c381916b7d8/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
,
Mar 6 2018
,
Mar 6 2018
,
Mar 6 2018
,
Mar 7 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a9ecdb682cb7f480abab944bc322894e828a3eaf commit a9ecdb682cb7f480abab944bc322894e828a3eaf Author: Stefan Zager <szager@chromium.org> Date: Wed Mar 07 02:12:12 2018 [RootLayerScrolling] Delay call to FrameRectsChanged on overflow scroll. In the non-RLS code path, when the FrameView's scroll offset changes, pending_scroll_delta_ is modified, and some of the work is delayed until the next lifecycle update. Calling FrameRectsChanged() on every overflow scroll has a significant performance impact, so this patch replicates the non-RLS behavior of FrameView by postponing the call to FrameRectsChanged. BUG= 770343 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: I10cf0782852dcf1c8021a7a62ce0078aae297e39 Reviewed-on: https://chromium-review.googlesource.com/951641 Commit-Queue: Stefan Zager <szager@chromium.org> Reviewed-by: Steve Kobes <skobes@chromium.org> Cr-Commit-Position: refs/heads/master@{#541288} [modify] https://crrev.com/a9ecdb682cb7f480abab944bc322894e828a3eaf/third_party/WebKit/Source/core/frame/LocalFrameView.cpp [modify] https://crrev.com/a9ecdb682cb7f480abab944bc322894e828a3eaf/third_party/WebKit/Source/core/frame/LocalFrameView.h [modify] https://crrev.com/a9ecdb682cb7f480abab944bc322894e828a3eaf/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
,
Mar 13 2018
,
Mar 14 2018
,
Mar 19 2018
,
Mar 19 2018
,
Mar 20 2018
,
Mar 28 2018
,
Mar 28 2018
,
Apr 13 2018
Hello! RootLayerScrolling increases frame times of scroll on https://mail.yandex.ru by ~60% GPU-rasterization is off. Do you have any ideas?
,
Apr 13 2018
re comment #39: please file a separate bug, blocking this one, and include steps to reproduce.
,
Apr 16 2018
I filed a bug: https://bugs.chromium.org/p/chromium/issues/detail?id=833316
,
Apr 16 2018
,
Aug 10
|
|||||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||||
Comment 1 by bugdroid1@chromium.org
, Dec 19 2017