[PATCH 4/4] ddraw/tests: Add function for testing render-target caps by device IID.

Jeff Smith whydoubt at gmail.com
Thu Mar 19 15:59:50 CDT 2020


Signed-off-by: Jeff Smith <whydoubt at gmail.com>
---
 dlls/ddraw/tests/ddraw1.c | 14 +++++++++-----
 dlls/ddraw/tests/ddraw2.c | 16 ++++++++++------
 dlls/ddraw/tests/ddraw4.c | 16 ++++++++++------
 dlls/ddraw/tests/ddraw7.c | 28 ++++++++++++++++++----------
 4 files changed, 47 insertions(+), 27 deletions(-)

diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 86aa68d218..1b38c4a05f 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -3884,9 +3884,8 @@ static void test_unsupported_formats(void)
     DestroyWindow(window);
 }
 
-static void test_rt_caps(void)
+static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
 {
-    const char *device_name = "HAL";
     PALETTEENTRY palette_entries[256];
     IDirectDrawPalette *palette;
     IDirect3DDevice *device;
@@ -4058,7 +4057,7 @@ static void test_rt_caps(void)
     window = create_window();
     ddraw = create_ddraw();
     ok(!!ddraw, "Failed to create a ddraw object.\n");
-    if (!(device = create_device(ddraw, window, DDSCL_NORMAL)))
+    if (!(device = create_device_riid(ddraw, window, DDSCL_NORMAL, riid)))
     {
         skip("Failed to create a (%s) 3D device, skipping test.\n", device_name);
         IDirectDraw_Release(ddraw);
@@ -4110,14 +4109,14 @@ static void test_rt_caps(void)
                 "Test %s %u: Got unexpected caps %#x, expected %#x.\n",
                 device_name, i, surface_desc.ddsCaps.dwCaps, test_data[i].caps_out);
 
-        hr = IDirectDrawSurface_QueryInterface(surface, &IID_IDirect3DHALDevice, (void **)&device);
+        hr = IDirectDrawSurface_QueryInterface(surface, riid, (void **)&device);
         ok(hr == test_data[i].create_device_hr, "Test %s %u: Got unexpected hr %#x, expected %#x.\n",
                 device_name, i, hr, test_data[i].create_device_hr);
         if (hr == DDERR_NOPALETTEATTACHED)
         {
             hr = IDirectDrawSurface_SetPalette(surface, palette);
             ok(SUCCEEDED(hr), "Test %s %u: Failed to set palette, hr %#x.\n", device_name, i, hr);
-            hr = IDirectDrawSurface_QueryInterface(surface, &IID_IDirect3DHALDevice, (void **)&device);
+            hr = IDirectDrawSurface_QueryInterface(surface, riid, (void **)&device);
             if (surface_desc.ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY)
                 ok(hr == DDERR_INVALIDPIXELFORMAT, "Test %s %u: Got unexpected hr %#x.\n", device_name, i, hr);
             else
@@ -4140,6 +4139,11 @@ static void test_rt_caps(void)
     DestroyWindow(window);
 }
 
+static void test_rt_caps(void)
+{
+    test_rt_caps_riid(&IID_IDirect3DHALDevice, "HAL");
+}
+
 static void test_primary_caps(void)
 {
     const DWORD placement = DDSCAPS_LOCALVIDMEM | DDSCAPS_VIDEOMEMORY | DDSCAPS_SYSTEMMEMORY;
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 71f1413b14..a8c14fbcad 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -4306,9 +4306,8 @@ static void test_unsupported_formats(void)
     DestroyWindow(window);
 }
 
-static void test_rt_caps(void)
+static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
 {
-    const char *device_name = "HAL";
     PALETTEENTRY palette_entries[256];
     IDirectDrawPalette *palette;
     IDirect3DDevice2 *device;
@@ -4523,7 +4522,7 @@ static void test_rt_caps(void)
     window = create_window();
     ddraw = create_ddraw();
     ok(!!ddraw, "Failed to create a ddraw object.\n");
-    if (!(device = create_device(ddraw, window, DDSCL_NORMAL)))
+    if (!(device = create_device_riid(ddraw, window, DDSCL_NORMAL, riid)))
     {
         skip("Failed to create a (%s) 3D device, skipping test.\n", device_name);
         IDirectDraw2_Release(ddraw);
@@ -4581,7 +4580,7 @@ static void test_rt_caps(void)
                 "Test %s %u: Got unexpected caps %#x, expected %#x.\n",
                 device_name, i, surface_desc.ddsCaps.dwCaps, test_data[i].caps_out);
 
-        hr = IDirect3D2_CreateDevice(d3d, &IID_IDirect3DHALDevice, surface, &device);
+        hr = IDirect3D2_CreateDevice(d3d, riid, surface, &device);
         ok(hr == test_data[i].create_device_hr, "Test %s %u: Got unexpected hr %#x, expected %#x.\n",
                 device_name, i, hr, test_data[i].create_device_hr);
         if (FAILED(hr))
@@ -4590,7 +4589,7 @@ static void test_rt_caps(void)
             {
                 hr = IDirectDrawSurface_SetPalette(surface, palette);
                 ok(SUCCEEDED(hr), "Test %s %u: Failed to set palette, hr %#x.\n", device_name, i, hr);
-                hr = IDirect3D2_CreateDevice(d3d, &IID_IDirect3DHALDevice, surface, &device);
+                hr = IDirect3D2_CreateDevice(d3d, riid, surface, &device);
                 if (surface_desc.ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY)
                     ok(hr == DDERR_INVALIDPIXELFORMAT, "Test %s %u: Got unexpected hr %#x.\n", device_name, i, hr);
                 else
@@ -4607,7 +4606,7 @@ static void test_rt_caps(void)
             hr = IDirectDraw2_CreateSurface(ddraw, &surface_desc, &surface, NULL);
             ok(SUCCEEDED(hr), "Test %s %u: Failed to create surface, hr %#x.\n", device_name, i, hr);
 
-            hr = IDirect3D2_CreateDevice(d3d, &IID_IDirect3DHALDevice, surface, &device);
+            hr = IDirect3D2_CreateDevice(d3d, riid, surface, &device);
             ok(SUCCEEDED(hr), "Test %s %u: Failed to create device, hr %#x.\n", device_name, i, hr);
         }
 
@@ -4671,6 +4670,11 @@ done:
     DestroyWindow(window);
 }
 
+static void test_rt_caps(void)
+{
+    test_rt_caps_riid(&IID_IDirect3DHALDevice, "HAL");
+}
+
 static void test_primary_caps(void)
 {
     const DWORD placement = DDSCAPS_LOCALVIDMEM | DDSCAPS_VIDEOMEMORY | DDSCAPS_SYSTEMMEMORY;
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index e3299ee643..392ce1093c 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -5923,9 +5923,8 @@ static void test_unsupported_formats(void)
     DestroyWindow(window);
 }
 
-static void test_rt_caps(void)
+static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
 {
-    const char *device_name = "HAL";
     PALETTEENTRY palette_entries[256];
     IDirectDrawPalette *palette;
     IDirectDraw4 *ddraw;
@@ -6127,7 +6126,7 @@ static void test_rt_caps(void)
     }
 
     memset(&z_fmt, 0, sizeof(z_fmt));
-    hr = IDirect3D3_EnumZBufferFormats(d3d, &IID_IDirect3DHALDevice, enum_z_fmt, &z_fmt);
+    hr = IDirect3D3_EnumZBufferFormats(d3d, riid, enum_z_fmt, &z_fmt);
     if (FAILED(hr) || !z_fmt.dwSize)
     {
         skip("No depth buffer formats available, skipping test.\n");
@@ -6168,7 +6167,7 @@ static void test_rt_caps(void)
                 "Test %s %u: Got unexpected caps %#x, expected %#x.\n",
                 device_name, i, surface_desc.ddsCaps.dwCaps, test_data[i].caps_out);
 
-        hr = IDirect3D3_CreateDevice(d3d, &IID_IDirect3DHALDevice, surface, &device, NULL);
+        hr = IDirect3D3_CreateDevice(d3d, riid, surface, &device, NULL);
         ok(hr == test_data[i].create_device_hr, "Test %s %u: Got unexpected hr %#x, expected %#x.\n",
                 device_name, i, hr, test_data[i].create_device_hr);
         if (FAILED(hr))
@@ -6177,7 +6176,7 @@ static void test_rt_caps(void)
             {
                 hr = IDirectDrawSurface4_SetPalette(surface, palette);
                 ok(SUCCEEDED(hr), "Test %s %u: Failed to set palette, hr %#x.\n", device_name, i, hr);
-                hr = IDirect3D3_CreateDevice(d3d, &IID_IDirect3DHALDevice, surface, &device, NULL);
+                hr = IDirect3D3_CreateDevice(d3d, riid, surface, &device, NULL);
                 if (surface_desc.ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY)
                     ok(hr == DDERR_INVALIDPIXELFORMAT, "Test %s %u: Got unexpected hr %#x.\n", device_name, i, hr);
                 else
@@ -6194,7 +6193,7 @@ static void test_rt_caps(void)
             hr = IDirectDraw4_CreateSurface(ddraw, &surface_desc, &surface, NULL);
             ok(SUCCEEDED(hr), "Test %s %u: Failed to create surface, hr %#x.\n", device_name, i, hr);
 
-            hr = IDirect3D3_CreateDevice(d3d, &IID_IDirect3DHALDevice, surface, &device, NULL);
+            hr = IDirect3D3_CreateDevice(d3d, riid, surface, &device, NULL);
             ok(SUCCEEDED(hr), "Test %s %u: Failed to create device, hr %#x.\n", device_name, i, hr);
         }
 
@@ -6245,6 +6244,11 @@ done:
     DestroyWindow(window);
 }
 
+static void test_rt_caps(void)
+{
+    test_rt_caps_riid(&IID_IDirect3DHALDevice, "HAL");
+}
+
 static void test_primary_caps(void)
 {
     const DWORD placement = DDSCAPS_LOCALVIDMEM | DDSCAPS_VIDEOMEMORY | DDSCAPS_SYSTEMMEMORY;
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 2fcc54283f..ca14be85cb 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -5662,14 +5662,12 @@ static void test_unsupported_formats(void)
     DestroyWindow(window);
 }
 
-static void test_rt_caps(void)
+static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
 {
-    const char *device_name = "HAL";
-    const GUID *devtype = &IID_IDirect3DHALDevice;
     PALETTEENTRY palette_entries[256];
     IDirectDrawPalette *palette;
     IDirectDraw7 *ddraw;
-    struct { REFCLSID riid; BOOL present; } device_data = { &IID_IDirect3DTnLHalDevice };
+    struct { REFCLSID riid; BOOL present; } device_data = { riid };
     DDPIXELFORMAT z_fmt;
     IDirect3D7 *d3d;
     unsigned int i;
@@ -5869,11 +5867,15 @@ static void test_rt_caps(void)
 
     hr = IDirect3D7_EnumDevices(d3d, enum_devtype_cb, &device_data);
     ok(SUCCEEDED(hr), "Failed to enumerate devices, hr %#x.\n", hr);
-    if (device_data.present)
-        devtype = device_data.riid;
+    if (!device_data.present)
+    {
+        skip("Failed to enumerate %s device, skipping test.\n", device_name);
+        IDirect3D7_Release(d3d);
+        goto done;
+    }
 
     memset(&z_fmt, 0, sizeof(z_fmt));
-    hr = IDirect3D7_EnumZBufferFormats(d3d, devtype, enum_z_fmt, &z_fmt);
+    hr = IDirect3D7_EnumZBufferFormats(d3d, riid, enum_z_fmt, &z_fmt);
     if (FAILED(hr) || !z_fmt.dwSize)
     {
         skip("No depth buffer formats available, skipping test.\n");
@@ -5914,7 +5916,7 @@ static void test_rt_caps(void)
                 "Test %s %u: Got unexpected caps %#x, expected %#x.\n",
                 device_name, i, surface_desc.ddsCaps.dwCaps, test_data[i].caps_out);
 
-        hr = IDirect3D7_CreateDevice(d3d, devtype, surface, &device);
+        hr = IDirect3D7_CreateDevice(d3d, riid, surface, &device);
         ok(hr == test_data[i].create_device_hr, "Test %s %u: Got unexpected hr %#x, expected %#x.\n",
                 device_name, i, hr, test_data[i].create_device_hr);
         if (FAILED(hr))
@@ -5923,7 +5925,7 @@ static void test_rt_caps(void)
             {
                 hr = IDirectDrawSurface7_SetPalette(surface, palette);
                 ok(SUCCEEDED(hr), "Test %s %u: Failed to set palette, hr %#x.\n", device_name, i, hr);
-                hr = IDirect3D7_CreateDevice(d3d, devtype, surface, &device);
+                hr = IDirect3D7_CreateDevice(d3d, riid, surface, &device);
                 if (surface_desc.ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY)
                     ok(hr == DDERR_INVALIDPIXELFORMAT, "Test %s %u: Got unexpected hr %#x.\n", device_name, i, hr);
                 else
@@ -5940,7 +5942,7 @@ static void test_rt_caps(void)
             hr = IDirectDraw7_CreateSurface(ddraw, &surface_desc, &surface, NULL);
             ok(SUCCEEDED(hr), "Test %s %u: Failed to create surface, hr %#x.\n", device_name, i, hr);
 
-            hr = IDirect3D7_CreateDevice(d3d, devtype, surface, &device);
+            hr = IDirect3D7_CreateDevice(d3d, riid, surface, &device);
             ok(SUCCEEDED(hr), "Test %s %u: Failed to create device, hr %#x.\n", device_name, i, hr);
         }
 
@@ -5991,6 +5993,12 @@ done:
     DestroyWindow(window);
 }
 
+static void test_rt_caps(void)
+{
+    test_rt_caps_riid(&IID_IDirect3DTnLHalDevice, "TnLHal");
+    test_rt_caps_riid(&IID_IDirect3DHALDevice, "HAL");
+}
+
 static void test_primary_caps(void)
 {
     const DWORD placement = DDSCAPS_LOCALVIDMEM | DDSCAPS_VIDEOMEMORY | DDSCAPS_SYSTEMMEMORY;
-- 
2.23.0




More information about the wine-devel mailing list