cancel
Showing results for 
Search instead for 
Did you mean: 

Vertical tearing with Android N, not with Android 6.

Norman3D
Expert Protege
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#late...

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!
39 REPLIES 39

Norman3D
Expert Protege

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.

Leemon89
Explorer
@Norman3D
Thanks for detailed answers mate! I've managed to squeeze into 15 drawcalls and 20k tris with Default Lit materials but still couldn't get silky smooth 60fps (after update to Android 7). Only after you mentioned Unlit materials I've ran some tests with unlit and realized how high 110-120 shader instructions really are. Now I just want to cry.
Also, would you be so kind and give me your Skype? I have couple more questions here and there and would be very happy to be able to talk to you whenever you could.

Norman3D
Expert Protege

Leemon89 said:

@Norman3D
Thanks for detailed answers mate! I've managed to squeeze into 15 drawcalls and 20k tris with Default Lit materials but still couldn't get silky smooth 60fps (after update to Android 7). Only after you mentioned Unlit materials I've ran some tests with unlit and realized how high 110-120 shader instructions really are. Now I just want to cry.
Also, would you be so kind and give me your Skype? I have couple more questions here and there and would be very happy to be able to talk to you whenever you could.


I pmed you!

Anonymous
Not applicable
Thanks for sharing that info @Norman3D  ! Pretty much all what I was guessing except for how the reflections where done:

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.

which I don't really understand from text - I hope you can provide a little example in your blogpost for how that was done exactly?

Two other side questions that just came to mind:

  • How do you differentiate between the devices? Last time I checked it wasn't really possible to tell if a user was using a S6, S7 or a S8 in UE4?
  • How did you capture your footage for the trailer?
Thanks again for this valuable info!

Norman3D
Expert Protege


Thanks for sharing that info @Norman3D  ! Pretty much all what I was guessing except for how the reflections where done:

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.

which I don't really understand from text - I hope you can provide a little example in your blogpost for how that was done exactly?

Two other side questions that just came to mind:

  • How do you differentiate between the devices? Last time I checked it wasn't really possible to tell if a user was using a S6, S7 or a S8 in UE4?
  • How did you capture your footage for the trailer?
Thanks again for this valuable info!


Cubemaps were captured with a scene capture component in the editor and turned into a static texture, which is then sampled in the material. My material then takes care of doing the parallax correction and all that.

The footage was captured from the PC version of the game running the appropriate material quality settings.

There are different material quality settings, there is a node for that in the material editor. You can use that to essentially turn on or off features depending on said material quality level. I can't speak for how exactly we differentiate between phone models except to say that our programmer does it through code using the phone model numbers.

Haven't had time to write that blog post, since I'm still super busy. I'll write it as soon as I have time, but I'm not able to forsee when just yet.

firagabird
Adventurer


@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."


@imperativity

Should I take this to mean that Oculus a) is aware that Android 7/Nougat performance is slower than Android 6/Marshmallow; and b) will take no further action to resolve the performance regression besides passing the lost performance on to app developers? Because this would be highly disappointing if true.

@Norman3D

Has Oculus given you any further updates on this unresolved issue?
S7 Exynos Nougat. 2017 Gear VR. Public test channel.

Norman3D
Expert Protege

@Norman3D

Has Oculus given you any further updates on this unresolved issue?


nope. It's my understanding that if this is indeed a driver issue there is nothing Oculus can do since it's 100% Samsung's responsibility. Oculus can't push driver updated to Samsung's Android OS afaik. I can't wait for Go, since Oculus can control the entire stack of the device and this way can ensure it's a stable and consistent platform for development.

firagabird
Adventurer
@Norman3D

If it's a Samsung issue, Oculus should still be actively working with them (they are partners after all) to resolve the issue. Go will be great for a more console-like platform, but Gear VR will still be how the overwhelming majority of users access the platform for the foreseeable future.

I wonder if the Oreo update will bring with it an updated GPU driver that fixes any perf regression introduced in Nougat for all affected devices (mostly S7, but hopefully also S6).

S7 Exynos Nougat. 2017 Gear VR. Public test channel.

Norman3D
Expert Protege


@Norman3D

If it's a Samsung issue, Oculus should still be actively working with them (they are partners after all) to resolve the issue. Go will be great for a more console-like platform, but Gear VR will still be how the overwhelming majority of users access the platform for the foreseeable future.

I wonder if the Oreo update will bring with it an updated GPU driver that fixes any perf regression introduced in Nougat for all affected devices (mostly S7, but hopefully also S6).



I'm sure Oculus is trying their best with Samsung, Carmack has said many times that they have gone to Samsung to request changes. Unfortunately this does not seem to be a quick process and sometimes takes months and even years.
That being said, I do not know if Oculus has looked further into this particular issue.

firagabird
Adventurer
@imperativity

As an end user, would there be value in rolling my OS back to Marshmallow to regain that extra performance/thermal headroom? Does Oculus have any info whether Samsung's Oreo graphics drivers will fix the regression introduced in Nougat?
S7 Exynos Nougat. 2017 Gear VR. Public test channel.