OPENXR

  • Sorry, we do not support OpenXR directly as OpenXR itself doesn't support Vulkan currently.

    Hi admin! I'd like to put a little correction on that for anybody else who might right this in the future.

    OpenXR does support Vulkan, and it has since the very beginning.

    Developers may use the XR_KHR_vulkan_enable family of core extensions to enable Vulkan in their application, as described here.

    There is also a complete example of OpenXR+Vulkan application: hello_xr.

    There are multiple OpenXR applications commercially available using OpenXR+Vulkan.

    BeamNG.drive, Abobe Substance Modeler and X-Plane 12 all use Vulkan for rendering and OpenXR to access the VR headset.

    One thing that has been a challenge in the past was certain OpenXR implementations not supporting the Vulkan extensions. You can see a full list of OpenXR runtimes extensions support here. Here is a screenshot of the Vulkan support matrix:

    (Note that certain of these devices/runtimes are not PCVR, however you can spot many of the "big players": Oculus, Virtual Desktop, Varjo, and most importantly SteamVR).

    The big absent is Windows Mixed Reality, which does not have support in their native OpenXR runtime. However there are still 3 options to use Vulkan on this platform (and more generally, in a universal way):

    - Use SteamVR OpenXR - this runtime is compatible with every VR headset on the market, and offers Vulkan out of the box.

    - Use mbucchia/OpenXR-Vk-D3D12: OpenXR API layer to run Vulkan applications with OpenXR runtimes that have support for Direct3D 12, a small program that will extend the Windows Mixed Reality OpenXR runtime with Vulkan support.

    - Implement a Vulkan -> D3D submission bridge (this is what X-Plane 12 does). One can reuse the code from OpenXR-Vk-D3D12 above.


    So in a nutshell: OpenXR supports Vulkan no problem. There are applications demonstrating it, and the small caveat of Windows Mixed Reality support is easily addressed.

    I hope this helps.

    Edited once, last by mbucchia (November 14, 2023 at 10:00 PM).

  • Thank you for your detailed posting.

    You are correct of course, OpenXR by itself has always supported Vulkan through the mentioned extension.

    I was specifically referring to the Windows operating system and Windows mixed reality not having Vulkan support which caused us not to invest time into OpenXR. It would have been nice to be able to use OpenXR on all platforms with no special 'extra code', like you can do with SteamVR.

    I should have explained that in more detail in the first place to avoid confusion.

    So to understand what your library does: On Windows with mixed reality you basically create an OpenXR context with D3D12 support and then convert the Vulkan/OpenGL images to the D3D12 images and handle them over to OpenXR?

  • Great, I'm glad we can clear out the statement from the original post!

    The situation with WMR is a bit inconvenient, however as mentioned you can always use SteamVR OpenXR, which will work with WMR. I believe the applications I mentioned all have a note somewhere in their release saying: "if you are on WMR, make sure you selected SteamVR OpenXR".

    Re: OpenXR-Vk-D3D12, it does pretty much what you understood. To be clear though, there is no real "conversion" process for the images, it's a simple memory mapping, so there is zero performance overhead (no copy, no blitting).

    I believe the BeamNG.drive developer has a note on their release page recommending to install this program. But alternatively, you could also embed it as an "implicit OpenXR API layer" into the app. It would kick in only on WMR and otherwise the Vulkan support for the underlying OpenXR runtime would be used when possible.

  • Its it possible to use Openxr and bypass steamvr completely. Virtual Desktop now has that option (vdxr) but It does not appear FS4 supports that?

    Thanks

    I think it's important to note that Virtual Desktop (for wireless PCVR streaming, with most standalone headsets like Quest, Pico, and Vive XR Elite) only very recently introduced it's version of OpenXR because it preciously was forced to use the SteamVR version (since VD does not have access to the official Oculus runtime) with msfs2020 (which requires OpenXR to run) and there was a pretty large performance penalty for doing this. So now, the performance is about the same for Quest headset users, like myself, as just using Air Link together with the official Oculus OpenXR runtime (both which are free). All a bit of smoke and mirrors, lol!

    In any case, Aerofly FS2 and FS4 are miles easier to run on any decent PC, so I doubt that OpenXR would do much for most users imho.

    i9 13900K water cooled, RTX4090, Z790 MB w/wifi6e, 32Gb 6400 ram, 2x2TB SSD, 1000W PSU, Win 11, QPro w/Air Link, Vive Pro