Why is Unreal Engine 4.19.2 not backwards compatible with Direct X 12 per default? (Windows 10)

I am really interested to know, why the Unreal Engine isn’t backwards compatible with Direct X 12 per default on Windows 10!

After one of the forced Windows updates I am having Direct X 12.

As Microsoft said, it’s backwards compatible. So progr. or games needing Direct X 11 should run without problems.
(And everything else is working fine per default)

BUT:
When I start the Unreal Engine from Epic launcher I get:

Fatal error: [File:D:\Build++UE4+Release-4.19+Compile\Sync\Engine\Source\Runtime\Windows\D3D11RHI\Private\D3D11Util.cpp] [Line: 233] Result failed at D:\Build++UE4+Release-4.19+Compile\Sync\Engine\Source\Runtime\Windows\D3D11RHI\Private\D3D11Viewport.cpp:303 with error 8876017C

**Only solution:

I have to make a shortcut on desktop (from UE4Editor.exe) and force the Unreal Engine to use Direct X 12 by adding:**

D:\UnrealEngineFull\UE_4.19\Engine\Binaries\Win64\UE4Editor.exe -dx12

After that UE uses DirectX 12 and starts without crash!

UE4 is primarily designed to work with DirectX 11, there may be something to do with your hardware where it causes a crash with that where it doesn’t with DX12. Does your hardware meet the minimum system requirements for UE4?

Sure!

Acer Predator Laptop 17"
i7 - 16 GB RAM
Windows 10 64 bit
GTX 970 M 6 GB
Drivers and Windows up to date

Unreal Engine use DirectX 11 per default, but Windows 10 is now updated to DirectX 12.
By starting from epic launcher, the downgrading doesn’t work I guess?!

So the Unreal Engine just crashs with the error mentioned and after forcing to Direct X 12 no crash during start.

So my system requirements are not the problem, also not outdated driver.
I tried google and some people get the same error, but no official solution was posted.

Like here:
https://answers.unrealengine.com/que…ml?sort=oldest

If I try to launch via epic launcher:

Fatal error: [File:D:\Build++UE4+Release-4.19+Compile\Sync\Engine\Source\Runtime\Windows\D3D11RHI\Private\D3D11Util.cpp] [Line: 233] Result failed at D:\Build++UE4+Release-4.19+Compile\Sync\Engine\Source\Runtime\Windows\D3D11RHI\Private\D3D11Viewport.cpp:303 with error 8876017C

UE4Editor_Core!FDebug::AssertFailed() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:419]
UE4Editor_D3D11RHI!VerifyD3D11Result() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\windows\d3d11rhi\private\d3d11util.cpp:233]
UE4Editor_D3D11RHI!FD3D11Viewport::PresentChecked() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\windows\d3d11rhi\private\d3d11viewport.cpp:303]
UE4Editor_D3D11RHI!FD3D11Viewport::Present() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\windows\d3d11rhi\private\d3d11viewport.cpp:486]
UE4Editor_D3D11RHI!FD3D11DynamicRHI::RHIEndDrawingViewport() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\windows\d3d11rhi\private\d3d11viewport.cpp:607]
UE4Editor_RHI!FRHICommandList::EndDrawingViewport() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\rhi\private\rhicommandlist.cpp:1638]
UE4Editor_SlateRHIRenderer!FSlateRHIRenderer::DrawWindow_RenderThread() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\slaterhirenderer\private\slaterhirenderer.cpp:898]
UE4Editor_SlateRHIRenderer!TGraphTask<TEnqueueUniqueRenderCommandType<FSlateRHIRenderer::DrawWindows_Private'::29’::SlateDrawWindowsCommandName,<lambda_43e86ee7c51f39979e9a39d40b280024> > >::ExecuteTask() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\async askgraphinterfaces.h:829]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async askgraph.cpp:665]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async askgraph.cpp:574]
UE4Editor_RenderCore!RenderingThreadMain() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\rendercore\private\renderingthread.cpp:331]
UE4Editor_RenderCore!FRenderingThread::Run() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\rendercore\private\renderingthread.cpp:465]
UE4Editor_Core!FRunnableThreadWin::Run() [d:\build++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\windows\windowsrunnablethread.cpp:76]

Can’t be the problem, that I have installed Unreal Engine on drive D: and not C:?
Because I see the other person with same problem also installed on Drive D:

Also everything else and every other game using DirectX 11 works without problems, like Fortnite and so on…

Go into the Nvidia Control Panel and set it to use your Nvidia GPU only, by default it will try to switch between using the integrated Intel GPU and the Nvidia GPU, but that can cause some issues because Windows isn’t very good at it, so it’s best to just force it to use the Nvidia GPU always.

Installing on another drive would only be an issue if you didn’t install it correctly.
It would be better for you to use DirectX 11 because support for DX12 is not complete, it’s likely to have other issues come up.

That was the first thing I did.
Unreal Engine = Nvidia GPU
Epic Launcher = internal graphic card.

Epic launcher had also Nvidia GPU per default, but with that selection you could not start it.

So those 2 settings are correct.

Instead of assigning a GPU specifically for a program you need to set it to use the Nvidia GPU for everything, there’s an option at the top where you can do that.

Yes, Predator Laptop has button to change everything to GPU only.
If I would use it a lot of programs wouldn’t work.
Some need internal graphic card (graphic chip), like epic launcher for example.

This guy also had this problem and could fix it this way:

https://answers.unrealengine.com/que…to-launch.html

Interesting fact, he also installed it on location D: and got this error.

No, there’s nothing that requires using the Intel GPU, the only reason it’s there is because most mobile processors have it. If you have an additional GPU like the Nvidia GPU then they try to use it in a way that saves power–basically if it thinks that a program can run on the Intel GPU then it wants to use that and it will use less electricity (making your battery last longer and your computer not heat up so much). But, like I said, it does a poor job of assigning which GPU to use, and to avoid any possible issues it’s better to just have it use the Nvidia GPU exclusively.

I had the same problem with my Acer Predator laptop. It must be something about the way they set things up. This helped me though. It sucks that it’s such a hacky solution. Have you found a way to get it working without having to do this?

I have an Acer Predator too. Same problem. No backwards compatibility with Direct X 12. I Had to use the -dx12 command line too, to get it started. That’s very annoying and now after being capable to run the Engine again, I have some problems with opening some other scenes:

LogD3D12RHI: Error: Device->CreatePipelineState(Desc, IID_PPV_ARGS(&PSO)) failed
at D:\Build++UE4\Sync\Engine\Source\Runtime\D3D12RHI\Private\Windows\WindowsD3D12PipelineState.cpp:642
with error E_INVALIDARG

Now I get the same error in the other direction. It tells me, that it searches for DX11, but only found DX12. But If I boost without the -dx12 command line, then the Engine crashes instantly… I’m tired of googling and searching how to manage those errors, since I haven’t found much of help. Does anyone know more and can tell me how to open those older files now?

Based of what I learned the DX12 api is not at its entire form its just limited but it can be done.

UE4 does focus and performs better with DX11 if anything based of my RHI tests OpenGL was destroyed by DX11 im sure because its
a very mature API.

DX12 is still at its infancy based of how I see it anyway and true the whole “-dx12” is probably the only way to enable it as it is with “-vulkan”
but unlike DX12 Vulkan is a available to use RHI in the engine but not stable.

Just stick with DX11 your fine.

Hi … I have the same problem after updating my windows … I didn’t understood where I should add -dx12 after creating the shortcut … can you explain me?