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()
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.