Admittedly, D3D12 might cause more compilations than necessary in comparison to D3D11. D3D12 has less dynamic states available compared to D3D11 which can mean compiling more redundant state-based duplicates. If more dynamic states were exposed, drivers wouldn't be caught dead compiling the EXACT SAME shaders MULTIPLE TIMES(!!!) and you wouldn't need to create as many PSOs since some hardware can dynamically change states which is much faster than doing driver compilation. Every time there are unique PSOs and no matter how near identical they are, compilations are inevitable by design ...
Khronos Group tried fixing this design flaw in Vulkan by exposing more dynamic states with an extension. Even then more dynamic states does not address the engine side problem of the generation of shader variants. Material/Shader graphs will cause a combinatorial explosion of different shaders so we're still left with tons of PSOs ...
Relevant thread below:
Khronos Group tried fixing this design flaw in Vulkan by exposing more dynamic states with an extension. Even then more dynamic states does not address the engine side problem of the generation of shader variants. Material/Shader graphs will cause a combinatorial explosion of different shaders so we're still left with tons of PSOs ...
Relevant thread below: