[PATCH 4/7] ddraw/tests: Use flags to indicate broken render-target tests.

Jeff Smith whydoubt at gmail.com
Thu Dec 12 23:00:05 CST 2019


Signed-off-by: Jeff Smith <whydoubt at gmail.com>
---
 dlls/ddraw/tests/ddraw1.c | 35 +++++++---------------
 dlls/ddraw/tests/ddraw2.c | 63 +++++++++------------------------------
 dlls/ddraw/tests/ddraw4.c | 41 ++++++++++---------------
 dlls/ddraw/tests/ddraw7.c | 43 +++++++++++---------------
 4 files changed, 59 insertions(+), 123 deletions(-)

diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 9b0ee8e553..66b84edf45 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -3908,7 +3908,8 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         DWORD caps_in;
         DWORD caps_out;
         HRESULT create_device_hr;
-        BOOL create_may_fail;
+        BOOL broken_create_surface;
+        BOOL broken_surface_caps;
     }
     test_data[] =
     {
@@ -3917,126 +3918,112 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
-            FALSE,
         },
         {
             NULL,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
-            FALSE,
         },
         {
             NULL,
             DDSCAPS_OFFSCREENPLAIN,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             NULL,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             D3DERR_SURFACENOTINVIDMEM,
-            FALSE,
         },
         {
             NULL,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             NULL,
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY,
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
-            FALSE,
         },
         {
             NULL,
             DDSCAPS_3DDEVICE,
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
-            FALSE,
         },
         {
             NULL,
             0,
             DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             NULL,
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             D3DERR_SURFACENOTINVIDMEM,
-            FALSE,
         },
         {
             NULL,
             DDSCAPS_SYSTEMMEMORY,
             DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             &p8_fmt,
             0,
             DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             &p8_fmt,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE,
-            ~0U /* AMD r200 */ ,
+            DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_SYSTEMMEMORY,
             DDERR_NOPALETTEATTACHED,
-            FALSE,
+            FALSE, TRUE /* AMD r200 */
         },
         {
             &p8_fmt,
             DDSCAPS_OFFSCREENPLAIN,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             &p8_fmt,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             DDERR_NOPALETTEATTACHED,
-            FALSE,
         },
         {
             &p8_fmt,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             NULL,
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_ZBUFFER,
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_ZBUFFER | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
-            TRUE /* AMD Evergreen */,
+            TRUE
         },
         {
             NULL,
             DDSCAPS_3DDEVICE | DDSCAPS_ZBUFFER,
-            ~0U /* AMD Evergreen */,
+            DDSCAPS_3DDEVICE | DDSCAPS_ZBUFFER | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
-            FALSE,
+            FALSE, TRUE
         },
         {
             NULL,
             DDSCAPS_ZBUFFER,
-            ~0U /* AMD Evergreen */,
+            DDSCAPS_ZBUFFER | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
-            FALSE,
+            FALSE, TRUE
         },
         {
             NULL,
@@ -4095,7 +4082,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         surface_desc.dwWidth = 640;
         surface_desc.dwHeight = 480;
         hr = IDirectDraw_CreateSurface(ddraw, &surface_desc, &surface, NULL);
-        ok(SUCCEEDED(hr) || broken(test_data[i].create_may_fail),
+        ok(SUCCEEDED(hr) || broken(test_data[i].broken_create_surface),
                 "Test %s %u: Failed to create surface with caps %#x, hr %#x.\n",
                 device_name, i, test_data[i].caps_in, hr);
         if (FAILED(hr))
@@ -4105,7 +4092,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         surface_desc.dwSize = sizeof(surface_desc);
         hr = IDirectDrawSurface_GetSurfaceDesc(surface, &surface_desc);
         ok(SUCCEEDED(hr), "Test %s %u: Failed to get surface desc, hr %#x.\n", device_name, i, hr);
-        ok(test_data[i].caps_out == ~0U || surface_desc.ddsCaps.dwCaps == test_data[i].caps_out,
+        ok(surface_desc.ddsCaps.dwCaps == test_data[i].caps_out || broken(test_data[i].broken_surface_caps),
                 "Test %s %u: Got unexpected caps %#x, expected %#x.\n",
                 device_name, i, surface_desc.ddsCaps.dwCaps, test_data[i].caps_out);
 
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 3c5485af96..2bd56b7afd 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -4329,8 +4329,8 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         DWORD caps_out;
         HRESULT create_device_hr;
         HRESULT set_rt_hr;
-        HRESULT alternative_set_rt_hr;
-        BOOL create_may_fail;
+        BOOL broken_create_surface;
+        BOOL broken_surface_caps;
     }
     test_data[] =
     {
@@ -4340,8 +4340,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
-            FALSE,
         },
         {
             NULL,
@@ -4349,8 +4347,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
-            FALSE,
         },
         {
             NULL,
@@ -4358,8 +4354,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             NULL,
@@ -4367,8 +4361,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             D3DERR_SURFACENOTINVIDMEM,
             D3D_OK,
-            D3D_OK,
-            FALSE,
         },
         {
             NULL,
@@ -4376,8 +4368,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             NULL,
@@ -4385,8 +4375,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
-            FALSE,
         },
         {
             NULL,
@@ -4394,8 +4382,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
-            FALSE,
         },
         {
             NULL,
@@ -4403,8 +4389,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             NULL,
@@ -4412,8 +4396,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             D3DERR_SURFACENOTINVIDMEM,
             D3D_OK,
-            D3D_OK,
-            FALSE,
         },
         {
             NULL,
@@ -4421,8 +4403,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             &p8_fmt,
@@ -4430,17 +4410,14 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             &p8_fmt,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE,
-            ~0U /* AMD r200 */,
+            DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_SYSTEMMEMORY,
             DDERR_NOPALETTEATTACHED,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            FALSE,
+            FALSE, TRUE /* AMD r200 */
         },
         {
             &p8_fmt,
@@ -4448,8 +4425,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             &p8_fmt,
@@ -4457,8 +4432,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             DDERR_NOPALETTEATTACHED,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             &p8_fmt,
@@ -4466,8 +4439,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            FALSE,
         },
         {
             NULL,
@@ -4475,26 +4446,23 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_ZBUFFER | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDPIXELFORMAT,
-            DDERR_INVALIDCAPS,
-            TRUE /* AMD Evergreen */,
+            TRUE
         },
         {
             NULL,
             DDSCAPS_3DDEVICE | DDSCAPS_ZBUFFER,
-            ~0U /* AMD Evergreen */,
+            DDSCAPS_3DDEVICE | DDSCAPS_ZBUFFER | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDPIXELFORMAT,
-            DDERR_INVALIDCAPS,
-            FALSE,
+            FALSE, TRUE
         },
         {
             NULL,
             DDSCAPS_ZBUFFER,
-            ~0U /* AMD Evergreen */,
-            DDERR_INVALIDCAPS,
+            DDSCAPS_ZBUFFER | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            FALSE,
+            FALSE, TRUE
         },
         {
             NULL,
@@ -4502,8 +4470,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE | DDSCAPS_ZBUFFER,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDPIXELFORMAT,
-            DDERR_INVALIDPIXELFORMAT,
-            TRUE /* Nvidia Kepler */,
+            TRUE /* Nvidia Kepler */
         },
         {
             NULL,
@@ -4511,8 +4478,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_ZBUFFER,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
-            TRUE /* Nvidia Kepler */,
+            TRUE /* Nvidia Kepler */
         },
     };
 
@@ -4563,7 +4529,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         surface_desc.dwWidth = 640;
         surface_desc.dwHeight = 480;
         hr = IDirectDraw2_CreateSurface(ddraw, &surface_desc, &surface, NULL);
-        ok(SUCCEEDED(hr) || broken(test_data[i].create_may_fail),
+        ok(SUCCEEDED(hr) || broken(test_data[i].broken_create_surface),
                 "Test %s %u: Failed to create surface with caps %#x, hr %#x.\n",
                 device_name, i, test_data[i].caps_in, hr);
         if (FAILED(hr))
@@ -4573,7 +4539,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         surface_desc.dwSize = sizeof(surface_desc);
         hr = IDirectDrawSurface_GetSurfaceDesc(surface, &surface_desc);
         ok(SUCCEEDED(hr), "Test %s %u: Failed to get surface desc, hr %#x.\n", device_name, i, hr);
-        ok(test_data[i].caps_out == ~0U || surface_desc.ddsCaps.dwCaps == test_data[i].caps_out,
+        ok(surface_desc.ddsCaps.dwCaps == test_data[i].caps_out || broken(test_data[i].broken_surface_caps),
                 "Test %s %u: Got unexpected caps %#x, expected %#x.\n",
                 device_name, i, surface_desc.ddsCaps.dwCaps, test_data[i].caps_out);
 
@@ -4628,8 +4594,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
                 device_name, i, test_data[i].caps_in, hr);
 
         hr = IDirect3DDevice2_SetRenderTarget(device, rt, 0);
-        ok(hr == test_data[i].set_rt_hr || broken(hr == test_data[i].alternative_set_rt_hr),
-                "Test %s %u: Got unexpected hr %#x, expected %#x.\n",
+        ok(hr == test_data[i].set_rt_hr, "Test %s %u: Got unexpected hr %#x, expected %#x.\n",
                 device_name, i, hr, test_data[i].set_rt_hr);
         if (SUCCEEDED(hr) || hr == DDERR_INVALIDPIXELFORMAT)
             expected_rt = rt;
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index b4b2f15b34..0ab8c74dab 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -5945,7 +5945,10 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         DWORD caps_in;
         DWORD caps_out;
         HRESULT create_device_hr;
-        HRESULT set_rt_hr, alternative_set_rt_hr;
+        HRESULT set_rt_hr;
+        BOOL broken_create_surface;
+        BOOL broken_surface_caps;
+        BOOL broken_set_target_ok;
     }
     test_data[] =
     {
@@ -5955,7 +5958,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -5963,7 +5965,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -5971,7 +5972,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             NULL,
@@ -5979,7 +5979,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             D3DERR_SURFACENOTINVIDMEM,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -5987,7 +5986,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             NULL,
@@ -5995,7 +5993,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -6003,7 +6000,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -6011,7 +6007,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             NULL,
@@ -6019,7 +6014,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             D3DERR_SURFACENOTINVIDMEM,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -6027,7 +6021,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &p8_fmt,
@@ -6035,15 +6028,14 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &p8_fmt,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE,
-            ~0U /* AMD r200 */,
+            DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_SYSTEMMEMORY,
             DDERR_NOPALETTEATTACHED,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
+            FALSE, TRUE /* AMD r200 */
         },
         {
             &p8_fmt,
@@ -6051,7 +6043,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &p8_fmt,
@@ -6059,7 +6050,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             DDERR_NOPALETTEATTACHED,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &p8_fmt,
@@ -6067,7 +6057,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &z_fmt,
@@ -6075,7 +6064,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_ZBUFFER | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDPIXELFORMAT,
-            D3D_OK /* r200 */,
+            FALSE, FALSE, TRUE
         },
         {
             &z_fmt,
@@ -6083,7 +6072,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_ZBUFFER | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDPIXELFORMAT,
-            D3D_OK /* r200 */,
+            FALSE, FALSE, TRUE
         },
         {
             &z_fmt,
@@ -6091,7 +6080,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_VIDEOMEMORY | DDSCAPS_ZBUFFER | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &z_fmt,
@@ -6099,7 +6087,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE | DDSCAPS_ZBUFFER,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDPIXELFORMAT,
-            D3D_OK /* r200 */,
+            FALSE, FALSE, TRUE
         },
         {
             &z_fmt,
@@ -6107,7 +6095,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_ZBUFFER,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
     };
 
@@ -6154,14 +6141,17 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         surface_desc.dwWidth = 640;
         surface_desc.dwHeight = 480;
         hr = IDirectDraw4_CreateSurface(ddraw, &surface_desc, &surface, NULL);
-        ok(SUCCEEDED(hr), "Test %s %u: Failed to create surface with caps %#x, hr %#x.\n",
+        ok(SUCCEEDED(hr) || broken(test_data[i].broken_create_surface),
+                "Test %s %u: Failed to create surface with caps %#x, hr %#x.\n",
                 device_name, i, test_data[i].caps_in, hr);
+        if (FAILED(hr))
+            continue;
 
         memset(&surface_desc, 0, sizeof(surface_desc));
         surface_desc.dwSize = sizeof(surface_desc);
         hr = IDirectDrawSurface4_GetSurfaceDesc(surface, &surface_desc);
         ok(SUCCEEDED(hr), "Test %s %u: Failed to get surface desc, hr %#x.\n", device_name, i, hr);
-        ok(test_data[i].caps_out == ~0U || surface_desc.ddsCaps.dwCaps == test_data[i].caps_out,
+        ok(surface_desc.ddsCaps.dwCaps == test_data[i].caps_out || broken(test_data[i].broken_surface_caps),
                 "Test %s %u: Got unexpected caps %#x, expected %#x.\n",
                 device_name, i, surface_desc.ddsCaps.dwCaps, test_data[i].caps_out);
 
@@ -6211,7 +6201,8 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
                 device_name, i, test_data[i].caps_in, hr);
 
         hr = IDirect3DDevice3_SetRenderTarget(device, rt, 0);
-        ok(hr == test_data[i].set_rt_hr || broken(hr == test_data[i].alternative_set_rt_hr),
+        ok(hr == test_data[i].set_rt_hr || broken(
+                    test_data[i].broken_set_target_ok && hr == D3D_OK),
                 "Test %s %u: Got unexpected hr %#x, expected %#x.\n",
                 device_name, i, hr, test_data[i].set_rt_hr);
         if (SUCCEEDED(hr) || hr == DDERR_INVALIDPIXELFORMAT)
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 94618c0178..f2552ad491 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -5682,7 +5682,11 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         DWORD caps_in;
         DWORD caps_out;
         HRESULT create_device_hr;
-        HRESULT set_rt_hr, alternative_set_rt_hr;
+        HRESULT set_rt_hr;
+        BOOL broken_create_surface;
+        BOOL broken_surface_caps;
+        BOOL broken_set_target_ok;
+        BOOL broken_set_target_ivpf;
     }
     test_data[] =
     {
@@ -5692,7 +5696,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -5700,7 +5703,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -5708,7 +5710,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             NULL,
@@ -5716,7 +5717,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             D3DERR_SURFACENOTINVIDMEM,
             DDERR_INVALIDPARAMS,
-            D3D_OK,
+            FALSE, FALSE, TRUE
         },
         {
             NULL,
@@ -5724,7 +5725,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             NULL,
@@ -5732,7 +5732,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -5740,7 +5739,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             D3D_OK,
             D3D_OK,
-            D3D_OK,
         },
         {
             NULL,
@@ -5748,7 +5746,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             NULL,
@@ -5756,7 +5753,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             D3DERR_SURFACENOTINVIDMEM,
             DDERR_INVALIDPARAMS,
-            D3D_OK,
+            FALSE, FALSE, TRUE
         },
         {
             NULL,
@@ -5764,7 +5761,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &p8_fmt,
@@ -5772,15 +5768,14 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &p8_fmt,
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE,
-            ~0U /* AMD r200 */,
+            DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE | DDSCAPS_SYSTEMMEMORY,
             DDERR_NOPALETTEATTACHED,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
+            FALSE, TRUE /* AMD r200 */
         },
         {
             &p8_fmt,
@@ -5788,7 +5783,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &p8_fmt,
@@ -5796,7 +5790,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE,
             DDERR_NOPALETTEATTACHED,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &p8_fmt,
@@ -5804,7 +5797,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &z_fmt,
@@ -5812,7 +5804,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_ZBUFFER | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDPIXELFORMAT,
-            DDERR_INVALIDPIXELFORMAT,
         },
         {
             &z_fmt,
@@ -5820,7 +5811,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_ZBUFFER | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDPIXELFORMAT,
-            DDERR_INVALIDPIXELFORMAT,
         },
         {
             &z_fmt,
@@ -5828,7 +5818,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_VIDEOMEMORY | DDSCAPS_ZBUFFER | DDSCAPS_LOCALVIDMEM,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
         {
             &z_fmt,
@@ -5836,7 +5825,7 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_3DDEVICE | DDSCAPS_ZBUFFER,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDPARAMS,
-            DDERR_INVALIDPIXELFORMAT,
+            FALSE, FALSE, FALSE, TRUE
         },
         {
             &z_fmt,
@@ -5844,7 +5833,6 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
             DDSCAPS_SYSTEMMEMORY | DDSCAPS_ZBUFFER,
             DDERR_INVALIDCAPS,
             DDERR_INVALIDCAPS,
-            DDERR_INVALIDCAPS,
         },
     };
 
@@ -5900,14 +5888,17 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
         surface_desc.dwWidth = 640;
         surface_desc.dwHeight = 480;
         hr = IDirectDraw7_CreateSurface(ddraw, &surface_desc, &surface, NULL);
-        ok(SUCCEEDED(hr), "Test %s %u: Failed to create surface with caps %#x, hr %#x.\n",
+        ok(SUCCEEDED(hr) || broken(test_data[i].broken_create_surface),
+                "Test %s %u: Failed to create surface with caps %#x, hr %#x.\n",
                 device_name, i, test_data[i].caps_in, hr);
+        if (FAILED(hr))
+            continue;
 
         memset(&surface_desc, 0, sizeof(surface_desc));
         surface_desc.dwSize = sizeof(surface_desc);
         hr = IDirectDrawSurface7_GetSurfaceDesc(surface, &surface_desc);
         ok(SUCCEEDED(hr), "Test %s %u: Failed to get surface desc, hr %#x.\n", device_name, i, hr);
-        ok(test_data[i].caps_out == ~0U || surface_desc.ddsCaps.dwCaps == test_data[i].caps_out,
+        ok(surface_desc.ddsCaps.dwCaps == test_data[i].caps_out || broken(test_data[i].broken_surface_caps),
                 "Test %s %u: Got unexpected caps %#x, expected %#x.\n",
                 device_name, i, surface_desc.ddsCaps.dwCaps, test_data[i].caps_out);
 
@@ -5957,7 +5948,9 @@ static void test_rt_caps_riid(REFCLSID riid, const char *device_name)
                 device_name, i, test_data[i].caps_in, hr);
 
         hr = IDirect3DDevice7_SetRenderTarget(device, rt, 0);
-        ok(hr == test_data[i].set_rt_hr || broken(hr == test_data[i].alternative_set_rt_hr),
+        ok(hr == test_data[i].set_rt_hr || broken(
+                    (test_data[i].broken_set_target_ok && hr == D3D_OK) ||
+                    (test_data[i].broken_set_target_ivpf && hr == DDERR_INVALIDPIXELFORMAT)),
                 "Test %s %u: Got unexpected hr %#x, expected %#x.\n",
                 device_name, i, hr, test_data[i].set_rt_hr);
         if (SUCCEEDED(hr) || hr == DDERR_INVALIDPIXELFORMAT)
-- 
2.23.0




More information about the wine-devel mailing list