WebVR dropped frames and excessive latency due to broken scheduling heuristic |
|||||
Issue descriptionChrome Version: M65+ OS: Android What steps will reproduce the problem? (1) Open https://webvr.info/samples/03-vr-presentation.html (2) Enter VR (3) Check framerate counter What is the expected result? Smooth 60fps What happens instead? 56-60fps, with frequent dropped frames For a slow WebVR app, another symptom is that the "JS wait time" event trace counter shows wait times above 16ms. The heuristic is supposed to reduce that.
,
Apr 1 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/41f4ef7c623c7ae636f8666a844a12d42068ad2f commit 41f4ef7c623c7ae636f8666a844a12d42068ad2f Author: Klaus Weidner <klausw@chromium.org> Date: Sun Apr 01 11:27:19 2018 Fix WebVR VSync scheduling heuristic The heuristic wasn't working right due to using the wrong frame as timing reference, resulting in overthrottling for fast applications and excessive latency for slow applications. When estimating the render time for a frame that was already complete at the time of check, it uses the time-until-copied as a lower bound, but accidentally used the copy time of the currently processing frame as opposed to the copy time of the previous rendering frame, resulting in overestimating the render time. Also, the heuristic to decide when to skip VSync also should have used the currently rendering frame (two frames back when sending a new animating frame), but was erroneously using the currently processing frame (one frame back). Fix this, and adjust the heuristic to more accurately reflect the intended scheduling. Bug: 827811 Change-Id: Ic4884ccaee6f2f6d3051ce2790132582dba6702a Reviewed-on: https://chromium-review.googlesource.com/989431 Commit-Queue: Ian Vollick <vollick@chromium.org> Reviewed-by: Ian Vollick <vollick@chromium.org> Cr-Commit-Position: refs/heads/master@{#547398} [modify] https://crrev.com/41f4ef7c623c7ae636f8666a844a12d42068ad2f/chrome/browser/android/vr/vr_shell_gl.cc
,
Apr 2 2018
,
Apr 3 2018
The CL from comment #2 seems to be effective according to the automated performance tests, the pose prediction time estimate looks improved: https://chromeperf.appspot.com/report?sid=da922c1ae79febbe864da71ddef7c89cb93a6ccf5845d14bb59ceb8800161a3a&start_rev=542416&end_rev=547479
,
Apr 11 2018
,
Jul 4
|
|||||
►
Sign in to add a comment |
|||||
Comment 1 by klausw@chromium.org
, Mar 31 2018