=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: d3d11/tests: Mark some tests as broken on Nvidia drivers.
Alexandre Julliard
julliard at winehq.org
Tue Feb 14 16:24:50 CST 2017
Module: wine
Branch: master
Commit: e262c4031bb32d2aee82ca35b7dbb3fea1715b4e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e262c4031bb32d2aee82ca35b7dbb3fea1715b4e
Author: Józef Kucia <jkucia at 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 at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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);
}
More information about the wine-cvs
mailing list