[PATCH vkd3d 01/12] tests: Mark individual invalid shaders as todo.

Giovanni Mascellani gmascellani at codeweavers.com
Mon Apr 18 01:33:57 CDT 2022


From: Zebediah Figura <zfigura at codeweavers.com>

---
 Makefile.am                                   |  3 ---
 tests/hlsl-function.shader_test               | 14 ++++++-------
 ...lsl-return-implicit-conversion.shader_test | 10 ++++-----
 tests/shader_runner.c                         | 21 ++++++++++++++++---
 4 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index ed881ffa..52d057c9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -317,9 +317,6 @@ tests_shader_runner_SOURCES = \
 tests_vkd3d_api_LDADD = libvkd3d.la @VULKAN_LIBS@
 tests_vkd3d_shader_api_LDADD = libvkd3d-shader.la
 SHADER_TEST_LOG_COMPILER = tests/shader_runner
-XFAIL_TESTS = \
-	tests/hlsl-function.shader_test \
-	tests/hlsl-return-implicit-conversion.shader_test
 endif
 
 EXTRA_DIST += $(vkd3d_shader_tests)
diff --git a/tests/hlsl-function.shader_test b/tests/hlsl-function.shader_test
index 586f1ab7..6f11e35b 100644
--- a/tests/hlsl-function.shader_test
+++ b/tests/hlsl-function.shader_test
@@ -1,4 +1,4 @@
-[pixel shader fail]
+[pixel shader fail todo]
 
 float4 func();
 
@@ -23,7 +23,7 @@ float4 main() : sv_target
     return 0;
 }
 
-[pixel shader fail]
+[pixel shader fail todo]
 
 void func(inout float o)
 {
@@ -37,7 +37,7 @@ float4 main() : sv_target
     return 0;
 }
 
-[pixel shader fail]
+[pixel shader fail todo]
 
 void func(inout float2 o)
 {
@@ -51,7 +51,7 @@ float4 main() : sv_target
     return 0;
 }
 
-[pixel shader fail]
+[pixel shader fail todo]
 
 void func(out float o)
 {
@@ -65,7 +65,7 @@ float4 main() : sv_target
     return x;
 }
 
-[pixel shader fail]
+[pixel shader fail todo]
 
 void func(inout float o)
 {
@@ -78,7 +78,7 @@ float4 main() : sv_target
     return x;
 }
 
-[pixel shader fail]
+[pixel shader fail todo]
 
 void func()
 {
@@ -89,7 +89,7 @@ float4 main() : sv_target
     return func();
 }
 
-[pixel shader fail]
+[pixel shader fail todo]
 
 void foo()
 {
diff --git a/tests/hlsl-return-implicit-conversion.shader_test b/tests/hlsl-return-implicit-conversion.shader_test
index 4c07cf84..38d21633 100644
--- a/tests/hlsl-return-implicit-conversion.shader_test
+++ b/tests/hlsl-return-implicit-conversion.shader_test
@@ -98,7 +98,7 @@ float4 main() : sv_target
 todo draw quad
 probe all rgba (0.4, 0.3, 0.2, 0.0)
 
-[pixel shader fail]
+[pixel shader fail todo]
 float3x1 func()
 {
     return float1x3(0.4, 0.3, 0.2);
@@ -109,7 +109,7 @@ float4 main() : sv_target
     return float4(func(), 0.0);
 }
 
-[pixel shader fail]
+[pixel shader fail todo]
 float1x3 func()
 {
     return float3x1(0.4, 0.3, 0.2);
@@ -165,7 +165,7 @@ float4 main() : sv_target
 todo draw quad
 probe all rgba (0.4, 0.3, 0.2, 0.0)
 
-[pixel shader fail]
+[pixel shader fail todo]
 float3x1 func()
 {
     return float4(0.4, 0.3, 0.2, 0.1);
@@ -191,7 +191,7 @@ float4 main() : sv_target
 todo draw quad
 probe all rgba (0.4, 0.3, 0.2, 0.0)
 
-[pixel shader fail]
+[pixel shader fail todo]
 float3x1 func()
 {
     return float1x4(0.4, 0.3, 0.2, 0.1);
@@ -217,7 +217,7 @@ float4 main() : sv_target
 todo draw quad
 probe all rgba (0.4, 0.3, 0.2, 0.0)
 
-[pixel shader fail]
+[pixel shader fail todo]
 float1x3 func()
 {
     return float4x1(0.4, 0.3, 0.2, 0.1);
diff --git a/tests/shader_runner.c b/tests/shader_runner.c
index 8633ee9a..8804164e 100644
--- a/tests/shader_runner.c
+++ b/tests/shader_runner.c
@@ -80,6 +80,7 @@ enum parse_state
     STATE_REQUIRE,
     STATE_SAMPLER,
     STATE_SHADER_INVALID_PIXEL,
+    STATE_SHADER_INVALID_PIXEL_TODO,
     STATE_SHADER_PIXEL,
     STATE_SHADER_VERTEX,
     STATE_TEXTURE,
@@ -642,15 +643,24 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const
                     break;
 
                 case STATE_SHADER_INVALID_PIXEL:
+                case STATE_SHADER_INVALID_PIXEL_TODO:
                 {
                     ID3D10Blob *blob = NULL, *errors = NULL;
                     HRESULT hr;
 
                     hr = D3DCompile(shader_source, strlen(shader_source), NULL,
                             NULL, NULL, "main", "ps_4_0", 0, 0, &blob, &errors);
-                    ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
-                    ok(!blob, "Expected no compiled shader blob.\n");
-                    ok(!!errors, "Expected non-NULL error blob.\n");
+                    todo_if (state == STATE_SHADER_INVALID_PIXEL_TODO)
+                        ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+                    if (hr == S_OK)
+                    {
+                        ID3D10Blob_Release(blob);
+                    }
+                    else
+                    {
+                        ok(!blob, "Expected no compiled shader blob.\n");
+                        ok(!!errors, "Expected non-NULL error blob.\n");
+                    }
                     if (errors)
                     {
                         if (vkd3d_test_state.debug_level)
@@ -735,6 +745,10 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const
             {
                 state = STATE_SHADER_INVALID_PIXEL;
             }
+            else if (!strcmp(line, "[pixel shader fail todo]\n"))
+            {
+                state = STATE_SHADER_INVALID_PIXEL_TODO;
+            }
             else if (sscanf(line, "[sampler %u]\n", &index))
             {
                 state = STATE_SAMPLER;
@@ -817,6 +831,7 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const
                 case STATE_PREPROC:
                 case STATE_PREPROC_INVALID:
                 case STATE_SHADER_INVALID_PIXEL:
+                case STATE_SHADER_INVALID_PIXEL_TODO:
                 case STATE_SHADER_PIXEL:
                 case STATE_SHADER_VERTEX:
                 {
-- 
2.35.2




More information about the wine-devel mailing list