Signed-off-by: Rémi Bernon rbernon@codeweavers.com ---
Some tests related to https://bugs.winehq.org/show_bug.cgi?id=49395, fixing the regression will require some minimal D3DDeviceContextState related changes that I'm trying to implement.
dlls/d2d1/tests/d2d1.c | 182 +++++++++++++++++++++++------------------ 1 file changed, 103 insertions(+), 79 deletions(-)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index d571cfe8d15..ec4fb093635 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -678,7 +678,7 @@ static BOOL compare_figure(IDXGISurface *surface, unsigned int x, unsigned int y return diff <= max_diff; }
-static ID3D10Device1 *create_device(void) +static ID3D10Device1 *create_d3d10_device(void) { ID3D10Device1 *device;
@@ -695,6 +695,25 @@ static ID3D10Device1 *create_device(void) return NULL; }
+static IDXGIDevice *create_device(void) +{ + ID3D10Device1 *d3d10_device; + IDXGIDevice *device; + HRESULT hr; + + if (!(d3d10_device = create_d3d10_device())) + return NULL; + + hr = ID3D10Device1_QueryInterface(d3d10_device, &IID_IDXGIDevice, (void **)&device); + ok(SUCCEEDED(hr), "Failed to get DXGI device, hr %#x.\n", hr); + ID3D10Device1_Release(d3d10_device); + + if (FAILED(hr)) + return NULL; + + return device; +} + static HWND create_window(void) { RECT r = {0, 0, 640, 480}; @@ -705,20 +724,16 @@ static HWND create_window(void) 0, 0, r.right - r.left, r.bottom - r.top, NULL, NULL, NULL, NULL); }
-static IDXGISwapChain *create_swapchain(ID3D10Device1 *device, HWND window, BOOL windowed) +static IDXGISwapChain *create_swapchain(IDXGIDevice *device, HWND window, BOOL windowed) { IDXGISwapChain *swapchain; DXGI_SWAP_CHAIN_DESC desc; - IDXGIDevice *dxgi_device; IDXGIAdapter *adapter; IDXGIFactory *factory; HRESULT hr;
- hr = ID3D10Device1_QueryInterface(device, &IID_IDXGIDevice, (void **)&dxgi_device); - ok(SUCCEEDED(hr), "Failed to get DXGI device, hr %#x.\n", hr); - hr = IDXGIDevice_GetAdapter(dxgi_device, &adapter); + hr = IDXGIDevice_GetAdapter(device, &adapter); ok(SUCCEEDED(hr), "Failed to get adapter, hr %#x.\n", hr); - IDXGIDevice_Release(dxgi_device); hr = IDXGIAdapter_GetParent(adapter, &IID_IDXGIFactory, (void **)&factory); ok(SUCCEEDED(hr), "Failed to get factory, hr %#x.\n", hr); IDXGIAdapter_Release(adapter); @@ -746,6 +761,19 @@ static IDXGISwapChain *create_swapchain(ID3D10Device1 *device, HWND window, BOOL return swapchain; }
+static IDXGISwapChain *create_d3d10_swapchain(ID3D10Device1 *device, HWND window, BOOL windowed) +{ + IDXGISwapChain *swapchain; + IDXGIDevice *dxgi_device; + HRESULT hr; + + hr = ID3D10Device1_QueryInterface(device, &IID_IDXGIDevice, (void **)&dxgi_device); + ok(SUCCEEDED(hr), "Failed to get DXGI device, hr %#x.\n", hr); + swapchain = create_swapchain(dxgi_device, window, windowed); + IDXGIDevice_Release(dxgi_device); + return swapchain; +} + static ID2D1RenderTarget *create_render_target_desc(IDXGISurface *surface, const D2D1_RENDER_TARGET_PROPERTIES *desc) { ID2D1RenderTarget *render_target; @@ -1088,7 +1116,7 @@ static void test_clip(void) D2D1_MATRIX_3X2_F matrix; D2D1_SIZE_U pixel_size; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; D2D1_POINT_2F point; D2D1_COLOR_F color; @@ -1285,7 +1313,7 @@ static void test_clip(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -1298,7 +1326,7 @@ static void test_state_block(void) IDXGISwapChain *swapchain; ID2D1Factory1 *factory1; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Factory *factory; ULONG refcount; @@ -1559,7 +1587,7 @@ static void test_state_block(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -1571,7 +1599,7 @@ static void test_color_brush(void) ID2D1SolidColorBrush *brush; IDXGISwapChain *swapchain; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; D2D1_RECT_F rect; float opacity; @@ -1659,7 +1687,7 @@ static void test_color_brush(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -1677,7 +1705,7 @@ static void test_bitmap_brush(void) ID2D1BitmapBrush1 *brush1; ID2D1BitmapBrush *brush; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Factory *factory; D2D1_COLOR_F color; @@ -1958,7 +1986,7 @@ static void test_bitmap_brush(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -1973,7 +2001,7 @@ static void test_linear_brush(void) struct resource_readback rb; IDXGISwapChain *swapchain; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Factory *factory; D2D1_COLOR_F colour; @@ -2164,7 +2192,7 @@ static void test_linear_brush(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -2179,7 +2207,7 @@ static void test_radial_brush(void) struct resource_readback rb; IDXGISwapChain *swapchain; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Factory *factory; D2D1_COLOR_F colour; @@ -2378,7 +2406,7 @@ static void test_radial_brush(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -2509,7 +2537,7 @@ static void test_path_geometry(void) ID2D1Geometry *tmp_geometry; IDXGISwapChain *swapchain; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Factory *factory; BOOL match, contains; @@ -3568,7 +3596,7 @@ static void test_path_geometry(void) ok(!refcount, "Factory has %u references left.\n", refcount); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -3905,7 +3933,7 @@ static void test_bitmap_formats(void) IDXGISwapChain *swapchain; D2D1_SIZE_U size = {4, 4}; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Bitmap *bitmap; unsigned int i, j; @@ -3973,7 +4001,7 @@ static void test_bitmap_formats(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -3985,7 +4013,7 @@ static void test_alpha_mode(void) ID2D1BitmapBrush *bitmap_brush; IDXGISwapChain *swapchain; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Bitmap *bitmap; D2D1_COLOR_F color; @@ -4202,7 +4230,7 @@ static void test_alpha_mode(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -4216,7 +4244,7 @@ static void test_shared_bitmap(void) ID2D1RenderTarget *rt1, *rt2, *rt3; IDXGISurface *surface1, *surface2; ID2D1Factory *factory1, *factory2; - ID3D10Device1 *device1, *device2; + IDXGIDevice *device1, *device2; IWICImagingFactory *wic_factory; ID2D1Bitmap *bitmap1, *bitmap2; DXGI_SURFACE_DESC surface_desc; @@ -4455,8 +4483,8 @@ static void test_shared_bitmap(void) IDXGISurface_Release(surface1); IDXGISwapChain_Release(swapchain2); IDXGISwapChain_Release(swapchain1); - ID3D10Device1_Release(device2); - ID3D10Device1_Release(device1); + IDXGIDevice_Release(device2); + IDXGIDevice_Release(device1); DestroyWindow(window2); DestroyWindow(window1); CoUninitialize(); @@ -4467,7 +4495,7 @@ static void test_bitmap_updates(void) D2D1_BITMAP_PROPERTIES bitmap_desc; IDXGISwapChain *swapchain; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; D2D1_RECT_U dst_rect; ID2D1Bitmap *bitmap; @@ -4561,7 +4589,7 @@ static void test_bitmap_updates(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -4574,7 +4602,7 @@ static void test_opacity_brush(void) IDXGISwapChain *swapchain; D2D1_MATRIX_3X2_F matrix; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Factory *factory; ID2D1Bitmap *bitmap; @@ -4742,7 +4770,7 @@ static void test_opacity_brush(void) ok(!refcount, "Factory has %u references left.\n", refcount); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -4751,7 +4779,7 @@ static void test_create_target(void) IDXGISwapChain *swapchain; ID2D1Factory *factory; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; HWND window; HRESULT hr; @@ -4833,7 +4861,7 @@ static void test_create_target(void) ID2D1Factory_Release(factory); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -4874,7 +4902,7 @@ static void test_draw_text_layout(void) IDXGISwapChain *swapchain; ID2D1Factory *factory, *factory2; ID2D1RenderTarget *rt, *rt2; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; HWND window; HRESULT hr; @@ -5003,7 +5031,7 @@ todo_wine ID2D1Factory_Release(factory2); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -5044,7 +5072,7 @@ static void test_dc_target(void) ID2D1SolidColorBrush *brush; ID2D1RenderTarget *rt3; ID2D1Factory *factory; - ID3D10Device1 *device; + IDXGIDevice *device; FLOAT dpi_x, dpi_y; D2D1_COLOR_F color; D2D1_SIZE_U sizeu; @@ -5062,7 +5090,7 @@ static void test_dc_target(void) skip("Failed to create device, skipping tests.\n"); return; } - ID3D10Device1_Release(device); + IDXGIDevice_Release(device);
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory); ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr); @@ -5266,7 +5294,7 @@ static void test_hwnd_target(void) ID2D1HwndRenderTarget *rt, *rt2; ID2D1RenderTarget *rt3; ID2D1Factory *factory; - ID3D10Device1 *device; + IDXGIDevice *device; D2D1_SIZE_U size; HRESULT hr;
@@ -5275,7 +5303,7 @@ static void test_hwnd_target(void) skip("Failed to create device, skipping tests.\n"); return; } - ID3D10Device1_Release(device); + IDXGIDevice_Release(device);
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory); ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr); @@ -5434,7 +5462,7 @@ static void test_bitmap_target(void) D2D1_SIZE_F size, size2; ID2D1RenderTarget *rt3; ID2D1Factory *factory; - ID3D10Device1 *device; + IDXGIDevice *device; float dpi[2], dpi2[2]; D2D1_COLOR_F color; ULONG refcount; @@ -5445,7 +5473,7 @@ static void test_bitmap_target(void) skip("Failed to create device, skipping tests.\n"); return; } - ID3D10Device1_Release(device); + IDXGIDevice_Release(device);
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory); ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr); @@ -5776,7 +5804,7 @@ static void test_gradient(void) D2D1_GRADIENT_STOP stops[3], stops2[3]; IDXGISwapChain *swapchain; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; D2D1_COLOR_F color; unsigned int i; @@ -5824,7 +5852,7 @@ static void test_gradient(void)
IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -5840,7 +5868,7 @@ static void test_draw_geometry(void) D2D1_MATRIX_3X2_F matrix; ID2D1GeometrySink *sink; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Factory *factory; D2D1_POINT_2F p0, p1; @@ -6752,7 +6780,7 @@ static void test_draw_geometry(void) ok(!refcount, "Factory has %u references left.\n", refcount); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -6768,7 +6796,7 @@ static void test_fill_geometry(void) D2D1_MATRIX_3X2_F matrix; ID2D1GeometrySink *sink; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Factory *factory; D2D1_ELLIPSE ellipse; @@ -7566,7 +7594,7 @@ static void test_fill_geometry(void) ok(!refcount, "Factory has %u references left.\n", refcount); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -7579,7 +7607,7 @@ static void test_gdi_interop(void) IWICBitmap *wic_bitmap; ID2D1RenderTarget *rt; ID2D1Factory *factory; - ID3D10Device1 *device; + IDXGIDevice *device; D2D1_COLOR_F color; HRESULT hr; BOOL match; @@ -7701,6 +7729,7 @@ todo_wine
IWICBitmap_Release(wic_bitmap); ID2D1Factory_Release(factory); + IDXGIDevice_Release(device); }
static void test_layer(void) @@ -7708,7 +7737,7 @@ static void test_layer(void) ID2D1Factory *factory, *layer_factory; IDXGISwapChain *swapchain; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Layer *layer; D2D1_SIZE_F size; @@ -7755,7 +7784,7 @@ static void test_layer(void) ok(!refcount, "Factory has %u references left.\n", refcount); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
@@ -7767,7 +7796,7 @@ static void test_bezier_intersect(void) IDXGISwapChain *swapchain; ID2D1GeometrySink *sink; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Factory *factory; D2D1_COLOR_F color; @@ -7905,14 +7934,14 @@ static void test_bezier_intersect(void) ok(!refcount, "Factory has %u references left.\n", refcount); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
static void test_create_device(void) { D2D1_CREATION_PROPERTIES properties = {0}; - ID3D10Device1 *d3d_device; + IDXGIDevice *d3d_device; IDXGIDevice *dxgi_device; ID2D1Factory1 *factory; ID2D1Factory *factory2; @@ -7929,11 +7958,11 @@ static void test_create_device(void) if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) { win_skip("ID2D1Factory1 is not supported.\n"); - ID3D10Device1_Release(d3d_device); + IDXGIDevice_Release(d3d_device); return; }
- hr = ID3D10Device1_QueryInterface(d3d_device, &IID_IDXGIDevice, (void **)&dxgi_device); + hr = IDXGIDevice_QueryInterface(d3d_device, &IID_IDXGIDevice, (void **)&dxgi_device); ok(SUCCEEDED(hr), "Failed to get IDXGIDevice interface, hr %#x.\n", hr);
hr = ID2D1Factory1_CreateDevice(factory, dxgi_device, &device); @@ -7958,7 +7987,7 @@ static void test_create_device(void) win_skip("D2D1CreateDevice() is unavailable.\n");
IDXGIDevice_Release(dxgi_device); - ID3D10Device1_Release(d3d_device); + IDXGIDevice_Release(d3d_device);
refcount = ID2D1Factory1_Release(factory); ok(!refcount, "Factory has %u references left.\n", refcount); @@ -8185,7 +8214,7 @@ static void test_bitmap_surface(void) ID2D1DeviceContext *device_context; IDXGISurface *surface, *surface2; D2D1_PIXEL_FORMAT pixel_format; - ID3D10Device1 *d3d_device; + IDXGIDevice *d3d_device; IDXGISwapChain *swapchain; IDXGIDevice *dxgi_device; ID2D1Factory1 *factory; @@ -8211,7 +8240,7 @@ static void test_bitmap_surface(void) if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) { win_skip("ID2D1Factory1 is not supported.\n"); - ID3D10Device1_Release(d3d_device); + IDXGIDevice_Release(d3d_device); return; }
@@ -8239,7 +8268,7 @@ static void test_bitmap_surface(void) ID2D1RenderTarget_Release(rt);
/* Bitmap created from DXGI surface. */ - hr = ID3D10Device1_QueryInterface(d3d_device, &IID_IDXGIDevice, (void **)&dxgi_device); + hr = IDXGIDevice_QueryInterface(d3d_device, &IID_IDXGIDevice, (void **)&dxgi_device); ok(SUCCEEDED(hr), "Failed to get IDXGIDevice interface, hr %#x.\n", hr);
hr = ID2D1Factory1_CreateDevice(factory, dxgi_device, &device); @@ -8408,7 +8437,7 @@ static void test_bitmap_surface(void) CoUninitialize();
ID2D1Factory1_Release(factory); - ID3D10Device1_Release(d3d_device); + IDXGIDevice_Release(d3d_device); }
static void test_device_context(void) @@ -8420,7 +8449,7 @@ static void test_device_context(void) ID2D1Device *device, *device2; D2D1_BITMAP_OPTIONS options; ID2D1DCRenderTarget *dc_rt; - ID3D10Device1 *d3d_device; + IDXGIDevice *d3d_device; IDXGISwapChain *swapchain; IDXGIDevice *dxgi_device; D2D1_UNIT_MODE unit_mode; @@ -8445,11 +8474,11 @@ static void test_device_context(void) if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) { win_skip("ID2D1Factory1 is not supported.\n"); - ID3D10Device1_Release(d3d_device); + IDXGIDevice_Release(d3d_device); return; }
- hr = ID3D10Device1_QueryInterface(d3d_device, &IID_IDXGIDevice, (void **)&dxgi_device); + hr = IDXGIDevice_QueryInterface(d3d_device, &IID_IDXGIDevice, (void **)&dxgi_device); ok(SUCCEEDED(hr), "Failed to get IDXGIDevice interface, hr %#x.\n", hr);
hr = ID2D1Factory1_CreateDevice(factory, dxgi_device, &device); @@ -8614,7 +8643,7 @@ todo_wine
ID2D1Device_Release(device); ID2D1Factory1_Release(factory); - ID3D10Device1_Release(d3d_device); + IDXGIDevice_Release(d3d_device); }
static void test_invert_matrix(void) @@ -8738,19 +8767,14 @@ static void test_skew_matrix(void) } }
-static ID2D1DeviceContext *create_device_context(ID2D1Factory1 *factory, ID3D10Device1 *d3d_device) +static ID2D1DeviceContext *create_device_context(ID2D1Factory1 *factory, IDXGIDevice *dxgi_device) { ID2D1DeviceContext *device_context; - IDXGIDevice *dxgi_device; ID2D1Device *device; HRESULT hr;
- hr = ID3D10Device1_QueryInterface(d3d_device, &IID_IDXGIDevice, (void **)&dxgi_device); - ok(SUCCEEDED(hr), "Failed to get IDXGIDevice interface, hr %#x.\n", hr); - hr = ID2D1Factory1_CreateDevice(factory, dxgi_device, &device); ok(SUCCEEDED(hr), "Failed to get ID2D1Device, hr %#x.\n", hr); - IDXGIDevice_Release(dxgi_device);
hr = ID2D1Device_CreateDeviceContext(device, D2D1_DEVICE_CONTEXT_OPTIONS_NONE, &device_context); ok(SUCCEEDED(hr), "Failed to create device context, hr %#x.\n", hr); @@ -8779,7 +8803,7 @@ static void test_command_list(void) D2D1_BITMAP_PROPERTIES bitmap_desc; ID2D1StrokeStyle *stroke_style; ID2D1CommandList *command_list; - ID3D10Device1 *d3d_device; + IDXGIDevice *d3d_device; ID2D1Geometry *geometry; ID2D1Factory1 *factory; ID2D1RenderTarget *rt; @@ -8802,7 +8826,7 @@ static void test_command_list(void) if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) { win_skip("ID2D1Factory1 is not supported.\n"); - ID3D10Device1_Release(d3d_device); + IDXGIDevice_Release(d3d_device); return; }
@@ -9061,7 +9085,7 @@ static void test_max_bitmap_size(void) }
window = create_window(); - swapchain = create_swapchain(device, window, TRUE); + swapchain = create_d3d10_swapchain(device, window, TRUE); hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
@@ -9135,7 +9159,7 @@ static void test_dpi(void) ID2D1DeviceContext *device_context; IWICImagingFactory *wic_factory; IDXGISwapChain *swapchain; - ID3D10Device1 *d3d_device; + IDXGIDevice *d3d_device; ID2D1Factory1 *factory; IDXGISurface *surface; ID2D1Bitmap1 *bitmap; @@ -9172,7 +9196,7 @@ static void test_dpi(void) if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) { win_skip("ID2D1Factory1 is not supported.\n"); - ID3D10Device1_Release(d3d_device); + IDXGIDevice_Release(d3d_device); return; }
@@ -9350,7 +9374,7 @@ static void test_dpi(void) IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); ID2D1Factory1_Release(factory); - ID3D10Device1_Release(d3d_device); + IDXGIDevice_Release(d3d_device); DestroyWindow(window); }
@@ -9361,7 +9385,7 @@ static void test_wic_bitmap_format(void) D2D1_PIXEL_FORMAT format; IWICBitmap *wic_bitmap; ID2D1RenderTarget *rt; - ID3D10Device1 *device; + IDXGIDevice *device; IDXGISurface *surface; ID2D1Bitmap *bitmap; unsigned int i; @@ -9421,7 +9445,7 @@ static void test_wic_bitmap_format(void) ID2D1RenderTarget_Release(rt); IDXGISurface_Release(surface); IDXGISwapChain_Release(swapchain); - ID3D10Device1_Release(device); + IDXGIDevice_Release(device); DestroyWindow(window); }
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/d2d1/tests/d2d1.c | 285 +++++++++-------------------------------- 1 file changed, 57 insertions(+), 228 deletions(-)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index ec4fb093635..78a16a90252 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -1110,6 +1110,26 @@ static void geometry_sink_check_(unsigned int line, const struct geometry_sink * } }
+#define init_test(a, b, c, d, e) init_test_(__LINE__, a, b, c, d, e) +static BOOL init_test_(int line, IDXGIDevice **device, HWND *window, IDXGISwapChain **swapchain, IDXGISurface **surface, ID2D1RenderTarget **rt) +{ + HRESULT hr; + + if (!(*device = create_device())) + { + skip_(__FILE__, line)("Failed to create device, skipping tests.\n"); + return FALSE; + } + *window = create_window(); + *swapchain = create_swapchain(*device, *window, TRUE); + hr = IDXGISwapChain_GetBuffer(*swapchain, 0, &IID_IDXGISurface, (void **)surface); + ok_(__FILE__, line)(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); + *rt = create_render_target(*surface); + ok_(__FILE__, line)(!!*rt, "Failed to create render target.\n"); + + return TRUE; +} + static void test_clip(void) { IDXGISwapChain *swapchain; @@ -1133,17 +1153,8 @@ static void test_clip(void) 0.0f, 0.0f, }}};
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_GetDpi(rt, &dpi_x, &dpi_y); ok(dpi_x == 96.0f, "Got unexpected dpi_x %.8e.\n", dpi_x); @@ -1351,17 +1362,9 @@ static void test_state_block(void) 11.0f, 12.0f, }}};
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); + ID2D1RenderTarget_GetFactory(rt, &factory); hr = DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, &IID_IDWriteFactory, (IUnknown **)&dwrite_factory); ok(SUCCEEDED(hr), "Failed to create dwrite factory, hr %#x.\n", hr); @@ -1607,17 +1610,8 @@ static void test_color_brush(void) HRESULT hr; BOOL match;
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED); @@ -1746,17 +1740,8 @@ static void test_bitmap_brush(void) 0xffffffff, 0xff000000, 0xff000000, 0xff000000, };
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED); @@ -2050,17 +2035,8 @@ static void test_linear_brush(void) {520, 390, 0xff90ae40}, };
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED); @@ -2256,17 +2232,8 @@ static void test_radial_brush(void) {520, 390, 0xff4059e6}, };
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED); @@ -2862,17 +2829,9 @@ static void test_path_geometry(void) {D2D1_FIGURE_BEGIN_HOLLOW, D2D1_FIGURE_END_OPEN, { 40.0f, 20.0f}, 2, &expected_segments[172]}, };
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); + ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -3963,17 +3922,8 @@ static void test_bitmap_formats(void) {DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, 0x8a}, };
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n");
bitmap_desc.dpiX = 96.0f; bitmap_desc.dpiY = 96.0f; @@ -4032,17 +3982,8 @@ static void test_alpha_mode(void) 0x7f7f7f7f, 0x7f000000, 0x7f000000, 0x7f000000, };
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -4241,7 +4182,7 @@ static void test_shared_bitmap(void) ID2D1GdiInteropRenderTarget *interop; D2D1_RENDER_TARGET_PROPERTIES desc; D2D1_BITMAP_PROPERTIES bitmap_desc; - ID2D1RenderTarget *rt1, *rt2, *rt3; + ID2D1RenderTarget *rt, *rt1, *rt2, *rt3; IDXGISurface *surface1, *surface2; ID2D1Factory *factory1, *factory2; IDXGIDevice *device1, *device2; @@ -4254,18 +4195,12 @@ static void test_shared_bitmap(void) HWND window1, window2; HRESULT hr;
- if (!(device1 = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device1, &window1, &swapchain1, &surface1, &rt)) return; - } + ID2D1RenderTarget_Release(rt);
- window1 = create_window(); window2 = create_window(); - swapchain1 = create_swapchain(device1, window1, TRUE); swapchain2 = create_swapchain(device1, window2, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain1, 0, &IID_IDXGISurface, (void **)&surface1); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); hr = IDXGISwapChain_GetBuffer(swapchain2, 0, &IID_IDXGISurface, (void **)&surface2); ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
@@ -4514,17 +4449,8 @@ static void test_bitmap_updates(void) 0xffffffff, 0xff000000, 0xff000000, 0xff000000, };
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -4622,17 +4548,9 @@ static void test_opacity_brush(void) 0xffffffff, 0x40000000, 0x40000000, 0xff000000, };
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); + ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -4800,15 +4718,9 @@ static void test_create_target(void) }; unsigned int i;
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); + ID2D1RenderTarget_Release(rt);
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory); ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr); @@ -4917,15 +4829,9 @@ static void test_draw_text_layout(void) D2D1_RECT_F rect; unsigned int i;
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); + ID2D1RenderTarget_Release(rt);
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory); ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr); @@ -5812,17 +5718,8 @@ static void test_gradient(void) HWND window; HRESULT hr;
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n");
stops2[0].position = 0.5f; set_color(&stops2[0].color, 1.0f, 1.0f, 0.0f, 1.0f); @@ -5880,17 +5777,9 @@ static void test_draw_geometry(void) HRESULT hr; BOOL match;
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); + ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -6807,17 +6696,9 @@ static void test_fill_geometry(void) HRESULT hr; BOOL match;
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); + ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -7745,17 +7626,9 @@ static void test_layer(void) HWND window; HRESULT hr;
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); + ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -7805,17 +7678,9 @@ static void test_bezier_intersect(void) HRESULT hr; BOOL match;
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); + ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -8231,11 +8096,8 @@ static void test_bitmap_surface(void) IWICBitmap *wic_bitmap; IWICImagingFactory *wic_factory;
- if (!(d3d_device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt)) return; - }
if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) { @@ -8244,14 +8106,6 @@ static void test_bitmap_surface(void) return; }
- /* DXGI target */ - window = create_window(); - swapchain = create_swapchain(d3d_device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); - hr = ID2D1RenderTarget_QueryInterface(rt, &IID_ID2D1DeviceContext, (void **)&device_context); ok(SUCCEEDED(hr), "Failed to get device context, hr %#x.\n", hr);
@@ -8465,11 +8319,8 @@ static void test_device_context(void) IWICBitmap *wic_bitmap; IWICImagingFactory *wic_factory;
- if (!(d3d_device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt)) return; - }
if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) { @@ -8501,14 +8352,6 @@ static void test_device_context(void)
ID2D1DeviceContext_Release(device_context);
- /* DXGI target */ - window = create_window(); - swapchain = create_swapchain(d3d_device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); - hr = ID2D1RenderTarget_QueryInterface(rt, &IID_ID2D1DeviceContext, (void **)&device_context); ok(SUCCEEDED(hr), "Failed to get device context interface, hr %#x.\n", hr); ID2D1DeviceContext_GetTarget(device_context, (ID2D1Image **)&bitmap); @@ -9160,6 +9003,7 @@ static void test_dpi(void) IWICImagingFactory *wic_factory; IDXGISwapChain *swapchain; IDXGIDevice *d3d_device; + ID2D1RenderTarget *rt; ID2D1Factory1 *factory; IDXGISurface *surface; ID2D1Bitmap1 *bitmap; @@ -9187,11 +9031,9 @@ static void test_dpi(void) static const float dc_dpi_x = 120.0f, dc_dpi_y = 144.0f; unsigned int i;
- if (!(d3d_device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt)) return; - } + ID2D1RenderTarget_Release(rt);
if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) { @@ -9200,11 +9042,6 @@ static void test_dpi(void) return; }
- window = create_window(); - swapchain = create_swapchain(d3d_device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); - device_context = create_device_context(factory, d3d_device); ok(!!device_context, "Failed to create device context.\n");
@@ -9404,17 +9241,9 @@ static void test_wic_bitmap_format(void) {&GUID_WICPixelFormat32bppBGR, {DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE}}, };
- if (!(device = create_device())) - { - skip("Failed to create device, skipping tests.\n"); + if (!init_test(&device, &window, &swapchain, &surface, &rt)) return; - } - window = create_window(); - swapchain = create_swapchain(device, window, TRUE); - hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface); - ok(hr == S_OK, "Failed to get buffer, hr %#x.\n", hr); - rt = create_render_target(surface); - ok(!!rt, "Failed to create render target.\n"); + CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
hr = CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER,
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=83856
Your paranoid android.
=== w2008s64 (32 bit report) ===
d2d1: d2d1: Timeout
=== wvistau64 (64 bit report) ===
d2d1: d2d1: Timeout
=== w2008s64 (64 bit report) ===
d2d1: d2d1: Timeout
On Thu, 7 Jan 2021 at 20:44, Rémi Bernon rbernon@codeweavers.com wrote:
+#define init_test(a, b, c, d, e) init_test_(__LINE__, a, b, c, d, e) +static BOOL init_test_(int line, IDXGIDevice **device, HWND *window, IDXGISwapChain **swapchain, IDXGISurface **surface, ID2D1RenderTarget **rt) +{
- HRESULT hr;
- if (!(*device = create_device()))
- {
skip_(__FILE__, line)("Failed to create device, skipping tests.\n");
return FALSE;
- }
- *window = create_window();
- *swapchain = create_swapchain(*device, *window, TRUE);
- hr = IDXGISwapChain_GetBuffer(*swapchain, 0, &IID_IDXGISurface, (void **)surface);
- ok_(__FILE__, line)(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- *rt = create_render_target(*surface);
- ok_(__FILE__, line)(!!*rt, "Failed to create render target.\n");
- return TRUE;
+}
We do something fairly similar with init_test_test_context() in d3d11 and d3d10core. It would probably make sense to adopt the same scheme here. (I.e., introduce struct d2d1_test_context, init_test_context(), release_test_context().) That may also make most of patch 1/4 in this series go away.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/d2d1/tests/d2d1.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 78a16a90252..43155bfb79a 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -43,7 +43,8 @@ struct resource_readback { ID3D10Resource *resource; D3D10_MAPPED_TEXTURE2D map_desc; - unsigned int width, height; + unsigned int pitch, width, height; + void *data; };
struct figure @@ -336,6 +337,9 @@ static void get_surface_readback(IDXGISurface *surface, struct resource_readback
hr = ID3D10Texture2D_Map((ID3D10Texture2D *)rb->resource, 0, D3D10_MAP_READ, 0, &rb->map_desc); ok(SUCCEEDED(hr), "Failed to map texture, hr %#x.\n", hr); + + rb->pitch = rb->map_desc.RowPitch; + rb->data = rb->map_desc.pData; }
static void release_resource_readback(struct resource_readback *rb) @@ -346,7 +350,7 @@ static void release_resource_readback(struct resource_readback *rb)
static DWORD get_readback_colour(struct resource_readback *rb, unsigned int x, unsigned int y) { - return ((DWORD *)((BYTE *)rb->map_desc.pData + y * rb->map_desc.RowPitch))[x]; + return ((DWORD *)((BYTE *)rb->data + y * rb->pitch))[x]; }
static BOOL compare_uint(unsigned int x, unsigned int y, unsigned int max_diff) @@ -451,8 +455,7 @@ static BOOL compare_surface(IDXGISurface *surface, const char *ref_sha1) BOOL ret;
get_surface_readback(surface, &rb); - ret = compare_sha1(rb.map_desc.pData, rb.map_desc.RowPitch, 4, - rb.width, rb.height, ref_sha1); + ret = compare_sha1(rb.data, rb.pitch, 4, rb.width, rb.height, ref_sha1); release_resource_readback(&rb);
return ret; @@ -629,7 +632,7 @@ static BOOL compare_figure(IDXGISurface *surface, unsigned int x, unsigned int y figure.spans_size = 64; figure.spans = HeapAlloc(GetProcessHeap(), 0, figure.spans_size * sizeof(*figure.spans));
- read_figure(&figure, rb.map_desc.pData, rb.map_desc.RowPitch, x, y, w, h, prev); + read_figure(&figure, rb.data, rb.pitch, x, y, w, h, prev);
deserialize_figure(&ref_figure, (BYTE *)ref); span = w * h; @@ -667,7 +670,7 @@ static BOOL compare_figure(IDXGISurface *surface, unsigned int x, unsigned int y if (diff > max_diff) { trace("diff %u > max_diff %u.\n", diff, max_diff); - read_figure(&figure, rb.map_desc.pData, rb.map_desc.RowPitch, x, y, w, h, prev); + read_figure(&figure, rb.data, rb.pitch, x, y, w, h, prev); serialize_figure(&figure); }
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=83857
Your paranoid android.
=== w2008s64 (32 bit report) ===
d2d1: d2d1: Timeout
=== wvistau64 (64 bit report) ===
d2d1: d2d1: Timeout
=== w2008s64 (64 bit report) ===
d2d1: d2d1: Timeout
On Thu, 7 Jan 2021 at 20:44, Rémi Bernon rbernon@codeweavers.com wrote:
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 78a16a90252..43155bfb79a 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -43,7 +43,8 @@ struct resource_readback { ID3D10Resource *resource; D3D10_MAPPED_TEXTURE2D map_desc;
- unsigned int width, height;
- unsigned int pitch, width, height;
- void *data;
};
struct figure @@ -336,6 +337,9 @@ static void get_surface_readback(IDXGISurface *surface, struct resource_readback
hr = ID3D10Texture2D_Map((ID3D10Texture2D *)rb->resource, 0, D3D10_MAP_READ, 0, &rb->map_desc); ok(SUCCEEDED(hr), "Failed to map texture, hr %#x.\n", hr);
- rb->pitch = rb->map_desc.RowPitch;
- rb->data = rb->map_desc.pData;
}
The "map_desc" field in struct resource_readback should be superfluous now, right?
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/d2d1/tests/Makefile.in | 2 +- dlls/d2d1/tests/d2d1.c | 760 +++++++++++++++++++++--------------- 2 files changed, 457 insertions(+), 305 deletions(-)
diff --git a/dlls/d2d1/tests/Makefile.in b/dlls/d2d1/tests/Makefile.in index 91ede7888aa..5eeb815e07f 100644 --- a/dlls/d2d1/tests/Makefile.in +++ b/dlls/d2d1/tests/Makefile.in @@ -1,5 +1,5 @@ TESTDLL = d2d1.dll -IMPORTS = d2d1 d3d10_1 dwrite dxguid uuid user32 advapi32 ole32 gdi32 +IMPORTS = d2d1 d3d10_1 d3d11 dwrite dxguid uuid user32 advapi32 ole32 gdi32
C_SRCS = \ d2d1.c diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 43155bfb79a..8dc52a9e0ac 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -21,6 +21,7 @@ #include <math.h> #include <float.h> #include "d2d1_1.h" +#include "d3d11.h" #include "wincrypt.h" #include "wine/test.h" #include "initguid.h" @@ -36,13 +37,17 @@ static BOOL use_mt = TRUE; static struct test_entry { void (*test)(void); + void (*d3d1x_test)(BOOL d3d11); + BOOL d3d11; } *mt_tests; size_t mt_tests_size, mt_test_count;
struct resource_readback { - ID3D10Resource *resource; - D3D10_MAPPED_TEXTURE2D map_desc; + ID3D10Resource *d3d10_resource; + ID3D11Resource *d3d11_resource; + D3D10_MAPPED_TEXTURE2D d3d10_map_desc; + D3D11_MAPPED_SUBRESOURCE d3d11_map_desc; unsigned int pitch, width, height; void *data; }; @@ -104,7 +109,29 @@ static void queue_test(void (*test)(void)) mt_tests_size = max(16, mt_tests_size * 2); mt_tests = heap_realloc(mt_tests, mt_tests_size * sizeof(*mt_tests)); } - mt_tests[mt_test_count++].test = test; + mt_tests[mt_test_count].test = test; + mt_tests[mt_test_count++].d3d1x_test = NULL; +} + +static void queue_d3d1x_test(void (*test)(BOOL d3d11)) +{ + if (mt_test_count >= mt_tests_size) + { + mt_tests_size = max(16, mt_tests_size * 2); + mt_tests = heap_realloc(mt_tests, mt_tests_size * sizeof(*mt_tests)); + } + mt_tests[mt_test_count].test = NULL; + mt_tests[mt_test_count].d3d1x_test = test; + mt_tests[mt_test_count++].d3d11 = FALSE; + + if (mt_test_count >= mt_tests_size) + { + mt_tests_size = max(16, mt_tests_size * 2); + mt_tests = heap_realloc(mt_tests, mt_tests_size * sizeof(*mt_tests)); + } + mt_tests[mt_test_count].test = NULL; + mt_tests[mt_test_count].d3d1x_test = test; + mt_tests[mt_test_count++].d3d11 = TRUE; }
static DWORD WINAPI thread_func(void *ctx) @@ -115,7 +142,10 @@ static DWORD WINAPI thread_func(void *ctx) { j = *i; if (InterlockedCompareExchange(i, j + 1, j) == j) - mt_tests[j].test(); + { + if (mt_tests[j].test) mt_tests[j].test(); + else if (mt_tests[j].d3d1x_test) mt_tests[j].d3d1x_test(mt_tests[j].d3d11); + } }
return 0; @@ -132,7 +162,8 @@ static void run_queued_tests(void) { for (i = 0; i < mt_test_count; ++i) { - mt_tests[i].test(); + if (mt_tests[i].test) mt_tests[i].test(); + else if (mt_tests[i].d3d1x_test) mt_tests[i].d3d1x_test(mt_tests[i].d3d11); }
return; @@ -300,7 +331,7 @@ static void cubic_to(ID2D1GeometrySink *sink, float x1, float y1, float x2, floa ID2D1GeometrySink_AddBezier(sink, &b); }
-static void get_surface_readback(IDXGISurface *surface, struct resource_readback *rb) +static void get_d3d10_surface_readback(IDXGISurface *surface, struct resource_readback *rb) { D3D10_TEXTURE2D_DESC texture_desc; DXGI_SURFACE_DESC surface_desc; @@ -325,27 +356,101 @@ static void get_surface_readback(IDXGISurface *surface, struct resource_readback texture_desc.BindFlags = 0; texture_desc.CPUAccessFlags = D3D10_CPU_ACCESS_READ; texture_desc.MiscFlags = 0; - hr = ID3D10Device_CreateTexture2D(device, &texture_desc, NULL, (ID3D10Texture2D **)&rb->resource); + hr = ID3D10Device_CreateTexture2D(device, &texture_desc, NULL, (ID3D10Texture2D **)&rb->d3d10_resource); ok(SUCCEEDED(hr), "Failed to create texture, hr %#x.\n", hr);
rb->width = texture_desc.Width; rb->height = texture_desc.Height;
- ID3D10Device_CopyResource(device, rb->resource, src_resource); + ID3D10Device_CopyResource(device, rb->d3d10_resource, src_resource); ID3D10Resource_Release(src_resource); ID3D10Device_Release(device);
- hr = ID3D10Texture2D_Map((ID3D10Texture2D *)rb->resource, 0, D3D10_MAP_READ, 0, &rb->map_desc); + hr = ID3D10Texture2D_Map((ID3D10Texture2D *)rb->d3d10_resource, 0, D3D10_MAP_READ, 0, &rb->d3d10_map_desc); + ok(SUCCEEDED(hr), "Failed to map texture, hr %#x.\n", hr); + + rb->pitch = rb->d3d10_map_desc.RowPitch; + rb->data = rb->d3d10_map_desc.pData; +} + +static void get_d3d11_surface_readback(IDXGISurface *surface, struct resource_readback *rb) +{ + D3D11_TEXTURE2D_DESC texture_desc; + DXGI_SURFACE_DESC surface_desc; + ID3D11Resource *src_resource; + ID3D11DeviceContext *context; + ID3D11Device *device; + HRESULT hr; + + hr = IDXGISurface_GetDevice(surface, &IID_ID3D11Device, (void **)&device); + ok(SUCCEEDED(hr), "Failed to get device, hr %#x.\n", hr); + hr = IDXGISurface_QueryInterface(surface, &IID_ID3D11Resource, (void **)&src_resource); + ok(SUCCEEDED(hr), "Failed to query resource interface, hr %#x.\n", hr); + + hr = IDXGISurface_GetDesc(surface, &surface_desc); + ok(SUCCEEDED(hr), "Failed to get surface desc, hr %#x.\n", hr); + texture_desc.Width = surface_desc.Width; + texture_desc.Height = surface_desc.Height; + texture_desc.MipLevels = 1; + texture_desc.ArraySize = 1; + texture_desc.Format = surface_desc.Format; + texture_desc.SampleDesc = surface_desc.SampleDesc; + texture_desc.Usage = D3D11_USAGE_STAGING; + texture_desc.BindFlags = 0; + texture_desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ; + texture_desc.MiscFlags = 0; + hr = ID3D11Device_CreateTexture2D(device, &texture_desc, NULL, (ID3D11Texture2D **)&rb->d3d11_resource); + ok(SUCCEEDED(hr), "Failed to create texture, hr %#x.\n", hr); + + rb->width = texture_desc.Width; + rb->height = texture_desc.Height; + + ID3D11Device_GetImmediateContext(device, &context); + ID3D11DeviceContext_CopyResource(context, rb->d3d11_resource, src_resource); + ID3D11Resource_Release(src_resource); + ID3D11Device_Release(device); + + hr = ID3D11DeviceContext_Map(context, (ID3D11Resource *)rb->d3d11_resource, 0, D3D11_MAP_READ, 0, &rb->d3d11_map_desc); ok(SUCCEEDED(hr), "Failed to map texture, hr %#x.\n", hr); + ID3D11DeviceContext_Release(context);
- rb->pitch = rb->map_desc.RowPitch; - rb->data = rb->map_desc.pData; + rb->pitch = rb->d3d11_map_desc.RowPitch; + rb->data = rb->d3d11_map_desc.pData; }
-static void release_resource_readback(struct resource_readback *rb) +static void get_surface_readback(IDXGISurface *surface, struct resource_readback *rb, BOOL d3d11) { - ID3D10Texture2D_Unmap((ID3D10Texture2D *)rb->resource, 0); - ID3D10Resource_Release(rb->resource); + if (d3d11) get_d3d11_surface_readback(surface, rb); + else get_d3d10_surface_readback(surface, rb); +} + +static void release_d3d10_resource_readback(IDXGISurface *surface, struct resource_readback *rb) +{ + ID3D10Texture2D_Unmap((ID3D10Texture2D *)rb->d3d10_resource, 0); + ID3D10Resource_Release(rb->d3d10_resource); +} + +static void release_d3d11_resource_readback(IDXGISurface *surface, struct resource_readback *rb) +{ + ID3D11DeviceContext *context; + ID3D11Device *device; + HRESULT hr; + + hr = IDXGISurface_GetDevice(surface, &IID_ID3D11Device, (void **)&device); + ok(SUCCEEDED(hr), "Failed to get device, hr %#x.\n", hr); + + ID3D11Device_GetImmediateContext(device, &context); + ID3D11Device_Release(device); + + ID3D11DeviceContext_Unmap(context, rb->d3d11_resource, 0); + ID3D11Resource_Release(rb->d3d11_resource); + ID3D11DeviceContext_Release(context); +} + +static void release_resource_readback(IDXGISurface *surface, struct resource_readback *rb, BOOL d3d11) +{ + if (d3d11) release_d3d11_resource_readback(surface, rb); + else release_d3d10_resource_readback(surface, rb); }
static DWORD get_readback_colour(struct resource_readback *rb, unsigned int x, unsigned int y) @@ -449,14 +554,14 @@ static BOOL compare_sha1(void *data, unsigned int pitch, unsigned int bpp, return !strcmp(ref_sha1, (char *)sha1); }
-static BOOL compare_surface(IDXGISurface *surface, const char *ref_sha1) +static BOOL compare_surface(IDXGISurface *surface, const char *ref_sha1, BOOL d3d11) { struct resource_readback rb; BOOL ret;
- get_surface_readback(surface, &rb); + get_surface_readback(surface, &rb, d3d11); ret = compare_sha1(rb.data, rb.pitch, 4, rb.width, rb.height, ref_sha1); - release_resource_readback(&rb); + release_resource_readback(surface, &rb, d3d11);
return ret; } @@ -620,13 +725,14 @@ static void read_figure(struct figure *figure, BYTE *data, unsigned int pitch, }
static BOOL compare_figure(IDXGISurface *surface, unsigned int x, unsigned int y, - unsigned int w, unsigned int h, DWORD prev, unsigned int max_diff, const char *ref) + unsigned int w, unsigned int h, DWORD prev, unsigned int max_diff, const char *ref, + BOOL d3d11) { struct figure ref_figure, figure; unsigned int i, j, span, diff; struct resource_readback rb;
- get_surface_readback(surface, &rb); + get_surface_readback(surface, &rb, d3d11);
figure.span_count = 0; figure.spans_size = 64; @@ -676,7 +782,7 @@ static BOOL compare_figure(IDXGISurface *surface, unsigned int x, unsigned int y
HeapFree(GetProcessHeap(), 0, ref_figure.spans); HeapFree(GetProcessHeap(), 0, figure.spans); - release_resource_readback(&rb); + release_resource_readback(surface, &rb, d3d11);
return diff <= max_diff; } @@ -698,19 +804,47 @@ static ID3D10Device1 *create_d3d10_device(void) return NULL; }
-static IDXGIDevice *create_device(void) +static ID3D11Device *create_d3d11_device(void) +{ + ID3D11Device *device; + DWORD level = D3D_FEATURE_LEVEL_11_0; + + if (SUCCEEDED(D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, + D3D10_CREATE_DEVICE_BGRA_SUPPORT, &level, 1, D3D11_SDK_VERSION, &device, NULL, NULL))) + return device; + if (SUCCEEDED(D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_WARP, NULL, + D3D10_CREATE_DEVICE_BGRA_SUPPORT, &level, 1, D3D11_SDK_VERSION, &device, NULL, NULL))) + return device; + if (SUCCEEDED(D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_REFERENCE, NULL, + D3D10_CREATE_DEVICE_BGRA_SUPPORT, &level, 1, D3D11_SDK_VERSION, &device, NULL, NULL))) + return device; + + return NULL; +} + +static IDXGIDevice *create_device(BOOL d3d11) { ID3D10Device1 *d3d10_device; + ID3D11Device *d3d11_device; IDXGIDevice *device; HRESULT hr;
- if (!(d3d10_device = create_d3d10_device())) - return NULL; + if (d3d11) + { + if (!(d3d11_device = create_d3d11_device())) + return NULL; + hr = ID3D11Device_QueryInterface(d3d11_device, &IID_IDXGIDevice, (void **)&device); + ID3D11Device_Release(d3d11_device); + } + else + { + if (!(d3d10_device = create_d3d10_device())) + return NULL; + hr = ID3D10Device1_QueryInterface(d3d10_device, &IID_IDXGIDevice, (void **)&device); + ID3D10Device1_Release(d3d10_device); + }
- hr = ID3D10Device1_QueryInterface(d3d10_device, &IID_IDXGIDevice, (void **)&device); ok(SUCCEEDED(hr), "Failed to get DXGI device, hr %#x.\n", hr); - ID3D10Device1_Release(d3d10_device); - if (FAILED(hr)) return NULL;
@@ -777,7 +911,7 @@ static IDXGISwapChain *create_d3d10_swapchain(ID3D10Device1 *device, HWND window return swapchain; }
-static ID2D1RenderTarget *create_render_target_desc(IDXGISurface *surface, const D2D1_RENDER_TARGET_PROPERTIES *desc) +static ID2D1RenderTarget *create_render_target_desc(IDXGISurface *surface, const D2D1_RENDER_TARGET_PROPERTIES *desc, BOOL d3d11) { ID2D1RenderTarget *render_target; ID2D1Factory *factory; @@ -786,13 +920,14 @@ static ID2D1RenderTarget *create_render_target_desc(IDXGISurface *surface, const hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory); ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr); hr = ID2D1Factory_CreateDxgiSurfaceRenderTarget(factory, surface, desc, &render_target); - ok(SUCCEEDED(hr), "Failed to create render target, hr %#x.\n", hr); + todo_wine_if(d3d11) ok(SUCCEEDED(hr), "Failed to create render target, hr %#x.\n", hr); ID2D1Factory_Release(factory);
+ if (!SUCCEEDED(hr)) return NULL; return render_target; }
-static ID2D1RenderTarget *create_render_target(IDXGISurface *surface) +static ID2D1RenderTarget *create_render_target(IDXGISurface *surface, BOOL d3d11) { D2D1_RENDER_TARGET_PROPERTIES desc;
@@ -804,7 +939,7 @@ static ID2D1RenderTarget *create_render_target(IDXGISurface *surface) desc.usage = D2D1_RENDER_TARGET_USAGE_NONE; desc.minLevel = D2D1_FEATURE_LEVEL_DEFAULT;
- return create_render_target_desc(surface, &desc); + return create_render_target_desc(surface, &desc, d3d11); }
#define check_bitmap_surface(b, s, o) check_bitmap_surface_(__LINE__, b, s, o) @@ -1113,12 +1248,12 @@ static void geometry_sink_check_(unsigned int line, const struct geometry_sink * } }
-#define init_test(a, b, c, d, e) init_test_(__LINE__, a, b, c, d, e) -static BOOL init_test_(int line, IDXGIDevice **device, HWND *window, IDXGISwapChain **swapchain, IDXGISurface **surface, ID2D1RenderTarget **rt) +#define init_test(a, b, c, d, e, f) init_test_(__LINE__, a, b, c, d, e, f) +static BOOL init_test_(int line, IDXGIDevice **device, HWND *window, IDXGISwapChain **swapchain, IDXGISurface **surface, ID2D1RenderTarget **rt, BOOL d3d11) { HRESULT hr;
- if (!(*device = create_device())) + if (!(*device = create_device(d3d11))) { skip_(__FILE__, line)("Failed to create device, skipping tests.\n"); return FALSE; @@ -1127,13 +1262,23 @@ static BOOL init_test_(int line, IDXGIDevice **device, HWND *window, IDXGISwapCh *swapchain = create_swapchain(*device, *window, TRUE); hr = IDXGISwapChain_GetBuffer(*swapchain, 0, &IID_IDXGISurface, (void **)surface); ok_(__FILE__, line)(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr); - *rt = create_render_target(*surface); - ok_(__FILE__, line)(!!*rt, "Failed to create render target.\n"); + *rt = create_render_target(*surface, d3d11);
+ if (!*rt && d3d11) + { + todo_wine win_skip_(__FILE__, line)("Skipping D3D11 tests.\n"); + IDXGISurface_Release(*surface); + IDXGISwapChain_Release(*swapchain); + IDXGIDevice_Release(*device); + DestroyWindow(*window); + return FALSE; + } + + ok_(__FILE__, line)(!!*rt, "Failed to create render target.\n"); return TRUE; }
-static void test_clip(void) +static void test_clip(BOOL d3d11) { IDXGISwapChain *swapchain; D2D1_MATRIX_3X2_F matrix; @@ -1156,7 +1301,7 @@ static void test_clip(void) 0.0f, 0.0f, }}};
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_GetDpi(rt, &dpi_x, &dpi_y); @@ -1255,7 +1400,7 @@ static void test_clip(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "035a44d4198d6e422e9de6185b5b2c2bac5e33c9"); + match = compare_surface(surface, "035a44d4198d6e422e9de6185b5b2c2bac5e33c9", d3d11); ok(match, "Surface does not match.\n");
/* Fractional clip rectangle coordinates, aliased mode. */ @@ -1321,7 +1466,7 @@ static void test_clip(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "cb418ec4a7c8407b5e36db06fc6292a06bb8476c"); + match = compare_surface(surface, "cb418ec4a7c8407b5e36db06fc6292a06bb8476c", d3d11); ok(match, "Surface does not match.\n");
ID2D1RenderTarget_Release(rt); @@ -1331,7 +1476,7 @@ static void test_clip(void) DestroyWindow(window); }
-static void test_state_block(void) +static void test_state_block(BOOL d3d11) { IDWriteRenderingParams *text_rendering_params1, *text_rendering_params2; D2D1_DRAWING_STATE_DESCRIPTION drawing_state; @@ -1365,7 +1510,7 @@ static void test_state_block(void) 11.0f, 12.0f, }}};
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_GetFactory(rt, &factory); @@ -1597,7 +1742,7 @@ static void test_state_block(void) DestroyWindow(window); }
-static void test_color_brush(void) +static void test_color_brush(BOOL d3d11) { D2D1_MATRIX_3X2_F matrix, tmp_matrix; D2D1_BRUSH_PROPERTIES brush_desc; @@ -1613,7 +1758,7 @@ static void test_color_brush(void) HRESULT hr; BOOL match;
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -1677,7 +1822,7 @@ static void test_color_brush(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "6d1218fca5e21fb7e287b3a439d60dbc251f5ceb"); + match = compare_surface(surface, "6d1218fca5e21fb7e287b3a439d60dbc251f5ceb", d3d11); ok(match, "Surface does not match.\n");
ID2D1SolidColorBrush_Release(brush); @@ -1688,7 +1833,7 @@ static void test_color_brush(void) DestroyWindow(window); }
-static void test_bitmap_brush(void) +static void test_bitmap_brush(BOOL d3d11) { D2D1_BITMAP_INTERPOLATION_MODE interpolation_mode; ID2D1TransformedGeometry *transformed_geometry; @@ -1743,7 +1888,7 @@ static void test_bitmap_brush(void) 0xffffffff, 0xff000000, 0xff000000, 0xff000000, };
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -1831,7 +1976,7 @@ static void test_bitmap_brush(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "9437f4447d98feaad41a1c4202ee90aadc718ee6"); + match = compare_surface(surface, "9437f4447d98feaad41a1c4202ee90aadc718ee6", d3d11); ok(match, "Surface does not match.\n");
/* Invalid interpolation mode. */ @@ -1844,7 +1989,7 @@ static void test_bitmap_brush(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr); - match = compare_surface(surface, "9437f4447d98feaad41a1c4202ee90aadc718ee6"); + match = compare_surface(surface, "9437f4447d98feaad41a1c4202ee90aadc718ee6", d3d11); ok(match, "Surface does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -1873,7 +2018,7 @@ static void test_bitmap_brush(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "b4b775afecdae2d26642001f4faff73663bb8b31"); + match = compare_surface(surface, "b4b775afecdae2d26642001f4faff73663bb8b31", d3d11); ok(match, "Surface does not match.\n");
ID2D1Bitmap_Release(bitmap); @@ -1922,7 +2067,7 @@ static void test_bitmap_brush(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "cf7b90ba7b139fdfbe9347e1907d635cfb4ed197"); + match = compare_surface(surface, "cf7b90ba7b139fdfbe9347e1907d635cfb4ed197", d3d11); ok(match, "Surface does not match.\n");
if (SUCCEEDED(ID2D1BitmapBrush_QueryInterface(brush, &IID_ID2D1BitmapBrush1, (void **)&brush1))) @@ -1978,7 +2123,7 @@ static void test_bitmap_brush(void) DestroyWindow(window); }
-static void test_linear_brush(void) +static void test_linear_brush(BOOL d3d11) { D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES gradient_properties; ID2D1GradientStopCollection *gradient, *tmp_gradient; @@ -2038,7 +2183,7 @@ static void test_linear_brush(void) {520, 390, 0xff90ae40}, };
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -2080,7 +2225,7 @@ static void test_linear_brush(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- get_surface_readback(surface, &rb); + get_surface_readback(surface, &rb, d3d11); for (i = 0; i < ARRAY_SIZE(test1); ++i) { DWORD colour; @@ -2090,7 +2235,7 @@ static void test_linear_brush(void) "Got unexpected colour 0x%08x at position {%u, %u}.\n", colour, test1[i].x, test1[i].y); } - release_resource_readback(&rb); + release_resource_readback(surface, &rb, d3d11);
ID2D1RenderTarget_BeginDraw(rt);
@@ -2153,7 +2298,7 @@ static void test_linear_brush(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- get_surface_readback(surface, &rb); + get_surface_readback(surface, &rb, d3d11); for (i = 0; i < ARRAY_SIZE(test2); ++i) { DWORD colour; @@ -2163,7 +2308,7 @@ static void test_linear_brush(void) "Got unexpected colour 0x%08x at position {%u, %u}.\n", colour, test2[i].x, test2[i].y); } - release_resource_readback(&rb); + release_resource_readback(surface, &rb, d3d11);
ID2D1LinearGradientBrush_Release(brush); refcount = ID2D1GradientStopCollection_Release(gradient); @@ -2175,7 +2320,7 @@ static void test_linear_brush(void) DestroyWindow(window); }
-static void test_radial_brush(void) +static void test_radial_brush(BOOL d3d11) { D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES gradient_properties; ID2D1GradientStopCollection *gradient, *tmp_gradient; @@ -2235,7 +2380,7 @@ static void test_radial_brush(void) {520, 390, 0xff4059e6}, };
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f); @@ -2283,7 +2428,7 @@ static void test_radial_brush(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- get_surface_readback(surface, &rb); + get_surface_readback(surface, &rb, d3d11); for (i = 0; i < ARRAY_SIZE(test1); ++i) { DWORD colour; @@ -2293,7 +2438,7 @@ static void test_radial_brush(void) "Got unexpected colour 0x%08x at position {%u, %u}.\n", colour, test1[i].x, test1[i].y); } - release_resource_readback(&rb); + release_resource_readback(surface, &rb, d3d11);
ID2D1RenderTarget_BeginDraw(rt);
@@ -2358,7 +2503,7 @@ static void test_radial_brush(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- get_surface_readback(surface, &rb); + get_surface_readback(surface, &rb, d3d11); for (i = 0; i < ARRAY_SIZE(test2); ++i) { DWORD colour; @@ -2368,7 +2513,7 @@ static void test_radial_brush(void) "Got unexpected colour 0x%08x at position {%u, %u}.\n", colour, test2[i].x, test2[i].y); } - release_resource_readback(&rb); + release_resource_readback(surface, &rb, d3d11);
ID2D1RadialGradientBrush_Release(brush); refcount = ID2D1GradientStopCollection_Release(gradient); @@ -2495,7 +2640,7 @@ static void fill_geometry_sink_bezier(ID2D1GeometrySink *sink, unsigned int holl ID2D1GeometrySink_EndFigure(sink, D2D1_FIGURE_END_CLOSED); }
-static void test_path_geometry(void) +static void test_path_geometry(BOOL d3d11) { ID2D1TransformedGeometry *transformed_geometry; D2D1_MATRIX_3X2_F matrix, tmp_matrix; @@ -2832,7 +2977,7 @@ static void test_path_geometry(void) {D2D1_FIGURE_BEGIN_HOLLOW, D2D1_FIGURE_END_OPEN, { 40.0f, 20.0f}, 2, &expected_segments[172]}, };
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_GetFactory(rt, &factory); @@ -3219,7 +3364,7 @@ static void test_path_geometry(void) ID2D1RenderTarget_FillGeometry(rt, (ID2D1Geometry *)transformed_geometry, (ID2D1Brush *)brush, NULL); hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "3aace1b22aae111cb577614fed16e4eb1650dba5"); + match = compare_surface(surface, "3aace1b22aae111cb577614fed16e4eb1650dba5", d3d11); ok(match, "Surface does not match.\n");
/* Edge test. */ @@ -3300,7 +3445,7 @@ static void test_path_geometry(void) ID2D1RenderTarget_FillGeometry(rt, (ID2D1Geometry *)transformed_geometry, (ID2D1Brush *)brush, NULL); hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "bfb40a1f007694fa07dbd3b854f3f5d9c3e1d76b"); + match = compare_surface(surface, "bfb40a1f007694fa07dbd3b854f3f5d9c3e1d76b", d3d11); ok(match, "Surface does not match.\n"); ID2D1TransformedGeometry_Release(transformed_geometry); ID2D1PathGeometry_Release(geometry); @@ -3368,7 +3513,7 @@ static void test_path_geometry(void) "PwZQBkgCUAJOAU4BUARIBFAGRAZQCEAIUQk8CVILOAtSDTQNUg4yDlIQLhBTECwQVBEqEVQSKBJU" "EyYTVBQjFFYUIhRWFSAVVxUeFVgWHBZZFhoWWhcYF1sWGBZcFxYWXhcUF18WFBZhFhIWYxUSFWUV" "EBVnFBAUaRQOFGsTDhJvEgwSchAMEHYPCg96DQoMggEICgiLAQQIBJQBCJgBCJkBBpoBBpoBBpoB" - "BpsBBJwBBJwBBJwBBJwBBJ0BAp4BAp4BAp4BAp4BAp4BAp4BAp4BAgAA"); + "BpsBBJwBBJwBBJwBBJwBBJ0BAp4BAp4BAp4BAp4BAp4BAp4BAp4BAgAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 0, 226, 160, 160, 0xff652e89, 64, "7xoCngECngECngECngECngECngECngECnQEEnAEEnAEEnAEEnAEEmwEGmgEGmgEGmgEGmQEImAEI" @@ -3378,7 +3523,7 @@ static void test_path_geometry(void) "PwZQBkgCUAJOAU4BUARIBFAGRAZQCEAIUQk8CVILOAtSDTQNUg4yDlIQLhBTECwQVBEqEVQSKBJU" "EyYTVBQjFFYUIhRWFSAVVxUeFVgWHBZZFhoWWhcYF1sWGBZcFxYWXhcUF18WFBZhFhIWYxUSFWUV" "EBVnFBAUaRQOFGsTDhJvEgwSchAMEHYPCg96DQoMggEICgiLAQQIBJQBCJgBCJkBBpoBBpoBBpoB" - "BpsBBJwBBJwBBJwBBJwBBJ0BAp4BAp4BAp4BAp4BAp4BAp4BAp4BAgAA"); + "BpsBBJwBBJwBBJwBBJwBBJ0BAp4BAp4BAp4BAp4BAp4BAp4BAp4BAgAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 0, 320, 160, 0xff652e89, 64, "gVQBwAIBWgHlAQFYAecBAVYB6QEBVAHrAQEjDCMB7AECHhQeAu0BAxoYGgPvAQMWHhYD8QEDFCAU" @@ -3390,7 +3535,7 @@ static void test_path_geometry(void) "C/QBCzcK9QEJOAn3AQg4CfcBBzoH+QEGOgb7AQU6BfwBBDwE/QEDPAP/AQE+AZkCDpkCAhIYEgKA" "AgMNIA0D/wEFCSYJBf4BBgYqBgf8AQgDLgMI+wFG+gEIAzADCPkBBwYuBgf3AQYKKgoG9gEFDCgM" "BfUBBBAlDwTzAQQSIhIE8QEDFh4WA/ABAhkaGQLvAQIcFhwC7QECIBAgAusBASgEKAHpAQFWAecB" - "AVgB5QEBWgHAAgHhUgAA"); + "AVgB5QEBWgHAAgHhUgAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 160, 320, 160, 0xff652e89, 64, "/VUB5QEBWAHnAQFWAekBAVQB6wECIQ8hAe0BAh0VHQLuAQIZGhkD7wEDFh4WA/EBBBMhEwPzAQQQ" @@ -3402,7 +3547,7 @@ static void test_path_geometry(void) "CvUBCTgJ9wEIOAn4AQc5B/kBBjoG+wEFOwT9AQM8BP4BAj0C/wEBPgGYAhAXAYACAhEaEQKAAgMN" "IA0E/gEFCSYJBf4BBgYrBQf8AQgDLwII+wE8AQn6AQgELwQI+AEHBy0HBvcBBgoqCgb2AQUNJw0F" "9AEEECQQBfIBBBMhEwPxAQMWHhYD8AECGRoZA+4BAh0VHQLsAQIhDiIB6wEBVAHpAQFWAecBAVgB" - "wAIBwlYA"); + "wAIBwlYA", d3d11); ok(match, "Figure does not match.\n"); ID2D1TransformedGeometry_Release(transformed_geometry); ID2D1PathGeometry_Release(geometry); @@ -3461,14 +3606,14 @@ static void test_path_geometry(void) "lAEQiwEagQEjeyh2LHIwbjNsNmk4ZzplPGM+YUBfQl1DXURbRlpGWUhYSFdKVkpVS1VMVExUTFRM" "U05STlJOUk5STlFQUFBQUFBQTlRIXD9mMnYqdjJmP1xIVE5QUFBQUFBQUU5STlJOUk5STlNMVExU" "TFRMVEtWSlZKV0hYSFlGWkZbRFxDXkJfQGE+YzxlOmc4aTZrM28wcix2KHojggEaiwEQlAEImAEI" - "mQEGmgEGmgEGmgEGmwEEnAEEnAEEnAEEnAEEnQECngECngECngECngECngECngECngEC"); + "mQEGmgEGmgEGmgEGmwEEnAEEnAEEnAEEnAEEnQECngECngECngECngECngECngECngEC", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 0, 226, 160, 160, 0xff652e89, 64, "7xoCngECngECngECngECngECngECngECnQEEnAEEnAEEnAEEnAEEmwEGmgEGmgEGmgEGmQEImAEI" "lAEQiwEagQEjeyh2LHIwbjNsNmk4ZzplPGM+YUBfQl1DXURbRlpGWUhYSFdKVkpVS1VMVExUTFRM" "U05STlJOUk5STlFQUFBQUFBQTlRIXD9mMnYqdjJmP1xIVE5QUFBQUFBQUU5STlJOUk5STlNMVExU" "TFRMVEtWSlZKV0hYSFlGWkZbRFxDXkJfQGE+YzxlOmc4aTZrM28wcix2KHojggEaiwEQlAEImAEI" - "mQEGmgEGmgEGmgEGmwEEnAEEnAEEnAEEnAEEnQECngECngECngECngECngECngECngEC"); + "mQEGmgEGmgEGmgEGmwEEnAEEnAEEnAEEnAEEnQECngECngECngECngECngECngECngEC", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 0, 320, 160, 0xff652e89, 64, "4VIBwAIBWgHlAQFYAecBAVYB6QEBVAHrAQIhDiIB7QECHRUdAu4BAhkaGQPvAQMWHhYD8QEEEyET" @@ -3477,7 +3622,7 @@ static void test_path_geometry(void) "U+0BU+wBVOwBVOwBVOwBVOwBVesBVesBVesBVesBVOwBVOwBVOwBVO0BU+0BU+0BUu4BUu8BUe8B" "UPEBT/EBTvIBTvMBTPUBS/UBSvcBSfcBSPkBRvsBRP0BQ/4BQf8BQIECP4ACQIACQf4BQv4BQ/wB" "RPsBCQEyAQn6AQgELwQI+AEHBy0GB/cBBgoqCgb2AQUMKA0F9AEEECUPBPMBBBIiEwPxAQMWHhYD" - "8AECGRoZA+4BAh0VHQLsAQIhDiIB6wEBVAHpAQFWAecBAVgB5QEBWgHAAgEA"); + "8AECGRoZA+4BAh0VHQLsAQIhDiIB6wEBVAHpAQFWAecBAVgB5QEBWgHAAgEA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 160, 320, 160, 0xff652e89, 64, "gVQBXAHjAQFaAeUBAVgB5wEBVgHpAQEpAikB6wECIBAgAu0BAhwWHALvAQIZGhkC8AEDFh4WA/EB" @@ -3486,7 +3631,7 @@ static void test_path_geometry(void) "Uu0BVOwBVOwBVOwBVOwBVOwBVOwBVOwBVOwBVOwBVOwBVOwBVOwBVOwBVO0BUu4BUu4BUu8BUPAB" "UPABUPEBTvIBTvMBTPQBS/YBSvcBSPgBSPkBRvsBRP0BQv8BQIACQIECPoECQP8BQv4BQv0BRPwB" "RPsBCQEyAQn5AQgFLgUI+AEGCCwIBvcBBgoqCgb1AQUNJw4F9AEEECQQBPMBAxQgFAPxAQMWHhYD" - "7wEDGhgaA+0BAh4UHgLsAQEjDCMB6wEBVAHpAQFWAecBAVgB5QEBWgGiVQAA"); + "7wEDGhgaA+0BAh4UHgLsAQEjDCMB6wEBVAHpAQFWAecBAVgB5QEBWgGiVQAA", d3d11); ok(match, "Figure does not match.\n"); ID2D1TransformedGeometry_Release(transformed_geometry); ID2D1PathGeometry_Release(geometry); @@ -3523,7 +3668,7 @@ static void test_path_geometry(void) ID2D1RenderTarget_FillGeometry(rt, (ID2D1Geometry *)geometry, (ID2D1Brush *)brush, NULL); hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "a875e68e0cb9c055927b1b50b879f90b24e38470"); + match = compare_surface(surface, "a875e68e0cb9c055927b1b50b879f90b24e38470", d3d11); ok(match, "Surface does not match.\n"); ID2D1PathGeometry_Release(geometry);
@@ -3889,7 +4034,7 @@ static void test_rounded_rectangle_geometry(void) ID2D1Factory_Release(factory); }
-static void test_bitmap_formats(void) +static void test_bitmap_formats(BOOL d3d11) { D2D1_BITMAP_PROPERTIES bitmap_desc; IDXGISwapChain *swapchain; @@ -3925,7 +4070,7 @@ static void test_bitmap_formats(void) {DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, 0x8a}, };
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
bitmap_desc.dpiX = 96.0f; @@ -3958,7 +4103,7 @@ static void test_bitmap_formats(void) DestroyWindow(window); }
-static void test_alpha_mode(void) +static void test_alpha_mode(BOOL d3d11) { D2D1_RENDER_TARGET_PROPERTIES rt_desc; D2D1_BITMAP_PROPERTIES bitmap_desc; @@ -3985,7 +4130,7 @@ static void test_alpha_mode(void) 0x7f7f7f7f, 0x7f000000, 0x7f000000, 0x7f000000, };
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED); @@ -4012,7 +4157,7 @@ static void test_alpha_mode(void) ID2D1RenderTarget_Clear(rt, NULL); hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "48c41aff3a130a17ee210866b2ab7d36763934d5"); + match = compare_surface(surface, "48c41aff3a130a17ee210866b2ab7d36763934d5", d3d11); ok(match, "Surface does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -4020,7 +4165,7 @@ static void test_alpha_mode(void) ID2D1RenderTarget_Clear(rt, &color); hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "6487e683730fb5a77c1911388d00b04664c5c4e4"); + match = compare_surface(surface, "6487e683730fb5a77c1911388d00b04664c5c4e4", d3d11); ok(match, "Surface does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -4028,7 +4173,7 @@ static void test_alpha_mode(void) ID2D1RenderTarget_Clear(rt, &color); hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "7a35ba09e43cbaf591388ff1ef8de56157630c98"); + match = compare_surface(surface, "7a35ba09e43cbaf591388ff1ef8de56157630c98", d3d11); ok(match, "Surface does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -4069,7 +4214,7 @@ static void test_alpha_mode(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "14f8ac64b70966c7c3c6281c59aaecdb17c3b16a"); + match = compare_surface(surface, "14f8ac64b70966c7c3c6281c59aaecdb17c3b16a", d3d11); ok(match, "Surface does not match.\n");
ID2D1RenderTarget_Release(rt); @@ -4080,7 +4225,7 @@ static void test_alpha_mode(void) rt_desc.dpiY = 0.0f; rt_desc.usage = D2D1_RENDER_TARGET_USAGE_NONE; rt_desc.minLevel = D2D1_FEATURE_LEVEL_DEFAULT; - rt = create_render_target_desc(surface, &rt_desc); + rt = create_render_target_desc(surface, &rt_desc, d3d11); ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED); @@ -4107,7 +4252,7 @@ static void test_alpha_mode(void) ID2D1RenderTarget_Clear(rt, NULL); hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "b44510bf2d2e61a8d7c0ad862de49a471f1fd13f"); + match = compare_surface(surface, "b44510bf2d2e61a8d7c0ad862de49a471f1fd13f", d3d11); ok(match, "Surface does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -4115,7 +4260,7 @@ static void test_alpha_mode(void) ID2D1RenderTarget_Clear(rt, &color); hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "2184f4a9198fc1de09ac85301b7a03eebadd9b81"); + match = compare_surface(surface, "2184f4a9198fc1de09ac85301b7a03eebadd9b81", d3d11); ok(match, "Surface does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -4123,7 +4268,7 @@ static void test_alpha_mode(void) ID2D1RenderTarget_Clear(rt, &color); hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "6527ec83b4039c895b50f9b3e144fe0cf90d1889"); + match = compare_surface(surface, "6527ec83b4039c895b50f9b3e144fe0cf90d1889", d3d11); ok(match, "Surface does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -4164,7 +4309,7 @@ static void test_alpha_mode(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "465f5a3190d7bde408b3206b4be939fb22f8a3d6"); + match = compare_surface(surface, "465f5a3190d7bde408b3206b4be939fb22f8a3d6", d3d11); ok(match, "Surface does not match.\n");
refcount = ID2D1Bitmap_Release(bitmap); @@ -4178,7 +4323,7 @@ static void test_alpha_mode(void) DestroyWindow(window); }
-static void test_shared_bitmap(void) +static void test_shared_bitmap(BOOL d3d11) { IDXGISwapChain *swapchain1, *swapchain2; IWICBitmap *wic_bitmap1, *wic_bitmap2; @@ -4198,7 +4343,7 @@ static void test_shared_bitmap(void) HWND window1, window2; HRESULT hr;
- if (!init_test(&device1, &window1, &swapchain1, &surface1, &rt)) + if (!init_test(&device1, &window1, &swapchain1, &surface1, &rt, d3d11)) return; ID2D1RenderTarget_Release(rt);
@@ -4264,7 +4409,7 @@ static void test_shared_bitmap(void) /* DXGI surface render targets with different devices but the same factory. */ IDXGISurface_Release(surface2); IDXGISwapChain_Release(swapchain2); - device2 = create_device(); + device2 = create_device(d3d11); ok(!!device2, "Failed to create device.\n"); swapchain2 = create_swapchain(device2, window2, TRUE); hr = IDXGISwapChain_GetBuffer(swapchain2, 0, &IID_IDXGISurface, (void **)&surface2); @@ -4428,7 +4573,7 @@ static void test_shared_bitmap(void) CoUninitialize(); }
-static void test_bitmap_updates(void) +static void test_bitmap_updates(BOOL d3d11) { D2D1_BITMAP_PROPERTIES bitmap_desc; IDXGISwapChain *swapchain; @@ -4452,7 +4597,7 @@ static void test_bitmap_updates(void) 0xffffffff, 0xff000000, 0xff000000, 0xff000000, };
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED); @@ -4511,7 +4656,7 @@ static void test_bitmap_updates(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- match = compare_surface(surface, "cb8136c91fbbdc76bb83b8c09edc1907b0a5d0a6"); + match = compare_surface(surface, "cb8136c91fbbdc76bb83b8c09edc1907b0a5d0a6", d3d11); ok(match, "Surface does not match.\n");
ID2D1Bitmap_Release(bitmap); @@ -4522,7 +4667,7 @@ static void test_bitmap_updates(void) DestroyWindow(window); }
-static void test_opacity_brush(void) +static void test_opacity_brush(BOOL d3d11) { ID2D1BitmapBrush *bitmap_brush, *opacity_brush; D2D1_BITMAP_PROPERTIES bitmap_desc; @@ -4551,7 +4696,7 @@ static void test_opacity_brush(void) 0xffffffff, 0x40000000, 0x40000000, 0xff000000, };
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_GetFactory(rt, &factory); @@ -4638,7 +4783,7 @@ static void test_opacity_brush(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(hr == D2DERR_INCOMPATIBLE_BRUSH_TYPES, "Got unexpected hr %#x.\n", hr); - match = compare_surface(surface, "7141c6c7b3decb91196428efb1856bcbf9872935"); + match = compare_surface(surface, "7141c6c7b3decb91196428efb1856bcbf9872935", d3d11); ok(match, "Surface does not match.\n"); ID2D1RenderTarget_BeginDraw(rt);
@@ -4680,7 +4825,7 @@ static void test_opacity_brush(void)
hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); - match = compare_surface(surface, "c3a5802d1750efa3e9122c1a92f6064df3872732"); + match = compare_surface(surface, "c3a5802d1750efa3e9122c1a92f6064df3872732", d3d11); ok(match, "Surface does not match.\n");
ID2D1BitmapBrush_Release(bitmap_brush); @@ -4695,7 +4840,7 @@ static void test_opacity_brush(void) DestroyWindow(window); }
-static void test_create_target(void) +static void test_create_target(BOOL d3d11) { IDXGISwapChain *swapchain; ID2D1Factory *factory; @@ -4721,7 +4866,7 @@ static void test_create_target(void) }; unsigned int i;
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return; ID2D1RenderTarget_Release(rt);
@@ -4780,7 +4925,7 @@ static void test_create_target(void) DestroyWindow(window); }
-static void test_draw_text_layout(void) +static void test_draw_text_layout(BOOL d3d11) { static const struct { @@ -4832,7 +4977,7 @@ static void test_draw_text_layout(void) D2D1_RECT_F rect; unsigned int i;
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return; ID2D1RenderTarget_Release(rt);
@@ -4964,7 +5109,7 @@ static void create_target_dibsection(HDC hdc, UINT32 width, UINT32 height) DeleteObject(SelectObject(hdc, hbm)); }
-static void test_dc_target(void) +static void test_dc_target(BOOL d3d11) { static const D2D1_PIXEL_FORMAT invalid_formats[] = { @@ -4994,7 +5139,7 @@ static void test_dc_target(void) HRESULT hr; RECT rect;
- if (!(device = create_device())) + if (!(device = create_device(d3d11))) { skip("Failed to create device, skipping tests.\n"); return; @@ -5195,7 +5340,7 @@ todo_wine ID2D1Factory_Release(factory); }
-static void test_hwnd_target(void) +static void test_hwnd_target(BOOL d3d11) { D2D1_HWND_RENDER_TARGET_PROPERTIES hwnd_rt_desc; ID2D1GdiInteropRenderTarget *interop; @@ -5207,7 +5352,7 @@ static void test_hwnd_target(void) D2D1_SIZE_U size; HRESULT hr;
- if (!(device = create_device())) + if (!(device = create_device(d3d11))) { skip("Failed to create device, skipping tests.\n"); return; @@ -5358,7 +5503,7 @@ static void test_compatible_target_size_(unsigned int line, ID2D1RenderTarget *r ID2D1BitmapRenderTarget_Release(bitmap_rt); }
-static void test_bitmap_target(void) +static void test_bitmap_target(BOOL d3d11) { D2D1_HWND_RENDER_TARGET_PROPERTIES hwnd_rt_desc; ID2D1GdiInteropRenderTarget *interop; @@ -5377,7 +5522,7 @@ static void test_bitmap_target(void) ULONG refcount; HRESULT hr;
- if (!(device = create_device())) + if (!(device = create_device(d3d11))) { skip("Failed to create device, skipping tests.\n"); return; @@ -5707,7 +5852,7 @@ static void test_stroke_style(void) ID2D1Factory_Release(factory); }
-static void test_gradient(void) +static void test_gradient(BOOL d3d11) { ID2D1GradientStopCollection *gradient; D2D1_GRADIENT_STOP stops[3], stops2[3]; @@ -5721,7 +5866,7 @@ static void test_gradient(void) HWND window; HRESULT hr;
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
stops2[0].position = 0.5f; @@ -5756,7 +5901,7 @@ static void test_gradient(void) DestroyWindow(window); }
-static void test_draw_geometry(void) +static void test_draw_geometry(BOOL d3d11) { ID2D1TransformedGeometry *transformed_geometry[4]; ID2D1RectangleGeometry *rect_geometry[2]; @@ -5780,7 +5925,7 @@ static void test_draw_geometry(void) HRESULT hr; BOOL match;
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_GetFactory(rt, &factory); @@ -5828,35 +5973,35 @@ static void test_draw_geometry(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, ""); + match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "yGBQUFBQUFBQUFDoYQAA"); + match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "yGBQUFBQUFBQUFDoYQAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "xjIUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" - "jAEUjAEUjAEUjAEUxjIA"); + "jAEUjAEUjAEUjAEUxjIA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 2, "zjECnQETjAEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEV" "igEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEV" "igEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEV" "igEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEVigEV" - "igEVigEVigEVigEVjAETnQECzjEA"); + "igEVigEVigEVigEVjAETnQECzjEA", d3d11); ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "5mAUjAEUjAEUjAEUjAEUhmIA"); + match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "5mAUjAEUjAEUjAEUjAEUhmIA", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "vmBkPGQ8ZDxkPGTeYQAA"); + match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "vmBkPGQ8ZDxkPGTeYQAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "5i4UjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" - "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUhjAA"); + "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUhjAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 0, "vi5kPGQ8ZDxkPGQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -5864,19 +6009,19 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A", d3d11); ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA"); + match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA", d3d11); todo_wine ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA"); + match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "iDAQjgEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" - "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA"); + "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 10, "hDAYgwEieyh1LnAybBcIF2gWDhZkFhIWYRUWFV4VGhVbFRwVWRUeFVcVIBVVFCQUUxQmFFEUKBRP" @@ -5884,7 +6029,7 @@ static void test_draw_geometry(void) "OBQ/FDoUPhQ6FD4UOhQ+FDoUPhQ6FD0UPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FD0UOhQ+FDoUPhQ6FD4UOhQ+FDoUPxQ4FEAUOBRAFDgUQRQ2FEIUNhRDFDQU" "RBQ0FEUUMhRGFDIURxQwFEgUMBRJFC4USxQsFEwVKhVNFSgVTxQoFFEUJhRTFCQUVRUgFVcVHhVZ" - "FRwVWxUaFV4VFhVhFhIWZBYOFmgXCBdsMnAudSh7IoMBGIQw"); + "FRwVWxUaFV4VFhVhFhIWZBYOFmgXCBdsMnAudSh7IoMBGIQw", d3d11); todo_wine ok(match, "Figure does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -5921,16 +6066,16 @@ static void test_draw_geometry(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA"); + match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA", d3d11); todo_wine ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA"); + match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "iDAQjgEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" - "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA"); + "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 0, "3C4oaUZVUExYRlxCHCgcPxU4FT0UPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -5938,19 +6083,19 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FD0VOBU/YEJcRlhMUFVG7S8A"); + "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FD0VOBU/YEJcRlhMUFVG7S8A", d3d11); todo_wine ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA"); + match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA", d3d11); todo_wine ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA"); + match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "iDAQjgEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" - "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA"); + "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 8, "3C4obT5dSFRQTlRKGCgYRhYwFkMVNBVBFTYVPxU5FD4UOhQ9FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -5958,19 +6103,19 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPRQ6FD4UOhQ/FTYVQRU0FUMWMBZGWEpVTVBTSltA8C8A"); + "PBQ8FDwUPRQ6FD4UOhQ/FTYVQRU0FUMWMBZGWEpVTVBTSltA8C8A", d3d11); todo_wine ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA"); + match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA", d3d11); todo_wine ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA"); + match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "iDAQjgEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" - "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA"); + "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 0, "3C4oZU5NWERgP2I9HigePBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -5978,7 +6123,7 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZD1iP2BEWE1O6S8A"); + "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZD1iP2BEWE1O6S8A", d3d11); todo_wine ok(match, "Figure does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -6015,16 +6160,16 @@ static void test_draw_geometry(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA"); + match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA", d3d11); todo_wine ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA"); + match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "iDAQjgEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" - "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA"); + "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 16, "hDAYgwEieyh1LnAybBcIF2gWDhZkFhIWYRUWFV4WGRVbFRwVWRUeFVcVIBVVFSMUUxQmFFEVJxRP" @@ -6032,19 +6177,19 @@ static void test_draw_geometry(void) "OBQ/FTkUPhQ6FD4UOhQ+FDoUPhQ6FD0UPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FD0UOhQ+FDoUPhQ6FD4UOhQ+FDoUPxQ4FEAUOBRAFDgUQRQ2FEIUNhRDFDQU" "RBQ0FEUUMhRGFDIURxQwFEgUMBRJFC4USxQsFEwVKhVNFSgVTxQoFFEUJhRTFCQUVRUgFVcVHhVZ" - "FRwVWxUaFV4VFhVhFhIWZBYOFmgWChZsMnAudCp6IoMBGIQw"); + "FRwVWxUaFV4VFhVhFhIWZBYOFmgWChZsMnAudCp6IoMBGIQw", d3d11); todo_wine ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA"); + match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA", d3d11); todo_wine ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA"); + match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "iDAQjgEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" - "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA"); + "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 16, "3C4obzpjQF5EWkhXFSAVVRQkFFMUJhRRFCgUTxQqFE0VKhVMFCwUSxQuFEoULhVIFDAUSBQwFUYU" @@ -6052,19 +6197,19 @@ static void test_draw_geometry(void) "FD4UOhQ+FDoUPhQ6FD0VOxQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBU7FD0UOhQ+FDoUPhQ6FD4UOhQ+FDoUPhQ6FD8UOBRA" "FDgUQBQ4FEAUOBRBFDYUQhQ2FEIUNhRCFTQVQxQ0FEQUNBRFFDIURhQyFEYVMBVHFDAUSBUuFUkU" - "LhRLFCwUTBUrFE0UKhRPFCgUURQmFFMUJBRVSldIWUZdQWI78i8A"); + "LhRLFCwUTBUrFE0UKhRPFCgUURQmFFMUJBRVSldIWUZdQWI78i8A", d3d11); todo_wine ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA"); + match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "iGIQjgEUjAEUjgEQiGIA", d3d11); todo_wine ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA"); + match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "yGBQSGA+ZDxkPmDgYQAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "iDAQjgEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEUjAEU" - "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA"); + "jAEUjAEUjAEUjAEUjAEUjAEUjAEUjgEQiDAA", d3d11); todo_wine ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 8, "9i80ZERWUExYRV5AHCocPRY4FjwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -6072,7 +6217,7 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPBQ8FDwUPBQ8FToVPRssG0BeRFpLUFVGYzT2LwAA"); + "PBQ8FDwUPBQ8FDwUPBQ8FToVPRssG0BeRFpLUFVGYzT2LwAA", d3d11); todo_wine ok(match, "Figure does not match.\n");
hr = ID2D1Factory_CreatePathGeometry(factory, &geometry); @@ -6158,16 +6303,16 @@ static void test_draw_geometry(void) ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); ID2D1PathGeometry_Release(geometry);
- match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, ""); + match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, ""); + match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, ""); + match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 0, "q2MKlgEKq2MA"); + match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 0, "q2MKlgEKq2MA", d3d11); todo_wine ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "iGNQUFCIYwAA"); + match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "iGNQUFCIYwAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "qyIKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEK" @@ -6175,9 +6320,9 @@ static void test_draw_geometry(void) "lgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKQQpLCkEKSwqWAQqW" "AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW" "AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW" - "AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQrLIwAA"); + "AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQrLIwAA", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "4GLAAuBi"); + match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "4GLAAuBi", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 0, "qyIKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEK" @@ -6185,7 +6330,7 @@ static void test_draw_geometry(void) "lgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKSwpBCksKQQqWAQqWAQqW" "AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW" "AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW" - "AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQrLIwAA"); + "AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQrLIwAA", d3d11); ok(match, "Figure does not match.\n");
match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, @@ -6195,7 +6340,7 @@ static void test_draw_geometry(void) "CnIKGgpxChwKcAocCm8KHgpuCh4KbQogCmwKIAprCiIKagoiCmkKJApoCiQKZwomCmYKJgplCigK" "ZAooCmMKKgpiCioKYQosCmAKLApfCi4KXgouCl0KMApcCjAKWwoyCloKMgpZCjQKWAo0ClcKNgpW" "CjYKVQo4ClQKOApTCjoKUgo6ClEKPApQCjwKTwo+Ck4KPgpNCkAKTApACksKQgpKCkIKSQpECkgK" - "RApHCkYKozIA"); + "RApHCkYKozIA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "ozIKRgpHCkQKSApECkkKQgpKCkIKSwpACkwKQApNCj4KTgo+Ck8KPApQCjwKUQo6ClIKOgpTCjgK" @@ -6204,7 +6349,7 @@ static void test_draw_geometry(void) "HApxChoKcgoaCnMKGAp0ChgKdQoWCnYKFgp3ChQKeAoUCnkKEgp6ChIKewoQCnwKEAp9Cg4KfgoO" "Cn8KDAqAAQoMCoEBCgoKggEKCgqDAQoICoQBCggKhQEKBgqGAQoGCocBCgQKiAEKBAqJAQoCCooB" "CgIKiwEUjAEUjQESjgESjwEQkAEQkQEOkgEOkwEMlAEMlQEKlgEKlwEImAEImQEGmgEGmwEEnAEE" - "nQECngECrycA"); + "nQECngECrycA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "rycCngECnQEEnAEEmwEGmgEGmQEImAEIlwEKlgEKlQEMlAEMkwEOkgEOkQEQkAEQjwESjgESjQEU" @@ -6213,7 +6358,7 @@ static void test_draw_geometry(void) "CnIKGgpxChwKcAocCm8KHgpuCh4KbQogCmwKIAprCiIKagoiCmkKJApoCiQKZwomCmYKJgplCigK" "ZAooCmMKKgpiCioKYQosCmAKLApfCi4KXgouCl0KMApcCjAKWwoyCloKMgpZCjQKWAo0ClcKNgpW" "CjYKVQo4ClQKOApTCjoKUgo6ClEKPApQCjwKTwo+Ck4KPgpNCkAKTApACksKQgpKCkIKSQpECkgK" - "RApHWkZagzEA"); + "RApHWkZagzEA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 0, "gzFaRlpHCkQKSApECkkKQgpKCkIKSwpACkwKQApNCj4KTgo+Ck8KPApQCjwKUQo6ClIKOgpTCjgK" @@ -6222,7 +6367,7 @@ static void test_draw_geometry(void) "HApxChoKcgoaCnMKGAp0ChgKdQoWCnYKFgp3ChQKeAoUCnkKEgp6ChIKewoQCnwKEAp9Cg4KfgoO" "Cn8KDAqAAQoMCoEBCgoKggEKCgqDAQoICoQBCggKhQEKBgqGAQoGCocBCgQKiAEKBAqJAQoCCooB" "CgIKiwEUjAEUjQESjgESjwEQkAEQkQEOkgEOkwEMlAEMlQEKlgEKlwEImAEImQEGmgEGmwEEnAEE" - "nQECngECrycA"); + "nQECngECrycA", d3d11); ok(match, "Figure does not match.\n");
set_rect(&rect, 20.0f, 80.0f, 60.0f, 240.0f); @@ -6276,7 +6421,7 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 0, 320, 160, 0xff652e89, 32, "8XYGtQIOrAIXpAIfmwIokwIwigI4gwJA+gFJ8gFR6QEzAiXhATMKJdgBMxMl0AEzGyXHATMkJb8B" @@ -6284,7 +6429,7 @@ static void test_draw_geometry(void) "M5ABJVgtmQElWCWhASVYJaEBJVgloQElWCWhASVYJaEBJVgloQElWCWhASVYJaEBJVglmQEtWCWQ" "ATNaJogBM2IlgAEzayV4M3MlbzN8JWczhAElXjONASVWM5UBJU0zngElRTOmASU8M68BJTQztgEm" "KzO/ASUkM8cBJRsz0AElEzPYASUKM+EBJQIz6QFR8gFJ+gFAgwI4igIwkwIomwIfpAIXrAIOtQIG" - "8XYA"); + "8XYA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 0, 160, 160, 320, 0xff652e89, 32, "ujEBngECnQEDnQEEmwEFmgEHmQEHmAEIlwEKlgEKlQELlAENkwENkgEOkQEQjwERjwESjQETjAEU" @@ -6303,7 +6448,7 @@ static void test_draw_geometry(void) "ZgolCmcKJQpnCiQKaQoiCmoKIQtrCiAKbAofCm0KHgtuCh0KbwocCnAKGwpyChoKcgoZCnMKGAp1" "ChcKdQoWCncKFAp4ChQKeAoTCnoKEQp7ChALewoQCn0KDgp+Cg0LfgoNCoABCgsKgQEKCgqDAQoJ" "CoMBCggKhAEKBwqGAQoGCoYBCgUKhwEKBAqJAQoDCokBCgIKigEKAQqMARSMARONARKPARGPARCR" - "AQ6SAQ2TAQ2UAQuVAQqWAQqXAQiYAQeZAQeaAQWbAQSdAQOdAQKeAQG6MQAA"); + "AQ6SAQ2TAQ2UAQuVAQqWAQqXAQiYAQeZAQeaAQWbAQSdAQOdAQKeAQG6MQAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 160, 320, 320, 0xff652e89, 64, "82ICvQIEugIHuAIJtgIKtAINsgIPsAIRrQITrAIVqQIYpwIZpgIbowIeoQIgnwIhnQIkmwImmAIp" @@ -6326,7 +6471,7 @@ static void test_draw_geometry(void) "ARQ1FeIBFTMV5AEUMRbmARQvFegBFS0V6gEUKxbsARQpFe8BFCcV8AEVJBXzARQjFfUBFCAW9wEU" "HhX5ARUcFfsBFBoV/gEUGBX/ARUWFYECFBQVhAIUEhWGAhQPFocCFQ0VigIUDBWMAhQJFY8CFAcV" "kAIVBRWSAhQDFZUCFAEVlgIpmAImmwIknQIhnwIgoQIeowIbpgIZpwIYqQIVrAITrQIRsAIPsgIN" - "tAIKtgIJuAIHugIEvQIC82IA"); + "tAIKtgIJuAIHugIEvQIC82IA", d3d11); ok(match, "Figure does not match.\n");
hr = ID2D1Factory_CreatePathGeometry(factory, &geometry); @@ -6447,7 +6592,7 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "vi5kPGQ8ZDxkPGQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -6455,7 +6600,7 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "vi5kPGQ8ZDxkPGQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -6463,7 +6608,7 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 0, "yC5aRlpGWjxkPGQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" @@ -6471,7 +6616,7 @@ static void test_draw_geometry(void) "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8" "FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwU" - "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A"); + "PBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8FDwUPBQ8ZDxkPGQ8ZDxk3i8A", d3d11); ok(match, "Figure does not match.\n");
match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 64, @@ -6481,7 +6626,7 @@ static void test_draw_geometry(void) "RhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRG" "FDIURRQ0FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEMUNhRCFDYUQhQ2FEIU" "NhRCFDYUQhQ2FEEUOBRAFDgUQBQ4FEAUOBRAFDgUPxQKJgoUPhQBOAEUPmI+Yj5iPSIgIjwcLBw8" - "FzYXPBJAEjsPSA86C1ALOgdYBzoDYAPdKgAA"); + "FzYXPBJAEjsPSA86C1ALOgdYBzoDYAPdKgAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 1024, "uxUBnwECngEDnQEEnAEFmwEGmwEGmgEHmQEImAEJlwEKlgELlQEMlQEMlAENkwEOkgEPkQEQkAER" @@ -6492,7 +6637,7 @@ static void test_draw_geometry(void) "RBQ0FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNRRDFDUUQxQ1FEMUNRRDFDUUQhQ2FEIUNhRC" "FDYUQhQ3FEEUNxRBFDcUQBQ4FEAUFDhAFAlDQGA/Yj5iPS0eGDwkKxU7HDUUOhY9EzkQRRI4Ck0S" "NgRVEZABEJEBD5IBDpMBDZQBDJUBDJUBC5YBCpcBCZgBCJkBB5oBBpsBBpsBBZwBBJ0BA54BAp8B" - "AbsV"); + "AbsV", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 1024, "pBYBngECnQEDnAEEmwEFmgEGmQEGmQEHmAEIlwEJlgEKlQELlAEMkwEMkwENkgEOkQEPkAEQNgRV" @@ -6503,7 +6648,7 @@ static void test_draw_geometry(void) "FDQURBQ0FEQUNBREFDQURBQ0FEQUNBREFDQUQxQ1FEMUNRRDFDUUQxQ1FEMUNRRDFDYUQhQ2FEIU" "NhRBFDcUQRQ3FEEUNxRBFDgUQDgUFEBDCRRAYD9iPmI+GB4tPRUrJDwUNRw7Ez0WOhJFEDgSTQo3" "EVUENhCQAQ+RAQ6SAQ2TAQyTAQyUAQuVAQqWAQmXAQiYAQeZAQaZAQaaAQWbAQScAQOdAQKeAQGk" - "FgAA"); + "FgAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 64, "wCsDmQEHlQELkQEPSwJAEkgLNhc8HCwcPCIgIj1iPmI+Yj4UATgBFD4UCiYKFD8UOBRAFDgUQBQ4" @@ -6512,7 +6657,7 @@ static void test_draw_geometry(void) "FDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEUU" "NBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNBRDFDYUQhQ2FEIUNhRCFDYUQhQ2" "FEIUNhRBFDgUQBQ4FEAUOBRAFDgUQBQ4FD8UCiYKFD4UATgBFD5iPmI+Yj0iICI8HCwcPBc2FzwS" - "QBI7D0gPOgtQCzoHWAc6A2AD3SoA"); + "QBI7D0gPOgtQCzoHWAc6A2AD3SoA", d3d11); ok(match, "Figure does not match.\n");
match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 64, @@ -6522,7 +6667,7 @@ static void test_draw_geometry(void) "MhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQz" "FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNRRCFDYUQhQ2FEIUNhRCFDYU" "QhQ2FEIUNxRAFDgUQBQ4FEAUOBRAFDgUQBQ5FD4UOhQ+FDoUPhQ6FD4UOhQ+FDsUPBQ8FzYXPBws" - "HD4gICBEWE1OV0RiOHEm3SkA"); + "HD4gICBEWE1OV0RiOHEm3SkA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 1024, "zykoczhkRVhQTlpEFx4tPRUrJDwUNRw7FDwVOxQ+FDoUPhQ5FEAUOBRAFDgUQBQ4FEAUOBRBFDcU" @@ -6531,7 +6676,7 @@ static void test_draw_geometry(void) "MxRFFDMURBQ0FEQUMxRFFDMURRQzFEUUMxRFFDMURRQzFEUUMxRFFDMURRQzFEUUMxRFFDMURBQ0" "FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEMUNRRDFDUUQxQ1FEMUNRRDFDYU" "QhQ2FEIUNhRCFDYUQRQ3FEEUNxRBFDgUQBQ4FEAUOBRAFDgUQBQ5FD4UOhQ+FDsVPBQ7HDUUPCQr" - "FT0tHhdEWk5QWEVkOHMozykA"); + "FT0tHhdEWk5QWEVkOHMozykA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 1024, "6SkobThfRVNQSFpALR4XPSQrFTscNRQ7FTwUOhQ+FDoUPhQ5FEAUOBRAFDgUQBQ4FEAUNxRBFDcU" @@ -6540,7 +6685,7 @@ static void test_draw_geometry(void) "MxRFFDQURBQ0FEQUNBRFFDMURRQzFEUUMxRFFDMURRQzFEUUMxRFFDMURRQzFEUUMxRFFDQURBQ0" "FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNBREFDQURBQ1FEMUNRRDFDUUQxQ1FEMUNRRDFDUU" "QhQ2FEIUNhRCFDcUQRQ3FEEUNxRBFDcUQBQ4FEAUOBRAFDgUQBQ5FD4UOhQ+FDoUPBU7FDUcOxUr" - "JD0XHi1AWkhQU0VfOG0o6SkA"); + "JD0XHi1AWkhQU0VfOG0o6SkA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 64, "3SkmcThiRFdOTVhGHiAgRhQsHDwXNhc8FDwUOxQ+FDoUPhQ6FD4UOhQ+FDoUPhQ5FEAUOBRAFDgU" @@ -6549,7 +6694,7 @@ static void test_draw_geometry(void) "MhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQyFEYUMhRGFDIURhQz" "FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNBREFDQURBQ0FEQUNRRCFDYUQhQ2FEIUNhRCFDYU" "QhQ2FEIUNxRAFDgUQBQ4FEAUOBRAFDgUQBQ5FD4UOhQ+FDoUPhQ6FD4UOhQ+FDsUPBQ8FzYXPBws" - "HD4gICBEWE1OV0RiOHEm3SkA"); + "HD4gICBEWE1OV0RiOHEm3SkA", d3d11); ok(match, "Figure does not match.\n");
hr = ID2D1Factory_CreatePathGeometry(factory, &geometry); @@ -6628,13 +6773,13 @@ static void test_draw_geometry(void) "EgSGAQQSBIYBBBIEhgEEEgSGAQQRBIgBBBAEiAEEEASIAQQQBIkBBA4EigEEDgSLAQQMBIwBBAwE" "jQEECgSOAQQJBJABBAgEkAEFBgSSAQQGBJMBBAQElAEEBASVAQQDBJUBBAIElwEEAQSXAQiZAQeZ" "AQaaAQaaAQaaAQabAQWbAQWbAQWbAQWaAQeZAQeZAQeZAQiXAQQBBJYBBAMElQEEAwWRAQUGBY0B" - "BQwFhwEFEgSCAQUXBYABBBoFfgUYBIIBBhEFiAEUpTEA"); + "BQwFhwEFEgSCAQUXBYABBBoFfgUYBIIBBhEFiAEUpTEA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 0, 320, 160, 0xff652e89, 512, "yJIBArkCDa4CGKMCIZoCK5ECM4gCO4ECQ/gBS/EBUesBLAYl5QEsDiPeASwWIdkBLBwh0wEsISHO" "ASsgKMsBKR4vyAEnHDPIASUaNMsBIxg1mQEFMCIUN54BCygiDzijAREhIgY9qAEYGWGuAR4RXbMB" "JAhbuQGAAcABesYBc84Ba9YBTvQBP4MCOIoCNI4CM5ACMZICL5QCLZYCK5kCKJsCJ54CI6MCHq8C" - "EraSAQAA"); + "EraSAQAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 0, 160, 160, 320, 0xff652e89, 512, "xWkCmwEFmAEJlQELlAENkgEOkQEPjwESjQETjAEVigELAQqJAQsCCogBCwQKhwEKBQqGAQoGCoYB" @@ -6648,7 +6793,7 @@ static void test_draw_geometry(void) "DBUCfgwSBH4MEQV/DA4GgAEMDAiAAQ0KCYEBDAgLgQENBQ2BAQ0EDoIBDQEPgwEdgwEdgwEdgwEc" "hAEKAgQCCoUBCgYKhgEKBgqGAQoFC4YBCgUKhwEKBAqIAQoECogBCgMKiQEKAwqIAQoDCokBCgMK" "iQEKAgqJAQoCCooBCgIKiQEKAgqKAQoBCosBCgEKigEKAQqLARSMARSLARSMAROMARONARKOARGO" - "ARGPARCQAQ6RAQ2YAQTEZAAA"); + "ARGPARCQAQ6RAQ2YAQTEZAAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 160, 320, 320, 0xff652e89, 1024, "ytABA7gCCbICD60CFKkCF6cCGqMCHqACIZ0CJJoCJpgCKZUCFgIUkgIWBBWPAhYHFI4CFQoUjAIV" @@ -6663,7 +6808,7 @@ static void test_draw_geometry(void) "qAIYKwP7ARgnBf0BGCMI/QEZHgz+ARgbD/8BGBcSgAIYEhaAAhoNGIICGggcgwIaBB+DAjyEAjyF" "AjqGAjmIAjiIAiECFIkCFAIIBBSKAhQNFIsCFAwUjAIUCxSNAhQKFI4CFAkUjwIUBxWQAhQGFZEC" "FAUVkQIUBRWRAhQFFZECFQMVkwIUAxWTAhQDFZMCFAIVlAIVARWVAiqVAimWAimWAiiYAiaZAiaZ" - "AiWaAiScAiKdAiGeAh+hAhyjAhmuAg3GxgEA"); + "AiWaAiScAiKdAiGeAh+hAhyjAhmuAg3GxgEA", d3d11); ok(match, "Figure does not match.\n");
ID2D1SolidColorBrush_Release(brush); @@ -6676,7 +6821,7 @@ static void test_draw_geometry(void) DestroyWindow(window); }
-static void test_fill_geometry(void) +static void test_fill_geometry(BOOL d3d11) { ID2D1TransformedGeometry *transformed_geometry[4]; ID2D1RectangleGeometry *rect_geometry[2]; @@ -6699,7 +6844,7 @@ static void test_fill_geometry(void) HRESULT hr; BOOL match;
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_GetFactory(rt, &factory); @@ -6735,28 +6880,28 @@ static void test_fill_geometry(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 0, "qDJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA", d3d11); ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 8, "yjIMjwEWhwEcggEgfiR6KHYscy5xMG40azZpOGc6ZTxjPmI+YUBfQl1EXERbRlpGWUhYSFdKVkpV" "TFRMVExTTlJOUk5STlJOUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUU5STlJOUk5STlNMVExUTFVK" - "VkpXSFhIWUZaRltEXERdQl9AYT5iPmM8ZTpnOGk2azRuMHEucyx2KHokfiCCARyHARaPAQzKMgAA"); + "VkpXSFhIWUZaRltEXERdQl9AYT5iPmM8ZTpnOGk2azRuMHEucyx2KHokfiCCARyHARaPAQzKMgAA", d3d11); ok(match, "Figure does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -6793,40 +6938,40 @@ static void test_fill_geometry(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 0, "szI6YURZSlROUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUU5USllEYTqzMgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUU5USllEYTqzMgAA", d3d11); ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 2, "tjI0aDxhQlxGWEpVTFNOUk5RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFOUk5TTFVKWEZcQmA+ZzS2MgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFOUk5TTFVKWEZcQmA+ZzS2MgAA", d3d11); ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 0, "sDJAWkxSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJMWkCwMgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJMWkCwMgAA", d3d11); ok(match, "Figure does not match.\n");
ID2D1RenderTarget_BeginDraw(rt); @@ -6863,40 +7008,40 @@ static void test_fill_geometry(void) hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL); ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
- match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 10, "yjIMjwEWhwEcggEgfiR6KHYscy5xMG40azZpOGc6ZTxjPmI+YUBfQl1EXERbRlpGWUhYSFdKVkpV" "TFRMVExTTlJOUk5STlJOUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUU5STlJOUk5STlNMVExUTFVK" - "VkpXSFhIWUZaRltEXERdQl9AYT5iPmM8ZTpnOGk2azRuMHEucyx2KHokfiCCARyHARaPAQzKMgAA"); + "VkpXSFhIWUZaRltEXERdQl9AYT5iPmM8ZTpnOGk2azRuMHEucyx2KHokfiCCARyHARaPAQzKMgAA", d3d11); ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 10, "uTIucDJsNmk4ZzplPGM+YUBgQF9CXkJdRFxEW0ZaRllIWEhXSlZKVkpWSlVMVExUTFRMU05STlJO" "Uk5STlJOUk9QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFPUU5STlJOUk5STlJOU0xU" - "TFRMVExVSlZKVkpWSldIWEhZRlpGW0RcRF1CXkJfQGBAYT5jPGU6ZzhpNmwycC65MgAA"); + "TFRMVExVSlZKVkpWSldIWEhZRlpGW0RcRF1CXkJfQGBAYT5jPGU6ZzhpNmwycC65MgAA", d3d11); ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 10, "vzIiczhhRldMUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUkxXRmA6cSS+MgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUkxXRmA6cSS+MgAA", d3d11); ok(match, "Figure does not match.\n");
hr = ID2D1Factory_CreatePathGeometry(factory, &geometry); @@ -6982,47 +7127,47 @@ static void test_fill_geometry(void) ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr); ID2D1PathGeometry_Release(geometry);
- match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n");
- match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n");
match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 0, "7zMCngECnQEEnAEEmwEGmgEGmQEImAEIlwEKlgEKlQEMlAEMkwEOkgEOkQEQkAEQjwESjgESjQEU" "jAEUiwEWigEWiQEYiAEYhwEahgEahQEchAEcgwEeggEegQEggAEgfyJ+In0kfCR7JnomeSh4KHcq" "dip1LHQscy5yLnEwcDBvMm4ybTRsNGs2ajZpOGg4ZzpmOmU8ZDxjPmI+YUBgQF9CXkJdRFxEW0Za" - "RllIWEhXSlZKVUxUTFNOUk5RUKgy"); + "RllIWEhXSlZKVUxUTFNOUk5RUKgy", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 0, "qDJQUU5STlNMVExVSlZKV0hYSFlGWkZbRFxEXUJeQl9AYEBhPmI+YzxkPGU6ZjpnOGg4aTZqNms0" "bDRtMm4ybzBwMHEuci5zLHQsdSp2KncoeCh5JnomeyR8JH0ifiJ/IIABIIEBHoIBHoMBHIQBHIUB" "GoYBGocBGIgBGIkBFooBFosBFIwBFI0BEo4BEo8BEJABEJEBDpIBDpMBDJQBDJUBCpYBCpcBCJgB" - "CJkBBpoBBpsBBJwBBJ0BAp4BAu8z"); + "CJkBBpoBBpsBBJwBBJ0BAp4BAu8z", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 0, "7zMCngECnQEEnAEEmwEGmgEGmQEImAEIlwEKlgEKlQEMlAEMkwEOkgEOkQEQkAEQjwESjgESjQEU" "jAEUiwEWigEWiQEYiAEYhwEahgEahQEchAEcgwEeggEegQEggAEgfyJ+In0kfCR7JnomeSh4KHcq" "dip1LHQscy5yLnEwcDBvMm4ybTRsNGs2ajZpOGg4ZzpmOmU8ZDxjPmI+YUBgQF9CXkJdRFxEW0Za" - "RllIWEhXSlZKVUxUTFNOUk5RUKgy"); + "RllIWEhXSlZKVUxUTFNOUk5RUKgy", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 0, "qDJQUU5STlNMVExVSlZKV0hYSFlGWkZbRFxEXUJeQl9AYEBhPmI+YzxkPGU6ZjpnOGg4aTZqNms0" "bDRtMm4ybzBwMHEuci5zLHQsdSp2KncoeCh5JnomeyR8JH0ifiJ/IIABIIEBHoIBHoMBHIQBHIUB" "GoYBGocBGIgBGIkBFooBFosBFIwBFI0BEo4BEo8BEJABEJEBDpIBDpMBDJQBDJUBCpYBCpcBCJgB" - "CJkBBpoBBpsBBJwBBJ0BAp4BAu8z"); + "CJkBBpoBBpsBBJwBBJ0BAp4BAu8z", d3d11); ok(match, "Figure does not match.\n");
set_rect(&rect, 20.0f, 80.0f, 60.0f, 240.0f); @@ -7073,13 +7218,13 @@ static void test_fill_geometry(void) match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "qDJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 0, 320, 160, 0xff652e89, 32, "sIMBA7cCDK8CFKYCHZ4CJJYCLY4CNYUCPv0BRvQBT+wBV+MBYNsBaNIBccoBecEBgQG6AYkBsQGS" "AakBmgGgAaMBmAGrAY8BtAGHAbwBfsUBfcYBfcYBfcUBfsUBfcYBfcYBfcYBfcYBfcUBfr0BhgG0" "AY8BrAGXAaMBoAGbAagBkgGwAYsBuAGCAcEBeskBcdIBadoBYOMBWOsBT/QBR/wBPoUCNowCLpUC" - "Jp0CHaYCFa4CDLcCBK+DAQAA"); + "Jp0CHaYCFa4CDLcCBK+DAQAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 0, 160, 160, 320, 0xff652e89, 32, "+D0BngEDnQEDnAEEmwEGmgEGmQEHmAEJlwEJlgELlAEMkwENkwEOkQEPkAEQkAERjgESjQETjQEU" @@ -7090,7 +7235,7 @@ static void test_fill_geometry(void) "Yj5jPWI/YT9gQF9CXkJdRFtFW0VaR1hIV0lXSlVLVExUTVJOUVBQUE9RTlNNU0xUS1ZKVklXSFlG" "WkZaRVxDXUNeQV9AYEBhPmI9Yz1kO2U6ZjpnOGg3ajVrNWs0bTJuMm4xcC9xL3Eucyx0LHUqdil3" "KXgneSZ6JXwkfCN9In8hfyCBAR6CAR6CAR2EARuFARuFARqHARiIAReJAReKARWLARSNARONARKO" - "ARGQARCQAQ+RAQ6TAQ2TAQyUAQuWAQqWAQmYAQeZAQaaAQabAQScAQOdAQOeAQH4PQAA"); + "ARGQARCQAQ+RAQ6TAQ2TAQyUAQuWAQqWAQmYAQeZAQaaAQabAQScAQOdAQOeAQH4PQAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 160, 320, 320, 0xff652e89, 32, "sXkBvgIDvAIEugIHuAIJtgILswINsgIPrwISrQITrAIVqQIYpwIapQIbowIeoQIgngIjnAIkmwIm" @@ -7105,7 +7250,7 @@ static void test_fill_geometry(void) "Aa0BkgGvAY8BsQGOAbMBjAG1AYkBuAGHAbkBhQG8AYMBvgGBAcABfsIBfcQBe8YBeMgBd8oBdM0B" "cs8BcNABbtMBbNUBatcBZ9kBZtsBY94BYd8BYOEBXeQBW+YBWOgBV+oBVewBUu8BUPABT/IBTPUB" "SvYBSPkBRvsBRP0BQf8BQIECPoMCO4YCOYcCN4oCNYwCM40CMZACL5ICLZQCKpYCKZgCJpsCJJ0C" - "Ip4CIKECHqMCHKQCGqcCGKkCFawCE60CEq8CD7ICDbMCDLUCCbgCB7oCBLwCA74CAbF5"); + "Ip4CIKECHqMCHKQCGqcCGKkCFawCE60CEq8CD7ICDbMCDLUCCbgCB7oCBLwCA74CAbF5", d3d11); ok(match, "Figure does not match.\n");
hr = ID2D1Factory_CreatePathGeometry(factory, &geometry); @@ -7223,71 +7368,71 @@ static void test_fill_geometry(void) match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "qDJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 0, 160, 160, 0xff652e89, 0, "qDJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA", d3d11); match = compare_figure(surface, 320, 0, 160, 160, 0xff652e89, 0, "qDJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 0, 160, 160, 0xff652e89, 0, "qDJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ" - "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA"); + "UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCoMgAA", d3d11); ok(match, "Figure does not match.\n");
match = compare_figure(surface, 0, 160, 160, 160, 0xff652e89, 16, "qDICTAJQB0IHUQs4C1IRLBFSGxgbUk5STlNMVExUTFRMVExVSlZKVkpWSlZKVkpXSFhIWEhYSFhI" "WEhYSFhIWEhYSFlGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZa" "RllIWEhYSFhIWEhYSFhIWEhYSFhIV0pWSlZKVkpWSlZKVUxUTFRMVExUTFNOUk5SGxgbUhEsEVIL" - "OAtRB0IHUAJMAqgy"); + "OAtRB0IHUAJMAqgy", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 160, 160, 160, 0xff652e89, 16, "qDIBSwRQAkMKUQQ5EVIIKxtTDRkmVExUTFRMVEtVS1VLVkpWSlZKVklXSVdJV0lXSVhIWEhYSFhI" "WEhYSFhIWEhYSFhIWUdZR1lHWUdZR1lHWUdZR1lHWUdZSFhIWUdZR1lHWUdZR1lHWUdZR1lHWUdZ" "SFhIWEhYSFhIWEhYSFhIWEhYSFhJV0lXSVdJV0lWSlZKVkpWS1VLVUtUTFRMVExUJhkNUxsrCFIR" - "OQRRCkMCUARLAagy"); + "OQRRCkMCUARLAagy", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 160, 160, 160, 0xff652e89, 16, "qDIESwFRCkMCUhE5BFIbKwhTJhkNVExUTFRMVUtVS1VLVUpWSlZKV0lXSVdJV0lXSVdIWEhYSFhI" "WEhYSFhIWEhYSFhIWEdZR1lHWUdZR1lHWUdZR1lHWUdYSFhIWEdZR1lHWUdZR1lHWUdZR1lHWUdY" "SFhIWEhYSFhIWEhYSFhIWEhYSFdJV0lXSVdJV0lXSlZKVkpVS1VLVUtVTFRMVExUDRkmUwgrG1IE" - "ORFSAkMKUQFLBKgy"); + "ORFSAkMKUQFLBKgy", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 160, 160, 160, 0xff652e89, 16, "qDICTAJQB0IHUQs4C1IRLBFSGxgbUk5STlNMVExUTFRMVExVSlZKVkpWSlZKVkpXSFhIWEhYSFhI" "WEhYSFhIWEhYSFlGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZa" "RllIWEhYSFhIWEhYSFhIWEhYSFhIV0pWSlZKVkpWSlZKVUxUTFRMVExUTFNOUk5SGxgbUhEsEVIL" - "OAtRB0IHUAJMAqgy"); + "OAtRB0IHUAJMAqgy", d3d11); ok(match, "Figure does not match.\n");
match = compare_figure(surface, 0, 320, 160, 160, 0xff652e89, 16, "pCwYfixuOGNCWUxSUFBQT1JOUk5STlJOUk1UTFRMVExUTFRLVkpWSlZKVkpWSlZJWEhYSFhIWEhY" "SFhIWEhYSFhIWEdaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpG" "WkdYSFhIWEhYSFhIWEhYSFhIWEhYSVZKVkpWSlZKVkpWS1RMVExUTFRMVE1STlJOUk5STlJPUFBQ" - "UkxZQmM4bix+GKQs"); + "UkxZQmM4bix+GKQs", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 320, 160, 160, 0xff652e89, 16, "liwZgQErcTllQ1xLVFBQUU9STlJNVExUTFRMVExVS1VLVUpWSlZKVkpXSVdJV0lXSVdIWEhYSFhI" "WEhYSFhIWEhYSFhIWEdZR1lHWUdZR1lHWUdZR1lHWUdZR1hIWEdZR1lHWUdZR1lHWUdZR1lHWUdZ" "R1hIWEhYSFhIWEhYSFhIWEhYSFhIV0lXSVdJV0lXSlZKVkpWSlVLVUtVTFRMVExUTFRNUk5ST1FQ" - "UFRLXENlOXErgQEZliwA"); + "UFRLXENlOXErgQEZliwA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 320, 320, 160, 160, 0xff652e89, 16, "sSwZeytrOV9DVktRUE9RTlJOUk1UTFRMVExUS1VLVUtVS1ZKVkpWSVdJV0lXSVdJV0lYSFhIWEhY" "SFhIWEhYSFhIWEhYSFlHWUdZR1lHWUdZR1lHWUdZR1lIWEhYSFlHWUdZR1lHWUdZR1lHWUdZR1lI" "WEhYSFhIWEhYSFhIWEhYSFhIWElXSVdJV0lXSVdJVkpWSlZLVUtVS1VLVExUTFRMVE1STlJOUU9Q" - "UUtWQ185ayt7GbEs"); + "UUtWQ185ayt7GbEs", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 480, 320, 160, 160, 0xff652e89, 16, "pCwYfixuOGNCWUxSUFBQT1JOUk5STlJOUk1UTFRMVExUTFRLVkpWSlZKVkpWSlZJWEhYSFhIWEhY" "SFhIWEhYSFhIWEdaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpGWkZaRlpG" "WkdYSFhIWEhYSFhIWEhYSFhIWEhYSVZKVkpWSlZKVkpWS1RMVExUTFRMVE1STlJOUk5STlJPUFBQ" - "UkxZQmM4bix+GKQs"); + "UkxZQmM4bix+GKQs", d3d11); ok(match, "Figure does not match.\n");
hr = ID2D1Factory_CreatePathGeometry(factory, &geometry); @@ -7364,12 +7509,12 @@ static void test_fill_geometry(void) "hwEZhwEZhwEZiAEYiAEYiAEYiAEYiAEXiQEXiQEXiQEXigEWigEWigEWigEWigEWigEWigEWiwEU" "jAEUjAEUjAEUjQESjgESjwEQkAEQkQEOkgENlAEMlQEKlgEKlwEImAEImQEHmQEGmwEFmwEEnQED" "nQECngECngECnwEBnwEBnwEBnwEBnwEBnwECnQEDnQEDnQEEmwEFmgEHmQEHlwELkQERjAEXhgEd" - "hAEfgwEchgEXjwEMqTEA"); + "hAEfgwEchgEXjwEMqTEA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 0, 320, 160, 0xff652e89, 32, "h58BBrYCDq0CF6QCIJwCKJMCMIwCNoUCPf8BQ/kBSPQBTu4BTe8BTPEBSfUBRvgBQf0BPYECOYUC" "NIoCMI4CK+UBAS0W/AEHIwiPAgsaBZcCEAwIngIepAIaqAIWrAITsAIRsgIPtQIMtwILugIHwAIB" - "ypwB"); + "ypwB", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 0, 160, 160, 320, 0xff652e89, 32, "wW4DnAEEmwEFmgEHmAEIlwEKlQELlAEMkwEOkQEPkAEQkAERjgESjgETjAEUjAEUiwEWigEWiQEX" @@ -7380,7 +7525,7 @@ static void test_fill_geometry(void) "lwEKlwEJmAEImQEHmgEGmwEFnAEEnQEEnQEDnQEDngECngEDngECngECnwECngECnwECngECngED" "ngECEgGLAQMQAosBAw4EjAEDCwaMAQQJBo0BBQYIjQEHAgqNARKOARKPARCQARCQARCQAQ+RAQ6S" "AQ6SAQ2TAQ2SAQ2TAQ2TAQyTAQyUAQyUAQuUAQuVAQuUAQuVAQqWAQmWAQqWAQmXAQiXAQiYAQeY" - "AQeZAQWbAQSDZwAA"); + "AQeZAQWbAQSDZwAA", d3d11); ok(match, "Figure does not match.\n"); match = compare_figure(surface, 160, 160, 320, 320, 0xff652e89, 32, "g90BBLkCCLYCC7ICDrACEa0CFKoCF6cCGqQCHKMCHqECIJ8CIpwCJJsCJpkCKJcCKZYCK5QCLZIC" @@ -7391,7 +7536,7 @@ static void test_fill_geometry(void) "Fa0CE68CEbECD7MCDrQCDLYCCrgCCbkCB7sCBrsCBbwCBbwCBL0CBL0CBL0CBL0CA70CBL0CBL0C" "BLwCBSUBlgIFIQSXAgYbCJcCBxcKmQIIEQ6ZAgoMEJoCDQUTnAIknAIjnQIingIhnwIgoAIfoQIe" "ogIdowIcpAIbpQIapQIZpgIZpgIZpwIYpwIXqAIXqAIXqQIVqgIVqgIUqwITrQISrQIRrgIQsAIO" - "sQIMswILtQIIhs4B"); + "sQIMswILtQIIhs4B", d3d11); ok(match, "Figure does not match.\n");
hr = ID2D1Factory_CreatePathGeometry(factory, &geometry); @@ -7463,13 +7608,13 @@ static void test_fill_geometry(void) ID2D1TransformedGeometry_Release(transformed_geometry[1]); ID2D1TransformedGeometry_Release(transformed_geometry[0]);
- match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "gMgB"); + match = compare_figure(surface, 0, 0, 160, 160, 0xff652e89, 0, "gMgB", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 0, 320, 160, 0xff652e89, 0, "gJAD"); + match = compare_figure(surface, 160, 0, 320, 160, 0xff652e89, 0, "gJAD", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 0, 160, 160, 320, 0xff652e89, 0, "gJAD"); + match = compare_figure(surface, 0, 160, 160, 320, 0xff652e89, 0, "gJAD", d3d11); ok(match, "Figure does not match.\n"); - match = compare_figure(surface, 160, 160, 320, 320, 0xff652e89, 0, "gKAG"); + match = compare_figure(surface, 160, 160, 320, 320, 0xff652e89, 0, "gKAG", d3d11); ok(match, "Figure does not match.\n");
ID2D1SolidColorBrush_Release(brush); @@ -7482,7 +7627,7 @@ static void test_fill_geometry(void) DestroyWindow(window); }
-static void test_gdi_interop(void) +static void test_gdi_interop(BOOL d3d11) { ID2D1GdiInteropRenderTarget *interop; D2D1_RENDER_TARGET_PROPERTIES desc; @@ -7498,7 +7643,7 @@ static void test_gdi_interop(void) RECT rect; HDC dc;
- if (!(device = create_device())) + if (!(device = create_device(d3d11))) { skip("Failed to create device, skipping tests.\n"); return; @@ -7616,7 +7761,7 @@ todo_wine IDXGIDevice_Release(device); }
-static void test_layer(void) +static void test_layer(BOOL d3d11) { ID2D1Factory *factory, *layer_factory; IDXGISwapChain *swapchain; @@ -7629,7 +7774,7 @@ static void test_layer(void) HWND window; HRESULT hr;
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_GetFactory(rt, &factory); @@ -7664,7 +7809,7 @@ static void test_layer(void) DestroyWindow(window); }
-static void test_bezier_intersect(void) +static void test_bezier_intersect(BOOL d3d11) { D2D1_POINT_2F point = {0.0f, 0.0f}; ID2D1SolidColorBrush *brush; @@ -7681,7 +7826,7 @@ static void test_bezier_intersect(void) HRESULT hr; BOOL match;
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
ID2D1RenderTarget_GetFactory(rt, &factory); @@ -7750,7 +7895,7 @@ static void test_bezier_intersect(void) "In5/ISJ+fiIjfX0jJHx8JCV7eyUmenomJ3l5Jyh4eCgpd3cpK3V2Kix0dSstc3QsLnJzLS9xci4w" "cHAwMm5vMTNtbjI0bG0zNWtrNTdpajY4aGk3OmZnOTtlZjo8ZGQ8PmJjPT9hYj5BX2BAQl5eQkRc" "XUNGWltFR1lZR0lXWEhLVVZKTVNUTE9RUk5RT1BQUk5OUlRMTFRWSkpWWUdIWFtFRVteQkNdYEBA" - "YGI+PmJlOztlaDg4aGs1NWtuMjJuci4vcXUrK3V6JiZ6fiIifoMBHR2DAYsBFRWLAZUBCwuVAQAA"); + "YGI+PmJlOztlaDg4aGs1NWtuMjJuci4vcXUrK3V6JiZ6fiIifoMBHR2DAYsBFRWLAZUBCwuVAQAA", d3d11); ok(match, "Figure does not match.\n");
hr = ID2D1Factory_CreatePathGeometry(factory, &geometry); @@ -7793,7 +7938,7 @@ static void test_bezier_intersect(void) "AaoBlwGqAZcBqwGWAasBlgGsAZUBrQGVAawBlQGtAZQBrgGUAa0BlAGuAZMBrwGTAa8BkgGwAZEB" "sQGRAbEBkAGyAZABsgGPAbMBjwG0AY4BtAGNAbUBjQG2AYwBtgGLAbgBigG4AYoBuQGJAboBhwG7" "AYcBvAGGAb0BhQG+AYQBvwGDAcABggHBAYIBwgGAAcMBf8QBfsYBfMgBe8gBesoBeMwBd80BddAB" - "c9EBcdQBb9YBbNkBatsBaN0BZeEBYuQBX+gBW+0BVvEBUvUBTvwBR4QCQIoCOZgCK6oCGQIA"); + "c9EBcdQBb9YBbNkBatsBaN0BZeEBYuQBX+gBW+0BVvEBUvUBTvwBR4QCQIoCOZgCK6oCGQIA", d3d11); ok(match, "Figure does not match.\n");
ID2D1SolidColorBrush_Release(brush); @@ -7806,7 +7951,7 @@ static void test_bezier_intersect(void) DestroyWindow(window); }
-static void test_create_device(void) +static void test_create_device(BOOL d3d11) { D2D1_CREATION_PROPERTIES properties = {0}; IDXGIDevice *d3d_device; @@ -7817,7 +7962,7 @@ static void test_create_device(void) ULONG refcount; HRESULT hr;
- if (!(d3d_device = create_device())) + if (!(d3d_device = create_device(d3d11))) { skip("Failed to create device, skipping tests.\n"); return; @@ -8049,7 +8194,7 @@ static IDXGISurface *create_surface(IDXGIDevice *dxgi_device, DXGI_FORMAT format return surface; }
-static void test_bitmap_surface(void) +static void test_bitmap_surface(BOOL d3d11) { static const struct bitmap_format_test { @@ -8099,7 +8244,7 @@ static void test_bitmap_surface(void) IWICBitmap *wic_bitmap; IWICImagingFactory *wic_factory;
- if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt)) + if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt, d3d11)) return;
if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) @@ -8297,7 +8442,7 @@ static void test_bitmap_surface(void) IDXGIDevice_Release(d3d_device); }
-static void test_device_context(void) +static void test_device_context(BOOL d3d11) { D2D1_HWND_RENDER_TARGET_PROPERTIES hwnd_rt_desc; D2D1_RENDER_TARGET_PROPERTIES rt_desc; @@ -8322,7 +8467,7 @@ static void test_device_context(void) IWICBitmap *wic_bitmap; IWICImagingFactory *wic_factory;
- if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt)) + if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt, d3d11)) return;
if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory))) @@ -8613,7 +8758,7 @@ static void test_skew_matrix(void) } }
-static ID2D1DeviceContext *create_device_context(ID2D1Factory1 *factory, IDXGIDevice *dxgi_device) +static ID2D1DeviceContext *create_device_context(ID2D1Factory1 *factory, IDXGIDevice *dxgi_device, BOOL d3d11) { ID2D1DeviceContext *device_context; ID2D1Device *device; @@ -8623,13 +8768,14 @@ static ID2D1DeviceContext *create_device_context(ID2D1Factory1 *factory, IDXGIDe ok(SUCCEEDED(hr), "Failed to get ID2D1Device, hr %#x.\n", hr);
hr = ID2D1Device_CreateDeviceContext(device, D2D1_DEVICE_CONTEXT_OPTIONS_NONE, &device_context); - ok(SUCCEEDED(hr), "Failed to create device context, hr %#x.\n", hr); + todo_wine_if(d3d11) ok(SUCCEEDED(hr), "Failed to create device context, hr %#x.\n", hr); ID2D1Device_Release(device);
+ if (FAILED(hr)) return NULL; return device_context; }
-static void test_command_list(void) +static void test_command_list(BOOL d3d11) { static const DWORD bitmap_data[] = { @@ -8663,7 +8809,7 @@ static void test_command_list(void) ULONG refcount; HRESULT hr;
- if (!(d3d_device = create_device())) + if (!(d3d_device = create_device(d3d11))) { skip("Failed to create device, skipping tests.\n"); return; @@ -8676,7 +8822,13 @@ static void test_command_list(void) return; }
- device_context = create_device_context(factory, d3d_device); + device_context = create_device_context(factory, d3d_device, d3d11); + if (!device_context && d3d11) + { + todo_wine win_skip("Skipping D3D11 tests.\n"); + IDXGIDevice_Release(d3d_device); + return; + } ok(device_context != NULL, "Failed to create device context.\n");
hr = ID2D1DeviceContext_CreateCommandList(device_context, &command_list); @@ -8862,7 +9014,7 @@ todo_wine ID2D1CommandList_Release(command_list);
/* List created with different context. */ - device_context2 = create_device_context(factory, d3d_device); + device_context2 = create_device_context(factory, d3d_device, d3d11); ok(device_context2 != NULL, "Failed to create device context.\n");
hr = ID2D1DeviceContext_CreateCommandList(device_context, &command_list); @@ -8999,7 +9151,7 @@ static void test_max_bitmap_size(void) ID2D1Factory_Release(factory); }
-static void test_dpi(void) +static void test_dpi(BOOL d3d11) { D2D1_BITMAP_PROPERTIES1 bitmap_desc; ID2D1DeviceContext *device_context; @@ -9034,7 +9186,7 @@ static void test_dpi(void) static const float dc_dpi_x = 120.0f, dc_dpi_y = 144.0f; unsigned int i;
- if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt)) + if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt, d3d11)) return; ID2D1RenderTarget_Release(rt);
@@ -9045,7 +9197,7 @@ static void test_dpi(void) return; }
- device_context = create_device_context(factory, d3d_device); + device_context = create_device_context(factory, d3d_device, d3d11); ok(!!device_context, "Failed to create device context.\n");
ID2D1DeviceContext_GetDpi(device_context, &dpi_x, &dpi_y); @@ -9218,7 +9370,7 @@ static void test_dpi(void) DestroyWindow(window); }
-static void test_wic_bitmap_format(void) +static void test_wic_bitmap_format(BOOL d3d11) { IWICImagingFactory *wic_factory; IDXGISwapChain *swapchain; @@ -9244,7 +9396,7 @@ static void test_wic_bitmap_format(void) {&GUID_WICPixelFormat32bppBGR, {DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE}}, };
- if (!init_test(&device, &window, &swapchain, &surface, &rt)) + if (!init_test(&device, &window, &swapchain, &surface, &rt, d3d11)) return;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); @@ -9373,42 +9525,42 @@ START_TEST(d2d1) use_mt = FALSE; }
- queue_test(test_clip); - queue_test(test_state_block); - queue_test(test_color_brush); - queue_test(test_bitmap_brush); - queue_test(test_linear_brush); - queue_test(test_radial_brush); - queue_test(test_path_geometry); + queue_d3d1x_test(test_clip); + queue_d3d1x_test(test_state_block); + queue_d3d1x_test(test_color_brush); + queue_d3d1x_test(test_bitmap_brush); + queue_d3d1x_test(test_linear_brush); + queue_d3d1x_test(test_radial_brush); + queue_d3d1x_test(test_path_geometry); queue_test(test_rectangle_geometry); queue_test(test_rounded_rectangle_geometry); - queue_test(test_bitmap_formats); - queue_test(test_alpha_mode); - queue_test(test_shared_bitmap); - queue_test(test_bitmap_updates); - queue_test(test_opacity_brush); - queue_test(test_create_target); - queue_test(test_draw_text_layout); - queue_test(test_dc_target); - queue_test(test_hwnd_target); - queue_test(test_bitmap_target); + queue_d3d1x_test(test_bitmap_formats); + queue_d3d1x_test(test_alpha_mode); + queue_d3d1x_test(test_shared_bitmap); + queue_d3d1x_test(test_bitmap_updates); + queue_d3d1x_test(test_opacity_brush); + queue_d3d1x_test(test_create_target); + queue_d3d1x_test(test_draw_text_layout); + queue_d3d1x_test(test_dc_target); + queue_d3d1x_test(test_hwnd_target); + queue_d3d1x_test(test_bitmap_target); queue_test(test_desktop_dpi); queue_test(test_stroke_style); - queue_test(test_gradient); - queue_test(test_draw_geometry); - queue_test(test_fill_geometry); - queue_test(test_gdi_interop); - queue_test(test_layer); - queue_test(test_bezier_intersect); - queue_test(test_create_device); - queue_test(test_bitmap_surface); - queue_test(test_device_context); + queue_d3d1x_test(test_gradient); + queue_d3d1x_test(test_draw_geometry); + queue_d3d1x_test(test_fill_geometry); + queue_d3d1x_test(test_gdi_interop); + queue_d3d1x_test(test_layer); + queue_d3d1x_test(test_bezier_intersect); + queue_d3d1x_test(test_create_device); + queue_d3d1x_test(test_bitmap_surface); + queue_d3d1x_test(test_device_context); queue_test(test_invert_matrix); queue_test(test_skew_matrix); - queue_test(test_command_list); + queue_d3d1x_test(test_command_list); queue_test(test_max_bitmap_size); - queue_test(test_dpi); - queue_test(test_wic_bitmap_format); + queue_d3d1x_test(test_dpi); + queue_d3d1x_test(test_wic_bitmap_format); queue_test(test_math);
run_queued_tests();
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=83858
Your paranoid android.
=== w2008s64 (32 bit report) ===
d2d1: d2d1: Timeout
=== wvistau64 (64 bit report) ===
d2d1: d2d1: Timeout
=== w2008s64 (64 bit report) ===
d2d1: d2d1: Timeout
On Thu, 7 Jan 2021 at 20:45, Rémi Bernon rbernon@codeweavers.com wrote:
@@ -36,13 +37,17 @@ static BOOL use_mt = TRUE; static struct test_entry { void (*test)(void);
- void (*d3d1x_test)(BOOL d3d11);
- BOOL d3d11;
} *mt_tests; size_t mt_tests_size, mt_test_count;
The function pointers above should probably be in a union. For comparison, see struct test_entry and the functions operating on it in the d3d11 tests.
struct resource_readback {
- ID3D10Resource *resource;
- D3D10_MAPPED_TEXTURE2D map_desc;
- ID3D10Resource *d3d10_resource;
- ID3D11Resource *d3d11_resource;
- D3D10_MAPPED_TEXTURE2D d3d10_map_desc;
- D3D11_MAPPED_SUBRESOURCE d3d11_map_desc; unsigned int pitch, width, height; void *data;
};
As in patch 3/4 of this series, I think the "d3d10_map_desc" and "d3d11_map_desc" fields above should be superfluous. The "d3d10_resource" and "d3d11_resource" fields should probably either be in a union, or simply stored as an IUnknown pointer.
@@ -104,7 +109,29 @@ static void queue_test(void (*test)(void)) mt_tests_size = max(16, mt_tests_size * 2); mt_tests = heap_realloc(mt_tests, mt_tests_size * sizeof(*mt_tests)); }
- mt_tests[mt_test_count++].test = test;
- mt_tests[mt_test_count].test = test;
- mt_tests[mt_test_count++].d3d1x_test = NULL;
+}
+static void queue_d3d1x_test(void (*test)(BOOL d3d11)) +{
- if (mt_test_count >= mt_tests_size)
- {
mt_tests_size = max(16, mt_tests_size * 2);
mt_tests = heap_realloc(mt_tests, mt_tests_size * sizeof(*mt_tests));
- }
- mt_tests[mt_test_count].test = NULL;
- mt_tests[mt_test_count].d3d1x_test = test;
- mt_tests[mt_test_count++].d3d11 = FALSE;
- if (mt_test_count >= mt_tests_size)
- {
mt_tests_size = max(16, mt_tests_size * 2);
mt_tests = heap_realloc(mt_tests, mt_tests_size * sizeof(*mt_tests));
- }
- mt_tests[mt_test_count].test = NULL;
- mt_tests[mt_test_count].d3d1x_test = test;
- mt_tests[mt_test_count++].d3d11 = TRUE;
}
static DWORD WINAPI thread_func(void *ctx) @@ -115,7 +142,10 @@ static DWORD WINAPI thread_func(void *ctx) { j = *i; if (InterlockedCompareExchange(i, j + 1, j) == j)
mt_tests[j].test();
{
if (mt_tests[j].test) mt_tests[j].test();
else if (mt_tests[j].d3d1x_test) mt_tests[j].d3d1x_test(mt_tests[j].d3d11);
}
}
return 0;
@@ -132,7 +162,8 @@ static void run_queued_tests(void) { for (i = 0; i < mt_test_count; ++i) {
mt_tests[i].test();
if (mt_tests[i].test) mt_tests[i].test();
else if (mt_tests[i].d3d1x_test) mt_tests[i].d3d1x_test(mt_tests[i].d3d11); } return;
The code above is not the worst thing in the world, but I think the queue_test_entry()/run_mt_test() solution in the d3d11 tests is nicer.
Also, if the idea is that we'll want to run most tests on both d3d10 and d3d11, queue_d3d1x_test() should probably be the default (i.e., queue_test()), and we should introduce e.g. queue_d3d10_test() for tests that should only be run with d3d10.
-static void release_resource_readback(struct resource_readback *rb) +static void get_surface_readback(IDXGISurface *surface, struct resource_readback *rb, BOOL d3d11) {
- ID3D10Texture2D_Unmap((ID3D10Texture2D *)rb->resource, 0);
- ID3D10Resource_Release(rb->resource);
- if (d3d11) get_d3d11_surface_readback(surface, rb);
- else get_d3d10_surface_readback(surface, rb);
+}
Passing the "d3d11" variable around everywhere is a little ugly. I think we can simply QueryInterface() for the ID3D11Resource and ID3D10Resource interfaces here and use the one that succeeds, without necessarily caring about how the device was created. However, if we were to pass something around here, it should probably be a d2d1_test_context structure.
On 1/11/21 6:04 PM, Henri Verbeet wrote:
-static void release_resource_readback(struct resource_readback *rb) +static void get_surface_readback(IDXGISurface *surface, struct resource_readback *rb, BOOL d3d11) {
- ID3D10Texture2D_Unmap((ID3D10Texture2D *)rb->resource, 0);
- ID3D10Resource_Release(rb->resource);
- if (d3d11) get_d3d11_surface_readback(surface, rb);
- else get_d3d10_surface_readback(surface, rb);
+}
Passing the "d3d11" variable around everywhere is a little ugly. I think we can simply QueryInterface() for the ID3D11Resource and ID3D10Resource interfaces here and use the one that succeeds, without necessarily caring about how the device was created. However, if we were to pass something around here, it should probably be a d2d1_test_context structure.
I didn't really investigate but I had an issue while writing the first version of the patches, where on Windows you can query the D3D10 interface but if it's used to read the surface nothing is read. Probably because of the D3D10 / D3D11 context state swap mechanism that disables the other interface methods while still allowing to be called.
In the new version I just used the test context d3d11 flag to dispatch to the relevant interface version, as it was less rewrite to just pass it there.
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=83855
Your paranoid android.
=== w2008s64 (32 bit report) ===
d2d1: d2d1: Timeout
=== wvistau64 (64 bit report) ===
d2d1: d2d1: Timeout
=== w2008s64 (64 bit report) ===
d2d1: d2d1: Timeout
On 1/7/21 9:23 PM, Marvin wrote:
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=83855
Your paranoid android.
=== w2008s64 (32 bit report) ===
d2d1: d2d1: Timeout
=== wvistau64 (64 bit report) ===
d2d1: d2d1: Timeout
=== w2008s64 (64 bit report) ===
d2d1: d2d1: Timeout
Looks like these already time out with a no-op patch:
https://testbot.winehq.org/JobDetails.pl?Key=83859
And it's been a while since they do:
http://test.winehq.org/data/tests/d2d1:d2d1.html
On Thu, 7 Jan 2021, Rémi Bernon wrote: [...]
=== w2008s64 (32 bit report) ===
d2d1: d2d1: Timeout
=== wvistau64 (64 bit report) ===
d2d1: d2d1: Timeout
=== w2008s64 (64 bit report) ===
d2d1: d2d1: Timeout
Looks like these already time out with a no-op patch:
The screenshot actually has a good explanation for that: https://testbot.winehq.org/JobDetails.pl?Key=83859&s201=1&s301=1#k20...
Bug 48208 for the win! https://www.winehq.org/pipermail/wine-devel/2020-December/178622.html
And it's been a while since they do:
That does not actually show any timeout (only todos on Linux). (and a bunch of 'load error 1359', aka bug 48062)
On 1/8/21 3:08 AM, Francois Gouget wrote:
On Thu, 7 Jan 2021, Rémi Bernon wrote: [...]
=== w2008s64 (32 bit report) ===
d2d1: d2d1: Timeout
=== wvistau64 (64 bit report) ===
d2d1: d2d1: Timeout
=== w2008s64 (64 bit report) ===
d2d1: d2d1: Timeout
Looks like these already time out with a no-op patch:
The screenshot actually has a good explanation for that: https://testbot.winehq.org/JobDetails.pl?Key=83859&s201=1&s301=1#k20...
Bug 48208 for the win! https://www.winehq.org/pipermail/wine-devel/2020-December/178622.html
Yes indeed, thanks!
And it's been a while since they do:
That does not actually show any timeout (only todos on Linux). (and a bunch of 'load error 1359', aka bug 48062)
Well, isn't that what the n/a for Vista and 2008 are? I didn't add this D2D1SinCos call, so I think they've been causing timeout since their addition (possibly since 26/10/20 with 4f6bd00a8495).
On Fri, 8 Jan 2021, Rémi Bernon wrote: [...]
That does not actually show any timeout (only todos on Linux). (and a bunch of 'load error 1359', aka bug 48062)
Well, isn't that what the n/a for Vista and 2008 are?
No, the "n/a" means: "This test is Not Applicable to this platform". So the d2d1 is not being run, at all, on Vista and 2008, precisely because there's an API missing [1].
When a test times out the cell shows, unsuprisingly, 'timeout'. For instance urlmon:protocol: https://test.winehq.org/data/9bc3a9f78bf5e6a09d4e9811f645def4a477f3d0/index_...
[1] But you'd get the same "n/a" if the dll was missing entirely, see for instance d3d12:d3d12 on Windows 8 and older.