As far as I’ve always understood it, Gfx.WaitForPresent is simply that the CPU is waiting on the GPU. This could be because of VSync (which you have off), or it could be the frame taking too long to render or be displayed. You can see what the GPU is doing by pressing “Add Profiler” in the top-left and selecting “GPU.”
I’m having the same issue on Samsung S6 edge, GPU profiler shows huge FPS. There are only 25 draw calls per frame, 80 triangles and the most expensive shader on screen is Sprite shader. My VR game for Cardboard is very sensitive to such slowdowns and it causes nausea. Rendering graph is 70% GFX.WaitForPresent so the real framerate should be far greater than 60. Do you have any idea what could be wrong with it?
You need to profile your game to see where the problem is. WaitForPresent isn’t a problem in and of itself. It indicates that the CPU is waiting for the GPU to finish doing some work. This could mean that the CPU isn’t doing much and your shaders are too complex, or it could mean you’re doing too much on the CPU (more than 16ms worth of work) and missed the current vsync so you have to wait for the next vsync. It could also show up even if everything is working fine and you’re running at 60 fps.
There’s a good explanation of WaitForPresent on the Oculus forums here.
I have opened a new thread about it. I am using the latest version of Unity. The problem occurs even in the 2D empty project too. I think there is something wrong with the Unity program.
I have same issue, after upgraded to Unity 2018.3+, it get my game fps from 60 to about 35. Everything is same just Unity upgraded from 2018.2.13f1 to 2018.3.x or 2018.4.x. Any tips?
I found the solution:
Disable multithread reander, you can see details profile infomations about render, and i found that:
GPU Skinning on my android mobile is very slow, cost about 10ms every frame, even just one simple skinned mesh. So i turn off GPU Skinning, then the fps boost.
Unity 2018.2.13f1 has no such issue, 2018.3 ~ 2018.4 do have.