Welcome to the Oculus Developer Forums!

Your participation on the forum is subject to the Oculus Code of Conduct.

In general, please be respectful and kind. If you violate the Oculus Code of Conduct, your access to the developer forums may be revoked at the discretion of Oculus staff.

Vertical tearing with Android N, not with Android 6.

Norman3DNorman3D Posts: 63
Hiro Protagonist
Hi guys,

I'm having trouble. Our game runs perfectly fine on S6 and S7 with Android 6. As soon as we update our S7 to Android N the game starts getting "vertical tearing" like described in this thread:
https://forums.oculus.com/community/discussion/50589/oculus-home-graphic-problem-and-other-apps#latest

Also note how in that thread an Oculus staff member claimed just 2 weeks ago to believe that Android N is still not supported by GearVR. Is this still true? Even with the S8 being released? Is this entire issue something we should worry about? We don't even know what causes it or if there is anything we can even do on our end to fix it.

Here is a reddit thread of people complaining about this specific issue as well:
https://www.reddit.com/r/GearVR/comments/5z0xpp/did_samsung_throttle_cpu_performance_for_gear_vr/

So yeah, any info or help would be appreciated!
«1

Comments

  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    @Norman3D

    Turns out this is a known issue (Nougat slower than Marshmallow) at the native level, not specific to any engine. 

    We believe it is due to extra background activity and we are asking Samsung to address it.

    Thanks so much for the info @imperativity
    To be clear, I can put my game through the submission process even though this is an issue that is present due to Nougat, correct? (I was afraid I was going to get rejected because of this)
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    @Norman3D

    Ok, I have confirmation that there is no longer any expected performance degradation going from Marshmallow to Nougat. If your app is still encountering issues, we will need to see the output of "adb logcat" and possibly get a minimal project that reproduces the issue to debug.

    Let me know if you want to provide either of these options (or both) for our review.

    I can confirm on my side that the issue is still present in Nougat. I've downgraded my S7 to Marshmallow this morning and the issue is gone.
    How can I contact you to provide you the project privately?
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    edited April 2017
    To clarify: I'm confirming the issue still remains the same. Vertical tearing is present on Android N but not  Android 6 on Samsung S7
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    I'll PM you a link to our project. For those of you lurking the thread I'll make sure to update as soon as I know more!
  • Leemon89Leemon89 Posts: 29
    Brain Burst
    edited April 2017
    Any updates about this issue? I've noticed this tearing even in super-light scenes with stable 60fps. Tearing appears more often with higher load on a scene. For me it looks like some sort of time-warp issue.
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    Leemon89 said:
    Any updates about this issue? I've noticed this tearing even in super-light scenes with stable 60fps. Tearing appears more often with higher load on a scene. For me it looks like some sort of time-warp issue.
    Developer support has been looking at the issue for a few days. Haven't heard anything from them yet but I'm told to expect news at some point this week.
  • Leemon89Leemon89 Posts: 29
    Brain Burst
    edited April 2017
    A little update: I've noticed tearing happens for left eye only! Right is ok at any load.
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    Leemon89 said:
    A little update: I've noticed tearing happens for left eye only! Right is ok at any load.
    I can say that this is true 90% of the time. But I have experienced occasional tearing on the right eye also.
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    edited April 2017
    Just wanted to update and let everyone know that as of these last few days, after one of the gearvr updates the vertical tearing is also happening on Android 6 on Samsung S7. Something I can guarantee was not happening up util now. One of the updates has definitely broken it, so now the vertical tearing appears both in Android 6 and Android 7 son Samsung 7.

    EDIT: And here is another thread that has popped up with the same complaint:
    https://forums.oculus.com/developer/discussion/52004/vertical-screen-tearing-on-s7
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    edited April 2017
    Just to update everyone. Issue is now gone after today's update on Android 6 on S7. I'm going to check if it's still present on Android 7 and I'll update this post.

    EDIT: Issue still present on Android 7
  • Leemon89Leemon89 Posts: 29
    Brain Burst
    Thanks for the update, mate! Keeping this topic fresh.
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    Leemon89 said:
    Thanks for the update, mate! Keeping this topic fresh.
    No problem. For the record the Oculus support has not gotten in touch with me last week. So I'm hoping for this week!
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    @Norman3D

    You have not been forgotten!
    hehe no worries! I just saw your PM :smiley:
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    To add some more fuel to the fire, here is someone else complaining about this issue:
    https://www.reddit.com/r/GearVR/comments/638zjf/john_carmacks_new_software_gives_gear_vrs_oculus/dfy7wcv/
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    edited April 2017
    Additionally we have been reading up on the matter of tearing and came across this video right here from Oculus Connect 2:
    https://youtu.be/NG7oLula-Xc?t=1532

    It's my understanding from watching the video that the timewarp process, the game and android are all fighting for GPU resources. And if one of them hogs the gpu too much the timewarp comes in late, resulting in tearing.
    Well, we have increased the GPU from 2 to 3 and the tearing is mostly gone, it does still pop up everyone now and hen. However this has obvious thermal implications, we are not reaching the 45 minute mark anymore and can only get up to 26 minutes, which is unacceptable to us and Oculus. And not to mention the fact that setting the value of GPU 2 on Android 6 works tear-free and 45+ minutes.
    In other words, it seems that when updating the OS from 6 to 7 more GPU is being used by something.
  • Leemon89Leemon89 Posts: 29
    Brain Burst
    Thanks for the updates, Norman! We shall not forget OS becoming heavier and heavier with each update, so gradual performance loss is inevitable. I wonder will Oculus put it in a consideration, coz users are tend to update OS asap.
  • Leemon89Leemon89 Posts: 29
    Brain Burst
    BTW! In UE 4.16 patchnotes we have: a) mobile Slate performance improvement, b) mobile Multi-view is out of experimental and fully supports GearVR. So hopefully the engine improvements will come in help to balance things out.
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    Leemon89 said:
    BTW! In UE 4.16 patchnotes we have: a) mobile Slate performance improvement, b) mobile Multi-view is out of experimental and fully supports GearVR. So hopefully the engine improvements will come in help to balance things out.
    Unfortunately I don't think multi-view well help out here. I believe tearing is caused due to the phone being GPU bound. Multi-view only offloads processing from the CPU to the GPU making things worse in this case.
    In my specific case I'm also only using a little bit of UMG, mostly for the lobby section of the game, so once again I don't think it will be a big difference :/
  • Leemon89Leemon89 Posts: 29
    Brain Burst
    Any news here?
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    Leemon89 said:
    Any news here?
    Yes, sorry I forgot to update this.
    The problem (in my specific case) seems that even though I'm hitting 60fps on Android 7 Samsung S7 the prediction time is sitting at 51ms instead of 49ms.
    The only explanation, but Oculus engineers have not been able to confirm, is that there is something wrong with the drivers of the GPU that Android 7 has. And it's adding some type of cost to the GPU that is causing the prediction time to be longer. This is the only explanation as the content (my game) is exactly the same between OS versions. Android 7 is clearly adding an overhead.
    Because the prediction time is 2ms longer, it is my understanding that the frame arrives late and so tearing occurs.
    My workaround unfortunately has consisted in halving the pixel shader costs brutally. I now have only occasional tearing but with the same shader quality than a Samsung S6 could handle.
    Even though a Samsung S7 with Android 6 could handle higher quality shaders we decided to leave this feature exclusive to S8 phones (and higher whenever they get released).

    TLDR: It seems that FPS are at 60 but prediction time is higher. Possibly due to faulty driver in Android 7. No fix in sight unless Android/Samsung release a OS update that fixes it. Solution: Optimize pixel shaders a lot.

  • Leemon89Leemon89 Posts: 29
    Brain Burst
    edited May 2017
    @imperativity

    Thank you! I'll try that.

    @Norman3D

    Thank you, Sir! Are you working on UE4? If so, would you be so kind and share shader complexity figures? And what software are you using to test performance? I wonder how I could find prediction time in my case.
    Edit: are you using OpenGL ES 2.0 or 3.1?
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    Leemon89 said:
    @imperativity

    Thank you! I'll try that.

    @Norman3D

    Thank you, Sir! Are you working on UE4? If so, would you be so kind and share shader complexity figures? And what software are you using to test performance? I wonder how I could find prediction time in my case.
    Edit: are you using OpenGL ES 2.0 or 3.1?
    I am using Unreal 4 and OpenGL ES 3.1. Even though the performance tests were done by Oculus when they were looking into the issue, I believe they used "Oculus Remote Monitor"
    Regarding the shader complexity it was an average of 39 instructions including lightmap. The high quality profile shader that used to run on S7 and now only runs on S8 has 79 instructions. (That version uses normal maps and parallax corrected cubemaps)
    Here is a link of the finished game, the footage you see is with the high quality profile:
    https://www.youtube.com/watch?v=U9qT_2NJbbQ
  • aussieburgerVRaussieburgerVR Posts: 198 Oculus Start Member
    edited May 2017
    Norman3D said:

    Here is a link of the finished game, the footage you see is with the high quality profile:
    https://www.youtube.com/watch?v=U9qT_2NJbbQ
    Great stuff! Would love to ask some unreal related questions for tips on how you achieved such a great looking product!
    • Are you using mobile HDR on or off?
    • Are your materials lit or unlit?
    • How did you achieve the reflections?
    • How did you get your textures/materials so crisp looking? at what size do you recommend for the textures and any specific material trick?
    Many thanks for sharing the information! :)
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    Norman3D said:

    Here is a link of the finished game, the footage you see is with the high quality profile:
    https://www.youtube.com/watch?v=U9qT_2NJbbQ
    Great stuff! Would love to ask some unreal related questions for tips on how you achieved such a great looking product!
    • Are you using mobile HDR on or off?
    • Are your materials lit or unlit?
    • How did you achieve the reflections?
    • How did you get your textures/materials so crisp looking? at what size do you recommend for the textures and any specific material trick?
    Many thanks for sharing the information! :)
    I plan on making a blog post going into a lot of detail. But to answer quickly

    mobile HDR off

    Materials are 100% unlit, lighting is rendered in 3dsmax with vray.

    Reflections are cubemaps rendered in the editor. I'm using OpenGLES 3.0 since I can use cubemap mip maps and plug in a roughness texture to control the mip bias per pixel. The shader is totally unlit so I'm adding the cubemap there. I'm not relying on Unreal to do this automatically like materials usually work.

    The textures look crips because they are 1024x1024, I think at times even 2048x2048 but tiled a lot. We had very limited time, the actual art production took only around 25 days for 20 levels so we knew we had to reuse the same textures over and over again and make the art awesome in other ways.

    I'll be writhing a blog post at some point detailing all of it. I think a lot could be done better in regards to how Unreal does things in terms of mobile shaders, lighting and FX.
  • drashdrash Posts: 2,840
    Trinity
    Norman3D said:
    Here is a link of the finished game, the footage you see is with the high quality profile:
    https://www.youtube.com/watch?v=U9qT_2NJbbQ
    Is this game out yet?  I don't see it on the store yet.   Looks great!
    TitansOfSpacePlus_CoverArt_VRLandscape5_60p.png
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    drash said:
    Norman3D said:
    Here is a link of the finished game, the footage you see is with the high quality profile:
    https://www.youtube.com/watch?v=U9qT_2NJbbQ
    Is this game out yet?  I don't see it on the store yet.   Looks great!
    Yes it is! Go to top selling it's usually between the first 20 or so. It doesn't pop up under "just released" because Oculus changed that list so that it isn't sorted by release date anymore, instead it's listed by "suggested" so for some reason that makes the game disappear from that list, essentially. Also you can follow the link on the trailer's description :)
  • Leemon89Leemon89 Posts: 29
    Brain Burst
    @Norman3D
    Big thanks for the info! Looking forward to read your blogpost. Couple more questions pls: what are drawcalls and tris count?

  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    Leemon89 said:
    @Norman3D
    Big thanks for the info! Looking forward to read your blogpost. Couple more questions pls: what are drawcalls and tris count?

    The draw call varies greatly depending on how complex the level is. The most complex level has: 89 draw calls and a bit over 50.000 triangles.
    But typically the draw call count and triangle count is much lower do to the architectural simplicity of the levels. I'm talking about 30 draw calls 5000 triangles

  • Leemon89Leemon89 Posts: 29
    Brain Burst
    Are those figures mono- or stereo- (x2)? I've also watched trailer of your game - looks very crisp! Looking forward to buy it and try. BTW are you targeting Galaxy S6 (I'm working on one)? How does it performs?
  • Norman3DNorman3D Posts: 63
    Hiro Protagonist
    Leemon89 said:
    Are those figures mono- or stereo- (x2)? I've also watched trailer of your game - looks very crisp! Looking forward to buy it and try. BTW are you targeting Galaxy S6 (I'm working on one)? How does it performs?
    Those figures where just mono, sorry. You should multiply them by 2. We are targeting S6 yes, it runs at 60fps.
    Cubemaps are turned off for everything that isn't metallic, there are also no normal maps and the screen resolution is 85%. It works great in our case due to the nature of the art in the game. We might not have been able to afford a 85% screensize if we had more detailed props in close proximity.
«1
Sign In or Register to comment.