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.