There's basically 3 levels of format casting in D3D12:
- using _TYPELESS formats allows one to create views with formats that belong to the same D3D12 compatibility group. Unfortunately, doesn't quite match what Vulkan wants (compat list is much more restrictive). Another issue with this solution is that D3D12 drivers can't optimize things when their asked to create a resource with a typeless format.
CastingFullyTypedFormatSupportedfeature addresses the optimization issue, but still doesn't provide the compatibility level Vulkan expects
RelaxedFormatCastingSupporteddoes exactly what we need, but it's just been released, and isn't widely supported yet
This MR is trying to add support for each of these methods, the
last one being untested, because I don't have D3D12 driver support
for it, which is why this MR is marked
/cc @jekstrand for the common vulkan bits