Agreed, proton now simply fails to launch the vast majority of VR games properly, I've gotten Moss and Half Life 2 VR to work, but Half Life 2 VR's controls are completely broken.
In order to eliminate as many variables as possible, I wrote a couple of test programs using the OpenVR and OpenXR APIs which simply initialize the API, wait 10 seconds, and then shut down:
openvr_test.cpp.txt
openxr_test.cpp.txt
Edit: adding logs
OpenVR log (400M): steam-11463073133859176448.log.gz
OpenXR log (600M): steam-10877733739262115840.log.gz
Tested with several Proton versions.
All used Steam beta client 1699401499 and SteamVR beta 2.1.1.
| Beat Saber | The Lab | OpenVR test | OpenXR test | SCP:SL | VRChat | vrcmd.exe | |
|---|---|---|---|---|---|---|---|
| AppID | 620980 | 450390 | 11463073133859176448 | 10877733739262115840 | 700330 | 438100 | 11877923831706288128 |
| Proton experimental-8.0-20231107 | Fails as initial report | Fails as initial report | Works | Fails as initial report | Fails as initial report | Fails as initial report | Fails as initial report |
| Proton 8.0-4c | Fails as initial report | Fails as initial report | Works | Fails as initial report | Fails as initial report | Fails as initial report | Fails as initial report |
| Proton 8.0-4c try 2 | Fails as initial report | Fails as initial report | Works | Fails as initial report | Fails as initial report | Fails as initial report | Fails as initial report |
| local 8.0-1c | Hangs at the stack overflow | Fails as initial report | Works | Fails as initial report | Fails as initial report | Hangs at the stack overflow | Fails as initial report |
| Proton 7.0-6e | Works | Works | Works | Works | Unity crash | Unity crash | "Don’t recognize interface name" |
| Proton 7.0-6e try 2 | Works | Works | Works | Works | Crash if HMD moved | Works | "Don’t recognize interface name" |
| local 7.0-6e | Works | Works | Works | Works | Crash if HMD moved | Works | "Don’t recognize interface name" |
Both games which had Unity crashes in Proton 7.0-6 launch fine in non-VR mode with Proton 8.0-4 and Experimental, and still fail in non-VR mode with 7.0-6, so I believe the 7.0-6 failures are unrelated and/or fixed in later Proton versions.
Beat Saber is on the "beta" legacy1.29.1_unity_ver2019.4.28f1 branch, so maybe this Unity version isn't affected.
Edit 2023-11-09: Added second attempts for 8.0-4c and 7.0-6e, a local build of 7.0-6e, and a local build of 8.0-1c.
I'm having the same issue, where OpenXR-based VR works in Proton 7.0-6 but not in Proton 8.0-1 or later.
I've only tested with VRChat (issue started when they switched to Unity 2022, I believe this is as unity2022 started doing some OpenXR stuff rather than OpenVR only) and No Man's Sky, but they both have the same characteristic printing to the Proton log: VR state wait timeout (retrying).
I've attempted to bisect Proton between those tags but haven't been able to do so due to build issues. The diff (incl submodules) is 3176468 lines so it's impractical for me to dig further.
prime-run: this is as my standard setup is Hyprland running on my iGPU and games run on my dGPU. However, I assure you that the issue in question still appears when I use the nvidia card as the primary GPU and run everything without PRIME.LogOutput.log
I think I'm having the same issue, in particular when trying to run Lethal Company with the VR mod. Attached is my most recent logs from an attempt just moments ago. Is there any version of Unity's OpenXR plugin that works with the latest SteamVR / beta, and with Proton 8? I might fork the VR mod myself if changing the version of OpenXR plugin used by the mod can get it to work.
Tried the test programs again with new versions of everything.
Client: Steam Beta Client 1706155871
SteamVR: beta Version 2.3.4 (1706131326)
Graphics: nvidia 545.29.06
Kernel: 6.6.9-arch1-1
Results are the same as all other Proton 8 experiments with the following Proton installations.
Proton 8.0-5c
Proton: 1705700124 proton-8.0-5c
SteamGameId: 10877733739262115840
Command: ['/mnt/win/Users/Peter/Downloads/vrtest/oxr_test/main.exe']
Options: {'forcelgadd'}
depot: 0.20231211.70175
pressure-vessel: 0.20231208.0 scout
scripts: 0.20231208.0
sniper: 0.20231211.70175 sniper 0.20231211.70175
Kernel: Linux 6.6.9-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 02 Jan 2024 02:28:28 +0000 x86_64
Language: LC_ALL None, LC_MESSAGES None, LC_CTYPE None
Effective WINEDEBUG: +timestamp,+pid,+tid,+seh,+unwind,+threadname,+debugstr,+loaddll,+mscoree
Proton Experimental 8.0-20240111c
Proton: 1705004294 experimental-8.0-20240111c
SteamGameId: 10877733739262115840
Command: ['/mnt/win/Users/Peter/Downloads/vrtest/oxr_test/main.exe']
Options: {'forcelgadd'}
depot: 0.20231211.70175
pressure-vessel: 0.20231208.0 scout
scripts: 0.20231208.0
sniper: 0.20231211.70175 sniper 0.20231211.70175
Kernel: Linux 6.6.9-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 02 Jan 2024 02:28:28 +0000 x86_64
Language: LC_ALL None, LC_MESSAGES None, LC_CTYPE None
User settings WINEDEBUG: +timestamp,+pid,+tid,+seh,+unwind,+threadname,+debugstr,+loaddll,+mscoree,+vrclient
Effective WINEDEBUG: +timestamp,+pid,+tid,+seh,+unwind,+threadname,+debugstr,+loaddll,+mscoree,+vrclient
Replying to https://github.com/ValveSoftware/Proton/issues/7228#issuecomment-1911214557
I suspect this might be a different issue. In the log you provided, the game seems to at least get past the OpenXR initialization; on lines 26+, I see Initialized OpenXR Runtime, and then it successfully requests the OpenXR version: OpenXR runtime being used: SteamVR/OpenXR (2.3.4). Just based on the errors, it seems like something related to input rather than the initial setup.
Looking at the mod's code, I think this is the line equivalent to my test program:
https://github.com/DaXcess/LCVR/blob/f16127bb49aa947556c362d19379250c08ca122a/LCVR/Plugin.cs#L313
@terminal-case, could you set the game's launch options to PROTON_LOG=1 %command% and check the resulting steam-<numbers>.log in your home dir? If you see "VR state wait timeout" after a while, then it's probably the same, but if not, you might have better luck opening a new issue.
I suspect this may be some bug in Nvidia driver so I opened an issue on their forums. https://forums.developer.nvidia.com/t/entire-graphics-stack-crashes-when-opening-a-steamvr-application-through-proton-compatiblity-layer-that-targets-openxr-rtx-3060-550-76-cuda-12-4/291155
I was recently making a patch for Proton 8.26 and noticed that a stack overflow happened in libopenxr_loader.so every time I tried to open an OpenXR application in Proton. The exact error message for me was free(): invalid pointer followed by a log spam related to stack unwinding and eventually a stack overflow. My workaround was to compile libopenxr_loaded.so without optimizations. This may or may not be related, but sounds very similar to the stack overflow problem described in this issue.
proton 8.26x1 2024-11proton experimentalx3 2024-01proton 8.0-5cx1 2024-01proton 7.0-6x2 2023-12proton 8.0-1x1 2023-12proton 8.0-4x2 2023-11proton 7.0-6ex1 2023-11proton 8.0-4cx1 2023-11PROTON_LOG=1x1 2024-01WINEDEBUGx2 2024-01
Compatibility Report
vrcmd.exe --spamhapticsfrom Windows SteamVR install (every non-native VR application I tried)System Information
I confirm:
Symptoms
libopenxr_loader.so.1 + 0x2a91d.warn: VR state wait timeout (retrying)repeated each second until the game is killed.Also note that native VR applications (tested Half-Life: Alyx [546560] and native
vrcmd), non-VR Proton games (tested Terraria [105600] and Submachine: Legacy [1564790]), and Proton games which can launch with or without VR (tested Beat Saber, VRChat and SCP: Secret Laboratory, all with SteamVR closed) all work as expected.Reproduction
--spamhaptics.Logs
Collected with
"WINEDEBUG": "+timestamp,+pid,+tid,+seh,+unwind,+threadname,+debugstr,+loaddll,+mscoree,+vrclient"in user_settings.py (added+vrclient, otherwise unmodified from user_settings.sample.py).Warning, each Proton log extracts to ~600MB.
Beat Saber: steam-620980.log.gz
SCP: Secret Laboratory: steam-700330.log.gz
VRChat: steam-438100.log.gz
vrcmd.exe: steam-11877923831706288128.log.gz