From 081f39044fc62d6b63e072b2ee70db6b5fd3ee77 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20D=C3=B6singer?= Date: Mon, 29 Aug 2011 20:30:00 +0200 Subject: [PATCH] ddraw: Use a Z format suported by the driver in the visual test. --- dlls/ddraw/tests/visual.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/dlls/ddraw/tests/visual.c b/dlls/ddraw/tests/visual.c index 9026f979091..7a390549af6 100644 --- a/dlls/ddraw/tests/visual.c +++ b/dlls/ddraw/tests/visual.c @@ -54,13 +54,24 @@ static BOOL color_match(D3DCOLOR c1, D3DCOLOR c2, BYTE max_diff) return TRUE; } +static HRESULT WINAPI enum_z_fmt(DDPIXELFORMAT *fmt, void *ctx) +{ + DDPIXELFORMAT *zfmt = ctx; + + if(U1(fmt)->dwZBufferBitDepth > U1(zfmt)->dwZBufferBitDepth) + { + *zfmt = *fmt; + } + return DDENUMRET_OK; +} + static BOOL createObjects(void) { HRESULT hr; HMODULE hmod = GetModuleHandleA("ddraw.dll"); WNDCLASS wc = {0}; DDSURFACEDESC2 ddsd; - + DDPIXELFORMAT zfmt; if(!hmod) return FALSE; pDirectDrawCreateEx = (void*)GetProcAddress(hmod, "DirectDrawCreateEx"); @@ -106,14 +117,16 @@ static BOOL createObjects(void) hr = IDirectDraw7_CreateSurface(DirectDraw, &ddsd, &Surface, NULL); if(FAILED(hr)) goto err; + memset(&zfmt, 0, sizeof(zfmt)); + hr = IDirect3D7_EnumZBufferFormats(Direct3D, &IID_IDirect3DTnLHalDevice, enum_z_fmt, &zfmt); + if (FAILED(hr)) goto err; + if (zfmt.dwSize == 0) goto err; + memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT; ddsd.ddsCaps.dwCaps = DDSCAPS_ZBUFFER; - U4(ddsd).ddpfPixelFormat.dwSize = sizeof(U4(ddsd).ddpfPixelFormat); - U4(ddsd).ddpfPixelFormat.dwFlags = DDPF_ZBUFFER; - U1(U4(ddsd).ddpfPixelFormat).dwZBufferBitDepth = 32; - U3(U4(ddsd).ddpfPixelFormat).dwZBitMask = 0x00ffffff; + U4(ddsd).ddpfPixelFormat = zfmt; ddsd.dwWidth = 640; ddsd.dwHeight = 480; hr = IDirectDraw7_CreateSurface(DirectDraw, &ddsd, &depth_buffer, NULL); -- 2.11.4.GIT