non-virtualized WebGL contexts cause screen tearing / out of sync WebVR frames |
||||||
Issue descriptionChrome Version: 57.0.2978.0 + patches OS: Android What steps will reproduce the problem? (1) Run custom patched build: 02323a21ecbf43a0a55146eb2dd4dbc96b55f41a + https://codereview.chromium.org/2586803003 on a Pixel phone (2) Open https://webvr.info/samples/03-vr-presentation.html (3) Enter WebVR using a Daydream headset What is the expected result? (Reasonably) smooth frames What happens instead? Very unpleasant view due to frames arriving out of order or with visible tearing. This issue was discovered as part of a patch series which attempted to accelerate WebVR rendering by enabling directly rendering WebGL content to an Android Surface to bypass extra texture copies. As part of this, it needed WebGL contexts to use their own GL surface, patch https://codereview.chromium.org/2586803003 implemented this. This required disabling virtualized contexts since those require all contexts to use the same surface. Currently Qualcomm GPUs enable virtualized contexts as a workaround for out-of-order frames: https://codereview.chromium.org/2586803003/#msg44 "cr_bugs": [289461], "description": "Non-virtual contexts on Qualcomm sometimes cause out-of-order frames", "os": { "type": "android" }, "gl_vendor": "Qualcomm.*", "features": [ "use_virtualized_gl_contexts" ] I'll add some extra debugging to confirm. Looks like issue 289461 was a somewhat speculative fix from 2013, and it's unclear if the actual cause was a driver bug and that it's still applicable. For example, in the similar mailbox manager sync issue 554268, the underlying issue seemed to be misuse of fence objects. See issue 510243 for context.
,
Feb 8 2017
,
Feb 9 2017
,
Feb 11 2017
,
Jul 4
,
Aug 7
Removing Blink>WebVR component and assigning to Blink>WebXR
,
Aug 7
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 by klausw@chromium.org
, Feb 8 2017