Current Status of DX12 Support

Hi,

I had a couple of questions to ask please.

  1. Is DX12 now fully supported for UE4 ?

  2. Is it a big task to migrate code from DX11 to DX12 in Unreal?
    Are there any special considerations for this?

Many Thanks
Mehul

Hi Mehul,

We still consider DX12 experimental in 4.12. All of our samples and some of our internal games will run with varying degrees of success on DX12 (Unreal Tournament, Paragon) although we do not allow external users to run on DX12 on those games yet.

You’re certainly welcome to try it out, and you will see improvements over the course of this year.

Migrating a game from DX11 to DX12 shouldn’t be a big deal. Everything is behind the RHI layer and it has full ShaderModel 5 support. You might run into some driver problems, or bump into a bug or two. Please report anything you find so we can get it fixed. :slight_smile:

If you’re migrating some kind of custom plugin that uses direct device access rather than going through the RHI layer there may be more work to do. Let me know if you have any more questions. :slight_smile:

There is a UE4 DX12 crash in UE4.11 that appears to be common but not universal:

See BUG: Startup crash with DX12 - Rendering - Epic Developer Community Forums

Fatal error: [File:D:\BuildFarm\buildmachine_++UE4+Release-4.11\Engine\Source\Runtime\Windows\D3D12RHI\Private\D3D12Util.cpp] [Line: 223] GetParentDevice()->GetDevice()->CreateGraphicsPipelineState(&Desc->Desc, IID_PPV_ARGS(PipelineState.GetInitReference())) failed at D:\BuildFarm\buildmachine_++UE4+Release-4.11\Engine\Source\Runtime\Windows\D3D12RHI\Private\D3D12StateCache.cpp:3337 with error E_INVALIDARG

We were able to repro an issue like this during 4.12 development, though a PSO creation can fail for many reasons. I was able to put in a fix for that, that should go away in 4.12.