Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Bug with latest Galaxy S8 update : no VR mode anymore

Discussion in 'AR/VR (XR) Discussion' started by Pode, Aug 20, 2017.

  1. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    We have some Galaxy S8 here at work for test builds.

    One of them was updated last week with the latest update available. If I remember well that's the update gibing Daydream compatibility to all S8/S8+.

    Since that update, I can't run any application made for Cardboard on a S8.

    The symptoms :
    - when I install & run an apk on the updated phone, the app starts and goes immediately on background.
    When I click on the button to switch between the opened apps, I see it's in the background.
    - when I click on the app to bring it back in the foreground, it switch instantly back to the background.
    - I have a light green "floating button" on the app that invite me to have the app take the whole scren (I suppose it's related to the fact that the system buttons on the S8 can disappears completely from the screen).

    I have built the apk with an Unity 2017.1.b, for Android 5.0+. I tried two version of the Google SDK, 1.30 and 1.70, with the same results.

    Does anybody got the same problems ?

    Edit : fixed "can't" typo...
     
    Last edited: Aug 21, 2017
  2. greggtwep16

    greggtwep16

    Joined:
    Aug 17, 2012
    Posts:
    1,546
    Is your google vr services up to date on the phone?
     
  3. SiliconDroid

    SiliconDroid

    Joined:
    Feb 20, 2017
    Posts:
    302
    Bumping to stay in the loop:
    I am at the moment shopping around for a Galaxy S8 to dev GearVR on.
    Would be nice if it works properly with DayDream/Cardboard also.
     
  4. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    The google VR service is up to date on the phone.

    Here's the specs of a S8 phone, pre-update, that works, and the one psot-update that doesn't works :

    I post what is different between the two

    Pre-update:
    Android 7.0
    Samsung Experience 8.1
    Kernel 4.4.13-11544126 (Thu Jun 8 22:08:42)
    Operator software SAOMC_SM-G950F_OXM_XEF_0058
    Level of Android Security : 1 june 2017

    Post-update :

    Android 7.0
    Samsung Experience 8.1
    Kernel 4.4.13-11814589 (Fri Jul 7 17:48:34)
    Operator software SAOMC_SM-G950F_OXM_XEF_0061
    Level of Android Security : 1 july 2017
     
  5. SiliconDroid

    SiliconDroid

    Joined:
    Feb 20, 2017
    Posts:
    302
    So you are saying the post-update phone will run any cardboard app installed via GooglePlay store OK?

    You only have a problem running cardboard apps that you are building on it?
     
  6. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    Sorry, I need modify my original post, it was a typo. I can't run any application on the S8 that I'm building.
     
  7. SiliconDroid

    SiliconDroid

    Joined:
    Feb 20, 2017
    Posts:
    302
    But the post-update phone will run cardboard apps that you install via the playstore?
     
  8. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    It depends : lots of VR apps from the Playstore run properly. One or two are crashing the same way. No app that I build with the Cardboard SDK run on the S8.
     
  9. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    Some further informations :
    NDK used : android-ndk-r10e
    JDK : jdk1.8.0_111

    Graphic API :OpenGL ES3
    Multipass stereo
    Build for Android 5.0 Lollipop (API level 21).
    The apk isn't a FAT one, but ARMv7 only.
     
  10. SiliconDroid

    SiliconDroid

    Joined:
    Feb 20, 2017
    Posts:
    302
    Hmm, That indicates that the problem may not be just with your unity setup.

    I made a build of the GoogleVR test scene with particles:
    http://www.silicondroid.com/unity/apk/cardboard_test.apk

    It works on ZTE-Axon7.
    What about your updated s8?

    Unity Setup:
    Unity 2017.1.0p4
    GoogleVR 1.7
    jdk1.8.0_91
    ndk-r10e_64 (not relevant only used for IL2CPP)

    Build setup:
    API level 21
    VR: cardboard only
    Multipass stereo.
    ARM7 only
    GFX API preference list: OGles3, OGLes2, vulkan
     
  11. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    I tried to build an APK from a Mac, installing the APK on the updated S8, same problem.

    Here's the setup of the Mac :
    Unity 2017.1.0f3
    Auto Graphics API
    Minimum API Level Android 5.0 (API Level 21).

    Virtual Reality SDK : Cardboard
    GVR SDK : 1.30
     
  12. SiliconDroid

    SiliconDroid

    Joined:
    Feb 20, 2017
    Posts:
    302
    Last edited: Aug 22, 2017
  13. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    @SiliconDroid : your apk crashes the same way as mine on the updated S8.
    I ran one of my app with the S8 connected to a Mac to see the adb output log.

    Here's what I found (I cleaned the output to make it readable).
    Code (csharp):
    1.  
    2. TrimDiskCacheJob: Current cache size 10204mb
    3. [...]
    4. PlayerInitEngineNoGraphics OK
    5. AndroidGraphics::Startup window =  0xde0dc808
    6. [EGL] Attaching window :0xde0dc808
    7. [EGL] Request: ES 3.1+AEP RGB0 000 0/0
    8. [EGL] Checking ES 3.1 support...
    9. [EGL] ES 3.1 support detected
    10. [EGL] Found: ID[5] ES 3.1+AEP RGB16 565 0/0
    11. [EGL] Request: ES 3.1+AEP RGB0 000 0/0
    12. [EGL] Found: ID[5] ES 3.1+AEP RGB16 565 0/0
    13. [EGL] Request: ES 3.0 RGBA32 8888 0/0
    14. [EGL] Found: ID[1] ES 3.0 RGBA32 8888 0/0 AFBT
    15. ANativeWindow: (2008/1080) RequestedResolution: (0/0) RenderingResolution: (0/0) EGLSurface: (2008/1080)
    16. Renderer: Mali-G71
    17. Vendor:   ARM
    18. Version:  OpenGL ES 3.2 v1.r3p0-00rel0.52a2c5ce14e045eb8b9074c171442f91
    19. GLES:     3
    20. OPENGL LOG: Creating OpenGL ES 3.2 graphics device ; Context level  <OpenGL ES 3.1 AEP> ; Context handle -863930112
    21. [EGL] Attaching window :0xde0dc808
    22. Requested framebuffer: resolution[2008x1080], rgba[8/8/8/8], depth+stencil[on], samples[1]
    23. Created framebuffer: resolution[2008x1080], rgba[8/8/8/8], depth+stencil[24/8], samples[0]
    24. [EGL] Attaching window :0xde0dc808
    25. Initialize engine version: 2017.1.0f3 (472613c02cf7)
    26. AudioManager: Selecting AudioTrack output...
    27. Begin MonoManager ReloadAssembly
    28. [...]
    29. - Completed reload, in  0.114 seconds
    30. PlayerInitEngineGraphics OK
    31. Found 23 native sensors
    32. Sensor :        Accelerometer ( 1) ; 0.002394 / 0.00s ; LSM6DSL Acceleration Sensor / STM
    33. Sensor :        Accelerometer ( 1) ; 0.002394 / 0.00s ; LSM6DSL Acceleration Sensor / STM
    34. Sensor :        Accelerometer ( 1) ; 0.002394 / 0.00s ; LSM6DSL Acceleration Sensor / STM
    35. SetWindow 0 0x0
    36. [EGL] Attaching window :0x0
    37. SetWindow 0 0xe6ac8008
    38. SetWindow 0 0xe6ac8008
    39. Sensor :        Accelerometer ( 1) ; 0.002394 / 0.00s ; LSM6DSL Acceleration Sensor / STM
    40. Choreographer available: Enabling VSYNC timing
    41. Could not recreate VR window because GfxDevice is in an invalid state (device lost)
    42. [EGL] Attaching window :0xe6ac8008
    43. SetWindow 0 0xc9458008
    44. ANativeWindow: (2678/1440) RequestedResolution: (0/0) RenderingResolution: (0/0) EGLSurface: (2008/1080)
    45. Sensor :        Accelerometer ( 1) ; 0.002394 / 0.00s ; LSM6DSL Acceleration Sensor / STM
    46. [EGL] Attaching window :0xc9458008
    47. ANativeWindow: (2678/1440) RequestedResolution: (0/0) RenderingResolution: (0/0) EGLSurface: (2678/1440)
    48. SetWindow 0 0x0
    49.  
    What I have highlighted sounds fishy too me (source of the bug ?) :
    ANativeWindow: (2678/1440) RequestedResolution: (0/0) RenderingResolution: (0/0)
    EGLSurface: (2678/1440)
    SetWindow 0 0x0
     
  14. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
  15. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    So, after reading the mentionned links, I can confirm that the (temporary) workaround works !

    You need to go to the Configuration | Installed apps panel on your phone, select the 'Google VR' service, and 'Deactivate' it, to force it back to factory settings and version. My apps doesn't crash after that.
     
    SiliconDroid likes this.
  16. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    Here's some tests I have done, and note back on the github ticket : https://github.com/googlevr/gvr-unity-sdk/issues/671 (the previous one was marked as a duplicate of this one by the google devs).
    _____
    I have the same problem with a S8.

    @fredsa : I made the test you asked for. Here's the results, with the latest Google VR Services update :
    - S8 with the Google VR Services activated, @FHD+(2220x1080) resolution = crash on startup for the app
    - S8 with the Google VR Services deactivated @FHD+(2220x1080) resolution = app runs fine, I can push screen luminosity as high as I want
    - S8 with the Google VR Services deactivated @FHD+(2220x1080) resolution = app runs fine, I can push screen luminosity as high as I want, it doesn't crash if I switch back to the panel, activate Google VR Services while the app is running and go back to the app
    - S8 with the Google VR Services activated @WQHD+(2960x1440) resolution = app runs fine, I can't push screen luminosity as high as I want, and it seems that the phones goes in low persistence mode.
    - S8 with the Google VR Services deactivated @WQHD+(2960x1440) resolution = app runs fine, I can push screen luminosity as high as I want, and the phone doesn't goes into low persistence mode (I suppose it's because the Service isn't activated).
     
  17. SiliconDroid

    SiliconDroid

    Joined:
    Feb 20, 2017
    Posts:
    302
    Glad to see now labelled as bug, the wheels are in motion.

    So with latest updates and GVR service:
    With phone set at native res everything works fine.

    Workaround popup dialog:

    "Dear user: Stop enjoying yourself and get to work configuring your phone to native resolution, and stop moaning, it's far easier than writing software you slacker... etc".
     
    Last edited: Aug 24, 2017
  18. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    @SiliconDroid : yes with latest update, GVR service, and the phone at native resolution, your app will work.
    However it still starts in low persistence mode, with reduced luminosity. Even by activating "Performance Mode", I ca't prevent that.
     
  19. SiliconDroid

    SiliconDroid

    Joined:
    Feb 20, 2017
    Posts:
    302
    I think reduced luminosity and low persistence may be forced on purpose by the service.
    reduced luminosity of screen cells allows them to switch faster.
    "low persistence" I think then doubles screen refresh rate which reduces persistence even more.
    I seem to remember reading human eye adapts so much, and because VR encompasses all vision there is no need for higher brightness, but I suppose with daydream light leaks this design foundation breaks a little.
     
  20. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    @SiliconDroid : in fact the low persistence mode kicks back automatically if you plug the phone into a S8. I wonder if the code made by Google inside the Google VR Service doesn't trigger it as a byproduct of the VR surface generation.

    Edit : Even if some people can tolerate it, I have a client which is very sensitive to that and doesn't want that mode activated.
    I also have noticed that while this persistence mode is activated and that you look at a bright white surface, you can notice the stuttering from the gyroscope (something that's not as visible when looking at darker colors).
     
  21. greggtwep16

    greggtwep16

    Joined:
    Aug 17, 2012
    Posts:
    1,546
    If you're asking about daydream, it might be best to ask in the daydream unity forum, I know google employees frequent there. Most of the documentation though indicates that setting daydream mode in the manifest automatically makes the app low persistence. Not sure if there is a way around that but I'd probably ask in that forum.

    If you were asking about gear VR, I would say that is probably better asked on the oculus forums for gear vr. I did a quick search over there and did find 5-10 forums threads of people trying to hack around it in the manifest and other places, but all the threads end in a dead end.

    The official oculus response though was that low persistence wasn't a configurable option and they offered no way to disable it. Doesn't hurt to bring it back up again, hopefully you can get a response from cyberreality or another Oculus employee.

    On both platforms killing either the google vr services or gear vr services will stop low persistence, but you get a ton of side effects that make this worse than dealing with the strobe effect if your eyes are sensitve to it.
     
    Last edited: Aug 26, 2017
  22. SiliconDroid

    SiliconDroid

    Joined:
    Feb 20, 2017
    Posts:
    302
    Yeah: It's the first I've really been aware of the hardcoded nature of it: but fiddling with my Axon7, there seems no way to gain control of brightness or persistence mode for anything running with GoggleVR service.

    My experience (how I visually perceive scene) of GoogleVR on Axon7:

    Rotational tracking as solid as Vive/Rift.
    No jitter.
    No awareness of any low persistence mode issues.
    No strobing or any other indication of modulating screen brightness.

    Only issue I can think of is some yaw drift: proportional to applications CPU loading.

    Might some phones (gyros, screens, drivers etc) be giving issues and not others? Or do I just happen to have an average enough eye sensitivity to not notice any subtle strobing?
     
    Last edited: Aug 26, 2017
  23. Thorny2000

    Thorny2000

    Joined:
    Sep 18, 2014
    Posts:
    53
    SiliconDroid likes this.
  24. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    @GMT : the problem is that you still can't disable the low persistence mode.
     
  25. roshnisharma2220

    roshnisharma2220

    Joined:
    Feb 12, 2018
    Posts:
    3
    Last edited: Oct 13, 2018