mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
tests/shader_runner: Introduce the "f32" probe format.
This commit is contained in:
Notes:
Henri Verbeet
2025-06-10 18:06:45 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1555
@@ -19,4 +19,4 @@ void main()
|
||||
|
||||
[test]
|
||||
dispatch 1 1 1
|
||||
probe uav 0 (0, 0) r (-123.0)
|
||||
probe uav 0 (0, 0) f32(-123.0)
|
||||
|
@@ -37,29 +37,29 @@ depth greater equal
|
||||
clear rtv 0 0.0 0.0 0.0 0.0
|
||||
clear dsv 0.0
|
||||
draw quad
|
||||
probe (0, 0) rgba(0, 0, 0, 0)
|
||||
probe uav 1 (0) r(0.0)
|
||||
probe (0, 0) f32(0, 0, 0, 0)
|
||||
probe uav 1 (0) f32(0.0)
|
||||
|
||||
clear rtv 0 0.0 0.0 0.0 0.0
|
||||
clear dsv 0.3
|
||||
draw quad
|
||||
probe (0, 0) rgba(1, 1, 1, 1)
|
||||
probe uav 1 (0) r(1.0)
|
||||
probe (0, 0) f32(1, 1, 1, 1)
|
||||
probe uav 1 (0) f32(1.0)
|
||||
|
||||
clear rtv 0 0.0 0.0 0.0 0.0
|
||||
clear dsv 0.5
|
||||
draw quad
|
||||
probe (0, 0) rgba(1, 1, 1, 1)
|
||||
probe uav 1 (0) r(1.0)
|
||||
probe (0, 0) f32(1, 1, 1, 1)
|
||||
probe uav 1 (0) f32(1.0)
|
||||
|
||||
clear rtv 0 0.0 0.0 0.0 0.0
|
||||
clear dsv 0.6
|
||||
draw quad
|
||||
probe (0, 0) rgba(1, 1, 1, 1)
|
||||
probe uav 1 (0) r(1.0)
|
||||
probe (0, 0) f32(1, 1, 1, 1)
|
||||
probe uav 1 (0) f32(1.0)
|
||||
|
||||
clear rtv 0 0.0 0.0 0.0 0.0
|
||||
clear dsv 1.0
|
||||
draw quad
|
||||
probe (0, 0) rgba(0, 0, 0, 0)
|
||||
probe uav 1 (0) r(0.0)
|
||||
probe (0, 0) f32(0, 0, 0, 0)
|
||||
probe uav 1 (0) f32(0.0)
|
||||
|
@@ -17,22 +17,22 @@ uniform 0 float 0.0
|
||||
clear dsv 1.0
|
||||
depth less
|
||||
draw quad
|
||||
probe dsv (0,0) r (0.0)
|
||||
probe dsv (0,0) f32(0.0)
|
||||
|
||||
uniform 0 float 0.75
|
||||
clear dsv 1.0
|
||||
draw quad
|
||||
probe dsv (0,0) r (0.75)
|
||||
probe dsv (0,0) f32(0.75)
|
||||
|
||||
clear dsv 0.5
|
||||
depth greater
|
||||
draw quad
|
||||
probe dsv (0,0) r (0.75)
|
||||
probe dsv (0,0) f32(0.75)
|
||||
|
||||
depth less
|
||||
clear dsv 0.5
|
||||
draw quad
|
||||
probe dsv (0,0) r (0.5)
|
||||
probe dsv (0,0) f32(0.5)
|
||||
|
||||
|
||||
[require]
|
||||
@@ -66,15 +66,15 @@ clear rtv 0 1.0 1.0 1.0 1.0
|
||||
clear dsv 0.5
|
||||
depth greater equal
|
||||
todo(sm<6) draw quad
|
||||
probe (0, 0) rgba (0.0, 1.0, 0.0, 1.0)
|
||||
probe dsv (0,0) r (0.75)
|
||||
probe (0, 0) f32(0.0, 1.0, 0.0, 1.0)
|
||||
probe dsv (0,0) f32(0.75)
|
||||
|
||||
uniform 0 float4 0.75 0.375 0.0 0.0
|
||||
clear rtv 0 1.0 1.0 1.0 1.0
|
||||
clear dsv 0.5
|
||||
todo(sm<6) draw quad
|
||||
probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0)
|
||||
probe dsv (0,0) r (0.5)
|
||||
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
|
||||
probe dsv (0,0) f32(0.5)
|
||||
|
||||
|
||||
[pixel shader todo]
|
||||
@@ -92,19 +92,19 @@ clear rtv 0 1.0 1.0 1.0 1.0
|
||||
clear dsv 0.5
|
||||
depth greater equal
|
||||
todo(sm<6) draw quad
|
||||
probe (0, 0) rgba (0.0, 1.0, 0.0, 1.0)
|
||||
probe dsv (0,0) r (0.75)
|
||||
probe (0, 0) f32(0.0, 1.0, 0.0, 1.0)
|
||||
probe dsv (0,0) f32(0.75)
|
||||
|
||||
uniform 0 float4 0.375 0.625 0.0 0.0
|
||||
clear rtv 0 1.0 1.0 1.0 1.0
|
||||
clear dsv 0.5
|
||||
todo(sm<6) draw quad
|
||||
probe (0, 0) rgba (0.0, 1.0, 0.0, 1.0)
|
||||
probe dsv (0,0) r (0.625)
|
||||
probe (0, 0) f32(0.0, 1.0, 0.0, 1.0)
|
||||
probe dsv (0,0) f32(0.625)
|
||||
|
||||
uniform 0 float4 0.375 0.375 0.0 0.0
|
||||
clear rtv 0 1.0 1.0 1.0 1.0
|
||||
clear dsv 0.5
|
||||
todo(sm<6) draw quad
|
||||
probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0)
|
||||
probe dsv (0,0) r (0.5)
|
||||
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
|
||||
probe dsv (0,0) f32(0.5)
|
||||
|
@@ -11,10 +11,10 @@ float4 main() : sv_target
|
||||
[test]
|
||||
uniform 0 float4 1 2 3 4
|
||||
todo(sm<4 | glsl) draw quad
|
||||
probe (0, 0) rgba (1, 2, 3, 4)
|
||||
probe (0, 0) f32(1, 2, 3, 4)
|
||||
uniform 0 float4 9 8 7 6
|
||||
todo(sm<4 | glsl) draw quad
|
||||
probe (0, 0) rgba (1, 2, 3, 4)
|
||||
probe (0, 0) f32(1, 2, 3, 4)
|
||||
|
||||
[require]
|
||||
shader model >= 3.0
|
||||
@@ -31,14 +31,14 @@ float4 main(float4 pos : sv_position) : sv_target
|
||||
|
||||
[test]
|
||||
todo(sm<4 | glsl | msl) draw quad
|
||||
probe (0, 0) rgba (1, 0, 0, 1)
|
||||
probe (1, 0) rgba (1, 2, 3, 4)
|
||||
probe (0, 1) rgba (1, 2, 3, 4)
|
||||
probe (1, 1) rgba (1, 0, 0, 1)
|
||||
probe (2, 0) rgba (1, 0, 0, 1)
|
||||
probe (3, 0) rgba (1, 2, 3, 4)
|
||||
probe (2, 1) rgba (1, 2, 3, 4)
|
||||
probe (3, 1) rgba (1, 0, 0, 1)
|
||||
probe (0, 0) f32(1, 0, 0, 1)
|
||||
probe (1, 0) f32(1, 2, 3, 4)
|
||||
probe (0, 1) f32(1, 2, 3, 4)
|
||||
probe (1, 1) f32(1, 0, 0, 1)
|
||||
probe (2, 0) f32(1, 0, 0, 1)
|
||||
probe (3, 0) f32(1, 2, 3, 4)
|
||||
probe (2, 1) f32(1, 2, 3, 4)
|
||||
probe (3, 1) f32(1, 0, 0, 1)
|
||||
|
||||
[require]
|
||||
shader model >= 5.0
|
||||
@@ -69,11 +69,11 @@ float4 main(float4 pos : sv_position) : sv_target
|
||||
[test]
|
||||
uniform 0 float4 1 2 3 4
|
||||
todo(glsl) draw quad
|
||||
probe (0, 0) rgba (1, 2, 3, 4)
|
||||
probe uav 1 (0, 0) r (1.0)
|
||||
probe uav 1 (1, 0) r (1.0)
|
||||
probe (0, 0) f32(1, 2, 3, 4)
|
||||
probe uav 1 (0, 0) f32(1.0)
|
||||
probe uav 1 (1, 0) f32(1.0)
|
||||
uniform 0 float4 9 8 7 6
|
||||
todo(glsl) draw quad
|
||||
probe (0, 0) rgba (1, 2, 3, 4)
|
||||
probe uav 1 (0, 0) r (2.0)
|
||||
probe uav 1 (1, 0) r (1.0)
|
||||
probe (0, 0) f32(1, 2, 3, 4)
|
||||
probe uav 1 (0, 0) f32(2.0)
|
||||
probe uav 1 (1, 0) f32(1.0)
|
||||
|
@@ -27,5 +27,5 @@ depth greater equal
|
||||
clear rtv 0 0.0 0.0 0.0 0.0
|
||||
clear dsv 0.5
|
||||
todo(msl) draw quad
|
||||
probe (0, 0) rgba(0, 0, 0, 0)
|
||||
probe uav 1 (0) r(0.0)
|
||||
probe (0, 0) f32(0, 0, 0, 0)
|
||||
probe uav 1 (0) f32(0.0)
|
||||
|
@@ -38,7 +38,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba (0.1, 0.2, 0.1, 0.2)
|
||||
probe (0, 0) f32(0.1, 0.2, 0.1, 0.2)
|
||||
|
||||
|
||||
[pixel shader fail todo]
|
||||
@@ -79,7 +79,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(1.0, 2.0, 2.0, 2.0)
|
||||
probe (0, 0) f32(1.0, 2.0, 2.0, 2.0)
|
||||
|
||||
|
||||
% float and float1 can be defined separately...
|
||||
@@ -195,7 +195,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(1.0, 1.0, 1.0, 1.0)
|
||||
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
|
||||
|
||||
% Component type narrowing is preferred over component count narrowing.
|
||||
[pixel shader]
|
||||
@@ -209,7 +209,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(1.0, 1.0, 1.0, 1.0)
|
||||
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
|
||||
|
||||
% Let C be the common type that would be produced in an arithmetic expression
|
||||
% between the parameter and argument types. If C is the same as the parameter, the
|
||||
@@ -237,7 +237,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(0.0, 0.0, 0.0, 0.0)
|
||||
probe (0, 0) f32(0.0, 0.0, 0.0, 0.0)
|
||||
|
||||
% Let C be the common type that would be produced in an arithmetic expression
|
||||
% between the parameter and argument types. If C is the same as the argument,
|
||||
@@ -299,7 +299,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
|
||||
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
|
||||
|
||||
% Let C be the common type that would be produced in an arithmetic expression
|
||||
% between the parameter and argument types. If C is "int" and the parameter is "uint", the
|
||||
@@ -326,7 +326,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
todo(sm<6) probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
|
||||
todo(sm<6) probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
|
||||
|
||||
% Same as above.
|
||||
|
||||
@@ -349,7 +349,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
|
||||
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
|
||||
|
||||
% An exact match is preferred for minimum precision types as well.
|
||||
[pixel shader todo]
|
||||
@@ -363,7 +363,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
todo(sm<6) draw quad
|
||||
probe (0, 0) rgba(1.0, 1.0, 1.0, 1.0)
|
||||
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
|
||||
|
||||
[require]
|
||||
% Need SM5 for doubles.
|
||||
@@ -395,7 +395,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
|
||||
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
|
||||
|
||||
% Component type widening is preferred over component type narrowing.
|
||||
[pixel shader]
|
||||
@@ -409,7 +409,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
|
||||
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
|
||||
|
||||
% Component count widening is preferred over component type narrowing.
|
||||
[pixel shader]
|
||||
@@ -423,7 +423,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
|
||||
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
|
||||
|
||||
% Component count widening is preferred over component type class conversion.
|
||||
[pixel shader]
|
||||
@@ -437,7 +437,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
|
||||
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
|
||||
% Let C be the common type that would be produced in an arithmetic expression
|
||||
% between the parameter and argument types. If C has the same base type as the argument,
|
||||
% but with more components, it is preferred over all other cases.
|
||||
@@ -466,7 +466,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) r(2.0)
|
||||
probe (0, 0) f32(2.0)
|
||||
|
||||
[pixel shader]
|
||||
float func(uint4 x, double y)
|
||||
@@ -489,7 +489,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) r(1.0)
|
||||
probe (0, 0) f32(1.0)
|
||||
|
||||
[pixel shader]
|
||||
float func(uint4 x, double y)
|
||||
@@ -512,7 +512,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) r(1.0)
|
||||
probe (0, 0) f32(1.0)
|
||||
|
||||
[pixel shader]
|
||||
float func(half4 x, half y, half z, half a)
|
||||
@@ -535,7 +535,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) r(1.0)
|
||||
probe (0, 0) f32(1.0)
|
||||
|
||||
[require]
|
||||
% Reset
|
||||
@@ -559,7 +559,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
|
||||
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
|
||||
|
||||
% Some matrices are implicitly compatible with vectors and will ambiguate with them.
|
||||
|
||||
@@ -681,7 +681,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba(42.0, 42.0, 42.0, 42.0)
|
||||
probe (0, 0) f32(42.0, 42.0, 42.0, 42.0)
|
||||
|
||||
[pixel shader]
|
||||
float func(float x, float y)
|
||||
@@ -703,7 +703,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) r(2.0)
|
||||
probe (0, 0) f32(2.0)
|
||||
|
||||
[pixel shader]
|
||||
float func(float3 a, float3 b, float3 c, float3 d)
|
||||
@@ -725,4 +725,4 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) r(1.0)
|
||||
probe (0, 0) f32(1.0)
|
||||
|
@@ -9,7 +9,7 @@ float4x1 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0)
|
||||
probe (0, 0) f32(1.0, 2.0, 3.0, 4.0)
|
||||
|
||||
[pixel shader]
|
||||
row_major float1x4 main() : sv_target
|
||||
@@ -19,7 +19,7 @@ row_major float1x4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0)
|
||||
probe (0, 0) f32(1.0, 2.0, 3.0, 4.0)
|
||||
|
||||
[rtv 0]
|
||||
format r32-float
|
||||
@@ -45,10 +45,10 @@ row_major float4x1 main() : sv_target
|
||||
|
||||
[test]
|
||||
todo(sm>=6) draw quad
|
||||
probe rtv 0 (0,0) r (1.0)
|
||||
probe rtv 1 (0,0) r (2.0)
|
||||
probe rtv 2 (0,0) r (3.0)
|
||||
probe rtv 3 (0,0) r (4.0)
|
||||
probe rtv 0 (0,0) f32(1.0)
|
||||
probe rtv 1 (0,0) f32(2.0)
|
||||
probe rtv 2 (0,0) f32(3.0)
|
||||
probe rtv 3 (0,0) f32(4.0)
|
||||
|
||||
[pixel shader fail(sm>=6)]
|
||||
float1x4 main() : sv_target
|
||||
@@ -58,10 +58,10 @@ float1x4 main() : sv_target
|
||||
|
||||
[test]
|
||||
todo(sm>=6) draw quad
|
||||
probe rtv 0 (0,0) r (1.0)
|
||||
probe rtv 1 (0,0) r (2.0)
|
||||
probe rtv 2 (0,0) r (3.0)
|
||||
probe rtv 3 (0,0) r (4.0)
|
||||
probe rtv 0 (0,0) f32(1.0)
|
||||
probe rtv 1 (0,0) f32(2.0)
|
||||
probe rtv 2 (0,0) f32(3.0)
|
||||
probe rtv 3 (0,0) f32(4.0)
|
||||
|
||||
[pixel shader fail]
|
||||
void main(out float1x2 x : sv_target0, out float1x2 y : sv_target1)
|
||||
@@ -79,10 +79,10 @@ void main(out float1x2 x : sv_target0, out float1x2 y : sv_target2)
|
||||
|
||||
[test]
|
||||
todo(sm>=6) draw quad
|
||||
probe rtv 0 (0,0) r (1.0)
|
||||
probe rtv 1 (0,0) r (2.0)
|
||||
probe rtv 2 (0,0) r (5.0)
|
||||
probe rtv 3 (0,0) r (6.0)
|
||||
probe rtv 0 (0,0) f32(1.0)
|
||||
probe rtv 1 (0,0) f32(2.0)
|
||||
probe rtv 2 (0,0) f32(5.0)
|
||||
probe rtv 3 (0,0) f32(6.0)
|
||||
|
||||
[rtv 0]
|
||||
format r32g32b32a32-float
|
||||
@@ -97,6 +97,6 @@ void main(out row_major float1x4 x : sv_target0, out float1x2 y : sv_target1)
|
||||
|
||||
[test]
|
||||
todo(sm>=6) draw quad
|
||||
probe rtv 0 (0,0) rgba (1.0, 2.0, 3.0, 4.0)
|
||||
probe rtv 1 (0,0) r (5.0)
|
||||
probe rtv 2 (0,0) r (6.0)
|
||||
probe rtv 0 (0,0) f32(1.0, 2.0, 3.0, 4.0)
|
||||
probe rtv 1 (0,0) f32(5.0)
|
||||
probe rtv 2 (0,0) f32(6.0)
|
||||
|
@@ -220,9 +220,9 @@ void main(uint2 id : sv_dispatchthreadid)
|
||||
|
||||
[test]
|
||||
dispatch 1 1 1
|
||||
probe uav 0 (0, 0) r (2.0)
|
||||
if(sm<6) probe uav 0 (0, 1) r (1.0)
|
||||
if(sm<6) probe uav 0 (1, 0) r (2.0)
|
||||
probe uav 0 (1, 1) r (1.0)
|
||||
if(sm>=6) probe uav 0 (0, 1) r (2.0)
|
||||
if(sm>=6) probe uav 0 (1, 0) r (1.0)
|
||||
probe uav 0 (0, 0) f32(2.0)
|
||||
if(sm<6) probe uav 0 (0, 1) f32(1.0)
|
||||
if(sm<6) probe uav 0 (1, 0) f32(2.0)
|
||||
probe uav 0 (1, 1) f32(1.0)
|
||||
if(sm>=6) probe uav 0 (0, 1) f32(2.0)
|
||||
if(sm>=6) probe uav 0 (1, 0) f32(1.0)
|
||||
|
@@ -50,7 +50,7 @@ float2 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (0, 0) rg (22.0, -22.0)
|
||||
probe (0, 0) f32(22.0, -22.0)
|
||||
|
||||
[rtv 0]
|
||||
format r32g32b32a32-uint
|
||||
@@ -94,7 +94,7 @@ float2 main() : sv_target
|
||||
|
||||
[test]
|
||||
todo(mvk & vulkan | msl) draw quad
|
||||
todo(mvk) probe (0, 0) rg (22.0, -22.0)
|
||||
todo(mvk) probe (0, 0) f32(22.0, -22.0)
|
||||
|
||||
[rtv 0]
|
||||
format r32g32b32a32-sint
|
||||
@@ -138,7 +138,7 @@ float2 main() : sv_target
|
||||
|
||||
[test]
|
||||
todo(mvk & vulkan | msl) draw quad
|
||||
todo(mvk) probe (0, 0) rg (22.0, -22.0)
|
||||
todo(mvk) probe (0, 0) f32(22.0, -22.0)
|
||||
|
||||
[rtv 0]
|
||||
format r32-uint
|
||||
@@ -152,7 +152,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
todo(mvk & vulkan | msl) draw quad
|
||||
todo(mvk) probe (0, 0) r (22.0)
|
||||
todo(mvk) probe (0, 0) f32(22.0)
|
||||
|
||||
[pixel shader]
|
||||
uint4 main() : sv_target
|
||||
@@ -182,7 +182,7 @@ float2 main() : sv_target
|
||||
|
||||
[test]
|
||||
todo(mvk & vulkan | msl) draw quad
|
||||
todo(mvk) probe (0, 0) r (22.0)
|
||||
todo(mvk) probe (0, 0) f32(22.0)
|
||||
|
||||
% For the avoidance of doubt, 64 bit types cannot be used as target outputs.
|
||||
|
||||
|
@@ -27,7 +27,7 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe uav 1 (0, 0) rgba (1.0, 2.0, 3.0, 4.0)
|
||||
probe uav 1 (0, 0) f32(1.0, 2.0, 3.0, 4.0)
|
||||
|
||||
[pixel shader fail]
|
||||
Texture2D<float4> u;
|
||||
@@ -54,11 +54,11 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe uav 0 (0, 0) r (0.5)
|
||||
probe uav 0 (0, 1) r (0.6)
|
||||
probe uav 0 (1, 0) r (0.2)
|
||||
probe uav 0 (1, 1) r (0.7)
|
||||
probe uav 1 (0, 0) rgba (2.0, 1.0, 4.0, 3.0)
|
||||
probe uav 0 (0, 0) f32(0.5)
|
||||
probe uav 0 (0, 1) f32(0.6)
|
||||
probe uav 0 (1, 0) f32(0.2)
|
||||
probe uav 0 (1, 1) f32(0.7)
|
||||
probe uav 1 (0, 0) f32(2.0, 1.0, 4.0, 3.0)
|
||||
|
||||
|
||||
[uav 2]
|
||||
@@ -77,7 +77,7 @@ float4 main() : sv_target1
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe uav 2 (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
||||
probe uav 2 (0, 0) f32(0.9, 0.8, 0.7, 0.6)
|
||||
|
||||
% Uppercase register set name
|
||||
[pixel shader]
|
||||
@@ -91,7 +91,7 @@ float4 main() : sv_target1
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe uav 2 (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
||||
probe uav 2 (0, 0) f32(0.9, 0.8, 0.7, 0.6)
|
||||
|
||||
% Test that we can declare and use an array of UAVs.
|
||||
|
||||
@@ -117,8 +117,8 @@ float4 main() : sv_target1
|
||||
|
||||
[test]
|
||||
todo(mvk) draw quad
|
||||
probe uav 1 (0, 0) rgba (1.1, 1.2, 1.3, 1.4)
|
||||
probe uav 2 (0, 0) rgba (2.1, 2.2, 2.3, 2.4)
|
||||
probe uav 1 (0, 0) f32(1.1, 1.2, 1.3, 1.4)
|
||||
probe uav 2 (0, 0) f32(2.1, 2.2, 2.3, 2.4)
|
||||
|
||||
% RWTexture1D types
|
||||
[pixel shader]
|
||||
|
@@ -192,14 +192,14 @@ void main(uint local_idx : SV_GroupIndex, uint group_id : SV_GroupID,
|
||||
[test]
|
||||
uniform 0 uint 1
|
||||
todo(sm<6) dispatch 2 1 1
|
||||
probe uav 1 (0) r (0.0)
|
||||
probe uav 1 (1) r (0.0)
|
||||
probe uav 1 (2) r (0.0)
|
||||
probe uav 1 (3) r (0.0)
|
||||
probe uav 1 (4) r (1.0)
|
||||
probe uav 1 (5) r (2.0)
|
||||
probe uav 1 (6) r (3.0)
|
||||
probe uav 1 (7) r (4.0)
|
||||
probe uav 1 (0) f32(0.0)
|
||||
probe uav 1 (1) f32(0.0)
|
||||
probe uav 1 (2) f32(0.0)
|
||||
probe uav 1 (3) f32(0.0)
|
||||
probe uav 1 (4) f32(1.0)
|
||||
probe uav 1 (5) f32(2.0)
|
||||
probe uav 1 (6) f32(3.0)
|
||||
probe uav 1 (7) f32(4.0)
|
||||
probe uav 2 (0) i32(8)
|
||||
probe uav 2 (1) i32(4)
|
||||
probe uav 2 (2) i32(0)
|
||||
|
@@ -25,7 +25,7 @@ void main()
|
||||
|
||||
[test]
|
||||
dispatch 1 1 1
|
||||
probe uav 0 (0, 0) r (0.6)
|
||||
probe uav 0 (1, 0) r (0.6)
|
||||
probe uav 0 (2, 0) r (0.6)
|
||||
probe uav 1 (0, 0) r (0.5)
|
||||
probe uav 0 (0, 0) f32(0.6)
|
||||
probe uav 0 (1, 0) f32(0.6)
|
||||
probe uav 0 (2, 0) f32(0.6)
|
||||
probe uav 1 (0, 0) f32(0.5)
|
||||
|
@@ -27,7 +27,7 @@ void main()
|
||||
|
||||
[test]
|
||||
todo(msl) dispatch 1 1 1
|
||||
probe uav 0 (0, 0) rgba (0.4, 0.1, 0.2, 0.3)
|
||||
probe uav 0 (0, 0) f32(0.4, 0.1, 0.2, 0.3)
|
||||
|
||||
[uav 0]
|
||||
format r32-float
|
||||
@@ -52,4 +52,4 @@ void main()
|
||||
|
||||
[test]
|
||||
todo(msl) dispatch 1 1 1
|
||||
probe uav 0 (0, 0) r (0.2)
|
||||
probe uav 0 (0, 0) f32(0.2)
|
||||
|
@@ -204,7 +204,7 @@ float4 main() : sv_target1
|
||||
|
||||
[test]
|
||||
todo(msl) draw quad
|
||||
probe uav 2 (0) rgba (11.1, 12.2, 13.3, 14.4)
|
||||
probe uav 2 (0) f32(11.1, 12.2, 13.3, 14.4)
|
||||
|
||||
[require]
|
||||
shader model >= 6.2
|
||||
@@ -228,7 +228,7 @@ void main()
|
||||
[test]
|
||||
uniform 0 uint4 0x4a204990 0x4b404ab0 0 0
|
||||
dispatch 1 1 1
|
||||
probe uav 1 (0) rgba(11.125, 12.25, 13.375, 14.5)
|
||||
probe uav 1 (0) f32(11.125, 12.25, 13.375, 14.5)
|
||||
|
||||
[compute shader]
|
||||
uniform half4 h;
|
||||
@@ -243,7 +243,7 @@ void main()
|
||||
[test]
|
||||
uniform 0 uint4 0x4a204990 0x4b404ab0 0 0
|
||||
dispatch 1 1 1
|
||||
probe uav 1 (0) rgba(11.125, 12.25, 13.375, 14.5)
|
||||
probe uav 1 (0) f32(11.125, 12.25, 13.375, 14.5)
|
||||
|
||||
[compute shader]
|
||||
uniform half h;
|
||||
@@ -258,7 +258,7 @@ void main()
|
||||
[test]
|
||||
uniform 0 uint 0x4990
|
||||
dispatch 1 1 1
|
||||
probe uav 1 (0) r(11.125)
|
||||
probe uav 1 (0) f32(11.125)
|
||||
|
||||
[uav 1]
|
||||
format r32g32b32a32-uint
|
||||
|
@@ -21,7 +21,7 @@ float4 main() : sv_target
|
||||
todo(glsl | msl) draw quad
|
||||
probe uav 1 (0) i32(10)
|
||||
if(sm<6) probe uav 1 (1) i32(11)
|
||||
if(sm>=6) probe uav 1 (1) r (11.1)
|
||||
if(sm>=6) probe uav 1 (1) f32(11.1)
|
||||
|
||||
[pixel shader]
|
||||
RWByteAddressBuffer u : register(u1);
|
||||
|
@@ -54,11 +54,11 @@ float4 main() : sv_target
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe uav 1 (0, 0) r (0.5)
|
||||
probe uav 1 (0, 1) r (0.6)
|
||||
probe uav 1 (1, 0) r (0.2)
|
||||
probe uav 1 (1, 1) r (0.7)
|
||||
probe uav 2 (0, 0) rgba (2.0, 1.0, 4.0, 3.0)
|
||||
probe uav 1 (0, 0) f32(0.5)
|
||||
probe uav 1 (0, 1) f32(0.6)
|
||||
probe uav 1 (1, 0) f32(0.2)
|
||||
probe uav 1 (1, 1) f32(0.7)
|
||||
probe uav 2 (0, 0) f32(2.0, 1.0, 4.0, 3.0)
|
||||
|
||||
|
||||
% UAVs are implicitly allocated starting from the highest render target slot.
|
||||
@@ -105,7 +105,7 @@ float4 main() : sv_target1
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe uav 2 (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
||||
probe uav 2 (0, 0) f32(0.9, 0.8, 0.7, 0.6)
|
||||
|
||||
|
||||
[uav 3]
|
||||
@@ -125,7 +125,7 @@ float4 main() : sv_target1
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe uav 3 (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
||||
probe uav 3 (0, 0) f32(0.9, 0.8, 0.7, 0.6)
|
||||
|
||||
% Uppercase register set name
|
||||
[pixel shader]
|
||||
@@ -139,7 +139,7 @@ float4 main() : sv_target1
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe uav 3 (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
||||
probe uav 3 (0, 0) f32(0.9, 0.8, 0.7, 0.6)
|
||||
|
||||
% Test that we can declare and use an array of UAVs.
|
||||
|
||||
@@ -167,8 +167,8 @@ float4 main() : sv_target1
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe uav 2 (0, 0) rgba (1.1, 1.2, 1.3, 1.4)
|
||||
probe uav 3 (0, 0) rgba (2.1, 2.2, 2.3, 2.4)
|
||||
probe uav 2 (0, 0) f32(1.1, 1.2, 1.3, 1.4)
|
||||
probe uav 3 (0, 0) f32(2.1, 2.2, 2.3, 2.4)
|
||||
|
||||
% RWTexture1D types
|
||||
[pixel shader]
|
||||
|
@@ -821,6 +821,21 @@ static void read_uint(const char **line, unsigned int *u, bool is_uniform)
|
||||
*line = rest;
|
||||
}
|
||||
|
||||
static void read_f32(const char **line, float *f)
|
||||
{
|
||||
char *rest;
|
||||
float val;
|
||||
|
||||
errno = 0;
|
||||
val = strtof(*line, &rest);
|
||||
|
||||
if (errno != 0 || rest == *line)
|
||||
fatal_error("Malformed f32 constant '%s'.\n", *line);
|
||||
|
||||
*f = val;
|
||||
*line = rest;
|
||||
}
|
||||
|
||||
static void read_int4(const char **line, struct ivec4 *v)
|
||||
{
|
||||
read_int(line, &v->x, true);
|
||||
@@ -1342,6 +1357,56 @@ static void parse_test_directive(struct shader_runner *runner, const char *line)
|
||||
check_readback_data_uint(rb, &box, v.x, 0);
|
||||
}
|
||||
}
|
||||
else if (match_string(line, "f32", &line))
|
||||
{
|
||||
struct vec4 v;
|
||||
|
||||
if (*line != '(')
|
||||
fatal_error("Malformed probe arguments '%s'.\n", line);
|
||||
++line;
|
||||
|
||||
read_f32(&line, &v.x);
|
||||
while (isspace(*line))
|
||||
++line;
|
||||
if (*line == ',')
|
||||
{
|
||||
++line;
|
||||
read_f32(&line, &v.y);
|
||||
while (isspace(*line))
|
||||
++line;
|
||||
if (*line == ',')
|
||||
{
|
||||
++line;
|
||||
read_f32(&line, &v.z);
|
||||
|
||||
while (isspace(*line))
|
||||
++line;
|
||||
if (*line != ',')
|
||||
fatal_error("Malformed probe arguments '%s'.\n", line);
|
||||
++line;
|
||||
read_f32(&line, &v.w);
|
||||
|
||||
if (sscanf(line, " ) %u", &ulps) < 1)
|
||||
ulps = 0;
|
||||
todo_if(runner->is_todo) bug_if(runner->is_bug)
|
||||
check_readback_data_vec4(rb, &rect, &v, ulps);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sscanf(line, " ) %u", &ulps) < 1)
|
||||
ulps = 0;
|
||||
todo_if(runner->is_todo) bug_if(runner->is_bug)
|
||||
check_readback_data_vec2(rb, &rect, &v, ulps);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sscanf(line, " ) %u", &ulps) < 1)
|
||||
ulps = 0;
|
||||
todo_if(runner->is_todo) bug_if(runner->is_bug)
|
||||
check_readback_data_float(rb, &rect, v.x, ulps);
|
||||
}
|
||||
}
|
||||
else if (match_string(line, "rgba", &line))
|
||||
{
|
||||
struct vec4 v;
|
||||
@@ -1354,30 +1419,6 @@ static void parse_test_directive(struct shader_runner *runner, const char *line)
|
||||
todo_if(runner->is_todo) bug_if(runner->is_bug)
|
||||
check_readback_data_vec4(rb, &rect, &v, ulps);
|
||||
}
|
||||
else if (match_string(line, "rg", &line))
|
||||
{
|
||||
struct vec4 v;
|
||||
|
||||
ret = sscanf(line, "( %f , %f ) %u", &v.x, &v.y, &ulps);
|
||||
if (ret < 2)
|
||||
fatal_error("Malformed probe arguments '%s'.\n", line);
|
||||
if (ret < 3)
|
||||
ulps = 0;
|
||||
todo_if(runner->is_todo) bug_if(runner->is_bug)
|
||||
check_readback_data_vec2(rb, &rect, &v, ulps);
|
||||
}
|
||||
else if (match_string(line, "r", &line))
|
||||
{
|
||||
float expect;
|
||||
|
||||
ret = sscanf(line, "( %f ) %u", &expect, &ulps);
|
||||
if (ret < 1)
|
||||
fatal_error("Malformed probe arguments '%s'.\n", line);
|
||||
if (ret < 2)
|
||||
ulps = 0;
|
||||
todo_if(runner->is_todo) bug_if(runner->is_bug)
|
||||
check_readback_data_float(rb, &rect, expect, ulps);
|
||||
}
|
||||
else
|
||||
{
|
||||
fatal_error("Malformed probe arguments '%s'.\n", line);
|
||||
|
Reference in New Issue
Block a user