Module: wine Branch: master Commit: e262c4031bb32d2aee82ca35b7dbb3fea1715b4e URL: http://source.winehq.org/git/wine.git/?a=commit;h=e262c4031bb32d2aee82ca35b7...
Author: Józef Kucia jkucia@codeweavers.com Date: Tue Feb 14 13:15:06 2017 +0100
d3d11/tests: Mark some tests as broken on Nvidia 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
---
dlls/d3d11/tests/d3d11.c | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-)
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index abb0c23..2ad5d11 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -1022,6 +1022,17 @@ static BOOL is_amd_device(ID3D11Device *device) return adapter_desc.VendorId == 0x1002; }
+static BOOL is_nvidia_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 == 0x10de; +} + static IDXGISwapChain *create_swapchain(ID3D11Device *device, HWND window, const struct swapchain_desc *swapchain_desc) { DXGI_SWAP_CHAIN_DESC dxgi_desc; @@ -8496,7 +8507,9 @@ static void test_clear_render_target_view(void) D3D11_RENDER_TARGET_VIEW_DESC rtv_desc; D3D11_TEXTURE2D_DESC texture_desc; ID3D11DeviceContext *context; + struct resource_readback rb; ID3D11Device *device; + unsigned int i, j; HRESULT hr;
if (!init_test_context(&test_context, NULL)) @@ -8565,15 +8578,20 @@ static void test_clear_render_target_view(void) ID3D11DeviceContext_ClearRenderTargetView(context, rtv, color); check_texture_color(texture, expected_color, 1);
- if (!is_warp_device(device)) - { - ID3D11DeviceContext_ClearRenderTargetView(context, srgb_rtv, color); - todo_wine check_texture_color(texture, expected_srgb_color, 1); - } - else + ID3D11DeviceContext_ClearRenderTargetView(context, srgb_rtv, color); + get_texture_readback(texture, 0, &rb); + for (i = 0; i < 4; ++i) { - win_skip("Skipping broken test on WARP.\n"); + for (j = 0; j < 4; ++j) + { + BOOL broken_device = is_warp_device(device) || is_nvidia_device(device); + DWORD color = get_readback_color(&rb, 80 + i * 160, 60 + j * 120); + todo_wine ok(compare_color(color, expected_srgb_color, 1) + || broken(compare_color(color, expected_color, 1) && broken_device), + "Got unexpected color 0x%08x.\n", color); + } } + release_resource_readback(&rb);
ID3D11RenderTargetView_Release(srgb_rtv); ID3D11RenderTargetView_Release(rtv); @@ -11052,6 +11070,7 @@ static void test_index_buffer_offset(void) { 1.0f, -1.0f, 0.0f, 1.0f}, {3.0f}, {-1.0f, -1.0f, 0.0f, 1.0f}, {1.0f}, }; + static const struct vec4 broken_result = {0.0f, 0.0f, 0.0f, 1.0f};
if (!init_test_context(&test_context, &feature_level)) return; @@ -11102,7 +11121,8 @@ static void test_index_buffer_offset(void) for (i = 0; i < sizeof(expected_data) / sizeof(*expected_data); ++i) { data = get_readback_vec4(&rb, i, 0); - ok(compare_vec4(data, &expected_data[i], 0), + ok(compare_vec4(data, &expected_data[i], 0) + || broken(is_nvidia_device(device) && !(i % 2) && compare_vec4(data, &broken_result, 0)), "Got unexpected result {%.8e, %.8e, %.8e, %.8e} at %u.\n", data->x, data->y, data->z, data->w, i); }