Module: vkd3d Branch: master Commit: 56f79913f6f2e7e629865b7628cb7ac183561cab URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=56f79913f6f2e7e629865b76...
Author: Józef Kucia jkucia@codeweavers.com Date: Tue Dec 11 15:48:01 2018 +0100
tests: Skip "ps_movc" on Windows AMD drivers.
Signed-off-by: Józef Kucia jkucia@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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 c127f6b..463e304 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 00db064..ee12c89 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)