vkd3d-shader/hlsl: Support non-size-changing lhs casts.

This commit is contained in:
Francisco Casas
2025-01-20 14:52:22 -03:00
committed by Henri Verbeet
parent c2e224c5fb
commit b55fe1950e
Notes: Henri Verbeet 2025-01-22 15:04:09 +01:00
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1350
4 changed files with 57 additions and 32 deletions

View File

@@ -14,7 +14,7 @@ probe (0, 0) rgba(1, 2, 3, 4)
% Casts with base type changes are only valid on SM1.
[pixel shader fail(sm>=4) todo]
[pixel shader fail(sm>=4)]
float4 main() : sv_target
{
float4 p = 0;
@@ -24,13 +24,13 @@ float4 main() : sv_target
}
[test]
todo draw quad
draw quad
probe (0, 0) rgba(-1, -2, 4, 0)
% Casts don't actually perform base type changes, only the outtermost one, which
% I suspect is because the implicit cast on the assignment and not the cast itself.
[pixel shader fail(sm>=4) todo]
[pixel shader fail(sm>=4)]
float4 main() : sv_target
{
float4 f = 0;
@@ -40,11 +40,11 @@ float4 main() : sv_target
}
[test]
todo draw quad
draw quad
probe (0, 0) rgba(1.3, -2.4, 3.3, 4.7)
[pixel shader fail(sm>=4) todo]
[pixel shader fail(sm>=4)]
float4 main() : sv_target
{
float4 f = 0;
@@ -54,7 +54,7 @@ float4 main() : sv_target
}
[test]
todo draw quad
draw quad
probe (0, 0) rgba(1, -2, 3, 4)
@@ -69,7 +69,7 @@ float4 main() : sv_target
}
[pixel shader fail(sm>=6) todo]
[pixel shader fail(sm>=6) todo(sm>=4)]
float4 main() : sv_target
{
float4 f = 0;
@@ -79,11 +79,11 @@ float4 main() : sv_target
}
[test]
todo draw quad
todo(sm>=4) draw quad
probe (0, 0) rgba(1, 2, 3, 4)
[pixel shader fail(sm>=4) todo]
[pixel shader fail(sm>=4)]
float4 main() : sv_target
{
float4 f = 0;
@@ -93,11 +93,11 @@ float4 main() : sv_target
}
[test]
todo draw quad
draw quad
probe (0, 0) rgba(1, 3, 0, 0);
[pixel shader fail(sm>=4) todo]
[pixel shader fail(sm>=4)]
float4 main() : sv_target
{
float4 f = 0;
@@ -107,5 +107,5 @@ float4 main() : sv_target
}
[test]
todo draw quad
draw quad
probe (0, 0) rgba(1.4, 2.8, 0, 0);