vkd3d-shader: Handle 16-bit minimum-precision in the DXIL parser instead of the backend.
Where the VSIR validator expects types to be of equal width, emitting 16-bit registers to represent minimum-precision registers can result in validation failure due to mixed widths. It is much simpler to handle these in the DXIL parser than to make the validator check the validity of mixed widths, and this also simplifies the implementation of native 16-bit support in backends.
This resolves validation failures reported in !1108 (in the one shader I tested from the collection).
The half_to_float()
and convert_raw_constant32()
functions are copied unmodified from the SPIR-V backend.