From: Alexandre Julliard julliard@winehq.org
--- dlls/d2d1/tests/d2d1.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 665c3200e21..cce3c9e7018 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -1165,6 +1165,26 @@ static IDXGISwapChain *create_d3d10_swapchain(ID3D10Device1 *device, HWND window return swapchain; }
+static void get_device_adapter_desc(IDXGIDevice *device, DXGI_ADAPTER_DESC *adapter_desc) +{ + IDXGIAdapter *adapter; + HRESULT hr; + + hr = IDXGIDevice_GetAdapter(device, &adapter); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + hr = IDXGIAdapter_GetDesc(adapter, adapter_desc); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + IDXGIAdapter_Release(adapter); +} + +static BOOL is_nvidia_device(IDXGIDevice *device) +{ + DXGI_ADAPTER_DESC adapter_desc; + + get_device_adapter_desc(device, &adapter_desc); + return adapter_desc.VendorId == 0x10de; +} + static ID2D1RenderTarget *create_render_target_desc(IDXGISurface *surface, const D2D1_RENDER_TARGET_PROPERTIES *desc, BOOL d3d11) { @@ -6592,18 +6612,19 @@ static void test_draw_geometry(BOOL d3d11) ID2D1GeometrySink *sink; ID2D1RenderTarget *rt; ID2D1Factory *factory; + BOOL match, is_nvidia; D2D1_POINT_2F p0, p1; D2D1_ELLIPSE ellipse; D2D1_COLOR_F color; D2D1_RECT_F rect; HRESULT hr; - BOOL match;
if (!init_test_context(&ctx, d3d11)) return;
rt = ctx.rt; factory = ctx.factory; + is_nvidia = is_nvidia_device(ctx.device);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED); @@ -7268,6 +7289,7 @@ static void test_draw_geometry(BOOL d3d11) "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + todo_wine_if (!match && is_nvidia) ok(match, "Figure does not match.\n"); match = compare_figure(&ctx, 160, 0, 160, 160, 0xff652e89, 0, "vi5kPGQ8ZDxkPGQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -7276,6 +7298,7 @@ static void test_draw_geometry(BOOL d3d11) "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + todo_wine_if (!match && is_nvidia) ok(match, "Figure does not match.\n"); match = compare_figure(&ctx, 320, 0, 160, 160, 0xff652e89, 0, "vi5kPGQ8ZDxkPGQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -7284,6 +7307,7 @@ static void test_draw_geometry(BOOL d3d11) "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + todo_wine_if (!match && is_nvidia) ok(match, "Figure does not match.\n"); match = compare_figure(&ctx, 480, 0, 160, 160, 0xff652e89, 0, "yC5aRlpGWjxkPGQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -7292,6 +7316,7 @@ static void test_draw_geometry(BOOL d3d11) "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + todo_wine_if (!match && is_nvidia) ok(match, "Figure does not match.\n");
match = compare_figure(&ctx, 0, 160, 160, 160, 0xff652e89, 64,