tests/shader_runner: Introduce the "f32" probe format.

This commit is contained in:
Henri Verbeet
2025-06-06 01:02:45 +02:00
parent 9c987e5a0b
commit cea7b4e920
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
17 changed files with 196 additions and 155 deletions

View File

@@ -19,4 +19,4 @@ void main()
[test] [test]
dispatch 1 1 1 dispatch 1 1 1
probe uav 0 (0, 0) r (-123.0) probe uav 0 (0, 0) f32(-123.0)

View File

@@ -37,29 +37,29 @@ depth greater equal
clear rtv 0 0.0 0.0 0.0 0.0 clear rtv 0 0.0 0.0 0.0 0.0
clear dsv 0.0 clear dsv 0.0
draw quad draw quad
probe (0, 0) rgba(0, 0, 0, 0) probe (0, 0) f32(0, 0, 0, 0)
probe uav 1 (0) r(0.0) probe uav 1 (0) f32(0.0)
clear rtv 0 0.0 0.0 0.0 0.0 clear rtv 0 0.0 0.0 0.0 0.0
clear dsv 0.3 clear dsv 0.3
draw quad draw quad
probe (0, 0) rgba(1, 1, 1, 1) probe (0, 0) f32(1, 1, 1, 1)
probe uav 1 (0) r(1.0) probe uav 1 (0) f32(1.0)
clear rtv 0 0.0 0.0 0.0 0.0 clear rtv 0 0.0 0.0 0.0 0.0
clear dsv 0.5 clear dsv 0.5
draw quad draw quad
probe (0, 0) rgba(1, 1, 1, 1) probe (0, 0) f32(1, 1, 1, 1)
probe uav 1 (0) r(1.0) probe uav 1 (0) f32(1.0)
clear rtv 0 0.0 0.0 0.0 0.0 clear rtv 0 0.0 0.0 0.0 0.0
clear dsv 0.6 clear dsv 0.6
draw quad draw quad
probe (0, 0) rgba(1, 1, 1, 1) probe (0, 0) f32(1, 1, 1, 1)
probe uav 1 (0) r(1.0) probe uav 1 (0) f32(1.0)
clear rtv 0 0.0 0.0 0.0 0.0 clear rtv 0 0.0 0.0 0.0 0.0
clear dsv 1.0 clear dsv 1.0
draw quad draw quad
probe (0, 0) rgba(0, 0, 0, 0) probe (0, 0) f32(0, 0, 0, 0)
probe uav 1 (0) r(0.0) probe uav 1 (0) f32(0.0)

View File

@@ -17,22 +17,22 @@ uniform 0 float 0.0
clear dsv 1.0 clear dsv 1.0
depth less depth less
draw quad draw quad
probe dsv (0,0) r (0.0) probe dsv (0,0) f32(0.0)
uniform 0 float 0.75 uniform 0 float 0.75
clear dsv 1.0 clear dsv 1.0
draw quad draw quad
probe dsv (0,0) r (0.75) probe dsv (0,0) f32(0.75)
clear dsv 0.5 clear dsv 0.5
depth greater depth greater
draw quad draw quad
probe dsv (0,0) r (0.75) probe dsv (0,0) f32(0.75)
depth less depth less
clear dsv 0.5 clear dsv 0.5
draw quad draw quad
probe dsv (0,0) r (0.5) probe dsv (0,0) f32(0.5)
[require] [require]
@@ -66,15 +66,15 @@ clear rtv 0 1.0 1.0 1.0 1.0
clear dsv 0.5 clear dsv 0.5
depth greater equal depth greater equal
todo(sm<6) draw quad todo(sm<6) draw quad
probe (0, 0) rgba (0.0, 1.0, 0.0, 1.0) probe (0, 0) f32(0.0, 1.0, 0.0, 1.0)
probe dsv (0,0) r (0.75) probe dsv (0,0) f32(0.75)
uniform 0 float4 0.75 0.375 0.0 0.0 uniform 0 float4 0.75 0.375 0.0 0.0
clear rtv 0 1.0 1.0 1.0 1.0 clear rtv 0 1.0 1.0 1.0 1.0
clear dsv 0.5 clear dsv 0.5
todo(sm<6) draw quad 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)
probe dsv (0,0) r (0.5) probe dsv (0,0) f32(0.5)
[pixel shader todo] [pixel shader todo]
@@ -92,19 +92,19 @@ clear rtv 0 1.0 1.0 1.0 1.0
clear dsv 0.5 clear dsv 0.5
depth greater equal depth greater equal
todo(sm<6) draw quad todo(sm<6) draw quad
probe (0, 0) rgba (0.0, 1.0, 0.0, 1.0) probe (0, 0) f32(0.0, 1.0, 0.0, 1.0)
probe dsv (0,0) r (0.75) probe dsv (0,0) f32(0.75)
uniform 0 float4 0.375 0.625 0.0 0.0 uniform 0 float4 0.375 0.625 0.0 0.0
clear rtv 0 1.0 1.0 1.0 1.0 clear rtv 0 1.0 1.0 1.0 1.0
clear dsv 0.5 clear dsv 0.5
todo(sm<6) draw quad todo(sm<6) draw quad
probe (0, 0) rgba (0.0, 1.0, 0.0, 1.0) probe (0, 0) f32(0.0, 1.0, 0.0, 1.0)
probe dsv (0,0) r (0.625) probe dsv (0,0) f32(0.625)
uniform 0 float4 0.375 0.375 0.0 0.0 uniform 0 float4 0.375 0.375 0.0 0.0
clear rtv 0 1.0 1.0 1.0 1.0 clear rtv 0 1.0 1.0 1.0 1.0
clear dsv 0.5 clear dsv 0.5
todo(sm<6) draw quad 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)
probe dsv (0,0) r (0.5) probe dsv (0,0) f32(0.5)

View File

@@ -11,10 +11,10 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1 2 3 4 uniform 0 float4 1 2 3 4
todo(sm<4 | glsl) draw quad 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 uniform 0 float4 9 8 7 6
todo(sm<4 | glsl) draw quad todo(sm<4 | glsl) draw quad
probe (0, 0) rgba (1, 2, 3, 4) probe (0, 0) f32(1, 2, 3, 4)
[require] [require]
shader model >= 3.0 shader model >= 3.0
@@ -31,14 +31,14 @@ float4 main(float4 pos : sv_position) : sv_target
[test] [test]
todo(sm<4 | glsl | msl) draw quad todo(sm<4 | glsl | msl) draw quad
probe (0, 0) rgba (1, 0, 0, 1) probe (0, 0) f32(1, 0, 0, 1)
probe (1, 0) rgba (1, 2, 3, 4) probe (1, 0) f32(1, 2, 3, 4)
probe (0, 1) rgba (1, 2, 3, 4) probe (0, 1) f32(1, 2, 3, 4)
probe (1, 1) rgba (1, 0, 0, 1) probe (1, 1) f32(1, 0, 0, 1)
probe (2, 0) rgba (1, 0, 0, 1) probe (2, 0) f32(1, 0, 0, 1)
probe (3, 0) rgba (1, 2, 3, 4) probe (3, 0) f32(1, 2, 3, 4)
probe (2, 1) rgba (1, 2, 3, 4) probe (2, 1) f32(1, 2, 3, 4)
probe (3, 1) rgba (1, 0, 0, 1) probe (3, 1) f32(1, 0, 0, 1)
[require] [require]
shader model >= 5.0 shader model >= 5.0
@@ -69,11 +69,11 @@ float4 main(float4 pos : sv_position) : sv_target
[test] [test]
uniform 0 float4 1 2 3 4 uniform 0 float4 1 2 3 4
todo(glsl) draw quad todo(glsl) draw quad
probe (0, 0) rgba (1, 2, 3, 4) probe (0, 0) f32(1, 2, 3, 4)
probe uav 1 (0, 0) r (1.0) probe uav 1 (0, 0) f32(1.0)
probe uav 1 (1, 0) r (1.0) probe uav 1 (1, 0) f32(1.0)
uniform 0 float4 9 8 7 6 uniform 0 float4 9 8 7 6
todo(glsl) draw quad todo(glsl) draw quad
probe (0, 0) rgba (1, 2, 3, 4) probe (0, 0) f32(1, 2, 3, 4)
probe uav 1 (0, 0) r (2.0) probe uav 1 (0, 0) f32(2.0)
probe uav 1 (1, 0) r (1.0) probe uav 1 (1, 0) f32(1.0)

View File

@@ -27,5 +27,5 @@ depth greater equal
clear rtv 0 0.0 0.0 0.0 0.0 clear rtv 0 0.0 0.0 0.0 0.0
clear dsv 0.5 clear dsv 0.5
todo(msl) draw quad todo(msl) draw quad
probe (0, 0) rgba(0, 0, 0, 0) probe (0, 0) f32(0, 0, 0, 0)
probe uav 1 (0) r(0.0) probe uav 1 (0) f32(0.0)

View File

@@ -38,7 +38,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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] [pixel shader fail todo]
@@ -79,7 +79,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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... % float and float1 can be defined separately...
@@ -195,7 +195,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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. % Component type narrowing is preferred over component count narrowing.
[pixel shader] [pixel shader]
@@ -209,7 +209,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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 % 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 % between the parameter and argument types. If C is the same as the parameter, the
@@ -237,7 +237,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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 % 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, % between the parameter and argument types. If C is the same as the argument,
@@ -299,7 +299,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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 % 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 % 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] [test]
draw quad 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. % Same as above.
@@ -349,7 +349,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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. % An exact match is preferred for minimum precision types as well.
[pixel shader todo] [pixel shader todo]
@@ -363,7 +363,7 @@ float4 main() : sv_target
[test] [test]
todo(sm<6) draw quad 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] [require]
% Need SM5 for doubles. % Need SM5 for doubles.
@@ -395,7 +395,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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. % Component type widening is preferred over component type narrowing.
[pixel shader] [pixel shader]
@@ -409,7 +409,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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. % Component count widening is preferred over component type narrowing.
[pixel shader] [pixel shader]
@@ -423,7 +423,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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. % Component count widening is preferred over component type class conversion.
[pixel shader] [pixel shader]
@@ -437,7 +437,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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 % 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, % 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. % but with more components, it is preferred over all other cases.
@@ -466,7 +466,7 @@ float4 main() : sv_target
[test] [test]
draw quad draw quad
probe (0, 0) r(2.0) probe (0, 0) f32(2.0)
[pixel shader] [pixel shader]
float func(uint4 x, double y) float func(uint4 x, double y)
@@ -489,7 +489,7 @@ float4 main() : sv_target
[test] [test]
draw quad draw quad
probe (0, 0) r(1.0) probe (0, 0) f32(1.0)
[pixel shader] [pixel shader]
float func(uint4 x, double y) float func(uint4 x, double y)
@@ -512,7 +512,7 @@ float4 main() : sv_target
[test] [test]
draw quad draw quad
probe (0, 0) r(1.0) probe (0, 0) f32(1.0)
[pixel shader] [pixel shader]
float func(half4 x, half y, half z, half a) float func(half4 x, half y, half z, half a)
@@ -535,7 +535,7 @@ float4 main() : sv_target
[test] [test]
draw quad draw quad
probe (0, 0) r(1.0) probe (0, 0) f32(1.0)
[require] [require]
% Reset % Reset
@@ -559,7 +559,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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. % Some matrices are implicitly compatible with vectors and will ambiguate with them.
@@ -681,7 +681,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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] [pixel shader]
float func(float x, float y) float func(float x, float y)
@@ -703,7 +703,7 @@ float4 main() : sv_target
[test] [test]
draw quad draw quad
probe (0, 0) r(2.0) probe (0, 0) f32(2.0)
[pixel shader] [pixel shader]
float func(float3 a, float3 b, float3 c, float3 d) float func(float3 a, float3 b, float3 c, float3 d)
@@ -725,4 +725,4 @@ float4 main() : sv_target
[test] [test]
draw quad draw quad
probe (0, 0) r(1.0) probe (0, 0) f32(1.0)

View File

@@ -9,7 +9,7 @@ float4x1 main() : sv_target
[test] [test]
draw quad 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] [pixel shader]
row_major float1x4 main() : sv_target row_major float1x4 main() : sv_target
@@ -19,7 +19,7 @@ row_major float1x4 main() : sv_target
[test] [test]
draw quad 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] [rtv 0]
format r32-float format r32-float
@@ -45,10 +45,10 @@ row_major float4x1 main() : sv_target
[test] [test]
todo(sm>=6) draw quad todo(sm>=6) draw quad
probe rtv 0 (0,0) r (1.0) probe rtv 0 (0,0) f32(1.0)
probe rtv 1 (0,0) r (2.0) probe rtv 1 (0,0) f32(2.0)
probe rtv 2 (0,0) r (3.0) probe rtv 2 (0,0) f32(3.0)
probe rtv 3 (0,0) r (4.0) probe rtv 3 (0,0) f32(4.0)
[pixel shader fail(sm>=6)] [pixel shader fail(sm>=6)]
float1x4 main() : sv_target float1x4 main() : sv_target
@@ -58,10 +58,10 @@ float1x4 main() : sv_target
[test] [test]
todo(sm>=6) draw quad todo(sm>=6) draw quad
probe rtv 0 (0,0) r (1.0) probe rtv 0 (0,0) f32(1.0)
probe rtv 1 (0,0) r (2.0) probe rtv 1 (0,0) f32(2.0)
probe rtv 2 (0,0) r (3.0) probe rtv 2 (0,0) f32(3.0)
probe rtv 3 (0,0) r (4.0) probe rtv 3 (0,0) f32(4.0)
[pixel shader fail] [pixel shader fail]
void main(out float1x2 x : sv_target0, out float1x2 y : sv_target1) 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] [test]
todo(sm>=6) draw quad todo(sm>=6) draw quad
probe rtv 0 (0,0) r (1.0) probe rtv 0 (0,0) f32(1.0)
probe rtv 1 (0,0) r (2.0) probe rtv 1 (0,0) f32(2.0)
probe rtv 2 (0,0) r (5.0) probe rtv 2 (0,0) f32(5.0)
probe rtv 3 (0,0) r (6.0) probe rtv 3 (0,0) f32(6.0)
[rtv 0] [rtv 0]
format r32g32b32a32-float format r32g32b32a32-float
@@ -97,6 +97,6 @@ void main(out row_major float1x4 x : sv_target0, out float1x2 y : sv_target1)
[test] [test]
todo(sm>=6) draw quad todo(sm>=6) draw quad
probe rtv 0 (0,0) rgba (1.0, 2.0, 3.0, 4.0) probe rtv 0 (0,0) f32(1.0, 2.0, 3.0, 4.0)
probe rtv 1 (0,0) r (5.0) probe rtv 1 (0,0) f32(5.0)
probe rtv 2 (0,0) r (6.0) probe rtv 2 (0,0) f32(6.0)

View File

@@ -220,9 +220,9 @@ void main(uint2 id : sv_dispatchthreadid)
[test] [test]
dispatch 1 1 1 dispatch 1 1 1
probe uav 0 (0, 0) r (2.0) probe uav 0 (0, 0) f32(2.0)
if(sm<6) probe uav 0 (0, 1) r (1.0) if(sm<6) probe uav 0 (0, 1) f32(1.0)
if(sm<6) probe uav 0 (1, 0) r (2.0) if(sm<6) probe uav 0 (1, 0) f32(2.0)
probe uav 0 (1, 1) r (1.0) probe uav 0 (1, 1) f32(1.0)
if(sm>=6) probe uav 0 (0, 1) r (2.0) if(sm>=6) probe uav 0 (0, 1) f32(2.0)
if(sm>=6) probe uav 0 (1, 0) r (1.0) if(sm>=6) probe uav 0 (1, 0) f32(1.0)

View File

@@ -50,7 +50,7 @@ float2 main() : sv_target
[test] [test]
draw quad draw quad
probe (0, 0) rg (22.0, -22.0) probe (0, 0) f32(22.0, -22.0)
[rtv 0] [rtv 0]
format r32g32b32a32-uint format r32g32b32a32-uint
@@ -94,7 +94,7 @@ float2 main() : sv_target
[test] [test]
todo(mvk & vulkan | msl) draw quad 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] [rtv 0]
format r32g32b32a32-sint format r32g32b32a32-sint
@@ -138,7 +138,7 @@ float2 main() : sv_target
[test] [test]
todo(mvk & vulkan | msl) draw quad 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] [rtv 0]
format r32-uint format r32-uint
@@ -152,7 +152,7 @@ float4 main() : sv_target
[test] [test]
todo(mvk & vulkan | msl) draw quad todo(mvk & vulkan | msl) draw quad
todo(mvk) probe (0, 0) r (22.0) todo(mvk) probe (0, 0) f32(22.0)
[pixel shader] [pixel shader]
uint4 main() : sv_target uint4 main() : sv_target
@@ -182,7 +182,7 @@ float2 main() : sv_target
[test] [test]
todo(mvk & vulkan | msl) draw quad 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. % For the avoidance of doubt, 64 bit types cannot be used as target outputs.

View File

@@ -27,7 +27,7 @@ float4 main() : sv_target
[test] [test]
draw quad 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] [pixel shader fail]
Texture2D<float4> u; Texture2D<float4> u;
@@ -54,11 +54,11 @@ float4 main() : sv_target
[test] [test]
draw quad draw quad
probe uav 0 (0, 0) r (0.5) probe uav 0 (0, 0) f32(0.5)
probe uav 0 (0, 1) r (0.6) probe uav 0 (0, 1) f32(0.6)
probe uav 0 (1, 0) r (0.2) probe uav 0 (1, 0) f32(0.2)
probe uav 0 (1, 1) r (0.7) probe uav 0 (1, 1) f32(0.7)
probe uav 1 (0, 0) rgba (2.0, 1.0, 4.0, 3.0) probe uav 1 (0, 0) f32(2.0, 1.0, 4.0, 3.0)
[uav 2] [uav 2]
@@ -77,7 +77,7 @@ float4 main() : sv_target1
[test] [test]
draw quad 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 % Uppercase register set name
[pixel shader] [pixel shader]
@@ -91,7 +91,7 @@ float4 main() : sv_target1
[test] [test]
draw quad 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. % Test that we can declare and use an array of UAVs.
@@ -117,8 +117,8 @@ float4 main() : sv_target1
[test] [test]
todo(mvk) draw quad todo(mvk) draw quad
probe uav 1 (0, 0) rgba (1.1, 1.2, 1.3, 1.4) probe uav 1 (0, 0) f32(1.1, 1.2, 1.3, 1.4)
probe uav 2 (0, 0) rgba (2.1, 2.2, 2.3, 2.4) probe uav 2 (0, 0) f32(2.1, 2.2, 2.3, 2.4)
% RWTexture1D types % RWTexture1D types
[pixel shader] [pixel shader]

View File

@@ -192,14 +192,14 @@ void main(uint local_idx : SV_GroupIndex, uint group_id : SV_GroupID,
[test] [test]
uniform 0 uint 1 uniform 0 uint 1
todo(sm<6) dispatch 2 1 1 todo(sm<6) dispatch 2 1 1
probe uav 1 (0) r (0.0) probe uav 1 (0) f32(0.0)
probe uav 1 (1) r (0.0) probe uav 1 (1) f32(0.0)
probe uav 1 (2) r (0.0) probe uav 1 (2) f32(0.0)
probe uav 1 (3) r (0.0) probe uav 1 (3) f32(0.0)
probe uav 1 (4) r (1.0) probe uav 1 (4) f32(1.0)
probe uav 1 (5) r (2.0) probe uav 1 (5) f32(2.0)
probe uav 1 (6) r (3.0) probe uav 1 (6) f32(3.0)
probe uav 1 (7) r (4.0) probe uav 1 (7) f32(4.0)
probe uav 2 (0) i32(8) probe uav 2 (0) i32(8)
probe uav 2 (1) i32(4) probe uav 2 (1) i32(4)
probe uav 2 (2) i32(0) probe uav 2 (2) i32(0)

View File

@@ -25,7 +25,7 @@ void main()
[test] [test]
dispatch 1 1 1 dispatch 1 1 1
probe uav 0 (0, 0) r (0.6) probe uav 0 (0, 0) f32(0.6)
probe uav 0 (1, 0) r (0.6) probe uav 0 (1, 0) f32(0.6)
probe uav 0 (2, 0) r (0.6) probe uav 0 (2, 0) f32(0.6)
probe uav 1 (0, 0) r (0.5) probe uav 1 (0, 0) f32(0.5)

View File

@@ -27,7 +27,7 @@ void main()
[test] [test]
todo(msl) dispatch 1 1 1 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] [uav 0]
format r32-float format r32-float
@@ -52,4 +52,4 @@ void main()
[test] [test]
todo(msl) dispatch 1 1 1 todo(msl) dispatch 1 1 1
probe uav 0 (0, 0) r (0.2) probe uav 0 (0, 0) f32(0.2)

View File

@@ -204,7 +204,7 @@ float4 main() : sv_target1
[test] [test]
todo(msl) draw quad 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] [require]
shader model >= 6.2 shader model >= 6.2
@@ -228,7 +228,7 @@ void main()
[test] [test]
uniform 0 uint4 0x4a204990 0x4b404ab0 0 0 uniform 0 uint4 0x4a204990 0x4b404ab0 0 0
dispatch 1 1 1 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] [compute shader]
uniform half4 h; uniform half4 h;
@@ -243,7 +243,7 @@ void main()
[test] [test]
uniform 0 uint4 0x4a204990 0x4b404ab0 0 0 uniform 0 uint4 0x4a204990 0x4b404ab0 0 0
dispatch 1 1 1 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] [compute shader]
uniform half h; uniform half h;
@@ -258,7 +258,7 @@ void main()
[test] [test]
uniform 0 uint 0x4990 uniform 0 uint 0x4990
dispatch 1 1 1 dispatch 1 1 1
probe uav 1 (0) r(11.125) probe uav 1 (0) f32(11.125)
[uav 1] [uav 1]
format r32g32b32a32-uint format r32g32b32a32-uint

View File

@@ -21,7 +21,7 @@ float4 main() : sv_target
todo(glsl | msl) draw quad todo(glsl | msl) draw quad
probe uav 1 (0) i32(10) probe uav 1 (0) i32(10)
if(sm<6) probe uav 1 (1) i32(11) 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] [pixel shader]
RWByteAddressBuffer u : register(u1); RWByteAddressBuffer u : register(u1);

View File

@@ -54,11 +54,11 @@ float4 main() : sv_target
[test] [test]
draw quad draw quad
probe uav 1 (0, 0) r (0.5) probe uav 1 (0, 0) f32(0.5)
probe uav 1 (0, 1) r (0.6) probe uav 1 (0, 1) f32(0.6)
probe uav 1 (1, 0) r (0.2) probe uav 1 (1, 0) f32(0.2)
probe uav 1 (1, 1) r (0.7) probe uav 1 (1, 1) f32(0.7)
probe uav 2 (0, 0) rgba (2.0, 1.0, 4.0, 3.0) 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. % UAVs are implicitly allocated starting from the highest render target slot.
@@ -105,7 +105,7 @@ float4 main() : sv_target1
[test] [test]
draw quad 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] [uav 3]
@@ -125,7 +125,7 @@ float4 main() : sv_target1
[test] [test]
draw quad 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 % Uppercase register set name
[pixel shader] [pixel shader]
@@ -139,7 +139,7 @@ float4 main() : sv_target1
[test] [test]
draw quad 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. % Test that we can declare and use an array of UAVs.
@@ -167,8 +167,8 @@ float4 main() : sv_target1
[test] [test]
draw quad draw quad
probe uav 2 (0, 0) rgba (1.1, 1.2, 1.3, 1.4) probe uav 2 (0, 0) f32(1.1, 1.2, 1.3, 1.4)
probe uav 3 (0, 0) rgba (2.1, 2.2, 2.3, 2.4) probe uav 3 (0, 0) f32(2.1, 2.2, 2.3, 2.4)
% RWTexture1D types % RWTexture1D types
[pixel shader] [pixel shader]

View File

@@ -821,6 +821,21 @@ static void read_uint(const char **line, unsigned int *u, bool is_uniform)
*line = rest; *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) static void read_int4(const char **line, struct ivec4 *v)
{ {
read_int(line, &v->x, true); 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); 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)) else if (match_string(line, "rgba", &line))
{ {
struct vec4 v; 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) todo_if(runner->is_todo) bug_if(runner->is_bug)
check_readback_data_vec4(rb, &rect, &v, ulps); 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 else
{ {
fatal_error("Malformed probe arguments '%s'.\n", line); fatal_error("Malformed probe arguments '%s'.\n", line);