=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: ddraw: Use a Z format suported by the driver in the visual test.
Alexandre Julliard
julliard at winehq.org
Mon Sep 12 11:42:57 CDT 2011
Module: wine
Branch: master
Commit: 081f39044fc62d6b63e072b2ee70db6b5fd3ee77
URL: http://source.winehq.org/git/wine.git/?a=commit;h=081f39044fc62d6b63e072b2ee70db6b5fd3ee77
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Mon Aug 29 20:30:00 2011 +0200
ddraw: Use a Z format suported by the driver in the visual test.
---
dlls/ddraw/tests/visual.c | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/dlls/ddraw/tests/visual.c b/dlls/ddraw/tests/visual.c
index 9026f97..7a39054 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);
More information about the wine-cvs
mailing list