Quick answer: The engine tried to start on Direct3D 12, the player's GPU or driver could not create a D3D12 device, and there was nothing to fall back to. Cook DirectX 11 (SM5) shaders alongside SM6 so the engine can fall back, add a -dx11 launch option on Steam, and stop forcing -dx12. Players fix most cases by updating their GPU driver.
A small but steady share of players will hit this dialog the first time they launch a UE5 game, usually on older or integrated GPUs, out-of-date drivers or remote and virtual machines. They never reach your main menu, so all you see is a refund and a review. Here is what the message means, how to make the engine fall back instead of quitting, and what to tell players.
The exact error
The dialog appears before any of your game code runs:
DX12 is not supported on your system. Try running without the -dx12 or -d3d12 command line argument.
Despite the wording, most players who see it never typed -dx12. The message is shown whenever Direct3D 12 was chosen and could not start, and the engine had no other RHI it was allowed to use.
What causes it
- No D3D12-capable GPU, or one the driver does not expose. Older cards (roughly pre-2016), some laptop integrated GPUs and basic display adapters cannot create the D3D12 device UE5 asks for.
- An out-of-date driver or Windows build. SM6 shaders and the D3D12 Agility SDK that UE5 ships need a reasonably current driver and Windows 10 build. A fresh Windows install with the Microsoft Basic Display Adapter driver fails every time.
- Running on the wrong GPU. A laptop that starts the game on the integrated chip instead of the discrete one.
- Remote Desktop, virtual machines and cloud PCs that expose a software adapter.
- Your project only cooks DirectX 12 shaders. This is the part you control. If the Targeted RHIs list only contains SM6 for D3D12, there are no SM5 shaders in the package, so the engine cannot fall back to DirectX 11 and shows this dialog instead.
- A forced
-dx12in a Steam launch option, a desktop shortcut or a launcher you wrote.
Fix 1: give the engine something to fall back to
Open Project Settings > Platforms > Windows. Leave Default RHI on DirectX 12, but under Targeted RHIs enable DirectX 11 (SM5) as well as DirectX 12 (SM6). The same settings in Config/DefaultEngine.ini:
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
+D3D12TargetedShaderFormats=PCD3D_SM6
+D3D11TargetedShaderFormats=PCD3D_SM5
With SM5 shaders in the package, a machine that cannot start D3D12 gets the DirectX 11 renderer instead of an error. Cooking a second shader format makes the cook longer and the package somewhat larger, and on DX11 some features scale down: Nanite meshes draw their fallback meshes and hardware ray tracing is unavailable. That is a far better outcome than a game that does not start.
Repackage and confirm the file GlobalShaderCache-PCD3D_SM5.bin is inside your pak. If it is missing, players who end up on DX11 will see the “global shader cache file is missing” error instead.
Fix 2: add a DirectX 11 launch option
Give players a way out that does not involve editing files. In Steamworks, go to Installation > General Installation and add a second launch option that points at the same executable with the argument -dx11 and a description such as “Launch in DirectX 11 mode (older GPUs)”. Publish the change. Steam then asks players which mode to start in.
Check the first launch option at the same time. If anything in its arguments says -dx12 or -d3d12, remove it, because a forced RHI skips the fallback logic entirely. The same applies to launchers, batch files and shortcuts you ship.
Fix 3: what to tell players
Put these steps in your store page FAQ, pinned Steam discussion and support replies:
- Update the graphics driver from NVIDIA, AMD or Intel directly, not through Windows Update.
- Install pending Windows updates.
- On a laptop, set the game to use the high-performance GPU in Windows Settings > System > Display > Graphics.
- Start the game with
-dx11(Steam: right-click the game, Properties > General > Launch Options).
If the GPU genuinely has no D3D12 support and you did not ship SM5 shaders, nothing on the player side will help. That is why Fix 1 matters more than the rest.
How to confirm the fallback works
You do not need old hardware to test it. Launch your packaged build with -dx11 and open the log in %LOCALAPPDATA%\<Project>\Saved\Logs. You should see LogD3D11RHI lines rather than LogD3D12RHI, and the game should reach the main menu. Play a level and look for missing materials and effects that only exist on the SM6 path, such as anything that assumed Nanite or ray tracing.
Then remove -dx11 and check the default path still starts on DX12. If you have access to a machine with an old GPU, a cloud VM or a Remote Desktop session, launching there without arguments exercises the automatic fallback.
Watching the DX11 path after launch
The dialog itself fires before any game code runs, so no in-game tool can report it. What you can watch is the population that now launches on DirectX 11: a code path you almost never play yourself. Bugnet's Unreal SDK files fatal errors and ensures from inside the game with the GPU, OS, RAM and recent log lines attached, so if the DX11 renderer has its own crash, you see it grouped and counted by GPU instead of reading about it in reviews.
Related problems
- How to Fix “DXGI_ERROR_DEVICE_HUNG” Crashes in Unreal Engine Games
- What Does “GPU has crashed or D3D device removed” Mean? (and How to Fix It)
- How to Fix Your Game Running on the Wrong GPU (Integrated Instead of Dedicated)
- Unreal Engine Game Won't Launch on a Player's PC? How to Fix It
Frequently asked questions
What does “DX12 is not supported on your system” mean?
The game tried to start Unreal Engine on Direct3D 12 and the GPU or driver could not create a D3D12 device, and the engine had no other renderer it was allowed to fall back to.
How do I make an Unreal game fall back to DirectX 11?
Enable DirectX 11 (SM5) in Project Settings, Platforms, Windows, Targeted RHIs alongside DirectX 12 (SM6), then repackage so SM5 shaders are cooked. The engine can then use DX11 when D3D12 fails.
How can players launch an Unreal game in DirectX 11?
Add -dx11 to the launch options. On Steam, right-click the game, open Properties, General, Launch Options and type -dx11.
Will updating the graphics driver fix the DX12 error?
Often, yes. Out-of-date or generic display drivers are the most common cause. If the GPU has no Direct3D 12 support at all, only a DirectX 11 fallback in the game will help.
Ship SM5 shaders even if you never test DX11 yourself. The players who need them are the ones who would otherwise refund.