(I'm not good with names)
As of writing, both the SteamVR and WMR OpenXR runtimes have a few significant issues / missing features. WMR does not provide any OpenGL / Vulkan extensions and SteamVR on Linux is essentially broken.
WMR's issues can be fixed through the use of SteamVR.
This existing layer also attempts to fix SteamVR's GLX support and may be more performant (but has some stability issues).
When the application creates an OpenGL session, the layer creates a Vulkan session and uses external memory extensions to share swapchain images between the apis.
This adds the extra overhead of creating a second swapchain to expose to the application, and one draw call in xrReleaseSwapchainImage
to copy and transfrom the image into the OpenXR swapchain.
There are some notable areas that can be improved. Mainly using an interop semephore instead of a glFinish
call and passing a fence to an async thread instead of a vkQueueWaitIdle
call.
- General system wide deadlocks caused by SteamVR
- SteamVR's overall worse performance compared to Monado
- ValveSoftware/SteamVR-for-Linux#422
^ Is it possible to fix this by calling xrDestroyInstance in its own thread? - ValveSoftware/SteamVR-for-Linux#461
- ValveSoftware/SteamVR-for-Linux#479
- Install the Rust toolchain
- Clone this repository
- Install with
cargo run --release
- Uninstall with
cargo run --release uninstall
- OpenGL Frontend
- Vulkan Backend
- Linux Installer
- Correctly handle sRGB formats
- Investigate improving performance
- D3D11 Backend
- Vulkan Frontend
- Windows Installer
- FSR / NIS
- Attempt to deal with other runtime bugs