/ Forums
New To The Forum? Click Here To Read The How To Guide. -- Developers Click Here.

Vertical tearing with Android N, not with Android 6.

Norman3DNorman3D Posts: 46
Lawnmower Man (or Woman)
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

  • imperativityimperativity Posts: 972 Oculus Staff
    We are getting many reports of this.

     I'm looking into this issue right now and hope to have something to share in the coming weeks.
  • imperativityimperativity Posts: 972 Oculus Staff
    @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.

  • Norman3DNorman3D Posts: 46
    Lawnmower Man (or Woman)
    @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)
  • imperativityimperativity Posts: 972 Oculus Staff
    @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.

  • Norman3DNorman3D Posts: 46
    Lawnmower Man (or Woman)
    @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: 46
    Lawnmower Man (or Woman)
    edited April 5
    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
  • imperativityimperativity Posts: 972 Oculus Staff
    It may be properties of your project are conflicting with Nougat. You may submit a dropbox link to via private message if that works for you.
  • Norman3DNorman3D Posts: 46
    Lawnmower Man (or Woman)
    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: 22
    Virtual Boy (or Girl)
    edited April 19
    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: 46
    Lawnmower Man (or Woman)
    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: 22
    Virtual Boy (or Girl)
    edited April 20
    A little update: I've noticed tearing happens for left eye only! Right is ok at any load.
  • Norman3DNorman3D Posts: 46
    Lawnmower Man (or Woman)
    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: 46
    Lawnmower Man (or Woman)
    edited April 23
    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: 46
    Lawnmower Man (or Woman)
    edited April 24
    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: 22
    Virtual Boy (or Girl)
    Thanks for the update, mate! Keeping this topic fresh.
  • Norman3DNorman3D Posts: 46
    Lawnmower Man (or Woman)
    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!
  • imperativityimperativity Posts: 972 Oculus Staff
    @Norman3D

    You have not been forgotten!
  • Norman3DNorman3D Posts: 46
    Lawnmower Man (or Woman)
    @Norman3D

    You have not been forgotten!
    hehe no worries! I just saw your PM :smiley:
  • Norman3DNorman3D Posts: 46
    Lawnmower Man (or Woman)
    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: 46
    Lawnmower Man (or Woman)
    edited April 25
    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: 22
    Virtual Boy (or Girl)
    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: 22
    Virtual Boy (or Girl)
    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: 46
    Lawnmower Man (or Woman)
    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: 22
    Virtual Boy (or Girl)
    Any news here?
  • imperativityimperativity Posts: 972 Oculus Staff
    @Leemon89

    Nothing specific to share. These issues really depend on the application's design and use of resources. If you are encountering any issues with your application, try these steps below from one of our mobile engineers to diagnose this:

    "a) increasing MSAA to max (e.g. 8x if available), b) reducing eye buffer size, c) reducing the amount of geometry per frame. The problem with context switching on tile granularity is that expensive tiles can cause timewarp to not get scheduled in time. Qualcomm has big tiles, so it can easy to get "geometry camping" on a tile that makes it too expensive.
    The suggestions above are diagnostic - they won't fix the problem in a shipping sense, but they may help you better understand what's going wrong."
  • Norman3DNorman3D Posts: 46
    Lawnmower Man (or Woman)
    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: 22
    Virtual Boy (or Girl)
    edited May 23
    @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: 46
    Lawnmower Man (or Woman)
    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: 74
    Hiro Protagonist
    edited May 23
    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: 46
    Lawnmower Man (or Woman)
    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.
«1
Sign In or Register to comment.