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?