We should be able to plumb a signal from the browser to indicate whether a particular frame has input event or not. If it does and there is a visual update in this frame, we record it as main thread animation.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9 commit 1e7a1132a6023c7ecd7d0130958b739bcde5b9e9 Author: Xida Chen <xidachen@chromium.org> Date: Mon May 28 02:04:17 2018 Recording input driven frame rate This CL measures the frame rate in the case when there is input event and that there is rendering frame associated with that input event. We use the existence of swap monitors to indicate whether there is a rendering frame scheduled due to an input event that is either handled by the main / impl thread. We plumb the signal all the way to the CompositorTimingHistory::DidDraw to record the UMA based on that info. Bug: 813183 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel;luci.chromium.try:android_optional_gpu_tests_rel Change-Id: I21e51e00cbcb816a7666cdce5b6878835cb6fb68 Reviewed-on: https://chromium-review.googlesource.com/972616 Reviewed-by: Stephen McGruer <smcgruer@chromium.org> Reviewed-by: Brian Anderson <brianderson@chromium.org> Reviewed-by: Timothy Dresser <tdresser@chromium.org> Reviewed-by: weiliangc <weiliangc@chromium.org> Reviewed-by: Majid Valipour <majidvp@chromium.org> Commit-Queue: Xida Chen <xidachen@chromium.org> Cr-Commit-Position: refs/heads/master@{#562160} [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/animation/animation_host.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/animation/animation_host.h [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/scheduler/compositor_timing_history.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/scheduler/compositor_timing_history.h [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/scheduler/compositor_timing_history_unittest.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/scheduler/scheduler.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/scheduler/scheduler.h [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/scheduler/scheduler_unittest.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/trees/layer_tree_host.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/trees/layer_tree_host_impl.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/trees/mutator_host.h [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/trees/proxy_impl.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/trees/proxy_impl.h [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/trees/single_thread_proxy.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/trees/single_thread_proxy.h [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/trees/swap_promise_manager.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/cc/trees/swap_promise_manager.h [add] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/content/browser/renderer_host/input/input_driven_histogram_browsertest.cc [modify] https://crrev.com/1e7a1132a6023c7ecd7d0130958b739bcde5b9e9/content/test/BUILD.gn
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5a281a4cf36ee67d8acfc7b1213fccff362967da commit 5a281a4cf36ee67d8acfc7b1213fccff362967da Author: Trent Apted <tapted@chromium.org> Date: Mon May 28 06:45:03 2018 Revert "Recording input driven frame rate" This reverts commit 1e7a1132a6023c7ecd7d0130958b739bcde5b9e9. Reason for revert: All/InputDrivenHistogramBrowserTest.ScrollPageWithTouch fails on linux-chromeos-dbg https://ci.chromium.org/buildbot/chromium.chromiumos/linux-chromeos-dbg/5885 ../../content/browser/renderer_host/input/input_driven_histogram_browsertest.cc:232: Failure Expected: (total_main_samples_count) > (0), actual: Original change's description: > Recording input driven frame rate > > This CL measures the frame rate in the case when there is input > event and that there is rendering frame associated with that > input event. > > We use the existence of swap monitors to indicate whether > there is a rendering frame scheduled due to an input event > that is either handled by the main / impl > thread. We plumb the signal all the way to the > CompositorTimingHistory::DidDraw to record the UMA based on > that info. > > Bug: 813183 > Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel;luci.chromium.try:android_optional_gpu_tests_rel > Change-Id: I21e51e00cbcb816a7666cdce5b6878835cb6fb68 > Reviewed-on: https://chromium-review.googlesource.com/972616 > Reviewed-by: Stephen McGruer <smcgruer@chromium.org> > Reviewed-by: Brian Anderson <brianderson@chromium.org> > Reviewed-by: Timothy Dresser <tdresser@chromium.org> > Reviewed-by: weiliangc <weiliangc@chromium.org> > Reviewed-by: Majid Valipour <majidvp@chromium.org> > Commit-Queue: Xida Chen <xidachen@chromium.org> > Cr-Commit-Position: refs/heads/master@{#562160} TBR=brianderson@chromium.org,weiliangc@chromium.org,tdresser@chromium.org,majidvp@chromium.org,xidachen@chromium.org,smcgruer@chromium.org Change-Id: I7edc26dc2ac742486d9ee4c18d3716fdd3cb34e3 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 813183 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel;luci.chromium.try:android_optional_gpu_tests_rel Reviewed-on: https://chromium-review.googlesource.com/1074868 Reviewed-by: Trent Apted <tapted@chromium.org> Commit-Queue: Trent Apted <tapted@chromium.org> Cr-Commit-Position: refs/heads/master@{#562194} [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/animation/animation_host.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/animation/animation_host.h [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/scheduler/compositor_timing_history.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/scheduler/compositor_timing_history.h [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/scheduler/compositor_timing_history_unittest.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/scheduler/scheduler.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/scheduler/scheduler.h [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/scheduler/scheduler_unittest.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/trees/layer_tree_host.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/trees/layer_tree_host_impl.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/trees/mutator_host.h [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/trees/proxy_impl.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/trees/proxy_impl.h [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/trees/single_thread_proxy.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/trees/single_thread_proxy.h [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/trees/swap_promise_manager.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/cc/trees/swap_promise_manager.h [delete] https://crrev.com/b2e751988fe4b20f39d91d171847d8a97d127c22/content/browser/renderer_host/input/input_driven_histogram_browsertest.cc [modify] https://crrev.com/5a281a4cf36ee67d8acfc7b1213fccff362967da/content/test/BUILD.gn
Comment 1 by bugdroid1@chromium.org
, May 28 2018