Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/hlsl.y:
+ if (type->class != HLSL_CLASS_SCALAR && type->class != HLSL_CLASS_MATRIX) + { + hlsl_error(ctx, loc, VKD3D_SHADER_ERROR_HLSL_INVALID_TYPE, "Invalid argument type."); + return false; + } + + dim = min(type->dimx, type->dimy); + if (dim == 1) + { + if (!(arg = intrinsic_float_convert_arg(ctx, params, arg, loc))) + return false; + return hlsl_add_load_component(ctx, params->instrs, arg, 0, loc); + } + + if (!(func = hlsl_compile_internal_function(ctx, "determinant", bodies[dim]))) + return false; I would guess that `intrinsic_float_convert_arg()` is needed here too. Or do you have evidence that the determinant of a matrix of halves is float rather than half?
-- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/329#note_44704