[PATCH vkd3d 5/9] tests: Skip "ps_movc" on Windows AMD drivers.

Józef Kucia joseph.kucia at gmail.com
Tue Dec 11 08:48:01 CST 2018


From: Józef Kucia <jkucia at codeweavers.com>

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 tests/d3d12.c           |  6 ++++++
 tests/d3d12_crosstest.h | 31 +++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+)

diff --git a/tests/d3d12.c b/tests/d3d12.c
index c127f6bd1d35..463e3046af66 100644
--- a/tests/d3d12.c
+++ b/tests/d3d12.c
@@ -7986,6 +7986,12 @@ static void test_shader_instructions(void)
             continue;
         }
 
+        if (uint_tests[i].ps == &ps_movc && is_amd_device(context.device))
+        {
+            skip("ps_movc crashes on Windows with AMD GPUs.\n");
+            continue;
+        }
+
         if (current_ps != uint_tests[i].ps)
         {
             if (context.pipeline_state)
diff --git a/tests/d3d12_crosstest.h b/tests/d3d12_crosstest.h
index 00db06407f2f..ee12c891b290 100644
--- a/tests/d3d12_crosstest.h
+++ b/tests/d3d12_crosstest.h
@@ -294,6 +294,32 @@ static void init_adapter_info(void)
 
     IDXGIAdapter_Release(dxgi_adapter);
 }
+
+static inline bool is_amd_device(ID3D12Device *device)
+{
+    DXGI_ADAPTER_DESC desc = {0};
+    IDXGIFactory4 *factory;
+    IDXGIAdapter *adapter;
+    HRESULT hr;
+    LUID luid;
+
+    luid = ID3D12Device_GetAdapterLuid(device);
+
+    hr = CreateDXGIFactory1(&IID_IDXGIFactory4, (void **)&factory);
+    ok(hr == S_OK, "Failed to create IDXGIFactory4, hr %#x.\n", hr);
+
+    hr = IDXGIFactory4_EnumAdapterByLuid(factory, luid, &IID_IDXGIAdapter, (void **)&adapter);
+    if (SUCCEEDED(hr))
+    {
+        hr = IDXGIAdapter_GetDesc(adapter, &desc);
+        ok(hr == S_OK, "Failed to get adapter desc, hr %#x.\n", hr);
+        IDXGIAdapter_Release(adapter);
+    }
+
+    IDXGIFactory4_Release(factory);
+
+    return desc.VendorId == 0x1002;
+}
 #else
 static IUnknown *create_adapter(void)
 {
@@ -301,6 +327,11 @@ static IUnknown *create_adapter(void)
 }
 
 static void init_adapter_info(void) {}
+
+static inline bool is_amd_device(ID3D12Device *device)
+{
+    return false;
+}
 #endif
 
 static ID3D12Device *create_device(void)
-- 
2.19.2




More information about the wine-devel mailing list