Search Unity

Left eye "flicker" only on Google Pixel 2

Discussion in 'Daydream' started by Claytonious, Jan 18, 2018.

  1. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    I'm receiving reports from Pixel 2 users that they're seeing "flickering" only in the left eye. 5 star ratings from Pixel 1 users, so this seems to be specifically the Pixel 2 that's affected. So far, according to the Google Play dashboard, they've all been running Android 8.1 on Pixel 2. Does anyone know of any known issues, problems, or workarounds for this specific issue on the Google Pixel 2 running 8.1?

    We do not have any postprocessing enabled on Daydream, HDR is disabled, everything looks and works perfectly on Pixel 1, etc. Built from Unity 2017.3p1 with gvr-sdk 1.100.1.

    I'm trying to find a volunteer to try a build with gvr-sdk 1.120.0 and Unity 2017.3p2 because I don't yet know what else to try, but if anybody knows anything about this issue then it would be much appreciated to hear about it.

    Thanks!
     
  2. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    One of the users was kind enough to send a video of the problem. What's actually happening is that, for 1 frame or so every few seconds, the left eye is rendering from a different position, as if only the left eye camera is moving about 0.25 units to the right, then snapping back to its proper place.
     
  3. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    Here is what the "glitch" looks like when it happens, which is once every few seconds on a Pixel 2:



    Notice that there is a "ghost" overlaid in the left eye - that "ghost" actually lines up with what is *supposed* to be rendered in the left eye, and which *is* rendered in the left eye during most frames. But every few seconds, this glitch happens and the left eye renders like this.

    EDIT: It's possible that the ghosting effect pictured there is just some artifact of this being a manual quicktime recording of a Pixel 2 playing the game outside of the headset - I've no way to know. But the left eye rendering offset horizontally (or maybe rotated to the right slightly?) is definitely the crux of the problem either way, and it doesn't happen on a Pixel 1.
     
    Last edited: Jan 18, 2018
  4. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    Here's what it looks like on the Pixel 2 phone:

     
  5. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    Are any of the official angels who know stuff in this part of town able to comment on this? @thep3000 , @joejo , @dsternfeld ?

    I've submitted a bug report with the entire project attached for easy repro/debugging. Case number 989538.
     
  6. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    Actually maybe this is more interesting for @robs_unity or @scottb because building with Multi-Pass stereo rendering instead of single pass appears to have fixed the problem. But of course performance tanks now. So single pass appears to be spanked on Pixel 2 with this issue. Testing some more now to confirm... will also try a Hello World project to confirm...
     
  7. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    Now that I finally have my hands on a Pixel 2...

    You can even see this same glitch during the splash screen itself, before the first scene is even loaded. Nothing interesting in logcat.
     
    Last edited: Jan 19, 2018
  8. jmitcheson

    jmitcheson

    Joined:
    Oct 21, 2016
    Posts:
    96
    Concerning... Adreno 540 vs Adreno 530. The architecture, surely, could not have changed much between these two chips given how they named them. So how can it be that bug manifests in one, but not the other? Is it more likely that it is not the chip but the driver code difference?
     
  9. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    We will never know. I shipped an update that just went back to multipass rendering, even though it makes the experience worse. This is only weeks after Google quietly turned off multiview for pixel 1 users in the first place, then quietly turned it back on, without developers ever being told.

    Those poor users never had a chance.
     
    Last edited: Jan 20, 2018
  10. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    This is a serious problem that's causing us to keep our live build on multipass rendering, making it run poorly on pixel 1 phones. There has been no response on the bug report which even includes the project. Can anybody take a look?
     
  11. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    So far I've tried builds with these changes:

    * Turned off GPU Skinning - same result either way
    * Turned on 32 bit display depth - same result either way
    * Built with Mono instead of IL2CPP - same result either way
    * Changed positional headtracking in daydream settings - same result either way
    * Zeroed out all preloaded shaders and set all instancing stripping to "Keep All" - same result either way
    * Turned on VSync in quality settings - same

    Since even the splash screen itself is affected, I doubt it has much to do with the content of my scenes or scripts?

    Is anyone *successfully* using single pass rendering on a Pixel 2 phone running Android 8.1 with a build from Unity 2017.3?
     
    Last edited: Feb 1, 2018
  12. Claytonious

    Claytonious

    Joined:
    Feb 16, 2009
    Posts:
    903
    Well this sheds some light. So the info box in Unity's inspector is not quite true at the moment. It says "Multi pass will be used on Android devices that don't support Single Pass". It should instead say "Do not use single pass rendering in production apps yet, because falling back to multi pass does not actually work for end users yet."