DirectX 12 game crash with SteamVR. (UE 4.22)

There is a bug when running packaged game with -dx12 and running SteamVR via HTC Vive or using SteamVR override with oculus rift (forcing oculus to run in SteamVR mode instead of Oculus). The game either crashes or freezes. I have tested this on 2 of my machines and had 3 other people test with the same result. We tested on (2x GTX 1070, GTX 1080, RTX 2080, and unknown machine from SteamVR support. I also have submitted this bug to Unreal support, but they were not able to reproduce the bug, they used GTX 980.

I am not sure if this bug is 10 and 20 series GPU issue, but that is the only difference I could find in our setup. I also tried the same Nvidia driver version as Epic support.

If any of you could test this and let us know if it crashes or not, and what GPU is used that would be very helpful.
Also, if you get a crash, paste in the callstack as mine stopped crashing and now only freezes for whatever reason. I remember it was very vague.

When it works:

  • Not running in -dx12 mode works. (dx11)

  • Running -dx12 with just Oculus works.


How to reproduce the bug:

  • Step 1: Create VR Template project.

  • Step 2: For Oculus Users (Vive/Index users skip to Step 3). Locate ‘DefaultEngine.ini’ In Config Folder of your project and add these lines to override priority for Oculus to start in SteamVR:

    [HMDPluginPriority]

    SteamVR=50

    WindowsMixedRealityHMD=40

    OpenXRHMD=30

    OculusHMD=20

  • Step 3: Go to project settings and enable ‘Start In VR

  • Step 4: Package the game.

  • Step 5: Go to the packaged folder and locate the game executable, create a shortcut and add to target line “-dx12


If done correctly, SteamVR should start automatically. If it didn’t add to the target line of the shortcut “-vr

Expected results are it either crashes or freezes, but in VR you will see a SteamVR loading screen/space.

Thank you!

(For Oculus Users)

How to package.

How target should look like.

It freezes for me on a 1070ti in dx12, works in dx11.

Running with no command line flags works. Running with the -dx12 flag game crashes less than a second after the level loads. Using 2080ti.

End of log, including callstack, here

Freezes for me on a 1080 in dx12, no problem dx11.

Thanks all!

I’ve reported this as Unreal Engine Issues and Bug Tracker (UE-78362)

The bug report on the issue tracker has been updated with these “Developer Notes”:

SteamVR is currently not expected to work with anything other than d3d11

That’s disappointing, sounds like they won’t fix it.

Yeah, that is disappointing. Our game runs better in dx12 but I can only run it through Oculus. Wish they stated SteamVR and DX12 is not supported.

I’ve got a pull request fixing this here:

https://github.com/EpicGames/UnrealEngine/pull/6183