[2/4] ddraw/tests: test some more caps combinations

Ričardas Barkauskas miegalius at gmail.com
Sun Oct 24 14:59:55 CDT 2010


Testing DDSCAPS_3DDEVICE | DDSCAPS_TEXTURE here makes
dsurface.c:3128 hr = IDirectDraw4_GetSurfaceFromDC(dd4, NULL,
(IDirectDrawSurface4 **)&tmp); crash.
Couldn't find neither reason nor how to avoid it so didn't test it.

Ričardas Barkauskas
REalm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20101024/47aa3174/attachment.htm>
-------------- next part --------------
From 92e3e9f8352593bacde1c103e6e8422d35d66f66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ri=C4=8Dardas=20Barkauskas?= <miegalius at gmail.com>
Date: Sun, 24 Oct 2010 21:48:51 +0300
Subject: ddraw/tests: test some more caps combinations

---
 dlls/ddraw/tests/dsurface.c |   48 ++++++++++++++++++++++++++++++++----------
 1 files changed, 36 insertions(+), 12 deletions(-)

diff --git a/dlls/ddraw/tests/dsurface.c b/dlls/ddraw/tests/dsurface.c
index 93934e5..355c9d2 100644
--- a/dlls/ddraw/tests/dsurface.c
+++ b/dlls/ddraw/tests/dsurface.c
@@ -2852,7 +2852,10 @@ static void SurfaceCapsTest(void)
         0,
         DDSCAPS_TEXTURE | DDSCAPS_ALLOCONLOAD | DDSCAPS_SYSTEMMEMORY,
         DDSCAPS_PRIMARYSURFACE,
-        DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY
+        DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY,
+        DDSCAPS_3DDEVICE,
+        DDSCAPS_ZBUFFER,
+        DDSCAPS_3DDEVICE | DDSCAPS_OFFSCREENPLAIN
     };
     DWORD expected_caps[] = {
         DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
@@ -2861,7 +2864,10 @@ static void SurfaceCapsTest(void)
         DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
         DDSCAPS_TEXTURE | DDSCAPS_ALLOCONLOAD | DDSCAPS_SYSTEMMEMORY,
         DDSCAPS_PRIMARYSURFACE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM | DDSCAPS_VISIBLE,
-        DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY | DDSCAPS_VISIBLE
+        DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY | DDSCAPS_VISIBLE,
+        DDSCAPS_3DDEVICE | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM,
+        DDSCAPS_ZBUFFER | DDSCAPS_LOCALVIDMEM | DDSCAPS_VIDEOMEMORY,
+        DDSCAPS_3DDEVICE | DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM
     };
     UINT i;
 
@@ -2891,6 +2897,15 @@ static void SurfaceCapsTest(void)
             create.dwWidth = 128;
         }
 
+        if (create.ddsCaps.dwCaps & DDSCAPS_ZBUFFER)
+        {
+            create.dwFlags |= DDSD_PIXELFORMAT;
+            U4(create).ddpfPixelFormat.dwSize = sizeof(U4(create).ddpfPixelFormat);
+            U4(create).ddpfPixelFormat.dwFlags = DDPF_ZBUFFER;
+            U1(U4(create).ddpfPixelFormat).dwZBufferBitDepth = 16;
+            U3(U4(create).ddpfPixelFormat).dwZBitMask = 0x0000FFFF;
+        }
+
         hr = IDirectDraw_CreateSurface(lpDD, &create, &surface1, NULL);
         ok(hr == DD_OK, "IDirectDraw_CreateSurface failed with %08x\n", hr);
 
@@ -2901,14 +2916,14 @@ static void SurfaceCapsTest(void)
             hr = IDirectDrawSurface_GetSurfaceDesc(surface1, &desc);
             ok(hr == DD_OK, "IDirectDrawSurface_GetSurfaceDesc failed with %08x\n", hr);
 
-            if (!(create_caps[i] & DDSCAPS_PRIMARYSURFACE))
+            if (!(create_caps[i] & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE)))
                 ok(desc.ddsCaps.dwCaps == expected_caps[i],
-                    "GetSurfaceDesc returned caps %x, expected %x\n", desc.ddsCaps.dwCaps,
-                    expected_caps[i]);
+                    "GetSurfaceDesc test %d returned caps %x, expected %x\n", i,
+                    desc.ddsCaps.dwCaps, expected_caps[i]);
             else
                 todo_wine ok(desc.ddsCaps.dwCaps == expected_caps[i],
-                                "GetSurfaceDesc returned caps %x, expected %x\n", desc.ddsCaps.dwCaps,
-                                expected_caps[i]);
+                                "GetSurfaceDesc test %d returned caps %x, expected %x\n", i,
+                                desc.ddsCaps.dwCaps, expected_caps[i]);
 
             IDirectDrawSurface_Release(surface1);
         }
@@ -2937,6 +2952,15 @@ static void SurfaceCapsTest(void)
                 create2.dwWidth = 128;
             }
 
+            if (create2.ddsCaps.dwCaps & DDSCAPS_ZBUFFER)
+            {
+                create2.dwFlags |= DDSD_PIXELFORMAT;
+                U4(create2).ddpfPixelFormat.dwSize = sizeof(U4(create2).ddpfPixelFormat);
+                U4(create2).ddpfPixelFormat.dwFlags = DDPF_ZBUFFER;
+                U1(U4(create2).ddpfPixelFormat).dwZBufferBitDepth = 16;
+                U3(U4(create2).ddpfPixelFormat).dwZBitMask = 0x0000FFFF;
+            }
+
             hr = IDirectDraw7_CreateSurface(dd7, &create2, &surface7, NULL);
             ok(hr==DD_OK,"CreateSurface returned: %x\n",hr);
 
@@ -2947,14 +2971,14 @@ static void SurfaceCapsTest(void)
                 hr = IDirectDrawSurface7_GetSurfaceDesc(surface7, &desc2);
                 ok(hr == DD_OK, "IDirectDrawSurface_GetSurfaceDesc failed with %08x\n", hr);
 
-                if (!(create_caps[i] & DDSCAPS_PRIMARYSURFACE))
+                if (!(create_caps[i] & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE)))
                     ok(desc2.ddsCaps.dwCaps == expected_caps[i],
-                        "GetSurfaceDesc returned caps %x, expected %x\n", desc2.ddsCaps.dwCaps,
-                        expected_caps[i]);
+                        "GetSurfaceDesc test %d returned caps %x, expected %x\n", i,
+                        desc2.ddsCaps.dwCaps, expected_caps[i]);
                 else
                     todo_wine ok(desc2.ddsCaps.dwCaps == expected_caps[i],
-                                    "GetSurfaceDesc returned caps %x, expected %x\n", desc2.ddsCaps.dwCaps,
-                                    expected_caps[i]);
+                                    "GetSurfaceDesc test %d returned caps %x, expected %x\n", i,
+                                    desc2.ddsCaps.dwCaps, expected_caps[i]);
 
                 IDirectDrawSurface7_Release(surface7);
             }
-- 
1.7.1


More information about the wine-patches mailing list