vkd3d-shader/ir: Require signed source operands for ITOF instructions.

This commit is contained in:
Henri Verbeet
2025-09-02 18:56:38 +02:00
parent 9ee53c9573
commit 89641d3d42
Notes: Henri Verbeet 2025-09-16 16:19:58 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1727
13 changed files with 37 additions and 48 deletions

View File

@@ -73,7 +73,7 @@ float4 main() : SV_TARGET
[test]
uniform 0 uint4 2 0 0 0
draw quad
todo(msl & sm>=6) probe (0, 0) f32(20, -48, 20, -48)
probe (0, 0) f32(20, -48, 20, -48)
[pixel shader fail]
% Make sure that bitshifts DON'T work with floats

View File

@@ -11,8 +11,7 @@ float4 main() : sv_target
[test]
uniform 0 float4 10.3 -11.6 12.8 13.1
draw quad
todo(msl & sm>=6) probe (0, 0) f32(10, -11, 12, 0)
probe (0, 0) f32(10, -11, 12, 0)
[vertex shader]
uniform float4 f;
@@ -32,8 +31,7 @@ float4 main(float4 t1 : TEXCOORD1) : sv_target
[test]
uniform 0 float4 -0.4 -0.7 -12.8 14.8
draw quad
todo(msl & sm>=6) probe (0, 0) f32(0, 0, -12, 14)
probe (0, 0) f32(0, 0, -12, 14)
[pixel shader]
uniform float f;

View File

@@ -52,4 +52,4 @@ float4 main() : sv_target
if(sm<4) uniform 0 float4 -1 6 7 3
if(sm>=4) uniform 0 int4 -1 6 7 3
draw quad
todo(msl & sm>=6) probe (0, 0) f32(6.0, 7.0, -1.0, 3.0) 4
probe (0, 0) f32(6.0, 7.0, -1.0, 3.0) 4

View File

@@ -12,7 +12,7 @@ float4 main() : sv_target
[test]
uniform 0 float4 -0.5 6.5 7.5 3.4
draw quad
todo(msl & sm>=6) probe (0, 0) f32(1912.0, 1657.0, -127.0, 867.0) 1
probe (0, 0) f32(1912.0, 1657.0, -127.0, 867.0) 1
[pixel shader]
uniform float4 u;
@@ -25,4 +25,4 @@ float4 main() : sv_target
[test]
uniform 0 float4 -0.5 6.5 7.5 3.4
draw quad
todo(msl & sm>=6) probe (0, 0) f32(-127.0, -127.0, -127.0, -127.0) 1
probe (0, 0) f32(-127.0, -127.0, -127.0, -127.0) 1

View File

@@ -53,4 +53,4 @@ float4 main() : sv_target
if(sm<4) uniform 0 float4 -1 6 7 3
if(sm>=4) uniform 0 int4 -1 6 7 3
draw quad
todo(msl & sm>=6) probe (0, 0) f32(6.0, 7.0, -1.0, 3.0) 4
probe (0, 0) f32(6.0, 7.0, -1.0, 3.0) 4

View File

@@ -19,7 +19,7 @@ float4 main() : sv_target
[test]
uniform 0 float4 -1.9 -1.0 2.9 4.0
draw quad
todo(msl & sm>=6) probe (0, 0) f32(-1.0, -1.0, 2.0, 4.0)
probe (0, 0) f32(-1.0, -1.0, 2.0, 4.0)
% As above, but cast "x" to float4 first.
% In SM 6 a cast seems to implicitly promote the type to const,
@@ -89,8 +89,7 @@ float4 main() : sv_target
if(sm<4) uniform 0 float4 -2 0 1 -3000000
if(sm>=4) uniform 0 int4 -2 0 1 -3000000
draw quad
todo(msl & sm>=6) probe (0, 0) f32(-1.0, 0.0, 1.0, -3000000.0) 4
probe (0, 0) f32(-1.0, 0.0, 1.0, -3000000.0) 4
% An explicit cast gets applied right before assignment, as if it was on the lhs.
[pixel shader fail(sm>=6)]

View File

@@ -29,8 +29,7 @@ if(sm<4) uniform 4 float4 0 -10 10 100
if(sm>=4) uniform 0 int4 2 3 4 5
if(sm>=4) uniform 4 int4 0 -10 10 100
draw quad
todo(msl & sm>=6) probe (0, 0) f32(2.0, 0.00292968750, 4096.0, 6.33825300e+030) 2
probe (0, 0) f32(2.0, 0.00292968750, 4096.0, 6.33825300e+030) 2
[pixel shader]
float4 main() : sv_target

View File

@@ -34,8 +34,7 @@ if(sm>=4) uniform 0 int4 2 3 4 0
if(sm>=4) uniform 4 int4 0 -10 10 1000000
if(sm>=4) uniform 8 int4 0 1 -1 1000000
draw quad
todo(msl & sm>=6) probe (0, 0) f32(2.0, -10.0, -2.0, 1e12) 4
probe (0, 0) f32(2.0, -10.0, -2.0, 1e12) 4
[pixel shader]
float4 main() : sv_target

View File

@@ -11,8 +11,6 @@ uniform 0 float4 -0.4 -6.6 7.6 3.4
draw quad
probe (0, 0) rgba (0.0, -7.0, 8.0, 3.0) 4
[pixel shader]
uniform float4 u;
@@ -27,9 +25,7 @@ float4 main() : sv_target
[test]
uniform 0 float4 -0.4 -6.6 7.6 3.4
draw quad
todo(msl & sm>=6) probe (0, 0) f32(-7.0, 8.0, 0.0, 3.0) 4
probe (0, 0) f32(-7.0, 8.0, 0.0, 3.0) 4
[pixel shader]
uniform float4 u;
@@ -43,7 +39,7 @@ float4 main() : sv_target
[test]
uniform 0 float4 -1 0 2 10
draw quad
todo(msl & sm>=6) probe (0, 0) f32(-1.0, 0.0, 2.0, 10.0) 4
probe (0, 0) f32(-1.0, 0.0, 2.0, 10.0) 4
[pixel shader]
float4 main() : sv_target

View File

@@ -23,7 +23,7 @@ float4 main() : sv_target
[test]
uniform 0 float4 -2 0 2 -1
draw quad
todo(msl & sm>=6) probe (0, 0) f32(0.0, 0.0, 1.0, 0.0)
probe (0, 0) f32(0.0, 0.0, 1.0, 0.0)
[pixel shader]
uniform float4 u;

View File

@@ -46,4 +46,4 @@ float4 main() : sv_target
if(sm<4) uniform 0 float4 -1 6 7 3
if(sm>=4) uniform 0 int4 -1 6 7 3
draw quad
todo(msl & sm>=6) probe (0, 0) f32(6.0, 7.0, -1.0, 3.0)
probe (0, 0) f32(6.0, 7.0, -1.0, 3.0)