Hi, I’m trying to play games that have a vr mode with my valve index, without using steam.
I have Steam and SteamVR for linux installed on my system, bug the games I want to launch in vr aren’t in my Steam library, I can’t start them with Steam directly (it says : Launching, then it stop a few second after), but it works with lutris using system Wine (5.18) or Proton (5.13) that I added to lutris.
I know vrchat from steam wich is a windows only game start with proton in vr mode without issue, so I think it should be possible and I have everything I need to start my game in vr using proton.
I saw a git repo with a custom openvr library that forward the openvr call from wine to the native linux steam vr here : https:// gitlab[dot]com/roothorick/WineOpenVR
When I launch a game with a vr mode with lutris, it launch it in normal mode and says : “no vr equipment detected, starting in pc mode”, and I have these line in the logs :
[...]
info: OpenVR
warn: OpenVR: Failed to locate module
[...]
XR: OpenVR Error! OpenVR failed initialization with error code VRInitError_Init_PathRegistryNotFound: "Installation path could not be located (110)"!
[...]
I have these with proton runner or system runner (lutris runner don’t start the game).
Do steam add more library when launching a game in vr mode that the one included with proton ?
How can I add it to my wine installation/proton runner ?
Thanks in advance,
Flutter
[Edit]
So, a little update
I successfully builded WineOpenVR last night and integrated it to my wine installation.
What I need to do is :
git clone --recurse-submodules https://github.com/roothorick/WineOpenVR.git
Then I downloaded openvr from here : https://github.com/ValveSoftware/openvr/archive/v1.0.13.tar.gz and extracted it to the openvr folder that was in the git I cloned before.
then, I typed Make to build it, and I copied the files in bin32 to /usr/lib/wine/ and the files in bin64 to /usr/lib64/wine.
Now, when I run a vr game with the method recommended in the github repo, and if I have steamvr launched in linux, I have the message in the headset : “now starting Wine” forever.
So the communication between wine and steamvr seems to work, but I have new error now :
One of the games started with this :
[...]
WOVR trace: uint32_t WOVR_InitInternal2(vr::EVRInitError*, vr::EVRApplicationType, const char*)
WOVR trace: void* WOVR_GetGenericInterface(const char*, vr::EVRInitError*) IVRSystem_019
WOVR trace: virtual void proxy_IVRSystem_019::GetDXGIOutputInfo(int32_t*)
################################################################################
WOVR ERROR: void ID3DProxy::GetDXGIOutputInfo(int32_t*) stub!
################################################################################
WOVR trace: void WOVR_ShutdownInternal()
[...]
And every other vr game have the following logs
[...]
WOVR trace: uint32_t WOVR_InitInternal2(vr::EVRInitError*, vr::EVRApplicationType, const char*)
WOVR trace: void* WOVR_GetGenericInterface(const char*, vr::EVRInitError*) IVRSystem_019
WOVR trace: void* WOVR_GetGenericInterface(const char*, vr::EVRInitError*) IVRChaperone_003
WOVR trace: const char* WOVR_GetVRInitErrorAsEnglishDescription(vr::EVRInitError)
WOVR trace: const char* WOVR_GetVRInitErrorAsSymbol(vr::EVRInitError)
WOVR trace: void* WOVR_GetGenericInterface(const char*, vr::EVRInitError*) IVRChaperoneSetup_005
WOVR trace: const char* WOVR_GetVRInitErrorAsEnglishDescription(vr::EVRInitError)
WOVR trace: const char* WOVR_GetVRInitErrorAsSymbol(vr::EVRInitError)
WOVR trace: void* WOVR_GetGenericInterface(const char*, vr::EVRInitError*) IVRCompositor_022
WOVR trace: const char* WOVR_GetVRInitErrorAsEnglishDescription(vr::EVRInitError)
WOVR trace: const char* WOVR_GetVRInitErrorAsSymbol(vr::EVRInitError)
WOVR trace: uint32_t WOVR_InitInternal2(vr::EVRInitError*, vr::EVRApplicationType, const char*)
WOVR trace: void* WOVR_GetGenericInterface(const char*, vr::EVRInitError*) IVRSystem_019
WOVR trace: void* WOVR_GetGenericInterface(const char*, vr::EVRInitError*) IVRChaperone_003
WOVR trace: const char* WOVR_GetVRInitErrorAsEnglishDescription(vr::EVRInitError)
WOVR trace: const char* WOVR_GetVRInitErrorAsSymbol(vr::EVRInitError)
WOVR trace: void* WOVR_GetGenericInterface(const char*, vr::EVRInitError*) IVRChaperoneSetup_005
WOVR trace: const char* WOVR_GetVRInitErrorAsEnglishDescription(vr::EVRInitError)
WOVR trace: const char* WOVR_GetVRInitErrorAsSymbol(vr::EVRInitError)
WOVR trace: void* WOVR_GetGenericInterface(const char*, vr::EVRInitError*) IVRCompositor_022
WOVR trace: const char* WOVR_GetVRInitErrorAsEnglishDescription(vr::EVRInitError)
WOVR trace: const char* WOVR_GetVRInitErrorAsSymbol(vr::EVRInitError)
[...]
Guess I’m going to search how to avoid these new error now.
Flutter~