vkd3d-shader/hlsl: Consider conversions across all parameters in function_compare().

For example, given two arguments, half3 and float, and two functions,
func(float, float) and func(float3, float3), fxc/d3dcompiler prefers to
widen both arguments to float3.
This commit is contained in:
Anna (navi) Figueiredo Gomes
2025-01-16 00:52:14 +01:00
committed by Henri Verbeet
parent de57afd672
commit c7b209124b
Notes: Henri Verbeet 2025-01-22 15:03:48 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1341
2 changed files with 58 additions and 51 deletions

View File

@ -445,7 +445,7 @@ probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
% argument, but with more components) for the first function and "double" for the
% second function.
[pixel shader todo(sm<6)]
[pixel shader]
float func(float2 x, double y)
{
return 1.0;
@ -465,10 +465,10 @@ float4 main() : sv_target
}
[test]
todo(sm<6) draw quad
draw quad
probe (0, 0) r(2.0)
[pixel shader todo(sm<6)]
[pixel shader]
float func(uint4 x, double y)
{
return 1.0;
@ -488,10 +488,10 @@ float4 main() : sv_target
}
[test]
todo(sm<6) draw quad
draw quad
probe (0, 0) r(1.0)
[pixel shader todo(sm<6)]
[pixel shader]
float func(uint4 x, double y)
{
return 1.0;
@ -511,10 +511,10 @@ float4 main() : sv_target
}
[test]
todo(sm<6) draw quad
draw quad
probe (0, 0) r(1.0)
[pixel shader todo(sm<6)]
[pixel shader]
float func(half4 x, half y, half z, half a)
{
return 1.0;
@ -534,7 +534,7 @@ float4 main() : sv_target
}
[test]
todo(sm<6) draw quad
draw quad
probe (0, 0) r(1.0)
[require]
@ -683,7 +683,7 @@ float4 main() : sv_target
draw quad
probe (0, 0) rgba(42.0, 42.0, 42.0, 42.0)
[pixel shader todo(sm<6)]
[pixel shader]
float func(float x, float y)
{
return 1.0;
@ -702,10 +702,10 @@ float4 main() : sv_target
}
[test]
todo(sm<6) draw quad
draw quad
probe (0, 0) r(2.0)
[pixel shader todo(sm<6)]
[pixel shader]
float func(float3 a, float3 b, float3 c, float3 d)
{
return 1.0;
@ -724,5 +724,5 @@ float4 main() : sv_target
}
[test]
todo(sm<6) draw quad
draw quad
probe (0, 0) r(1.0)