New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 644926 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner: ----
Closed: Jan 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Bug



Sign in to add a comment

Disabling vsync should force high latency mode

Project Member Reported by sunn...@chromium.org, Sep 7 2016

Issue description

We want to use --disable-gpu-vsync (or a related flag) to disable vsync for renderer cc scheduler, browser display scheduler and swap buffers. But both those schedulers have heuristics that prevent either the renderer (waiting for the browser if it's animating in case of display scheduler) or main thread (latency recovery in case of cc scheduler) from animating as fast as possible. Therefore it's desirable to turn off those heuristics when disabling vsync.

This makes the implementation a little complicated - we can't just set an unthrottled BFS on the scheduler and expect things to work, the scheduler itself has to be aware that vsync is turned off. Therefore I'd suggest folding BackToBackBFS functionality into the scheduler and just have a single flag on the display/cc scheduler to turn off vsync (which means turning off the BFS from the perspective of the scheduler).

 
Project Member

Comment 1 by bugdroid1@chromium.org, Sep 15 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e292bdc26487a681a93fab35767adcbaba5d524e

commit e292bdc26487a681a93fab35767adcbaba5d524e
Author: enne <enne@chromium.org>
Date: Thu Sep 15 19:57:15 2016

Make disable vsync run the renderer independently

https://codereview.chromium.org/2083423006 removed the creation of begin
frame sources inside of cc proxies.  When vsync was disabled, the
browser would run unthrottled but the renderer would still tick based
on the browser.  This regressed some perf tests.  This patch reverts
that situation and reimplements unthrottled renderer begin frame sources
in a different way.

When the command line parameter is present, the renderer now runs
unthrottled by creating a separate unthrottled begin frame source inside
of RenderThreadImpl instead of an external one.

As some clean up, the property of being throttled is baked into the
BeginFrameSource interface itself.  This allows for the removal of the
throttling scheduler setting (and the already unused use external bfs
setting).  This should allow for future patches to allow toggling this
property.

The browser compositor and display compositor continue to be tied
together and tick at the same rate.  Therefore, with this patch,
--disable-gpu-vsync=gpu only applies to the display/browser.
--disable-gpu-vsync=beginframe only applies to the renderer.
--disable-gpu-vsync on its own will unthrottle both.

R=brianderson@chromium.org,sunnyps@chromium.org
BUG= 643722 , 644926 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

Review-Url: https://codereview.chromium.org/2323123002
Cr-Commit-Position: refs/heads/master@{#418937}

[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/scheduler/begin_frame_source.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/scheduler/begin_frame_source.h
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/scheduler/scheduler.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/scheduler/scheduler_settings.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/scheduler/scheduler_settings.h
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/scheduler/scheduler_unittest.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/surfaces/surface_manager_unittest.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/test/fake_external_begin_frame_source.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/test/fake_external_begin_frame_source.h
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/trees/layer_tree_host_perftest.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/trees/layer_tree_host_unittest.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/trees/layer_tree_settings.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/cc/trees/layer_tree_settings.h
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/content/browser/renderer_host/compositor_impl_android.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/content/renderer/gpu/compositor_external_begin_frame_source.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/content/renderer/gpu/compositor_external_begin_frame_source.h
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/content/renderer/gpu/render_widget_compositor.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/ui/compositor/compositor.cc
[modify] https://crrev.com/e292bdc26487a681a93fab35767adcbaba5d524e/ui/gl/gl_switches.cc

Comment 2 by enne@chromium.org, Jan 31 2017

Status: Fixed (was: Untriaged)

Sign in to add a comment