[PATCH] Disable multithreaded DirectX tests if WINETEST_NO_MT_OPENGL is set.

Francois Gouget fgouget at codeweavers.com
Tue Apr 2 05:47:02 CDT 2019


The nouveau graphics driver's support for multithreaded OpenGL is
buggy at least up to (18.2.8) so that any Wine test that performs
multithreaded OpenGL accesses freezes, crashes the Mesa stack and
eventually freezes the whole computer. Typically the first such test
is d2d1:d2d1.
The relevant tests have a --single option but WineTest neither knows
which tests accept this option, nor whether it is needed for the
current host.
The WINETEST_NO_MT_OPENGL environnement variable can be set on hosts
that need it (such as the cw2-gtx560 box) and is automatically
inherited by the relevant tests thus working around this issue.

Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
 dlls/d2d1/tests/d2d1.c           | 2 ++
 dlls/d3d10core/tests/d3d10core.c | 2 ++
 dlls/d3d11/tests/d3d11.c         | 2 ++
 dlls/dxgi/tests/dxgi.c           | 2 ++
 4 files changed, 8 insertions(+)

diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index 2214be69155..bb0717c2a2b 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -8051,6 +8051,8 @@ START_TEST(d2d1)
     unsigned int argc, i;
     char **argv;
 
+    use_mt = !getenv("WINETEST_NO_MT_OPENGL");
+
     argc = winetest_get_mainargs(&argv);
     for (i = 2; i < argc; ++i)
     {
diff --git a/dlls/d3d10core/tests/d3d10core.c b/dlls/d3d10core/tests/d3d10core.c
index b9b83f4060d..efd4e9947e3 100644
--- a/dlls/d3d10core/tests/d3d10core.c
+++ b/dlls/d3d10core/tests/d3d10core.c
@@ -17884,6 +17884,8 @@ START_TEST(d3d10core)
     unsigned int argc, i;
     char **argv;
 
+    use_mt = !getenv("WINETEST_NO_MT_OPENGL");
+
     argc = winetest_get_mainargs(&argv);
     for (i = 2; i < argc; ++i)
     {
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index 4a02b3f51f6..8c4da6de2d1 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -29148,6 +29148,8 @@ START_TEST(d3d11)
     unsigned int argc, i;
     char **argv;
 
+    use_mt = !getenv("WINETEST_NO_MT_OPENGL");
+
     argc = winetest_get_mainargs(&argv);
     for (i = 2; i < argc; ++i)
     {
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index 91d218f3e8e..6b24a4be1a7 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -5041,6 +5041,8 @@ START_TEST(dxgi)
     registry_mode.dmSize = sizeof(registry_mode);
     ok(EnumDisplaySettingsW(NULL, ENUM_REGISTRY_SETTINGS, &registry_mode), "Failed to get display mode.\n");
 
+    use_mt = !getenv("WINETEST_NO_MT_OPENGL");
+
     argc = winetest_get_mainargs(&argv);
     for (i = 2; i < argc; ++i)
     {
-- 
2.20.1



More information about the wine-devel mailing list