2 /* DirectDraw Base Functions
4 * Copyright 1997-1999 Marcus Meissner
5 * Copyright 1998 Lionel Ulmer (most of Direct3D stuff)
19 #include "wine/exception.h"
22 #include "debugtools.h"
25 DEFAULT_DEBUG_CHANNEL(ddraw);
27 /******************************************************************************
28 * debug output functions
30 void _dump_DDBLTFX(DWORD flagmask) {
36 #define FE(x) { x, #x},
37 FE(DDBLTFX_ARITHSTRETCHY)
38 FE(DDBLTFX_MIRRORLEFTRIGHT)
39 FE(DDBLTFX_MIRRORUPDOWN)
44 FE(DDBLTFX_ZBUFFERRANGE)
45 FE(DDBLTFX_ZBUFFERBASEDEST)
48 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
49 if (flags[i].mask & flagmask)
50 DPRINTF("%s ",flags[i].name);
54 void _dump_DDOVERLAY(DWORD flagmask) {
60 #define FE(x) { x, #x},
62 FE(DDOVER_ALPHADESTCONSTOVERRIDE)
63 FE(DDOVER_ALPHADESTNEG)
64 FE(DDOVER_ALPHADESTSURFACEOVERRIDE)
65 FE(DDOVER_ALPHAEDGEBLEND)
67 FE(DDOVER_ALPHASRCCONSTOVERRIDE)
68 FE(DDOVER_ALPHASRCNEG)
69 FE(DDOVER_ALPHASRCSURFACEOVERRIDE)
72 FE(DDOVER_KEYDESTOVERRIDE)
74 FE(DDOVER_KEYSRCOVERRIDE)
76 FE(DDOVER_ADDDIRTYRECT)
77 FE(DDOVER_REFRESHDIRTYRECTS)
82 FE(DDOVER_OVERRIDEBOBWEAVE)
83 FE(DDOVER_INTERLEAVED)
86 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
87 if (flags[i].mask & flagmask)
88 DPRINTF("%s ",flags[i].name);
92 void _dump_DDBLTFAST(DWORD flagmask) {
98 #define FE(x) { x, #x},
99 FE(DDBLTFAST_NOCOLORKEY)
100 FE(DDBLTFAST_SRCCOLORKEY)
101 FE(DDBLTFAST_DESTCOLORKEY)
105 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
106 if (flags[i].mask & flagmask)
107 DPRINTF("%s ",flags[i].name);
111 void _dump_DDBLT(DWORD flagmask) {
117 #define FE(x) { x, #x},
119 FE(DDBLT_ALPHADESTCONSTOVERRIDE)
120 FE(DDBLT_ALPHADESTNEG)
121 FE(DDBLT_ALPHADESTSURFACEOVERRIDE)
122 FE(DDBLT_ALPHAEDGEBLEND)
124 FE(DDBLT_ALPHASRCCONSTOVERRIDE)
125 FE(DDBLT_ALPHASRCNEG)
126 FE(DDBLT_ALPHASRCSURFACEOVERRIDE)
132 FE(DDBLT_KEYDESTOVERRIDE)
134 FE(DDBLT_KEYSRCOVERRIDE)
136 FE(DDBLT_ROTATIONANGLE)
138 FE(DDBLT_ZBUFFERDESTCONSTOVERRIDE)
139 FE(DDBLT_ZBUFFERDESTOVERRIDE)
140 FE(DDBLT_ZBUFFERSRCCONSTOVERRIDE)
141 FE(DDBLT_ZBUFFERSRCOVERRIDE)
146 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
147 if (flags[i].mask & flagmask)
148 DPRINTF("%s ",flags[i].name);
152 void _dump_DDSCAPS(void *in) {
158 #define FE(x) { x, #x},
159 FE(DDSCAPS_RESERVED1)
161 FE(DDSCAPS_BACKBUFFER)
164 FE(DDSCAPS_FRONTBUFFER)
165 FE(DDSCAPS_OFFSCREENPLAIN)
168 FE(DDSCAPS_PRIMARYSURFACE)
169 FE(DDSCAPS_PRIMARYSURFACELEFT)
170 FE(DDSCAPS_SYSTEMMEMORY)
173 FE(DDSCAPS_VIDEOMEMORY)
175 FE(DDSCAPS_WRITEONLY)
178 FE(DDSCAPS_LIVEVIDEO)
182 FE(DDSCAPS_RESERVED2)
183 FE(DDSCAPS_ALLOCONLOAD)
184 FE(DDSCAPS_VIDEOPORT)
185 FE(DDSCAPS_LOCALVIDMEM)
186 FE(DDSCAPS_NONLOCALVIDMEM)
187 FE(DDSCAPS_STANDARDVGAMODE)
188 FE(DDSCAPS_OPTIMIZED)
191 DWORD flagmask = *((DWORD *) in);
192 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
193 if (flags[i].mask & flagmask)
194 DPRINTF("%s ",flags[i].name);
197 void _dump_pixelformat_flag(DWORD flagmask) {
203 #define FE(x) { x, #x},
207 FE(DDPF_PALETTEINDEXED4)
208 FE(DDPF_PALETTEINDEXEDTO8)
209 FE(DDPF_PALETTEINDEXED8)
215 FE(DDPF_PALETTEINDEXED1)
216 FE(DDPF_PALETTEINDEXED2)
220 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
221 if (flags[i].mask & flagmask)
222 DPRINTF("%s ",flags[i].name);
225 void _dump_paletteformat(DWORD dwFlags) {
231 #define FE(x) { x, #x},
233 FE(DDPCAPS_8BITENTRIES)
235 FE(DDPCAPS_INITIALIZE)
236 FE(DDPCAPS_PRIMARYSURFACE)
237 FE(DDPCAPS_PRIMARYSURFACELEFT)
245 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
246 if (flags[i].mask & dwFlags)
247 DPRINTF("%s ",flags[i].name);
251 void _dump_pixelformat(void *in) {
252 LPDDPIXELFORMAT pf = (LPDDPIXELFORMAT) in;
255 _dump_pixelformat_flag(pf->dwFlags);
256 if (pf->dwFlags & DDPF_FOURCC) {
257 DPRINTF(", dwFourCC code '%c%c%c%c' (0x%08lx) - %ld bits per pixel",
258 (unsigned char)( pf->dwFourCC &0xff),
259 (unsigned char)((pf->dwFourCC>> 8)&0xff),
260 (unsigned char)((pf->dwFourCC>>16)&0xff),
261 (unsigned char)((pf->dwFourCC>>24)&0xff),
266 if (pf->dwFlags & DDPF_RGB) {
268 DPRINTF(", RGB bits: %ld, ", pf->u.dwRGBBitCount);
269 switch (pf->u.dwRGBBitCount) {
270 case 4: cmd = "%1lx"; break;
271 case 8: cmd = "%02lx"; break;
272 case 16: cmd = "%04lx"; break;
273 case 24: cmd = "%06lx"; break;
274 case 32: cmd = "%08lx"; break;
275 default: ERR("Unexpected bit depth !\n"); cmd = "%d"; break;
277 DPRINTF(" R "); DPRINTF(cmd, pf->u1.dwRBitMask);
278 DPRINTF(" G "); DPRINTF(cmd, pf->u2.dwGBitMask);
279 DPRINTF(" B "); DPRINTF(cmd, pf->u3.dwBBitMask);
280 if (pf->dwFlags & DDPF_ALPHAPIXELS) {
281 DPRINTF(" A "); DPRINTF(cmd, pf->u4.dwRGBAlphaBitMask);
283 if (pf->dwFlags & DDPF_ZPIXELS) {
284 DPRINTF(" Z "); DPRINTF(cmd, pf->u4.dwRGBZBitMask);
287 if (pf->dwFlags & DDPF_ZBUFFER) {
288 DPRINTF(", Z bits : %ld", pf->u.dwZBufferBitDepth);
290 if (pf->dwFlags & DDPF_ALPHA) {
291 DPRINTF(", Alpha bits : %ld", pf->u.dwAlphaBitDepth);
296 void _dump_colorkeyflag(DWORD ck) {
302 #define FE(x) { x, #x},
303 FE(DDCKEY_COLORSPACE)
305 FE(DDCKEY_DESTOVERLAY)
307 FE(DDCKEY_SRCOVERLAY)
310 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
311 if (flags[i].mask & ck)
312 DPRINTF("%s ",flags[i].name);
315 static void _dump_DWORD(void *in) {
316 DPRINTF("%ld", *((DWORD *) in));
318 static void _dump_PTR(void *in) {
319 DPRINTF("%p", *((void **) in));
321 void _dump_DDCOLORKEY(void *in) {
322 DDCOLORKEY *ddck = (DDCOLORKEY *) in;
324 DPRINTF(" Low : %ld - High : %ld", ddck->dwColorSpaceLowValue, ddck->dwColorSpaceHighValue);
327 void _dump_surface_desc(DDSURFACEDESC *lpddsd) {
332 void (*func)(void *);
334 } flags[16], *fe = flags;
335 #define FE(x,f,e) do { fe->mask = x; fe->name = #x; fe->func = f; fe->elt = (void *) &(lpddsd->e); fe++; } while(0)
336 FE(DDSD_CAPS, _dump_DDSCAPS, ddsCaps);
337 FE(DDSD_HEIGHT, _dump_DWORD, dwHeight);
338 FE(DDSD_WIDTH, _dump_DWORD, dwWidth);
339 FE(DDSD_PITCH, _dump_DWORD, lPitch);
340 FE(DDSD_BACKBUFFERCOUNT, _dump_DWORD, dwBackBufferCount);
341 FE(DDSD_ZBUFFERBITDEPTH, _dump_DWORD, u.dwZBufferBitDepth);
342 FE(DDSD_ALPHABITDEPTH, _dump_DWORD, dwAlphaBitDepth);
343 FE(DDSD_PIXELFORMAT, _dump_pixelformat, ddpfPixelFormat);
344 FE(DDSD_CKDESTOVERLAY, _dump_DDCOLORKEY, ddckCKDestOverlay);
345 FE(DDSD_CKDESTBLT, _dump_DDCOLORKEY, ddckCKDestBlt);
346 FE(DDSD_CKSRCOVERLAY, _dump_DDCOLORKEY, ddckCKSrcOverlay);
347 FE(DDSD_CKSRCBLT, _dump_DDCOLORKEY, ddckCKSrcBlt);
348 FE(DDSD_MIPMAPCOUNT, _dump_DWORD, u.dwMipMapCount);
349 FE(DDSD_REFRESHRATE, _dump_DWORD, u.dwRefreshRate);
350 FE(DDSD_LINEARSIZE, _dump_DWORD, u1.dwLinearSize);
351 FE(DDSD_LPSURFACE, _dump_PTR, u1.lpSurface);
354 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
355 if (flags[i].mask & lpddsd->dwFlags) {
356 DPRINTF(" - %s : ",flags[i].name);
357 flags[i].func(flags[i].elt);
361 void _dump_cooperativelevel(DWORD cooplevel) {
367 #define FE(x) { x, #x},
369 FE(DDSCL_ALLOWREBOOT)
370 FE(DDSCL_NOWINDOWCHANGES)
374 FE(DDSCL_SETFOCUSWINDOW)
375 FE(DDSCL_SETDEVICEWINDOW)
376 FE(DDSCL_CREATEDEVICEWINDOW)
380 if (TRACE_ON(ddraw)) {
382 for (i=0;i<sizeof(flags)/sizeof(flags[0]);i++)
383 if (flags[i].mask & cooplevel)
384 DPRINTF("%s ",flags[i].name);