[PATCH 1/4] d2d1/tests: Use IDXGIDevice interface instead of ID3D10Device1.

Rémi Bernon rbernon at codeweavers.com
Thu Jan 7 13:43:53 CST 2021


Signed-off-by: Rémi Bernon <rbernon at 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);
 }
 
-- 
2.29.2




More information about the wine-devel mailing list