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

Issue metadata

Status: WontFix
Owner:
Last visit > 30 days ago
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 3
Type: Bug-Regression
Proj-XR

Blocked on:
issue 736023



Sign in to add a comment
link

Issue 714850: Site https://playcanv.as/p/sAsiDvtC/ shows black screen in presentation mode

Reported by dbbrooks@chromium.org, Apr 24 2017 Project Member

Issue description

Chrome Version: 59.0.3071.24
OS: Android

What steps will reproduce the problem?
(1) with either daydream or cardboard
(2) go to https://playcanv.as/p/sAsiDvtC/
(3) hit enter VR button (VR icon)

What is the expected result? presentation mode begins showing app content

What happens instead? presentation mode begins but content is just black screen.

Possibly related to  crbug.com/714837 
 

Comment 1 by dbbrooks@chromium.org, Apr 24 2017

VR Core Production version: 1.4.151195927

Comment 2 by meganlindsay@chromium.org, May 1 2017

Owner: dbbrooks@chromium.org
Is this a regression between 58 and 59?

Comment 3 by dbbrooks@chromium.org, May 1 2017

Labels: -Type-Bug Type-Bug-Regression
It looks like it is, yes. I just checked and it does work with 58.0.3029.83 and it does not work with the above mentioned version and the latest 59.0.3071.33.

Comment 4 by amp@chromium.org, May 2 2017

Likely related to api changes (but the latest 59 version noted there should have the origin trial disabled).  Are you running with the webvr flag enabled?  If so I think you'll get a different result if you turn it off with versions > 59.0.3071.29

Are we marking sites that haven't upgraded for the deprecated API's as an external dependency?

Comment 5 by ddorwin@chromium.org, May 2 2017

Owner: meganlindsay@chromium.org
Status: ExternalDependency (was: Untriaged)

Comment 6 by dbbrooks@chromium.org, May 8 2017

Yes running with the webvr flag enabled. Still repros with 59.0.3071.39

Comment 7 by d...@playcanvas.com, Jun 6 2017

When I test this I get a black screen initially. After pressing the VR button content presented correctly in stereo. After exiting presenting content is rendered correctly.

On inspection it looks like previously VRFrameData was provided all the time, but a recent change means that it is now all 0 or null until requestPresent is called?

The reason for the black screen is an invalid camera matrix because the FrameData is not valid. After requestPresent it returns to normal.

Has this behaviour changed?

Comment 8 by ddorwin@chromium.org, Jun 8 2017

Cc: klausw@chromium.org bajones@chromium.org

Comment 9 by d...@playcanvas.com, Jun 20 2017

Any thoughts, Klaus, Brandon?

Comment 10 by klausw@chromium.org, Jun 22 2017

Status: WontFix (was: ExternalDependency)
On current Chrome Canary, I also get a blank screen with just the Cardboard icon on initial load. Inspector console shows lots of errors, consistent with the pose not being filled in:

playcanvas-stable.min.js:686 Uncaught TypeError: Failed to execute 'setPosition' on 'AudioListener': The provided float value is non-finite.
    at e.setPosition (playcanvas-stable.min.js:686)
    at c.onUpdate (playcanvas-stable.min.js:960)
    at Function.fire (playcanvas-stable.min.js:23)
    at Function.update (playcanvas-stable.min.js:824)
    at e.update (playcanvas-stable.min.js:806)
    at playcanvas-stable.min.js:821

It looks like it's using this conditional:

a.vr.display.presenting?a.vr.display.requestAnimationFrame(a.tick):window.requestAnimationFrame(a.tick)

Please use vrDisplay.rAF always, even when not presenting. If I manually call vrDisplay.rAF with my own callback, I get screen content displayed as a side effect, but it doesn't track. The pose data only gets refreshed one time per vrDisplay.rAF call, and as soon as I add a manual vrDisplay.rAF loop separately the magic window starts refreshing.

Comment 11 by klausw@chromium.org, Jun 22 2017

Suggested followup bug: calling getFrameData from outside a vrDisplay.rAF context should either work, or produce a warning that it's the wrong context. Silently returning null poses isn't very helpful.

Comment 12 by mthiesse@chromium.org, Jun 22 2017

However, I'll note that null poses are entirely valid, and should be handled appropriately. Right now async pose reading could cause null poses to be received by the page initially, and so should be handled without causing exceptions.

Comment 13 by klausw@chromium.org, Jun 22 2017

mthiesse@, yes the app should be able to handle null poses, but currently getFrameData still returns "true" when that happens. 

The spec says "Returns true if the the provided VRFrameData object was successfully updated, false otherwise". It's not clear which case should apply for a partial update, but IMHO the pose is the most important part for most applications.

Comment 14 by klausw@chromium.org, Jun 22 2017

Blockedon: 736023
Filed  issue 736023  "WebVR: inconsistent getFrameData while not presenting" and a corresponding spec bug https://github.com/w3c/webvr/issues/246 for followup.

Comment 15 by d...@playcanvas.com, Jun 28 2017

I've updated WebVR lab to call display.requestAnimationFrame all the time, not just when presenting.

This fixes this issue in Chrome Beta.

Comment 16 by btebbs@chromium.org, Jul 4 2018

Components: Blink>WebXR

Sign in to add a comment