Forum Discussion
ralphVR
10 years agoProtege
Screen Tearing when using Oculus Utilities
Heya! So my partner and I have been stumped for two months on trying to get our game running like it did before we switched to Oculus Utilities. We managed to get the FPS back to where it was, but we consistently get this screen tearing effect which is really awful.
From my research, it seems like TimeWarp is reading out the frame before everything is scanned in? Resulting in a tear? So is it an issue with GPU fill rates?
Our frame rate usually sits at 60 FPS. Sometimes it drops pretty low, maybe GC? What is weird is that it seems like it only happens for one or a few frames, which TimeWarp used to hide, but now it does not seem too...
Additionally, TimeWarp just doesn't feel like it did before we switched to Oculus Utilities. When framerates dropped in the past, I would see black edges come into the view. Now, I never see black edges (which is good) but it doesn't seem like TimeWarp even works, instead the screen will just pop from one frame to another. I would rather have the smooth effect before with black edges than this new issue.
We have searched online and have not really found anyone experiencing the same thing. Anyone encountered these issues or have a suggestion?
Thanks!!!
Richie
From my research, it seems like TimeWarp is reading out the frame before everything is scanned in? Resulting in a tear? So is it an issue with GPU fill rates?
Our frame rate usually sits at 60 FPS. Sometimes it drops pretty low, maybe GC? What is weird is that it seems like it only happens for one or a few frames, which TimeWarp used to hide, but now it does not seem too...
Additionally, TimeWarp just doesn't feel like it did before we switched to Oculus Utilities. When framerates dropped in the past, I would see black edges come into the view. Now, I never see black edges (which is good) but it doesn't seem like TimeWarp even works, instead the screen will just pop from one frame to another. I would rather have the smooth effect before with black edges than this new issue.
We have searched online and have not really found anyone experiencing the same thing. Anyone encountered these issues or have a suggestion?
Thanks!!!
Richie
7 Replies
Replies have been turned off for this discussion
- vrdavebOculus StaffWhat hardware, OS, Unity version, and SDK version are you using? Can you share <AppName>_Data/output_log.txt or logcat from a run that has the problem?
- ralphVRProtegeGalaxy S6, Android 5.0.2, Unity v5.3.2p1(also tried various other versions), Oculus Utilities v0.1.3.0, OVRPlugin v0.1.4.0.
Attached a logcat with Unity internal profiler turned on. - vrdavebOculus StaffIt sounds like you are using OVRDebugGraph in your scene. Can you remove that? OVR_TW_SetDebugMode enables a graph that was removed from the latest SystemActivities and OVRDebugGraph seems to be trying to re-enable it each frame. The logging overhead from that may be the source of the slowdown.
If that isn't it, a more detailed breakdown of that 20-30% CPU utilization would be nice. You should be able to connect the Unity profiler to your build to get more detail. - ralphVRProtegeWe don't have a OVRDebugGraph in the game, I added logging to the script to make sure. Is there something else that could be causing OVR_TW_SetDebugMode to be logged?
- SvenVikingExpert ProtegeThere's some discussion about it in this thread, if that helps:
viewtopic.php?f=67&t=27295&e=1
No official response though. - CodingJarProtegeI've also spent months trying to fix this for my game. There's a ton of performance-related information out there, but what was REALLY killing me, is I believe there is a bug in the OVRPlugin SDK when using CPU/GPU throttles. Are you using those?
The SDK allows you to specific a clock speed for CPU or GPU, and by default it's set to 2,2 I believe. If you ever clock it down to 0,0 (or perhaps 0,1 or 1,0), for some reason your app will never recover, even if you then clock it back up to a higher speed. I was clocking down to 0,0 for menus, and any performance profiling after would be ridiculously bad.
Here is the talk you need to watch for performance info: https://www.youtube.com/watch?v=MLxwn-9UQHs.
Here is my text summary of what I do:
- Disable Multi-threaded rendering, GPU skinning, and Dynamic Batching.
- Disable all but your basic static geometry / terrain in your level.
- Set the CPU/GPU speeds to 3,2 (I believe this is the highest you can set it without being disallowed on the store).
- Disable QueueAhead in the Oculus Utilities, and all of their funky stuff like positional tracking.
- Make a build with internal profiling on.
- Do NOT run in GearVR Developer Mode, use your headset.
- See if there's tearing. If there is, see if you can narrow the issue with the Unity internal log spam and then these:
- See if you can narrow it down using the Unity profiler (the one in the Editor, not the internal one).
- See if you can use the frame debugger to see your draw calls and check if there's anything ominous. If it crashes, you can assume it's the same in the editor and double your draw count (one for each eye).
If there isn't tearing, you can back-off the CPU/GPU speeds. Right now our game runs at solid 60 with CPU/GPU=1,1. But if you ever get it to 0,1 (or probably 1,0 as well), then the game will drop frames like crazy, tear like crazy, and it doesn't matter if you ever return to 3,2 -- the problem will persist forever.
Hope that helps. - vrdavebOculus StaffThanks for reporting this. We are investigating the issue along with the OVR_TW_SetDebugMode spam. We will follow up with more information this week.
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 2 months ago
- 6 months ago