0 votes
by (460 points)

Hello,

We are having an issue where the build we've made has FPS "capped" at 36. What this means is that for 99% of the time it stays at 36. Sometimes it goes to 37-38, sometimes a bit lower but for the majority of the time it stays at 36.
The CPU usage is between 5-12%. The GPU usage is between 40-95%, for the most of the time between 80-90%. Used RAM is 0.5-1.0GB.

It's as if something is limiting the FPS from going higher. It doesn't matter if the scene is almost empty or full of stuff...the GPU usage changes based on that but it never goes to 100%.

I've checked that in the PXR_Manager the targetFrameRate gets set to 72.

Any ideas what could cause the issue here?

Best

1 Answer

0 votes
by (35.2k points)
selected by
 
Best answer

Dear developer,
Could you please tell us your SDK version, PUI version and Unity version?
Thanks

by (460 points)
edited by

SDK: 2.0.1
Unity: 2021.1.28f1
PUI: v4.6.3
Device: Pico Neo 3

I have also done some further trials. I found a way to get the FPS to work correctly.
In the PXR_Manager's SetFrameRate() function I have disabled majority of the code (except for the PLog.i() call) and just wrote Application.targetFrameRate = 100. This seemed to get FPS to be correct again. It capped at 72 as this is the device's refresh rate.

I then tried different targetFrameRate values. I tried 90, 72 and values between these two. I found that if I set the targetFrameRate to <= 80 then there is the FPS issue (being 36). If it is anything higher than 80 (starting from 81) then it works correctly.

The downside is that this brings the GPU utilization higher as I think it tries to render this higher framerate even though the screen refresh rate is only 72. So this is still not a good fix.

Also note that in this same function I've printed out the following values:
targetFrameRate = -1
displayRefreshRate = 72
customFps = 0
The values above, except for the customFps have been received via PXRPlugin.System.UPxrGetConfigInt()

Other settings:
Stereo Rendering Mode: Multiview
Display Refresh Rates: Default
Scripting Backend: Mono/IL2CPP (an issue on both)
Color Space: Linear
Graphics API: OpenGLES3

Looking at the profiler it also seems that if the FPS is low then the majority time spent is on rendering.

by (35.2k points)
edited by

Dear developer,
Your sdk version is the old one, may have some problem with unity2021, it work well with unity2020 ans untiy2019, but untiy2021 has the FPS problem. And we had tested the lastest sdk2.0.4 can work well with unity2021, we suggest you update your sdk, it should fix this FPS problem.
Thanks

by (460 points)

Hello,

Indeed after updating to 2.0.4 the issue seems to be gone. Thanks!

...