Some good news for developers, from Microsoft - the D3D12 translation layer is now open source! This makes it easier than ever for developers to transition from DirectX11 to DirectX12 for their games. The DX12 Translation Layer is essentially a helper library for translating graphics concepts and commands from a DX11-style domain to a DX12-style domain. Additionally they have also open sourced D3D11on12, which is a mapping layer that maps graphics commands from DX11 to DX12.
Why are mapping layers used? Back during the development of Windows 10 and DX12, the Windows Graphics team had a large set of DX11 content which was used during the design and implementation of DX12 Runtime and Driver models. In order to use that content they developed the mapping layer D3D11on12. Since that was so successful they created another mapping layer, D3d9on12. 11on12 was then refactored into two parts:
- Implementation of DX11-specific concepts
- Translation of more traditional graphics constructs into a low-level DX12 API consumer
That last part is what became the DX12 Translation Layer and the code is currently being used by the D3D11on12 and D3D9on12 mapping layers as a part of Windows.
Still keeping up? Well this next bit hopefully breaks down all the implications for you:
What does this mean for developers
- It means the transition from DirectX11 will be much faster when porting existing work to DirectX12.
- Devs can create their very own mapping layer from graphics or compute API to DX12 using an IHV DX12 Driver with a custom DX12 wrapper.
- Development on the DX12 Translation Layer can potentially also be much faster as a larger community of developers can contribute back to Windows, with improvements being implemented into future versions of Windows 10.
The reason Microsoft is doing this is because they have realised that the translation layer can solve problems not unique to 11on12 and 9on12, plus there's a lack of developers moving on from DX11 to DX12 at the moment.
You can download both the D3D12 Translation Layer and D3D11on12 on GitHub right now.
Login or Register to join the debate
Just shows how much of a pain dx12 is to work with seeing how most games still use dx11.
It's funny to see that some games (like Euro Truck Simulator 2 and American Truck simulator) slowly move from DX9 to DX11 and now we have this haha.
I still wonder what happened to vulcan, as I rarely hear it. It seems to be used mainly in mobile games iirc.
As far as I know, one of problems of Vulkan is that it is new API, developers need to get used to, while it is easier to pick up DX9 or DX11, which developers are already used to use,making development easier.Plus not to mention game engine is long term investment and is used in more than one game, which also can be another contributing factor,since they have to get out of their way to use Vulkan.
Plus another thing is in terms of complexity and work, Vulkan is very powerful, but unfortunately it requires more work to get most out of it. Which is also what developers decide to just cut their costs on. It is not like many will get upset about DX vs Vulkan.
I feel bigger part of issue with DX12 is the fact that quite a lot of optimizing fell down to developers, things usually nVidia and AMD would do with drivers and no developer is exactly happy with extra work, especially if they also lack skill in doing it. Plus some will always pick older API due to developer familiarity and engine already existing on it. Plus DX12 didn't bring enough of shiny...
... features. Sure you get better multicore CPU utilization, but the thing is, your average gamer couldn't care less about that. Shiny features would be more in terms of improved visuals, like what we got with DX10 after 9. Which makes it a lot harder to get in front of your boss and justify extra work for same visual result.
Will dx12 finally perform better than dx11?