openvr icon indicating copy to clipboard operation
openvr copied to clipboard

`GetTimeSinceLastVsync` returns bad `pfSecondsSinceLastVsync` on AMD 7900 XTX GPUs

Open nicoco007 opened this issue 2 years ago • 2 comments
trafficstars

I just got a 7900 XTX and noticed strange tracking behaviour when using GetDeviceToAbsoluteTrackingPose. This issue has been reproduced on at least two other systems running 7900 XTX GPUs, with no issues prior to changing the GPU. After some investigation, it looks like pfSecondsSinceLastVsync returned by GetTimeSinceLastVsync (used for calculating the seconds to photons as shown in the docs for the function) is wrong – it just returns the number of seconds since the application started. According to the docs it should never return a value higher than the duration of a single frame, so something's definitely awry. Other numbers (display frequency, vsync to photons, frame count) seem accurate; the only one I'm unsure about is vsync to photons which has a constant value of 0.009458 s. Switching back to my old GPU, pfSecondsSinceLastVsync is essentially constant at a value slighly lower than the expected frame time, which I believe is what's expected here.

This was tested in Unity 2019.3 and 2019.4. I'm happy to test & provide more information as needed!

nicoco007 avatar Mar 20 '23 22:03 nicoco007

Photon latency on 7900 series cards is incorrect overall. This manifests as increased latency in direct-mode rendering, as reported here originally for the NVIDIA RTX 4090 (where the problem appears to have been fixed since): https://www.reddit.com/r/SteamVR/comments/118vlrl/fix_for_rtx_4090_and_vr_tracking_input_latency_lag/

On a Vive Pro 1 attached to my 7900 XTX, I can reduce perceived latency drastically by using the vsync_to_photons_increment debug option to set it to ~9.0ms.

PiMaker avatar Jul 22 '23 02:07 PiMaker