From 6d5048d5602baeb13eeaf560561d92284d5dd34e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Sun, 18 Dec 2016 00:22:28 +0100 Subject: [PATCH] d3d11/tests: Skip test_depth_stencil_sampling() on AMD Windows drivers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Józef Kucia Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/d3d11/tests/d3d11.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index 98aaa4a0a62..1957ad381d2 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -962,9 +962,8 @@ static ID3D11Device *create_device(const struct device_desc *desc) return NULL; } -static BOOL is_warp_device(ID3D11Device *device) +static void get_device_adapter_desc(ID3D11Device *device, DXGI_ADAPTER_DESC *adapter_desc) { - DXGI_ADAPTER_DESC adapter_desc; IDXGIDevice *dxgi_device; IDXGIAdapter *adapter; HRESULT hr; @@ -974,15 +973,31 @@ static BOOL is_warp_device(ID3D11Device *device) hr = IDXGIDevice_GetAdapter(dxgi_device, &adapter); ok(SUCCEEDED(hr), "Failed to get adapter, hr %#x.\n", hr); IDXGIDevice_Release(dxgi_device); - hr = IDXGIAdapter_GetDesc(adapter, &adapter_desc); + hr = IDXGIAdapter_GetDesc(adapter, adapter_desc); ok(SUCCEEDED(hr), "Failed to get adapter desc, hr %#x.\n", hr); IDXGIAdapter_Release(adapter); +} +static BOOL is_warp_device(ID3D11Device *device) +{ + DXGI_ADAPTER_DESC adapter_desc; + get_device_adapter_desc(device, &adapter_desc); return !adapter_desc.SubSysId && !adapter_desc.Revision && ((!adapter_desc.VendorId && !adapter_desc.DeviceId) || (adapter_desc.VendorId == 0x1414 && adapter_desc.DeviceId == 0x008c)); } +static BOOL is_amd_device(ID3D11Device *device) +{ + DXGI_ADAPTER_DESC adapter_desc; + + if (!strcmp(winetest_platform, "wine")) + return FALSE; + + get_device_adapter_desc(device, &adapter_desc); + return adapter_desc.VendorId == 0x1002; +} + static IDXGISwapChain *create_swapchain(ID3D11Device *device, HWND window, const struct swapchain_desc *swapchain_desc) { DXGI_SWAP_CHAIN_DESC dxgi_desc; @@ -6442,6 +6457,14 @@ static void test_depth_stencil_sampling(void) device = test_context.device; context = test_context.immediate_context; + if (is_amd_device(device)) + { + /* Reads from depth/stencil shader resource views return stale values on some AMD drivers. */ + win_skip("Some AMD drivers have a bug affecting the test.\n"); + release_test_context(&test_context); + return; + } + sampler_desc.Filter = D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT; sampler_desc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP; sampler_desc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;