From 1684b011189435d9bd3d6838be4cf1ce62edba4d Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Tue, 2 Apr 2019 19:26:10 +0200 Subject: [PATCH] Disable multithreaded DirectX tests if WINETEST_NO_MT_D3D is set. 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_D3D 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 Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- 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..f8fc1f5a291 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_D3D"); + 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 00bd16ba0d6..f799922ea28 100644 --- a/dlls/d3d10core/tests/d3d10core.c +++ b/dlls/d3d10core/tests/d3d10core.c @@ -17925,6 +17925,8 @@ START_TEST(d3d10core) unsigned int argc, i; char **argv; + use_mt = !getenv("WINETEST_NO_MT_D3D"); + 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 90bcbae281d..d5445ef8b2d 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -29191,6 +29191,8 @@ START_TEST(d3d11) unsigned int argc, i; char **argv; + use_mt = !getenv("WINETEST_NO_MT_D3D"); + 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..79e4bc0c15c 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, ®istry_mode), "Failed to get display mode.\n"); + use_mt = !getenv("WINETEST_NO_MT_D3D"); + argc = winetest_get_mainargs(&argv); for (i = 2; i < argc; ++i) {