I'm trying to run a DirectX 12 app using the Dxc compiler located here. The shader source compiles successfully, however the D3D api fails to read the shader byte code.
I'm using the D3DCompiler DXC Bridge. According to the docs I need to rename it to d3dcompiler_47.dll and place the dxcompiler.dll, and dxil.dll next to the executable for proper validation and signing which I've done. I'm running in experimental mode so signing shouldn't matter. I'm also running windows version 1703 which is supposed to support dxil.
When the application runs I can see d3dcompiler_47, dxcompiler, and dxil all being loaded into memory, so it just seems to be that the D3D runtime fails to recognize DXIR as a valid byte code format. HALP!
In order to get this working I actually required Windows 10 Creators Update SDK (1809). I also needed to enable experimental mode explicitly via D3D12EnableExperimentalFeatures
. I found this on the DirectX 12 sample for Wave Intrinsics. I initially thought that enabling experimental mode was specifically required for using shader model 6+ features but perhaps it's required to interpret DXIL/DXIR as well.
I suppose compilation with DXC
requires Windows 10 (1703). Running shaders compiled with DXC
requires Windows 10 (1809) along with any harware vendor driver support. However, I'm not certain that is absolutely correct.