-
-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Very High Latency (vsync_to_photon issue?) #30
Comments
There is two ways to obtain vsync_to_photon, one using valve config: And one using vive config: Valve config is used by SteamVR by default, as it is also present for Valve Index, and OG Vive. Can you check, if value is different between vive config and valve config? It might be required to explicitly pass the value from vive config, instead of letting steamvr use valve config, but it is strange to me if those values are different between those configs for you. |
Also, do you use CoreCtrl for your GPU? On windows, SteamVR automatically updates GPU profile to VR for better performance and latency, but on Linux gpu always uses default profile, which will result in poor VR performance. |
For testing, you can try providing your own values, like I do provide framerate here: I haven't implemented reading this value from config on this branch, because I don't think it will work, but if values are different between configs for you - I will add this too. |
Apologies, but I'm not sure how to check whether these are different. Would these be saved into files somewhere?
Yeah, I know about this issue and the VR profile solution |
This doesn't seem to affect my FPS, more details mentioned in #27 |
As I mentioned that I'd send in the first message (I forgot earlier) Here are the reported Vsync to Photon latencies from the official driver from a SteamVR system report in Windows Here is the repoted Vsync to Photon latency from this Linux driver no matter what |
Go to crates/vive-hid/src/lib.rs Add this to the end of file: #[test]
fn test() -> Result<()> {
let dev = ViveDevice::open_first()?;
dbg!(dev.read_config()?);
let dev = SteamDevice::open_first()?;
dbg!(dev.read_config()?);
Ok(())
} Open terminal in crates/vive-hid directory cargo test -- --nocapture 2> configs.txt SteamVR uses timings from SteamDevice, but they should be equal to timings from ViveDevice (That's how it works for me) |
The So, they do match, but are lower than what I'd expect based on the SteamVR Reports from Windows After all, 0.00039 seconds is 0.39ms, which seems much too low given 90hz refreshes every 11ms and 120hz every 8ms, and no LCD is going to have 0.4ms response times |
Yep, that's not right. Values written on my device are much higher, and I don't observe this problem |
What are your values, and is there a way to test hardcoded values that equal yours to see if this solves the issue for me, before a proper solution is found? |
I have updated my PR. For me, seconds_from_vsync_tp_photons written in device config is 0.011111111111111112, so it just works. |
I wonder if there's something more going on here, based on how quickly the application is rendering. In the SteamVR void, these values seemed nearly correct, but as I got into Beat Saber, and much more so as I got into a level, especially at higher resolutions, latency and shakiness came back. Maybe the value is dynamic and only the initial value is reported by the SteamVR Report? It's an improvement, and at lower resolutions felt nearly right, but off enough that I couldn't properly play since there was some small shakiness from things still not quite being synced to my head. Another reason that this might somehow be dynamic is that this is kind of what adjusting the vsync_to_photon latency manually using debug commands lead to (sometimes being able to get it right for a short while, before becoming wrong again) |
Also, please try with non-120Hz mode, as there is something fishy with it in your case. |
I'm experiencing high latency with my head movements (it's not particularly noticeable when I move my controllers, though it's probably still present, but it's super obvious just looking side to side or when my head shakes from movement in Beat Saber).
I did a SteamVR system report and saw something like 0.0004 vsync_to_photon latency reported, where the official driver was between 0.008 and 0.014 (approximately, I'll edit this once I can check again, but it was between 8ms and 14ms).
I think that this explains the latency, as if I use the debug menu to increment this value, the latency disappears. The problem is accuracy. I've had this debug menu method work perfectly once or twice, but other times, I just can't get it feeling right ever, and if I overshoot, things begin to feel jittery, either of which (too high latency or the jitter) makes me nauseous.
I will share the headset sections of these reports in a few hours to help with debugging.
Is this a known issue, and are there any ideas for fixes?
RX 6800, Fedora 39
The text was updated successfully, but these errors were encountered: