mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader/hlsl: Use hlsl_error() instead of hlsl_fixme() for ambiguous function calls.
This changes the return code, and some tests start passing as a result.
This commit is contained in:
parent
1c93d706d7
commit
d0e4331640
Notes:
Henri Verbeet
2024-12-03 14:56:39 +01:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Francisco Casas (@fcasas) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1290
@ -3026,7 +3026,7 @@ static struct hlsl_ir_function_decl *find_function_call(struct hlsl_ctx *ctx,
|
||||
{
|
||||
if (compatible_match)
|
||||
{
|
||||
hlsl_fixme(ctx, loc, "Prioritize between multiple compatible function overloads.");
|
||||
hlsl_error(ctx, loc, VKD3D_SHADER_ERROR_HLSL_AMBIGUOUS_CALL, "Ambiguous function call.");
|
||||
break;
|
||||
}
|
||||
compatible_match = decl;
|
||||
|
@ -163,6 +163,7 @@ enum vkd3d_shader_error
|
||||
VKD3D_SHADER_ERROR_HLSL_INVALID_OUTPUT_PRIMITIVE = 5037,
|
||||
VKD3D_SHADER_ERROR_HLSL_INVALID_PARTITIONING = 5038,
|
||||
VKD3D_SHADER_ERROR_HLSL_MISPLACED_SAMPLER_STATE = 5039,
|
||||
VKD3D_SHADER_ERROR_HLSL_AMBIGUOUS_CALL = 5040,
|
||||
|
||||
VKD3D_SHADER_WARNING_HLSL_IMPLICIT_TRUNCATION = 5300,
|
||||
VKD3D_SHADER_WARNING_HLSL_DIVISION_BY_ZERO = 5301,
|
||||
|
@ -41,7 +41,7 @@ todo(sm<6) draw quad
|
||||
probe (0, 0) rgba (0.1, 0.2, 0.1, 0.2)
|
||||
|
||||
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
float func(int arg)
|
||||
{
|
||||
return 1.0;
|
||||
@ -96,7 +96,7 @@ float4 main() : sv_target
|
||||
|
||||
% ...but invoking them is considered ambiguous and fails.
|
||||
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
|
||||
void func(float arg) {}
|
||||
void func(float1 arg) {}
|
||||
@ -108,7 +108,7 @@ float4 main() : sv_target
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
|
||||
void func(float arg) {}
|
||||
void func(float1 arg) {}
|
||||
@ -123,7 +123,7 @@ float4 main() : sv_target
|
||||
|
||||
% This holds true even if one variant isn't actually defined.
|
||||
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
|
||||
void func(float arg);
|
||||
void func(float1 arg) {}
|
||||
@ -136,7 +136,7 @@ float4 main() : sv_target
|
||||
}
|
||||
|
||||
% Narrows have the same priority, regardless of how much narrowing is done.
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
|
||||
float4 func(float3 x)
|
||||
{
|
||||
@ -154,7 +154,7 @@ float4 main() : sv_target
|
||||
}
|
||||
|
||||
% Even if one axis has less narrowing.
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
|
||||
float4 func(float4x3 x)
|
||||
{
|
||||
@ -348,7 +348,7 @@ todo(sm<6) probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
|
||||
|
||||
% Some matrices are implicitly compatible with vectors and will ambiguate with them.
|
||||
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
|
||||
float4 func(float2x2 x)
|
||||
{
|
||||
@ -365,7 +365,7 @@ float4 main() : sv_target
|
||||
return func(float4(0, 0, 0, 0));
|
||||
}
|
||||
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
|
||||
float4 func(float1x3 x)
|
||||
{
|
||||
@ -384,7 +384,7 @@ float4 main() : sv_target
|
||||
|
||||
% Structs are evaluated on a per-component basis.
|
||||
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
struct a
|
||||
{
|
||||
float4 a;
|
||||
@ -421,7 +421,7 @@ float4 main() : sv_target
|
||||
|
||||
% Arrays are evaluated on a per component basis.
|
||||
|
||||
[pixel shader fail todo]
|
||||
[pixel shader fail]
|
||||
|
||||
float4 func(float4 x[1])
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user