It’s been a while since we last mentioned the D3D9On12 mapping layer. As a quick refresher, it maps D3D9 commands to D3D12 by acting as the D3D9 Device Driver Interface (DDI). Having this mapping layer enables older D3D9 applications to run on modern systems that may not have a D3D9 driver. Since the last blog post, we’ve added support for Alpha to Coverage extensions, done some bug fixing, and cleaned up the code base for open sourcing.
D3D9On12 has been a part of Windows 10 for a few years now, and over that time it has grown in stability and usage. Making it open source will:
While it has always been possible to generate your own DXIL (DirectX Intermediate Language) and then sign it by calling into dxil.dll, there was no analog for DXBC (DirectX ByteCode). The only tool capable of signing DXBC was the HLSL compiler fxc.exe. This meant that anyone wanting to generate DXBC had to first generate and then compile HLSL, rather than directly outputting DXBC. D3D9On12 converts shaders written for shader models 1-3 to shader model 4, so this was something that we needed to solve in order to make the mapping layer viable.
As part of open sourcing D3D9On12, we’re happy to announce the initial release of the DXBC Signer NuGet package. This package will allow you to sign arbitrary DXBC generated by your own tool chain, filling the same role that dxil.dll does for DXIL. D3D9On12 uses it to sign the DXBC it generates when converting shaders to shader model 4.