From: Elizabeth Figura zfigura@codeweavers.com
Tested with an ATI Rage 128 and a NVidia GeForce 2 MX under Windows 98.
This fixes a number of failures:
* DirectDraw drivers on Windows 98 sometimes support some flags listed under caps_never, namely ALPHA, SYSTEMMEMORY, VISIBLE, HWCODEC, MODEX, STANDARDVGAMODE.
* DirectDraw drivers on Windows 98 sometimes lack some flags listed under caps_hal, namely COMPLEX, FRONTBUFFER, LOCALVIDMEM and NONLOCALVIDMEM.
* SYSTEMMEMORY and OVERLAY are additionally both supported on both the ATI and NVidia cards on Windows 98, but not WARP. Conversely, WARP supports COMPLEX and OWNDC, which neither the ATI or NVIDIA cards do. I haven't gone to the trouble of marking these flags as WARP-specific, however.
* HEL caps are uniform across drivers, including WARP. Since the HEL is a Microsoft component this is not particularly surprising. Accordingly those tests are tightened to check for an exact match, and the caps_hal and caps_always flags are combined and simplified.
* Current WARP seems to have fixed divergence in behaviour between 32-bit and 64-bit ddraw. --- dlls/ddraw/tests/ddraw1.c | 98 +++++++++++++++--------------------- dlls/ddraw/tests/ddraw2.c | 103 ++++++++++++++++---------------------- dlls/ddraw/tests/ddraw4.c | 56 +++++++++------------ dlls/ddraw/tests/ddraw7.c | 56 +++++++++------------ 4 files changed, 132 insertions(+), 181 deletions(-)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index 9fd952cf55a..804f1dcc6d6 100644 --- a/dlls/ddraw/tests/ddraw1.c +++ b/dlls/ddraw/tests/ddraw1.c @@ -14260,43 +14260,39 @@ static void test_clipper_refcount(void)
static void test_caps(void) { - DWORD caps_never, caps_always, caps_hal; DDCAPS hal_caps, hel_caps; IDirectDraw *ddraw; HRESULT hr; BOOL no3d;
- caps_never = DDSCAPS_RESERVED1 - | DDSCAPS_ALPHA + static const DWORD caps_hel = DDSCAPS_FLIP + | DDSCAPS_OFFSCREENPLAIN + | DDSCAPS_PALETTE + | DDSCAPS_PRIMARYSURFACE + | DDSCAPS_TEXTURE + | DDSCAPS_ZBUFFER + | DDSCAPS_MIPMAP; + + static const DWORD caps_never = DDSCAPS_RESERVED1 | DDSCAPS_PRIMARYSURFACELEFT - | DDSCAPS_SYSTEMMEMORY - | DDSCAPS_VISIBLE | DDSCAPS_WRITEONLY | DDSCAPS_LIVEVIDEO - | DDSCAPS_HWCODEC - | DDSCAPS_MODEX | DDSCAPS_RESERVED2 | 0x01000000u | 0x02000000u | DDSCAPS_ALLOCONLOAD | DDSCAPS_VIDEOPORT - | DDSCAPS_STANDARDVGAMODE | DDSCAPS_OPTIMIZED;
- caps_always = DDSCAPS_FLIP + static const DWORD caps_always = DDSCAPS_BACKBUFFER + | DDSCAPS_FLIP | DDSCAPS_OFFSCREENPLAIN | DDSCAPS_PRIMARYSURFACE | DDSCAPS_TEXTURE - | DDSCAPS_ZBUFFER - | DDSCAPS_MIPMAP; - - caps_hal = DDSCAPS_BACKBUFFER - | DDSCAPS_COMPLEX - | DDSCAPS_FRONTBUFFER | DDSCAPS_3DDEVICE + | DDSCAPS_ZBUFFER | DDSCAPS_VIDEOMEMORY - | DDSCAPS_LOCALVIDMEM - | DDSCAPS_NONLOCALVIDMEM; + | DDSCAPS_MIPMAP;
ddraw = create_ddraw(); ok(!!ddraw, "Failed to create a ddraw object.\n"); @@ -14318,14 +14314,14 @@ static void test_caps(void) if (hal_caps.ddsCaps.dwCaps) { ok(!(hal_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_hal), + todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); } - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + todo_wine ok(hel_caps.ddsCaps.dwCaps == caps_hel, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + + ok(!(hal_caps.dwZBufferBitDepths & ~(DDBD_16 | DDBD_24 | DDBD_32)), + "Got HAL depth caps %#lx.\n", hal_caps.dwZBufferBitDepths); + todo_wine ok(hel_caps.dwZBufferBitDepths == DDBD_16, "Got HEL depth caps %#lx.\n", hel_caps.dwZBufferBitDepths);
IDirectDraw_Release(ddraw);
@@ -14348,49 +14344,35 @@ static void test_caps(void) hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
ok(!(hal_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_hal), + todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - if (is_ddraw64) - { - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - } - else - { - todo_wine ok(!hel_caps.ddsCaps.dwCaps, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - } + todo_wine ok(!(hel_caps.ddsCaps.dwCaps & ~(DDSCAPS_STANDARDVGAMODE | DDSCAPS_MODEX)), + "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps);
IDirectDraw_Release(ddraw); }
hr = DirectDrawCreate((GUID *)DDCREATE_EMULATIONONLY, &ddraw, NULL); - ok(hr == DD_OK || (is_ddraw64 && hr == E_FAIL), "Got unexpected hr %#lx.\n", hr); - if (SUCCEEDED(hr)) - { - memset(&hal_caps, 0, sizeof(hal_caps)); - memset(&hel_caps, 0, sizeof(hel_caps)); - hal_caps.dwSize = sizeof(hal_caps); - hel_caps.dwSize = sizeof(hel_caps); - hr = IDirectDraw_GetCaps(ddraw, &hal_caps, &hel_caps); - ok(hr == DD_OK, "Got unexpected hr %#lx.\n", hr); - ok(hal_caps.ddsOldCaps.dwCaps == hal_caps.ddsCaps.dwCaps, - "Got unexpected caps %#lx, expected %#lx.\n", - hal_caps.ddsOldCaps.dwCaps, hal_caps.ddsCaps.dwCaps); - ok(hel_caps.ddsOldCaps.dwCaps == hel_caps.ddsCaps.dwCaps, - "Got unexpected caps %#lx, expected %#lx.\n", - hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps); + ok(hr == DD_OK, "Got unexpected hr %#lx.\n", hr);
- todo_wine ok(!hal_caps.ddsCaps.dwCaps, "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + memset(&hal_caps, 0, sizeof(hal_caps)); + memset(&hel_caps, 0, sizeof(hel_caps)); + hal_caps.dwSize = sizeof(hal_caps); + hel_caps.dwSize = sizeof(hel_caps); + hr = IDirectDraw_GetCaps(ddraw, &hal_caps, &hel_caps); + ok(hr == DD_OK, "Got unexpected hr %#lx.\n", hr); + ok(hal_caps.ddsOldCaps.dwCaps == hal_caps.ddsCaps.dwCaps, + "Got unexpected caps %#lx, expected %#lx.\n", + hal_caps.ddsOldCaps.dwCaps, hal_caps.ddsCaps.dwCaps); + ok(hel_caps.ddsOldCaps.dwCaps == hel_caps.ddsCaps.dwCaps, + "Got unexpected caps %#lx, expected %#lx.\n", + hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
- IDirectDraw_Release(ddraw); - } + todo_wine ok(!(hal_caps.ddsCaps.dwCaps & ~(DDSCAPS_STANDARDVGAMODE | DDSCAPS_MODEX)), + "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); + todo_wine ok(hel_caps.ddsCaps.dwCaps == caps_hel, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + + IDirectDraw_Release(ddraw); }
static void test_d32_support(void) diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index 0431116d57c..011206a6c0f 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -15273,44 +15273,40 @@ static void test_clipper_refcount(void)
static void test_caps(void) { - DWORD caps_never, caps_always, caps_hal; DDCAPS hal_caps, hel_caps; IDirectDraw2 *ddraw; IDirectDraw *ddraw1; HRESULT hr; BOOL no3d;
- caps_never = DDSCAPS_RESERVED1 - | DDSCAPS_ALPHA + static const DWORD caps_hel = DDSCAPS_FLIP + | DDSCAPS_OFFSCREENPLAIN + | DDSCAPS_PALETTE + | DDSCAPS_PRIMARYSURFACE + | DDSCAPS_TEXTURE + | DDSCAPS_ZBUFFER + | DDSCAPS_MIPMAP; + + static const DWORD caps_never = DDSCAPS_RESERVED1 | DDSCAPS_PRIMARYSURFACELEFT - | DDSCAPS_SYSTEMMEMORY - | DDSCAPS_VISIBLE | DDSCAPS_WRITEONLY | DDSCAPS_LIVEVIDEO - | DDSCAPS_HWCODEC - | DDSCAPS_MODEX | DDSCAPS_RESERVED2 | 0x01000000u | 0x02000000u | DDSCAPS_ALLOCONLOAD | DDSCAPS_VIDEOPORT - | DDSCAPS_STANDARDVGAMODE | DDSCAPS_OPTIMIZED;
- caps_always = DDSCAPS_FLIP + static const DWORD caps_always = DDSCAPS_BACKBUFFER + | DDSCAPS_FLIP | DDSCAPS_OFFSCREENPLAIN | DDSCAPS_PRIMARYSURFACE | DDSCAPS_TEXTURE - | DDSCAPS_ZBUFFER - | DDSCAPS_MIPMAP; - - caps_hal = DDSCAPS_BACKBUFFER - | DDSCAPS_COMPLEX - | DDSCAPS_FRONTBUFFER | DDSCAPS_3DDEVICE + | DDSCAPS_ZBUFFER | DDSCAPS_VIDEOMEMORY - | DDSCAPS_LOCALVIDMEM - | DDSCAPS_NONLOCALVIDMEM; + | DDSCAPS_MIPMAP;
ddraw = create_ddraw(); ok(!!ddraw, "Failed to create a ddraw object.\n"); @@ -15332,14 +15328,14 @@ static void test_caps(void) if (hal_caps.ddsCaps.dwCaps) { ok(!(hal_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_hal), + todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); } - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + todo_wine ok(hel_caps.ddsCaps.dwCaps == caps_hel, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + + ok(!(hal_caps.dwZBufferBitDepths & ~(DDBD_16 | DDBD_24 | DDBD_32)), + "Got HAL depth caps %#lx.\n", hal_caps.dwZBufferBitDepths); + todo_wine ok(hel_caps.dwZBufferBitDepths == DDBD_16, "Got HEL depth caps %#lx.\n", hel_caps.dwZBufferBitDepths);
IDirectDraw2_Release(ddraw);
@@ -15365,53 +15361,38 @@ static void test_caps(void) hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
ok(!(hal_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_hal), + todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - if (is_ddraw64) - { - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - } - else - { - todo_wine ok(!hel_caps.ddsCaps.dwCaps, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - } + todo_wine ok(!(hel_caps.ddsCaps.dwCaps & ~(DDSCAPS_STANDARDVGAMODE | DDSCAPS_MODEX)), + "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps);
IDirectDraw2_Release(ddraw); }
hr = DirectDrawCreate((GUID *)DDCREATE_EMULATIONONLY, &ddraw1, NULL); - ok(hr == DD_OK || (is_ddraw64 && hr == E_FAIL), "Got unexpected hr %#lx.\n", hr); - if (SUCCEEDED(hr)) - { - hr = IDirectDraw_QueryInterface(ddraw1, &IID_IDirectDraw2, (void **)&ddraw); - ok(hr == DD_OK, "Got unexpected hr %#lx.\n", hr); - IDirectDraw_Release(ddraw1); + ok(hr == DD_OK, "Got unexpected hr %#lx.\n", hr); + hr = IDirectDraw_QueryInterface(ddraw1, &IID_IDirectDraw2, (void **)&ddraw); + ok(hr == DD_OK, "Got unexpected hr %#lx.\n", hr); + IDirectDraw_Release(ddraw1);
- memset(&hal_caps, 0, sizeof(hal_caps)); - memset(&hel_caps, 0, sizeof(hel_caps)); - hal_caps.dwSize = sizeof(hal_caps); - hel_caps.dwSize = sizeof(hel_caps); - hr = IDirectDraw2_GetCaps(ddraw, &hal_caps, &hel_caps); - ok(hr == DD_OK, "Got unexpected hr %#lx.\n", hr); - ok(hal_caps.ddsOldCaps.dwCaps == hal_caps.ddsCaps.dwCaps, - "Got unexpected caps %#lx, expected %#lx.\n", - hal_caps.ddsOldCaps.dwCaps, hal_caps.ddsCaps.dwCaps); - ok(hel_caps.ddsOldCaps.dwCaps == hel_caps.ddsCaps.dwCaps, - "Got unexpected caps %#lx, expected %#lx.\n", - hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps); + memset(&hal_caps, 0, sizeof(hal_caps)); + memset(&hel_caps, 0, sizeof(hel_caps)); + hal_caps.dwSize = sizeof(hal_caps); + hel_caps.dwSize = sizeof(hel_caps); + hr = IDirectDraw2_GetCaps(ddraw, &hal_caps, &hel_caps); + ok(hr == DD_OK, "Got unexpected hr %#lx.\n", hr); + ok(hal_caps.ddsOldCaps.dwCaps == hal_caps.ddsCaps.dwCaps, + "Got unexpected caps %#lx, expected %#lx.\n", + hal_caps.ddsOldCaps.dwCaps, hal_caps.ddsCaps.dwCaps); + ok(hel_caps.ddsOldCaps.dwCaps == hel_caps.ddsCaps.dwCaps, + "Got unexpected caps %#lx, expected %#lx.\n", + hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
- todo_wine ok(!hal_caps.ddsCaps.dwCaps, "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + todo_wine ok(!(hal_caps.ddsCaps.dwCaps & ~(DDSCAPS_STANDARDVGAMODE | DDSCAPS_MODEX)), + "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); + todo_wine ok(hel_caps.ddsCaps.dwCaps == caps_hel, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps);
- IDirectDraw2_Release(ddraw); - } + IDirectDraw2_Release(ddraw); }
static void test_d32_support(void) diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 683530c8e2d..f73cf9efe7c 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -18013,44 +18013,40 @@ static void test_clipper_refcount(void)
static void test_caps(void) { - DWORD caps_never, caps_always, caps_hal; DDCAPS hal_caps, hel_caps; IDirectDraw4 *ddraw; IDirectDraw *ddraw1; HRESULT hr; BOOL no3d;
- caps_never = DDSCAPS_RESERVED1 - | DDSCAPS_ALPHA + static const DWORD caps_hel = DDSCAPS_FLIP + | DDSCAPS_OFFSCREENPLAIN + | DDSCAPS_PALETTE + | DDSCAPS_PRIMARYSURFACE + | DDSCAPS_TEXTURE + | DDSCAPS_ZBUFFER + | DDSCAPS_MIPMAP; + + static const DWORD caps_never = DDSCAPS_RESERVED1 | DDSCAPS_PRIMARYSURFACELEFT - | DDSCAPS_SYSTEMMEMORY - | DDSCAPS_VISIBLE | DDSCAPS_WRITEONLY | DDSCAPS_LIVEVIDEO - | DDSCAPS_HWCODEC - | DDSCAPS_MODEX | DDSCAPS_RESERVED2 | 0x01000000u | 0x02000000u | DDSCAPS_ALLOCONLOAD | DDSCAPS_VIDEOPORT - | DDSCAPS_STANDARDVGAMODE | DDSCAPS_OPTIMIZED;
- caps_always = DDSCAPS_FLIP + static const DWORD caps_always = DDSCAPS_BACKBUFFER + | DDSCAPS_FLIP | DDSCAPS_OFFSCREENPLAIN | DDSCAPS_PRIMARYSURFACE | DDSCAPS_TEXTURE - | DDSCAPS_ZBUFFER - | DDSCAPS_MIPMAP; - - caps_hal = DDSCAPS_BACKBUFFER - | DDSCAPS_COMPLEX - | DDSCAPS_FRONTBUFFER | DDSCAPS_3DDEVICE + | DDSCAPS_ZBUFFER | DDSCAPS_VIDEOMEMORY - | DDSCAPS_LOCALVIDMEM - | DDSCAPS_NONLOCALVIDMEM; + | DDSCAPS_MIPMAP;
ddraw = create_ddraw(); ok(!!ddraw, "Failed to create a ddraw object.\n"); @@ -18072,14 +18068,14 @@ static void test_caps(void) if (hal_caps.ddsCaps.dwCaps) { ok(!(hal_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_hal), + todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); } - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + todo_wine ok(hel_caps.ddsCaps.dwCaps == caps_hel, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + + ok(!(hal_caps.dwZBufferBitDepths & ~(DDBD_16 | DDBD_24 | DDBD_32)), + "Got HAL depth caps %#lx.\n", hal_caps.dwZBufferBitDepths); + todo_wine ok(hel_caps.dwZBufferBitDepths == DDBD_16, "Got HEL depth caps %#lx.\n", hel_caps.dwZBufferBitDepths);
IDirectDraw4_Release(ddraw);
@@ -18105,10 +18101,10 @@ static void test_caps(void) hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
ok(!(hal_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_hal), + todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine ok(!hel_caps.ddsCaps.dwCaps, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + todo_wine ok(!(hel_caps.ddsCaps.dwCaps & ~(DDSCAPS_STANDARDVGAMODE | DDSCAPS_MODEX)), + "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps);
IDirectDraw4_Release(ddraw); } @@ -18132,11 +18128,9 @@ static void test_caps(void) "Got unexpected caps %#lx, expected %#lx.\n", hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
- todo_wine ok(!hal_caps.ddsCaps.dwCaps, "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + todo_wine ok(!(hal_caps.ddsCaps.dwCaps & ~(DDSCAPS_STANDARDVGAMODE | DDSCAPS_MODEX)), + "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); + todo_wine ok(hel_caps.ddsCaps.dwCaps == caps_hel, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps);
IDirectDraw4_Release(ddraw); } diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index 547971a9368..1ccfc5638a6 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -18158,43 +18158,39 @@ static void test_begin_end_state_block(void)
static void test_caps(void) { - DWORD caps_never, caps_always, caps_hal; DDCAPS hal_caps, hel_caps; IDirectDraw7 *ddraw; HRESULT hr; BOOL no3d;
- caps_never = DDSCAPS_RESERVED1 - | DDSCAPS_ALPHA + static const DWORD caps_hel = DDSCAPS_FLIP + | DDSCAPS_OFFSCREENPLAIN + | DDSCAPS_PALETTE + | DDSCAPS_PRIMARYSURFACE + | DDSCAPS_TEXTURE + | DDSCAPS_ZBUFFER + | DDSCAPS_MIPMAP; + + static const DWORD caps_never = DDSCAPS_RESERVED1 | DDSCAPS_PRIMARYSURFACELEFT - | DDSCAPS_SYSTEMMEMORY - | DDSCAPS_VISIBLE | DDSCAPS_WRITEONLY | DDSCAPS_LIVEVIDEO - | DDSCAPS_HWCODEC - | DDSCAPS_MODEX | DDSCAPS_RESERVED2 | 0x01000000u | 0x02000000u | DDSCAPS_ALLOCONLOAD | DDSCAPS_VIDEOPORT - | DDSCAPS_STANDARDVGAMODE | DDSCAPS_OPTIMIZED;
- caps_always = DDSCAPS_FLIP + static const DWORD caps_always = DDSCAPS_BACKBUFFER + | DDSCAPS_FLIP | DDSCAPS_OFFSCREENPLAIN | DDSCAPS_PRIMARYSURFACE | DDSCAPS_TEXTURE - | DDSCAPS_ZBUFFER - | DDSCAPS_MIPMAP; - - caps_hal = DDSCAPS_BACKBUFFER - | DDSCAPS_COMPLEX - | DDSCAPS_FRONTBUFFER | DDSCAPS_3DDEVICE + | DDSCAPS_ZBUFFER | DDSCAPS_VIDEOMEMORY - | DDSCAPS_LOCALVIDMEM - | DDSCAPS_NONLOCALVIDMEM; + | DDSCAPS_MIPMAP;
ddraw = create_ddraw(); ok(!!ddraw, "Failed to create a ddraw object.\n"); @@ -18216,14 +18212,14 @@ static void test_caps(void) if (hal_caps.ddsCaps.dwCaps) { ok(!(hal_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_hal), + todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); } - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + todo_wine ok(hel_caps.ddsCaps.dwCaps == caps_hel, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + + ok(!(hal_caps.dwZBufferBitDepths & ~(DDBD_16 | DDBD_24 | DDBD_32)), + "Got HAL depth caps %#lx.\n", hal_caps.dwZBufferBitDepths); + todo_wine ok(hel_caps.dwZBufferBitDepths == DDBD_16, "Got HEL depth caps %#lx.\n", hel_caps.dwZBufferBitDepths);
IDirectDraw7_Release(ddraw);
@@ -18246,10 +18242,10 @@ static void test_caps(void) hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
ok(!(hal_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_hal), + todo_wine_if(no3d) ok(!(~hal_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - todo_wine ok(!hel_caps.ddsCaps.dwCaps, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + todo_wine ok(!(hel_caps.ddsCaps.dwCaps & ~(DDSCAPS_STANDARDVGAMODE | DDSCAPS_MODEX)), + "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps);
IDirectDraw7_Release(ddraw); } @@ -18270,11 +18266,9 @@ static void test_caps(void) "Got unexpected caps %#lx, expected %#lx.\n", hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
- todo_wine ok(!hal_caps.ddsCaps.dwCaps, "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); - ok(!(hel_caps.ddsCaps.dwCaps & caps_never), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - ok(!(~hel_caps.ddsCaps.dwCaps & caps_always), "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); - todo_wine_if(!no3d) ok(!(hel_caps.ddsCaps.dwCaps & caps_hal), - "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps); + todo_wine ok(!(hal_caps.ddsCaps.dwCaps & ~(DDSCAPS_STANDARDVGAMODE | DDSCAPS_MODEX)), + "Got unexpected caps %#lx.\n", hal_caps.ddsCaps.dwCaps); + todo_wine ok(hel_caps.ddsCaps.dwCaps == caps_hel, "Got unexpected caps %#lx.\n", hel_caps.ddsCaps.dwCaps);
IDirectDraw7_Release(ddraw); }