[PATCH] d3d11/tests: Trace the name of the tests in single threaded mode.

Francois Gouget fgouget at codeweavers.com
Fri May 7 12:39:00 CDT 2021


This allows figuring out which function the crash happens in when there 
is no backtrace. Just set WINETEST_NO_MT_D3D=1 WINETEST_DEBUG=2.

Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
The patch decodes the feature level before printing it but maybe that's
presuming too much and a simple %04x would be better.
---
 dlls/d3d11/tests/d3d11.c | 34 +++++++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 11 deletions(-)

diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index d412f430b60..29f8c7ce831 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -49,6 +49,7 @@ static struct test_entry
         void (*test)(void);
         void (*test_fl)(D3D_FEATURE_LEVEL fl);
     } u;
+    const char* name;
     D3D_FEATURE_LEVEL fl;
 } *mt_tests;
 size_t mt_tests_size, mt_test_count;
@@ -121,21 +122,25 @@ static void queue_test_entry(const struct test_entry *t)
     mt_tests[mt_test_count++] = *t;
 }
 
-static void queue_test_fl(void (*test)(const D3D_FEATURE_LEVEL fl), D3D_FEATURE_LEVEL fl)
+#define queue_test_fl(f,fl) _queue_test_fl(f,#f,fl)
+static void _queue_test_fl(void (*test)(const D3D_FEATURE_LEVEL fl), const char* name, D3D_FEATURE_LEVEL fl)
 {
     struct test_entry t;
 
     t.u.test_fl = test;
     t.fl = fl;
+    t.name = name;
     queue_test_entry(&t);
 }
 
-static void queue_test(void (*test)(void))
+#define queue_test(f) _queue_test(f,#f)
+static void _queue_test(void (*test)(void), const char* name)
 {
     struct test_entry t;
 
     t.u.test = test;
     t.fl = 0;
+    t.name = name;
     queue_test_entry(&t);
 }
 
@@ -172,6 +177,7 @@ static void run_queued_tests(void)
     {
         for (i = 0; i < mt_test_count; ++i)
         {
+            trace("fl=%d.%d %s\n", mt_tests[i].fl >> 12, (mt_tests[i].fl >> 8) & 0xf, mt_tests[i].name);
             run_mt_test(&mt_tests[i]);
         }
 
@@ -20452,8 +20458,10 @@ static void test_fl9_draw(const D3D_FEATURE_LEVEL feature_level)
     release_test_context(&test_context);
 }
 
-static void queue_for_each_feature_level_in_range(D3D_FEATURE_LEVEL begin,
-        D3D_FEATURE_LEVEL end, void (*test_func)(const D3D_FEATURE_LEVEL fl))
+#define queue_for_each_feature_level_in_range(b,e,f) _queue_for_each_feature_level_in_range(b,e,f,#f)
+static void _queue_for_each_feature_level_in_range(D3D_FEATURE_LEVEL begin,
+        D3D_FEATURE_LEVEL end, void (*test_func)(const D3D_FEATURE_LEVEL fl),
+        const char* name)
 {
     static const D3D_FEATURE_LEVEL feature_levels[] =
     {
@@ -20471,20 +20479,24 @@ static void queue_for_each_feature_level_in_range(D3D_FEATURE_LEVEL begin,
     for (i = 0; i < ARRAY_SIZE(feature_levels); ++i)
     {
         if (begin <= feature_levels[i] && feature_levels[i] <= end)
-            queue_test_fl(test_func, feature_levels[i]);
+            _queue_test_fl(test_func, name, feature_levels[i]);
     }
 }
 
-static void queue_for_each_feature_level(void (*test_func)(const D3D_FEATURE_LEVEL fl))
+#define queue_for_each_feature_level(f) _queue_for_each_feature_level(f,#f)
+static void _queue_for_each_feature_level(void (*test_func)(const D3D_FEATURE_LEVEL fl),
+        const char* name)
 {
-    queue_for_each_feature_level_in_range(D3D_FEATURE_LEVEL_9_1,
-            D3D_FEATURE_LEVEL_11_1, test_func);
+    _queue_for_each_feature_level_in_range(D3D_FEATURE_LEVEL_9_1,
+             D3D_FEATURE_LEVEL_11_1, test_func, name);
 }
 
-static void queue_for_each_9_x_feature_level(void (*test_func)(const D3D_FEATURE_LEVEL fl))
+#define queue_for_each_9_x_feature_level(f) _queue_for_each_9_x_feature_level(f,#f)
+static void _queue_for_each_9_x_feature_level(void (*test_func)(const D3D_FEATURE_LEVEL fl),
+        const char* name)
 {
-    queue_for_each_feature_level_in_range(D3D_FEATURE_LEVEL_9_1,
-            D3D_FEATURE_LEVEL_9_3, test_func);
+    _queue_for_each_feature_level_in_range(D3D_FEATURE_LEVEL_9_1,
+            D3D_FEATURE_LEVEL_9_3, test_func, name);
 }
 
 static void test_ddy(void)
-- 
2.20.1



More information about the wine-devel mailing list