Don't set location of OpenXR runtime with the registry, use OpenXR Loader Specs instead

The end user is not supposed changing the registry, it is much simpler than this

In order to configure which OpenXR driver you’re using for any OpenXR application:

  • WMR portal notifies you with a Fix It” button if it is not the current OXR driver.

  • SteamVR Settings > Developer > Set SteamVR as OpenXR Runtime button
    displays if it is not the current OXR driver, otherwise it shows this:

steamvr_openxr
.


@Jummivana In reference to:
https://forums.flightsimulator.com/t/known-issues-list-updated-11-12-2020/304711

Known Issues

  • 2 Type in “regedit” (without quotations) and hit Enter. This will launch the Registry Editor.
  • 3 Locate the following key: HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenXR\1

It seems only the Oculus implementation is forcing the user to edit the registry, however I’d suggest you review the official OpenXR SDK Loader documentation

In other words, OpenXR runtime supports an environment variable specifically designed for trying out different drivers. Here is:

5.1.4. Overriding the Default Runtime Usage

There may be times that a developer wishes to ignore the standard runtime discovery process and force the loader to use a specific runtime. This could be for many reasons including:

  • Forcing on a Beta runtime
  • Replacing a problematic runtime in favor of another

In order to support this, the loader can be forced to look at specific runtime with the XR_RUNTIME_JSON environment variable. In order to use the setting, simply set it to the full global path location of the desired runtime manifest file.

Important

If the “XR_RUNTIME_JSON” variable is defined, then the loader will not look in the standard location for the active runtime. Instead, the loader will only utilize the filename defined in the environment variable.

Example 9. Setting XR_RUNTIME_JSON Override

Windows
set XR_RUNTIME_JSON=\windows\system32\steam_runtime.json

Linux
export XR_RUNTIME_JSON=/home/user/.local/share/openxr/runtime.d/steam_runtime.json

Last but not least, the example you’re giving might be wrong for SteamVR.

For example I’ve moved my SteamVR installation to the SteamLibrary which is not in C:. In my case it is:
XR_RUNTIME_JSON = D:\SteamLibrary\steamapps\common\SteamVR

5 Likes

Thanks for the info.

This would be an easy and fast way to change between my Rift S and my “about-to-come” Reverb G2 :+1:t3:

1 Like

I don’t see any advantages on using and environment variable instead of changing the registry

In my opinion:

  • The main advantage is preventing people from ruining their registry.
  • The 2nd advantage is using the OpenXR own native means, for doing exactly what was the registry editing workaround provided for.
  • The 3rd advantage is when OpenXR decides implementing another way, they shall support backward compatibility with the Environement Variable
  • The 4th advantage is that you can easy set this for all users or just you.

There are certainly other advantages and as many disadvantages but one thing for sure: OpenXR has a specification for overriding the driver you’re using and this uses the Environment Variable, not the registry, per their official docs.

1 Like

I’ve forgotten to add the most important point maybe to it all:

No matter what registry setting you tell any customer to change, the environment variable has precedence.

This will certainly save some support headache to just tell customers using the environment variable instead of the registry, otherwise you might be trying for weeks and never understand why the registry setting is not picking up…

I have a question regarding this env variable setup.
Once the env variable is set do we have to reboot our machine for it to take effect ?

I don’t think so but if it fails on you just let us know :wink:

1 Like

I am hoping you can help me out with this as you are clearly more tech savvy than I am. I just switched from Game Pass MSFS to the Steam version. I am still using my Reverb G1. Do I need to make any changes to the reg? My current runtime shows the mixedreality.json

Disclaimer: I am waiting on the devs to re-activate me for Steam from Game pass so I have temporarily lost VR access

You can configure which OpenXR driver to use for all OpenXR application easily:

As for using WMR or SteamVR OpenXR, this doesn’t depend on where you’ve purchased the simulator, only what headset you’re using. You can for example redirect the Reverb G1/G2 from using WMR OpenXR and using SteamVR OpenXR instead, whether you’re using the MS Store or Steam version of FS2020.

When you’re using a WMR HMD on SteamVR with an application using Valve OpenVR API, it is using SteamVR as the API and WMR as the driver for the headset. In order to bridge the two, you’d need to also install WMR for SteamVR in Steam Client. If you’re using an OpenXR application though, it will use the configured driver (see below). Here there are two options available:

  • App -> OpenXR API -> WMR OpenXR driver -> Reverb.
  • App -> OpenXR API -> SteamVR OpenXR Driver -> WMR for SteamVR -> Reverb

The former is the “normal” path with the Reverb G2 as-is. The later is what you could do should you want to use the SteamVR features like a finer control on some VR settings and using overlays like fpsVr.

2 Likes

Thanks @CptLucky8 for all the helpful posts!
If someone already has SteamVR & WMR plugin, It looks like we can just set the OpenXR runtime in (Steam VR > Settings > Developer menu), instead of the Registry or command prompt?
There is a button to “Set SteamVR as OpenXR Runtime.”
I could be wrong tho… but wanted to try FS on SteamVR also.

Update: Thanks, yep it works with my G1. Like you said in another post, if SteamVR and WMR are open FS crashed. But with only FS running I started SteamVR fine. And FPSVR also works which is nice to have in view.

1 Like

Good idea, thank you for sharing, and for your kind words!

I’m sure this is directly changing the OpenXR registry entry which is fine in most cases.

I am trying to recreate this with my Reverb as well: So you start MSFS, load into VR, and then load steamvr and the game stays open?

Yeah, I started MSFS running by itself, (no WMR running either), started a flight, loaded into VR and SteamVR will start by itself. It worked a few times, then I tried changing some of the settings including the HAGS. Then I turned the Win10 HAGS setting OFF again and I could load into VR.
Wanted to try some settings in SteamVR settings, but I think since I have the store version of MSFS, STeamVR doesn’t recognize it for “application settings”. I tried starting MSFS first also, but for now its running, looking more aliased to me, but smooth.

1 Like

Wow look at all those dropped frames and spikes !!

1 Like

I’ve posted a lot of details about this here:
[BUG REPORT] FS2020 VR frame timing is lagging and causing stutters - VR Closed Beta / Hardware & Performance - Microsoft Flight Simulator Forums

1 Like

When doing my tests, changing the SteamVR SS, what I do is:

  • in VR mode, open SteamVR setting (HMD or desktop)
  • change SS value
  • CTRL+TAB to return to 2D
  • Close SteamVR
  • Wait a few seconds it shuts down
  • CTRL+TAB again to get back in VR.

This is no bullet proof but it is the closest I’ve found to prevent most CTDs.

PS: I agree it doesn’t appear in SteamVR settings because it is a MSFT app. You have to change the settings while in VR mode. However you can manually edit the SteamVR config file:

C:\Program Files (x86)\Steam\config\steamvr.vrsettings

The entry should look like this:

   "system.generated.flightsimulator.exe" : {
      "disableAsync" : false,
      "motionSmoothingOverride" : 2,
      "resolutionScale" : 150
   },
1 Like

@N432BC

There is a new WMR for SteamVR beta:

Windows Mixed Reality for SteamVR Beta has been updated to build 1.2.485. This build contains the following changes:

*** Added support for submitting frames rendered against alternate poses.**

I’m wondering whether this could give better frame timing with FS2020.

[update] here what this is about:

https://www.reddit.com/r/WindowsMR/comments/kapdm1/windows_mixed_reality_for_steamvr_beta_updated/

Basically what happens is every frame the system tells the running title where the HMD is (a pose) with the expectation that the game will render using that pose. In some scenarios, the title can’t do this for some reason. A good example is the GTA V R.E.A.L. mod, where it only renders a single eye per frame and tries to re-use the prior frame’s pose for the other eye. If we were to take those frames as-is, it wouldn’t match what was expected by the system and you’d likely end up feeling cross-eyed or that the world was swimmy.

Before now, our SteamVR integration didn’t support this, and so applications that tried to do this caused errors. Now we’ve completed the work to make sure we can take those additional poses and transform the image slightly to more closely match the pose we were expecting, so things should generally work fine now.

It’s worth noting that very few titles actually do this, but now we offer the option for titles that have no choice.

1 Like

Thanks, I hope the new beta helps some people, I tried it last night. I’m still thinking the WMR is looking better to me. But I wanted to just see “if it works”, and see FPSVR again. However changing the runtime to steamvr runtime in developer settings works, I also tried setting it via cmd, but it didn’t take for some reason. I also tried cmd as admin with:
set XR_RUNTIME_JSON = E:\Steam\steamapps\common\SteamVR\steamxr_win64.json
My steam is on my E, but it still just started wmr. Oh well, it was fun anyway.
I hope you get good results with all your work on that frame time bug report.

I’m running native msfs 2020 and not having the problems you guys with steam vr are having not that native isn’t having issues too. I’m wondering if you could get a refund from steam and buy direct from ms?
I’m running 40 frames with no visible stutters except when on or near the runway and even then they are not bad. For my experience I doubt anyone will complain about vr when its released if they have the same experience I’m getting. I’m not getting crashes or anything like that. For the most part it runs smooth as butter and I feel my settings are high compared to the average person, I could lower a bit and eliminate the stutters all together and not really lose any quality of the visuals. Do I wish I could crank everything up to maximum , yes but that will not happen for a year or two and my oculus s is not capable of seeing any thing better even with higher settings. Should Ms stop working on the other updates and concentrate on vr for the next two weeks, absolutely. Controllers should work on the release but doesn’t look like that will happen. Are sim people hoping to get their hands on vr even if its still in beta mode on release day, absolutely. I have loved everyday that I’ve been using it. For me its been absolutely amazing ever since I got VR.
I9, 2080ti, 64g, oculus s. I have a reverb 2 sitting under the tree and I’m guessing it would put some stress on the system with its higher resolution. I would definitely try to get a refund and buy native msfs if you can.

Ok, I think that is the difference for us… when I launch VR, WMR starts for me, not SteamVR. Are you using the HP Reverb or a different headset?