[DDK]
[reactos.git] / include / ddk / ddrawi.h
1 /*
2 * DirectDraw driver interface
3 * (DirectX 7 version)
4 *
5 * Copyright (C) 2001 Ove Kaaven
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22 #ifndef __DDRAWI_INCLUDED__
23 #define __DDRAWI_INCLUDED__
24
25 /* Helper macro to enable gcc's extension. */
26 #ifndef __GNU_EXTENSION
27 #ifdef __GNUC__
28 #define __GNU_EXTENSION __extension__
29 #else
30 #define __GNU_EXTENSION
31 #endif
32 #endif
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 #define OBJECT_ISROOT 0x80000000
39
40 #include <ddraw.h>
41 #include <dvp.h>
42 #include <ddkernel.h>
43 #include <dmemmgr.h>
44
45 #define DDAPI WINAPI
46
47 #define VALID_ALIGNMENT(align) \
48 (!((align==0)||(align%2)!= 0 ))
49
50 /* the DirectDraw versions */
51 #define DD_VERSION 0x0200 /* compatibility version */
52 #define DD_RUNTIME_VERSION 0x0902 /* actual version */
53
54 /* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */
55 #define DD_HAL_VERSION 0x0100
56
57 /* more DCICOMMAND escapes */
58 #ifndef DCICOMMAND
59 #define DCICOMMAND 3075
60 #endif
61
62 #define DDCREATEDRIVEROBJECT 10
63 #define DDGET32BITDRIVERNAME 11
64 #define DDNEWCALLBACKFNS 12
65 #define DDVERSIONINFO 13
66
67
68
69 #define DDUNSUPPORTEDMODE ((DWORD) -1)
70
71 #include "dciddi.h"
72
73 #ifndef CCHDEVICENAME
74 #define CCHDEVICENAME 32
75 #endif
76 #define MAX_DRIVER_NAME CCHDEVICENAME
77
78 #define DDHAL_DRIVER_DLLNAME "DDRAW16.DLL"
79 #define DDHAL_APP_DLLNAME "DDRAW.DLL"
80
81
82
83 /* GUID */
84 #ifdef _WIN32
85 DEFINE_GUID(GUID_MiscellaneousCallbacks, 0xefd60cc0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
86 DEFINE_GUID(GUID_VideoPortCallbacks, 0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
87 DEFINE_GUID(GUID_ColorControlCallbacks, 0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
88 DEFINE_GUID(GUID_VideoPortCaps, 0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
89 DEFINE_GUID(GUID_D3DCallbacks2, 0x0ba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
90 DEFINE_GUID(GUID_D3DCallbacks3, 0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e);
91 DEFINE_GUID(GUID_NonLocalVidMemCaps, 0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37);
92 DEFINE_GUID(GUID_KernelCallbacks, 0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
93 DEFINE_GUID(GUID_KernelCaps, 0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
94 DEFINE_GUID(GUID_D3DExtendedCaps, 0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
95 DEFINE_GUID(GUID_ZPixelFormats, 0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae);
96 DEFINE_GUID(GUID_DDMoreSurfaceCaps, 0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5);
97 DEFINE_GUID(GUID_DDStereoMode, 0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6);
98 DEFINE_GUID(GUID_OptSurfaceKmodeInfo, 0xe05c8472, 0x51d4, 0x11d1, 0x8c, 0xce, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
99 DEFINE_GUID(GUID_OptSurfaceUmodeInfo, 0x9d792804, 0x5fa8, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
100 DEFINE_GUID(GUID_UserModeDriverInfo, 0xf0b0e8e2, 0x5f97, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
101 DEFINE_GUID(GUID_UserModeDriverPassword, 0x97f861b6, 0x60a1, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
102 DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
103 DEFINE_GUID(GUID_MotionCompCallbacks, 0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e);
104 DEFINE_GUID(GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);
105 #endif
106
107 #ifndef _WIN32
108 #undef E_NOTIMPL
109 #undef E_OUTOFMEMORY
110 #undef E_INVALIDARG
111 #undef E_FAIL
112 #define E_NOTIMPL 0x80004001L
113 #define E_OUTOFMEMORY 0x8007000EL
114 #define E_INVALIDARG 0x80070057L
115 #define E_FAIL 0x80004005L
116 #endif
117
118
119 /*****************************************************************************
120 * Initialization stuff
121 */
122 typedef struct {
123 char szName[260];
124 char szEntryPoint[64];
125 DWORD dwContext;
126 } DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA;
127
128 typedef struct {
129 DWORD dwHALVersion;
130 ULONG_PTR dwReserved1;
131 ULONG_PTR dwReserved2;
132 } DDVERSIONDATA,*LPDDVERSIONDATA;
133
134 typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext);
135
136
137
138 /* predeclare some structures */
139 typedef struct _DDHALINFO *LPDDHALINFO;
140 typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT;
141
142 #ifndef DDRAWI_DIRECTDRAW_DEFINED
143 typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL;
144 typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL;
145 #define DDRAWI_DIRECTDRAW_DEFINED
146 #endif
147
148 typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT;
149
150 #ifndef DDRAWI_DDRAWSURFACE_DEFINED
151 typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL;
152 #define DDRAWI_DDRAWSURFACE_DEFINED
153 #endif
154
155 typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL;
156 typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE;
157 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE;
158 typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT;
159 typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL;
160 typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL;
161 typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT;
162 typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL;
163 typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL;
164 typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT;
165 typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL;
166 typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT;
167 typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL;
168
169 /*****************************************************************************
170 * driver->ddraw callbacks
171 */
172 typedef BOOL (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset);
173 typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight);
174 typedef void (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem);
175
176 typedef struct {
177 DWORD dwSize;
178 LPDDHAL_SETINFO lpSetInfo;
179 LPDDHAL_VIDMEMALLOC lpVidMemAlloc;
180 LPDDHAL_VIDMEMFREE lpVidMemFree;
181 } DDHALDDRAWFNS,*LPDDHALDDRAWFNS;
182
183 /*****************************************************************************
184 * mode info structure
185 */
186 typedef struct _DDHALMODEINFO {
187 DWORD dwWidth;
188 DWORD dwHeight;
189 LONG lPitch;
190 DWORD dwBPP;
191 WORD wFlags;
192 WORD wRefreshRate;
193 DWORD dwRBitMask;
194 DWORD dwGBitMask;
195 DWORD dwBBitMask;
196 DWORD dwAlphaBitMask;
197 } DDHALMODEINFO,*LPDDHALMODEINFO;
198
199
200
201
202 #define DDMODEINFO_PALETTIZED 0x0001
203 #define DDMODEINFO_MODEX 0x0002
204 #define DDMODEINFO_UNSUPPORTED 0x0004
205 #define DDMODEINFO_STANDARDVGA 0x0008
206 #define DDMODEINFO_MAXREFRESH 0x0010
207 #define DDMODEINFO_STEREO 0x0020
208
209 /*****************************************************************************
210 * video memory info structure
211 */
212 typedef struct _VIDMEM {
213 DWORD dwFlags;
214 FLATPTR fpStart;
215 __GNU_EXTENSION union {
216 FLATPTR fpEnd;
217 DWORD dwWidth;
218 };
219 DDSCAPS ddsCaps;
220 DDSCAPS ddsCapsAlt;
221 __GNU_EXTENSION union {
222 LPVMEMHEAP lpHeap;
223 DWORD dwHeight;
224 };
225 } VIDMEM;
226
227
228 #define VIDMEM_ISLINEAR 0x00000001l
229 #define VIDMEM_ISRECTANGULAR 0x00000002l
230 #define VIDMEM_ISHEAP 0x00000004l
231 #define VIDMEM_ISNONLOCAL 0x00000008l
232 #define VIDMEM_ISWC 0x00000010l
233 #define VIDMEM_HEAPDISABLED 0x00000020l
234
235 typedef struct _VIDMEMINFO {
236 FLATPTR fpPrimary;
237 DWORD dwFlags;
238 DWORD dwDisplayWidth;
239 DWORD dwDisplayHeight;
240 LONG lDisplayPitch;
241 DDPIXELFORMAT ddpfDisplay;
242 DWORD dwOffscreenAlign;
243 DWORD dwOverlayAlign;
244 DWORD dwTextureAlign;
245 DWORD dwZBufferAlign;
246 DWORD dwAlphaAlign;
247 DWORD dwNumHeaps;
248 LPVIDMEM pvmList;
249 } VIDMEMINFO,*LPVIDMEMINFO;
250
251
252
253 typedef struct _HEAPALIAS {
254 FLATPTR fpVidMem;
255 LPVOID lpAlias;
256 DWORD dwAliasSize;
257 } HEAPALIAS,*LPHEAPALIAS;
258
259 typedef struct _HEAPALIASINFO {
260 DWORD dwRefCnt;
261 DWORD dwFlags;
262 DWORD dwNumHeaps;
263 LPHEAPALIAS lpAliases;
264 } HEAPALIASINFO,*LPHEAPALIASINFO;
265
266 #define HEAPALIASINFO_MAPPEDREAL 0x00000001
267 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
268
269 /*****************************************************************************
270 * capabilities structures
271 */
272 typedef struct _DDCORECAPS {
273 DWORD dwSize;
274 DWORD dwCaps;
275 DWORD dwCaps2;
276 DWORD dwCKeyCaps;
277 DWORD dwFXCaps;
278 DWORD dwFXAlphaCaps;
279 DWORD dwPalCaps;
280 DWORD dwSVCaps;
281 DWORD dwAlphaBltConstBitDepths;
282 DWORD dwAlphaBltPixelBitDepths;
283 DWORD dwAlphaBltSurfaceBitDepths;
284 DWORD dwAlphaOverlayConstBitDepths;
285 DWORD dwAlphaOverlayPixelBitDepths;
286 DWORD dwAlphaOverlaySurfaceBitDepths;
287 DWORD dwZBufferBitDepths;
288 DWORD dwVidMemTotal;
289 DWORD dwVidMemFree;
290 DWORD dwMaxVisibleOverlays;
291 DWORD dwCurrVisibleOverlays;
292 DWORD dwNumFourCCCodes;
293 DWORD dwAlignBoundarySrc;
294 DWORD dwAlignSizeSrc;
295 DWORD dwAlignBoundaryDest;
296 DWORD dwAlignSizeDest;
297 DWORD dwAlignStrideAlign;
298 DWORD dwRops[DD_ROP_SPACE];
299 DDSCAPS ddsCaps;
300 DWORD dwMinOverlayStretch;
301 DWORD dwMaxOverlayStretch;
302 DWORD dwMinLiveVideoStretch;
303 DWORD dwMaxLiveVideoStretch;
304 DWORD dwMinHwCodecStretch;
305 DWORD dwMaxHwCodecStretch;
306 DWORD dwReserved1;
307 DWORD dwReserved2;
308 DWORD dwReserved3;
309 DWORD dwSVBCaps;
310 DWORD dwSVBCKeyCaps;
311 DWORD dwSVBFXCaps;
312 DWORD dwSVBRops[DD_ROP_SPACE];
313 DWORD dwVSBCaps;
314 DWORD dwVSBCKeyCaps;
315 DWORD dwVSBFXCaps;
316 DWORD dwVSBRops[DD_ROP_SPACE];
317 DWORD dwSSBCaps;
318 DWORD dwSSBCKeyCaps;
319 DWORD dwSSBFXCaps;
320 DWORD dwSSBRops[DD_ROP_SPACE];
321 DWORD dwMaxVideoPorts;
322 DWORD dwCurrVideoPorts;
323 DWORD dwSVBCaps2;
324 } DDCORECAPS,*LPDDCORECAPS;
325
326 typedef struct _DDNONLOCALVIDMEMCAPS {
327 DWORD dwSize;
328 DWORD dwNLVBCaps;
329 DWORD dwNLVBCaps2;
330 DWORD dwNLVBCKeyCaps;
331 DWORD dwNLVBFXCaps;
332 DWORD dwNLVBRops[DD_ROP_SPACE];
333 } DDNONLOCALVIDMEMCAPS,*LPDDNONLOCALVIDMEMCAPS;
334
335
336
337 #define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2
338 #define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1
339 #define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
340
341
342
343
344 /*****************************************************************************
345 * ddraw->driver callbacks
346 */
347 #define DDHAL_DRIVER_NOTHANDLED 0x00000000l
348 #define DDHAL_DRIVER_HANDLED 0x00000001l
349 #define DDHAL_DRIVER_NOCKEYHW 0x00000002l
350
351 typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA;
352 typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA;
353 typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA;
354 typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA;
355 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA;
356 typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA;
357 typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA;
358 typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA;
359 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA;
360 typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA;
361
362 typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA);
363 typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA);
364 typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA);
365 typedef DWORD (PASCAL *LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA);
366 typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA);
367 typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA );
368 typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA);
369 typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA);
370 typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA);
371 typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA);
372
373
374
375 typedef struct _DDHAL_DDCALLBACKS {
376 DWORD dwSize;
377 DWORD dwFlags;
378 LPDDHAL_DESTROYDRIVER DestroyDriver;
379 LPDDHAL_CREATESURFACE CreateSurface;
380 LPDDHAL_SETCOLORKEY SetColorKey;
381 LPDDHAL_SETMODE SetMode;
382 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank;
383 LPDDHAL_CANCREATESURFACE CanCreateSurface;
384 LPDDHAL_CREATEPALETTE CreatePalette;
385 LPDDHAL_GETSCANLINE GetScanLine;
386 /* DirectX 2 */
387 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
388 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface;
389 } DDHAL_DDCALLBACKS,*LPDDHAL_DDCALLBACKS;
390
391
392
393 typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA;
394 typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA;
395 typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA;
396 typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA;
397 typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA;
398 typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA;
399 typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA;
400 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA;
401 typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA;
402 typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA;
403 typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA;
404 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA;
405 typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA;
406
407 typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA);
408 typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA);
409 typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA);
410 typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA);
411 typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA);
412 typedef DWORD (PASCAL *LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA);
413 typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA);
414 typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA);
415 typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA);
416 typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA);
417 typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA);
418 typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA);
419 typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA);
420
421 typedef struct _DDHAL_DDSURFACECALLBACKS {
422 DWORD dwSize;
423 DWORD dwFlags;
424 LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
425 LPDDHALSURFCB_FLIP Flip;
426 LPDDHALSURFCB_SETCLIPLIST SetClipList;
427 LPDDHALSURFCB_LOCK Lock;
428 LPDDHALSURFCB_UNLOCK Unlock;
429 LPDDHALSURFCB_BLT Blt;
430 LPDDHALSURFCB_SETCOLORKEY SetColorKey;
431 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface;
432 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus;
433 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus;
434 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;
435 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;
436 LPVOID reserved4;
437 LPDDHALSURFCB_SETPALETTE SetPalette;
438 } DDHAL_DDSURFACECALLBACKS,*LPDDHAL_DDSURFACECALLBACKS;
439
440
441
442 typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA;
443 typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA;
444
445 typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE)(LPDDHAL_DESTROYPALETTEDATA);
446 typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA);
447
448 typedef struct _DDHAL_DDPALETTECALLBACKS {
449 DWORD dwSize;
450 DWORD dwFlags;
451 LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
452 LPDDHALPALCB_SETENTRIES SetEntries;
453 } DDHAL_DDPALETTECALLBACKS,*LPDDHAL_DDPALETTECALLBACKS;
454
455 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF)(LPDDHAL_CANCREATESURFACEDATA);
456 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA);
457 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA);
458 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA);
459 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA);
460
461 typedef struct _DDHAL_DDEXEBUFCALLBACKS {
462 DWORD dwSize;
463 DWORD dwFlags;
464 LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer;
465 LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer;
466 LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer;
467 LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer;
468 LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer;
469 } DDHAL_DDEXEBUFCALLBACKS,*LPDDHAL_DDEXEBUFCALLBACKS;
470
471 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA *LPDDHAL_GETAVAILDRIVERMEMORYDATA;
472 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA *LPDDHAL_UPDATENONLOCALHEAPDATA;
473 typedef struct _DDHAL_GETHEAPALIGNMENTDATA *LPDDHAL_GETHEAPALIGNMENTDATA;
474
475 typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA);
476 typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP) (LPDDHAL_UPDATENONLOCALHEAPDATA);
477 typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT) (LPDDHAL_GETHEAPALIGNMENTDATA);
478
479 typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS {
480 DWORD dwSize;
481 DWORD dwFlags;
482 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory;
483 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap;
484 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment;
485 LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus;
486 } DDHAL_DDMISCELLANEOUSCALLBACKS,*LPDDHAL_DDMISCELLANEOUSCALLBACKS;
487
488 typedef struct _DDHAL_CREATESURFACEEXDATA *LPDDHAL_CREATESURFACEEXDATA;
489 typedef struct _DDHAL_GETDRIVERSTATEDATA *LPDDHAL_GETDRIVERSTATEDATA;
490 typedef struct _DDHAL_DESTROYDDLOCALDATA *LPDDHAL_DESTROYDDLOCALDATA;
491
492 typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA);
493 typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA);
494 typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA);
495
496 typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS {
497 DWORD dwSize;
498 DWORD dwFlags;
499 LPVOID Reserved;
500 LPDDHAL_CREATESURFACEEX CreateSurfaceEx;
501 LPDDHAL_GETDRIVERSTATE GetDriverState;
502 LPDDHAL_DESTROYDDLOCAL DestroyDDLocal;
503 } DDHAL_DDMISCELLANEOUS2CALLBACKS,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS;
504
505
506 typedef struct _DDHAL_CANCREATEVPORTDATA *LPDDHAL_CANCREATEVPORTDATA;
507 typedef struct _DDHAL_CREATEVPORTDATA *LPDDHAL_CREATEVPORTDATA;
508 typedef struct _DDHAL_FLIPVPORTDATA *LPDDHAL_FLIPVPORTDATA;
509 typedef struct _DDHAL_GETVPORTCONNECTDATA *LPDDHAL_GETVPORTCONNECTDATA;
510 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA *LPDDHAL_GETVPORTBANDWIDTHDATA;
511 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA *LPDDHAL_GETVPORTINPUTFORMATDATA;
512 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA *LPDDHAL_GETVPORTOUTPUTFORMATDATA;
513 typedef struct _DDHAL_GETVPORTFIELDDATA *LPDDHAL_GETVPORTFIELDDATA;
514 typedef struct _DDHAL_GETVPORTLINEDATA *LPDDHAL_GETVPORTLINEDATA;
515 typedef struct _DDHAL_DESTROYVPORTDATA *LPDDHAL_DESTROYVPORTDATA;
516 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA *LPDDHAL_GETVPORTFLIPSTATUSDATA;
517 typedef struct _DDHAL_UPDATEVPORTDATA *LPDDHAL_UPDATEVPORTDATA;
518 typedef struct _DDHAL_WAITFORVPORTSYNCDATA *LPDDHAL_WAITFORVPORTSYNCDATA;
519 typedef struct _DDHAL_GETVPORTSIGNALDATA *LPDDHAL_GETVPORTSIGNALDATA;
520 typedef struct _DDHAL_VPORTCOLORDATA *LPDDHAL_VPORTCOLORDATA;
521
522 typedef DWORD (PASCAL *LPDDHALVPORTCB_CANCREATEVIDEOPORT)(LPDDHAL_CANCREATEVPORTDATA);
523 typedef DWORD (PASCAL *LPDDHALVPORTCB_CREATEVIDEOPORT)(LPDDHAL_CREATEVPORTDATA);
524 typedef DWORD (PASCAL *LPDDHALVPORTCB_FLIP)(LPDDHAL_FLIPVPORTDATA);
525 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETBANDWIDTH)(LPDDHAL_GETVPORTBANDWIDTHDATA);
526 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETINPUTFORMATS)(LPDDHAL_GETVPORTINPUTFORMATDATA);
527 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETOUTPUTFORMATS)(LPDDHAL_GETVPORTOUTPUTFORMATDATA);
528 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFIELD)(LPDDHAL_GETVPORTFIELDDATA);
529 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETLINE)(LPDDHAL_GETVPORTLINEDATA);
530 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETVPORTCONNECT)(LPDDHAL_GETVPORTCONNECTDATA);
531 typedef DWORD (PASCAL *LPDDHALVPORTCB_DESTROYVPORT)(LPDDHAL_DESTROYVPORTDATA);
532 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFLIPSTATUS)(LPDDHAL_GETVPORTFLIPSTATUSDATA);
533 typedef DWORD (PASCAL *LPDDHALVPORTCB_UPDATE)(LPDDHAL_UPDATEVPORTDATA);
534 typedef DWORD (PASCAL *LPDDHALVPORTCB_WAITFORSYNC)(LPDDHAL_WAITFORVPORTSYNCDATA);
535 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETSIGNALSTATUS)(LPDDHAL_GETVPORTSIGNALDATA);
536 typedef DWORD (PASCAL *LPDDHALVPORTCB_COLORCONTROL)(LPDDHAL_VPORTCOLORDATA);
537
538 typedef struct _DDHAL_DDVIDEOPORTCALLBACKS
539 {
540 DWORD dwSize;
541 DWORD dwFlags;
542 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort;
543 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort;
544 LPDDHALVPORTCB_FLIP FlipVideoPort;
545 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth;
546 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats;
547 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats;
548 LPVOID lpReserved1;
549 LPDDHALVPORTCB_GETFIELD GetVideoPortField;
550 LPDDHALVPORTCB_GETLINE GetVideoPortLine;
551 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo;
552 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort;
553 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus;
554 LPDDHALVPORTCB_UPDATE UpdateVideoPort;
555 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync;
556 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus;
557 LPDDHALVPORTCB_COLORCONTROL ColorControl;
558 } DDHAL_DDVIDEOPORTCALLBACKS;
559
560
561 typedef struct _DDHAL_COLORCONTROLDATA *LPDDHAL_COLORCONTROLDATA;
562
563 typedef DWORD (PASCAL *LPDDHALCOLORCB_COLORCONTROL)(LPDDHAL_COLORCONTROLDATA);
564
565
566 typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS
567 {
568 DWORD dwSize;
569 DWORD dwFlags;
570 LPDDHALCOLORCB_COLORCONTROL ColorControl;
571 } DDHAL_DDCOLORCONTROLCALLBACKS;
572
573 typedef struct _DDHAL_SYNCSURFACEDATA *LPDDHAL_SYNCSURFACEDATA;
574 typedef struct _DDHAL_SYNCVIDEOPORTDATA *LPDDHAL_SYNCVIDEOPORTDATA;
575
576 typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCSURFACE)(LPDDHAL_SYNCSURFACEDATA);
577 typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCVIDEOPORT)(LPDDHAL_SYNCVIDEOPORTDATA);
578
579 typedef struct _DDHAL_DDKERNELCALLBACKS
580 {
581 DWORD dwSize;
582 DWORD dwFlags;
583 LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData;
584 LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData;
585 } DDHAL_DDKERNELCALLBACKS, *LPDDHAL_DDKERNELCALLBACKS;
586
587 typedef struct _DDHAL_GETMOCOMPGUIDSDATA *LPDDHAL_GETMOCOMPGUIDSDATA;
588 typedef struct _DDHAL_GETMOCOMPFORMATSDATA *LPDDHAL_GETMOCOMPFORMATSDATA;
589 typedef struct _DDHAL_CREATEMOCOMPDATA *LPDDHAL_CREATEMOCOMPDATA;
590 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA *LPDDHAL_GETMOCOMPCOMPBUFFDATA;
591 typedef struct _DDHAL_GETINTERNALMOCOMPDATA *LPDDHAL_GETINTERNALMOCOMPDATA;
592 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA *LPDDHAL_BEGINMOCOMPFRAMEDATA;
593 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA *LPDDHAL_ENDMOCOMPFRAMEDATA;
594 typedef struct _DDHAL_RENDERMOCOMPDATA *LPDDHAL_RENDERMOCOMPDATA;
595 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA *LPDDHAL_QUERYMOCOMPSTATUSDATA;
596 typedef struct _DDHAL_DESTROYMOCOMPDATA *LPDDHAL_DESTROYMOCOMPDATA;
597
598 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETGUIDS)( LPDDHAL_GETMOCOMPGUIDSDATA);
599 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETFORMATS)( LPDDHAL_GETMOCOMPFORMATSDATA);
600 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_CREATE)( LPDDHAL_CREATEMOCOMPDATA);
601 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETCOMPBUFFINFO)( LPDDHAL_GETMOCOMPCOMPBUFFDATA);
602 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETINTERNALINFO)( LPDDHAL_GETINTERNALMOCOMPDATA);
603 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_BEGINFRAME)( LPDDHAL_BEGINMOCOMPFRAMEDATA);
604 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_ENDFRAME)( LPDDHAL_ENDMOCOMPFRAMEDATA);
605 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_RENDER)( LPDDHAL_RENDERMOCOMPDATA);
606 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_QUERYSTATUS)( LPDDHAL_QUERYMOCOMPSTATUSDATA);
607 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_DESTROY)( LPDDHAL_DESTROYMOCOMPDATA);
608
609 typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS
610 {
611 DWORD dwSize;
612 DWORD dwFlags;
613 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids;
614 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats;
615 LPDDHALMOCOMPCB_CREATE CreateMoComp;
616 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo;
617 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo;
618 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame;
619 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame;
620 LPDDHALMOCOMPCB_RENDER RenderMoComp;
621 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus;
622 LPDDHALMOCOMPCB_DESTROY DestroyMoComp;
623 } DDHAL_DDMOTIONCOMPCALLBACKS, *LPDDHAL_DDMOTIONCOMPCALLBACKS;
624
625
626
627 typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE);
628
629
630
631 /*****************************************************************************
632 * driver info structure
633 *
634 * The HAL is queried for additional callbacks via the GetDriverInfo callback.
635 */
636 typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA;
637 typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA);
638
639
640 typedef struct _DDHAL_GETDRIVERINFODATA {
641 DWORD dwSize;
642 DWORD dwFlags;
643 GUID guidInfo;
644 DWORD dwExpectedSize;
645 LPVOID lpvData;
646 DWORD dwActualSize;
647 HRESULT ddRVal;
648 ULONG_PTR dwContext;
649
650 } DDHAL_GETDRIVERINFODATA;
651
652 typedef struct _DDHALINFO {
653 DWORD dwSize;
654 LPDDHAL_DDCALLBACKS lpDDCallbacks;
655 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks;
656 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks;
657 VIDMEMINFO vmiData;
658 DDCORECAPS ddCaps;
659 DWORD dwMonitorFrequency;
660 LPDDHAL_GETDRIVERINFO GetDriverInfo;
661 DWORD dwModeIndex;
662 LPDWORD lpdwFourCC;
663 DWORD dwNumModes;
664 LPDDHALMODEINFO lpModeInfo;
665 DWORD dwFlags;
666 LPVOID lpPDevice;
667 DWORD hInstance;
668 /* DirectX 2 */
669 ULONG_PTR lpD3DGlobalDriverData;
670 ULONG_PTR lpD3DHALCallbacks;
671 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks;
672 } DDHALINFO;
673
674
675
676 #define DDPALETTECALLBACKSSIZE sizeof( DDHAL_DDPALETTECALLBACKS )
677 #define DDSURFACECALLBACKSSIZE sizeof( DDHAL_DDSURFACECALLBACKS )
678 #define DDMISCELLANEOUSCALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS)
679 #define DDMISCELLANEOUS2CALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS)
680 #define DDEXEBUFCALLBACKSSIZE sizeof( DDHAL_DDEXEBUFCALLBACKS )
681 #define DDVIDEOPORTCALLBACKSSIZE sizeof( DDHAL_DDVIDEOPORTCALLBACKS )
682 #define DDCOLORCONTROLCALLBACKSSIZE sizeof( DDHAL_DDCOLORCONTROLCALLBACKS )
683 #define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS)
684 #define DDMOTIONCOMPCALLBACKSSIZE sizeof( DDHAL_DDMOTIONCOMPCALLBACKS )
685
686 #define MAX_PALETTE_SIZE 256
687
688 #define MAX_AUTOFLIP_BUFFERS 10
689 #define DDSCAPS2_INDEXBUFFER DDSCAPS2_RESERVED3
690 #define DDSCAPS3_VIDEO DDSCAPS3_RESERVED2
691 #define D3DFMT_INTERNAL_D32 71
692 #define D3DFMT_INTERNAL_S1D15 72
693 #define D3DFMT_INTERNAL_D15S1 73
694 #define D3DFMT_INTERNAL_S8D24 74
695 #define D3DFMT_INTERNAL_D24S8 75
696 #define D3DFMT_INTERNAL_X8D24 76
697 #define D3DFMT_INTERNAL_D24X8 77
698 #define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l
699 #define DDHAL_PLEASEALLOC_LINEARSIZE 0x00000003l
700
701 #define DDHAL_CB32_DESTROYDRIVER 0x00000001l
702 #define DDHAL_CB32_CREATESURFACE 0x00000002l
703 #define DDHAL_CB32_SETCOLORKEY 0x00000004l
704 #define DDHAL_CB32_SETMODE 0x00000008l
705 #define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l
706 #define DDHAL_CB32_CANCREATESURFACE 0x00000020l
707 #define DDHAL_CB32_CREATEPALETTE 0x00000040l
708 #define DDHAL_CB32_GETSCANLINE 0x00000080l
709 #define DDHAL_CB32_SETEXCLUSIVEMODE 0x00000100l
710 #define DDHAL_CB32_FLIPTOGDISURFACE 0x00000200l
711 #define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l
712 #define DDHAL_PALCB32_SETENTRIES 0x00000002l
713 #define DDHALINFO_ISPRIMARYDISPLAY 0x00000001
714 #define DDHALINFO_MODEXILLEGAL 0x00000002
715 #define DDHALINFO_GETDRIVERINFOSET 0x00000004
716 #define DDHALINFO_GETDRIVERINFO2 0x00000008
717 #define DDRAWI_VPORTSTART 0x0001
718 #define DDRAWI_VPORTSTOP 0x0002
719 #define DDRAWI_VPORTUPDATE 0x0003
720 #define DDRAWI_VPORTGETCOLOR 0x0001
721 #define DDRAWI_VPORTSETCOLOR 0x0002
722 #define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001
723 #define DDHAL_SURFCB32_FLIP 0x00000002
724 #define DDHAL_SURFCB32_SETCLIPLIST 0x00000004
725 #define DDHAL_SURFCB32_LOCK 0x00000008
726 #define DDHAL_SURFCB32_UNLOCK 0x00000010
727 #define DDHAL_SURFCB32_BLT 0x00000020
728 #define DDHAL_SURFCB32_SETCOLORKEY 0x00000040
729 #define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080
730 #define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100
731 #define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200
732 #define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400
733 #define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800
734 #define DDHAL_SURFCB32_RESERVED4 0x00001000
735 #define DDHAL_SURFCB32_SETPALETTE 0x00002000
736 #define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001
737 #define DDHAL_MISCCB32_UPDATENONLOCALHEAP 0x00000002
738 #define DDHAL_MISCCB32_GETHEAPALIGNMENT 0x00000004
739 #define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS 0x00000008
740 #define DDHAL_MISC2CB32_ALPHABLT 0x00000001
741 #define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002
742 #define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004
743 #define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008
744 #define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001l
745 #define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002l
746 #define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004l
747 #define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008l
748 #define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010l
749 #define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001
750 #define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002
751 #define DDHAL_VPORT32_FLIP 0x00000004
752 #define DDHAL_VPORT32_GETBANDWIDTH 0x00000008
753 #define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010
754 #define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020
755 #define DDHAL_VPORT32_GETFIELD 0x00000080
756 #define DDHAL_VPORT32_GETLINE 0x00000100
757 #define DDHAL_VPORT32_GETCONNECT 0x00000200
758 #define DDHAL_VPORT32_DESTROY 0x00000400
759 #define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800
760 #define DDHAL_VPORT32_UPDATE 0x00001000
761 #define DDHAL_VPORT32_WAITFORSYNC 0x00002000
762 #define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000
763 #define DDHAL_VPORT32_COLORCONTROL 0x00008000
764 #define DDHAL_COLOR_COLORCONTROL 0x00000001
765 #define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l
766 #define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l
767 #define DDHAL_MOCOMP32_GETGUIDS 0x00000001
768 #define DDHAL_MOCOMP32_GETFORMATS 0x00000002
769 #define DDHAL_MOCOMP32_CREATE 0x00000004
770 #define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008
771 #define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010
772 #define DDHAL_MOCOMP32_BEGINFRAME 0x00000020
773 #define DDHAL_MOCOMP32_ENDFRAME 0x00000040
774 #define DDHAL_MOCOMP32_RENDER 0x00000080
775 #define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100
776 #define DDHAL_MOCOMP32_DESTROY 0x00000200
777
778
779 /* where the high-level ddraw implementation stores the callbacks */
780 typedef struct _DDHAL_CALLBACKS {
781 DDHAL_DDCALLBACKS cbDDCallbacks;
782 DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks;
783 DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks;
784 DDHAL_DDCALLBACKS HALDD;
785 DDHAL_DDSURFACECALLBACKS HALDDSurface;
786 DDHAL_DDPALETTECALLBACKS HALDDPalette;
787 DDHAL_DDCALLBACKS HELDD;
788 DDHAL_DDSURFACECALLBACKS HELDDSurface;
789 DDHAL_DDPALETTECALLBACKS HELDDPalette;
790 DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks;
791 DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf;
792 DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf;
793 DDHAL_DDVIDEOPORTCALLBACKS cbDDVideoPortCallbacks;
794 DDHAL_DDVIDEOPORTCALLBACKS HALDDVideoPort;
795 DDHAL_DDCOLORCONTROLCALLBACKS cbDDColorControlCallbacks;
796 DDHAL_DDCOLORCONTROLCALLBACKS HALDDColorControl;
797 DDHAL_DDMISCELLANEOUSCALLBACKS cbDDMiscellaneousCallbacks;
798 DDHAL_DDMISCELLANEOUSCALLBACKS HALDDMiscellaneous;
799 DDHAL_DDKERNELCALLBACKS cbDDKernelCallbacks;
800 DDHAL_DDKERNELCALLBACKS HALDDKernel;
801 DDHAL_DDMOTIONCOMPCALLBACKS cbDDMotionCompCallbacks;
802 DDHAL_DDMOTIONCOMPCALLBACKS HALDDMotionComp;
803 } DDHAL_CALLBACKS,*LPDDHAL_CALLBACKS;
804
805 /*****************************************************************************
806 * parameter structures
807 */
808 typedef struct _DDHAL_DESTROYDRIVERDATA {
809 LPDDRAWI_DIRECTDRAW_GBL lpDD;
810 HRESULT ddRVal;
811 LPDDHAL_DESTROYDRIVER DestroyDriver;
812 } DDHAL_DESTROYDRIVERDATA;
813
814 typedef struct _DDHAL_SETMODEDATA {
815 LPDDRAWI_DIRECTDRAW_GBL lpDD;
816 DWORD dwModeIndex;
817 HRESULT ddRVal;
818 LPDDHAL_SETMODE SetMode;
819 BOOL inexcl;
820 BOOL useRefreshRate;
821 } DDHAL_SETMODEDATA;
822
823 typedef struct _DDHAL_CREATESURFACEDATA {
824 LPDDRAWI_DIRECTDRAW_GBL lpDD;
825 LPDDSURFACEDESC lpDDSurfaceDesc;
826 LPDDRAWI_DDRAWSURFACE_LCL * lplpSList;
827 DWORD dwSCnt;
828 HRESULT ddRVal;
829 LPDDHAL_CREATESURFACE CreateSurface;
830 } DDHAL_CREATESURFACEDATA;
831
832 typedef struct _DDHAL_CANCREATESURFACEDATA {
833 LPDDRAWI_DIRECTDRAW_GBL lpDD;
834 LPDDSURFACEDESC lpDDSurfaceDesc;
835 DWORD bIsDifferentPixelFormat;
836 HRESULT ddRVal;
837 LPDDHAL_CANCREATESURFACE CanCreateSurface;
838 } DDHAL_CANCREATESURFACEDATA;
839
840 typedef struct _DDHAL_CREATEPALETTEDATA {
841 LPDDRAWI_DIRECTDRAW_GBL lpDD;
842 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
843 LPPALETTEENTRY lpColorTable;
844 HRESULT ddRVal;
845 LPDDHAL_CREATEPALETTE CreatePalette;
846 BOOL is_excl;
847 } DDHAL_CREATEPALETTEDATA;
848
849 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA {
850 LPDDRAWI_DIRECTDRAW_GBL lpDD;
851 DWORD dwEnterExcl;
852 DWORD dwReserved;
853 HRESULT ddRVal;
854 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
855 } DDHAL_SETEXCLUSIVEMODEDATA;
856
857 /* surfaces */
858 typedef struct _DDHAL_DESTROYSURFACEDATA {
859 LPDDRAWI_DIRECTDRAW_GBL lpDD;
860 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
861 HRESULT ddRVal;
862 LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
863 } DDHAL_DESTROYSURFACEDATA;
864
865 typedef struct _DDHAL_FLIPDATA {
866 LPDDRAWI_DIRECTDRAW_GBL lpDD;
867 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr;
868 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg;
869 DWORD dwFlags;
870 HRESULT ddRVal;
871 LPDDHALSURFCB_FLIP Flip;
872 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft;
873 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft;
874 } DDHAL_FLIPDATA;
875
876 typedef struct _DDHAL_LOCKDATA {
877 LPDDRAWI_DIRECTDRAW_GBL lpDD;
878 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
879 DWORD bHasRect;
880 RECTL rArea;
881 LPVOID lpSurfData;
882 HRESULT ddRVal;
883 LPDDHALSURFCB_LOCK Lock;
884 DWORD dwFlags;
885 } DDHAL_LOCKDATA;
886
887 typedef struct _DDHAL_UNLOCKDATA {
888 LPDDRAWI_DIRECTDRAW_GBL lpDD;
889 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
890 HRESULT ddRVal;
891 LPDDHALSURFCB_UNLOCK Unlock;
892 } DDHAL_UNLOCKDATA;
893
894 typedef struct _DDHAL_BLTDATA {
895 LPDDRAWI_DIRECTDRAW_GBL lpDD;
896 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
897 RECTL rDest;
898 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
899 RECTL rSrc;
900 DWORD dwFlags;
901 DWORD dwROPFlags;
902 DDBLTFX bltFX;
903 HRESULT ddRVal;
904 LPDDHALSURFCB_BLT Blt;
905 BOOL IsClipped;
906 RECTL rOrigDest;
907 RECTL rOrigSrc;
908 DWORD dwRectCnt;
909 LPRECT prDestRects;
910 } DDHAL_BLTDATA;
911
912 typedef struct _DDHAL_SETPALETTEDATA {
913 LPDDRAWI_DIRECTDRAW_GBL lpDD;
914 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
915 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
916 HRESULT ddRVal;
917 LPDDHALSURFCB_SETPALETTE SetPalette;
918 BOOL Attach;
919 } DDHAL_SETPALETTEDATA;
920
921 /* palettes */
922 typedef struct _DDHAL_DESTROYPALETTEDATA {
923 LPDDRAWI_DIRECTDRAW_GBL lpDD;
924 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
925 HRESULT ddRVal;
926 LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
927 } DDHAL_DESTROYPALETTEDATA;
928
929 typedef struct _DDHAL_SETENTRIESDATA {
930 LPDDRAWI_DIRECTDRAW_GBL lpDD;
931 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
932 DWORD dwBase;
933 DWORD dwNumEntries;
934 LPPALETTEENTRY lpEntries;
935 HRESULT ddRVal;
936 LPDDHALPALCB_SETENTRIES SetEntries;
937 } DDHAL_SETENTRIESDATA;
938
939
940 typedef struct _DDHAL_CANCREATEVPORTDATA
941 {
942 LPDDRAWI_DIRECTDRAW_LCL lpDD;
943 LPDDVIDEOPORTDESC lpDDVideoPortDesc;
944 HRESULT ddRVal;
945 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort;
946 } DDHAL_CANCREATEVPORTDATA;
947
948 typedef struct _DDHAL_CREATEVPORTDATA
949 {
950 LPDDRAWI_DIRECTDRAW_LCL lpDD;
951 LPDDVIDEOPORTDESC lpDDVideoPortDesc;
952 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
953 HRESULT ddRVal;
954 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort;
955 } DDHAL_CREATEVPORTDATA;
956
957 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA
958 {
959 LPDDRAWI_DIRECTDRAW_LCL lpDD;
960 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
961 LPDDPIXELFORMAT lpddpfFormat;
962 DWORD dwWidth;
963 DWORD dwHeight;
964 DWORD dwFlags;
965 LPDDVIDEOPORTBANDWIDTH lpBandwidth;
966 HRESULT ddRVal;
967 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth;
968 } DDHAL_GETVPORTBANDWIDTHDATA;
969
970 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA
971 {
972 LPDDRAWI_DIRECTDRAW_LCL lpDD;
973 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
974 DWORD dwFlags;
975 LPDDPIXELFORMAT lpddpfFormat;
976 DWORD dwNumFormats;
977 HRESULT ddRVal;
978 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats;
979 } DDHAL_GETVPORTINPUTFORMATDATA;
980
981 typedef struct _DDHAL_GETVPORTFIELDDATA
982 {
983 LPDDRAWI_DIRECTDRAW_LCL lpDD;
984 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
985 BOOL bField;
986 HRESULT ddRVal;
987 LPDDHALVPORTCB_GETFIELD GetVideoPortField;
988 } DDHAL_GETVPORTFIELDDATA;
989
990 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA
991 {
992 LPDDRAWI_DIRECTDRAW_LCL lpDD;
993 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
994 DWORD dwFlags;
995 LPDDPIXELFORMAT lpddpfInputFormat;
996 LPDDPIXELFORMAT lpddpfOutputFormats;
997 DWORD dwNumFormats;
998 HRESULT ddRVal;
999 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats;
1000 } DDHAL_GETVPORTOUTPUTFORMATDATA;
1001
1002 typedef struct _DDHAL_GETVPORTLINEDATA
1003 {
1004 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1005 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
1006 DWORD dwLine;
1007 HRESULT ddRVal;
1008 LPDDHALVPORTCB_GETLINE GetVideoPortLine;
1009 } DDHAL_GETVPORTLINEDATA;
1010
1011 typedef struct _DDHAL_DESTROYVPORTDATA
1012 {
1013 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1014 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
1015 HRESULT ddRVal;
1016 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort;
1017 } DDHAL_DESTROYVPORTDATA;
1018
1019 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA
1020 {
1021 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1022 FLATPTR fpSurface;
1023 HRESULT ddRVal;
1024 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus;
1025 } DDHAL_GETVPORTFLIPSTATUSDATA;
1026
1027 typedef struct _DDHAL_UPDATEVPORTDATA
1028 {
1029 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1030 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
1031 LPDDRAWI_DDRAWSURFACE_INT *lplpDDSurface;
1032 LPDDRAWI_DDRAWSURFACE_INT *lplpDDVBISurface;
1033 LPDDVIDEOPORTINFO lpVideoInfo;
1034 DWORD dwFlags;
1035 DWORD dwNumAutoflip;
1036 DWORD dwNumVBIAutoflip;
1037 HRESULT ddRVal;
1038 LPDDHALVPORTCB_UPDATE UpdateVideoPort;
1039 } DDHAL_UPDATEVPORTDATA;
1040
1041 typedef struct _DDHAL_WAITFORVPORTSYNCDATA
1042 {
1043 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1044 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
1045 DWORD dwFlags;
1046 DWORD dwLine;
1047 DWORD dwTimeOut;
1048 HRESULT ddRVal;
1049 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync;
1050 } DDHAL_WAITFORVPORTSYNCDATA;
1051
1052 typedef struct _DDHAL_GETVPORTSIGNALDATA
1053 {
1054 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1055 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
1056 DWORD dwStatus;
1057 HRESULT ddRVal;
1058 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus;
1059 } DDHAL_GETVPORTSIGNALDATA;
1060
1061 typedef struct _DDHAL_VPORTCOLORDATA
1062 {
1063 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1064 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
1065 DWORD dwFlags;
1066 LPDDCOLORCONTROL lpColorData;
1067 HRESULT ddRVal;
1068 LPDDHALVPORTCB_COLORCONTROL ColorControl;
1069 } DDHAL_VPORTCOLORDATA;
1070
1071 typedef struct _DDHAL_FLIPVPORTDATA
1072 {
1073 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1074 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
1075 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr;
1076 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg;
1077 HRESULT ddRVal;
1078 LPDDHALVPORTCB_FLIP FlipVideoPort;
1079 } DDHAL_FLIPVPORTDATA;
1080
1081 typedef struct _DDHAL_GETVPORTCONNECTDATA
1082 {
1083 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1084 DWORD dwPortId;
1085 LPDDVIDEOPORTCONNECT lpConnect;
1086 DWORD dwNumEntries;
1087 HRESULT ddRVal;
1088 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo;
1089 } DDHAL_GETVPORTCONNECTDATA;
1090
1091 typedef struct _DDHAL_SYNCSURFACEDATA
1092 {
1093 DWORD dwSize;
1094 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1095 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
1096 DWORD dwSurfaceOffset;
1097 ULONG_PTR fpLockPtr;
1098 LONG lPitch;
1099 DWORD dwOverlayOffset;
1100 DWORD dwOverlaySrcWidth;
1101 DWORD dwOverlaySrcHeight;
1102 DWORD dwOverlayDestWidth;
1103 DWORD dwOverlayDestHeight;
1104 ULONG_PTR dwDriverReserved1;
1105 ULONG_PTR dwDriverReserved2;
1106 ULONG_PTR dwDriverReserved3;
1107 HRESULT ddRVal;
1108 } DDHAL_SYNCSURFACEDATA;
1109
1110 typedef struct _DDHAL_SYNCVIDEOPORTDATA
1111 {
1112 DWORD dwSize;
1113 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1114 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
1115 DWORD dwOriginOffset;
1116 DWORD dwHeight;
1117 DWORD dwVBIHeight;
1118 ULONG_PTR dwDriverReserved1;
1119 ULONG_PTR dwDriverReserved2;
1120 ULONG_PTR dwDriverReserved3;
1121 HRESULT ddRVal;
1122 } DDHAL_SYNCVIDEOPORTDATA;
1123
1124 typedef struct _DDHAL_DESTROYDDLOCALDATA
1125 {
1126 DWORD dwFlags;
1127 LPDDRAWI_DIRECTDRAW_LCL pDDLcl;
1128 HRESULT ddRVal;
1129 } DDHAL_DESTROYDDLOCALDATA;
1130
1131 typedef struct _DDHAL_CREATESURFACEEXDATA {
1132 DWORD dwFlags;
1133 LPDDRAWI_DIRECTDRAW_LCL lpDDLcl;
1134 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl;
1135 HRESULT ddRVal;
1136 } DDHAL_CREATESURFACEEXDATA;
1137
1138 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
1139 {
1140 ULONG_PTR dwInstance;
1141 DWORD dwHeap;
1142 HRESULT ddRVal;
1143 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment;
1144 HEAPALIGNMENT Alignment;
1145 } DDHAL_GETHEAPALIGNMENTDATA;
1146
1147
1148 typedef struct _DDMORESURFACECAPS
1149 {
1150 DWORD dwSize;
1151 DDSCAPSEX ddsCapsMore;
1152 struct tagExtendedHeapRestrictions
1153 {
1154 DDSCAPSEX ddsCapsEx;
1155 DDSCAPSEX ddsCapsExAlt;
1156 } ddsExtendedHeapRestrictions[1];
1157 } DDMORESURFACECAPS, * LPDDMORESURFACECAPS;
1158
1159 typedef struct _DDSTEREOMODE
1160 {
1161 DWORD dwSize;
1162 DWORD dwHeight;
1163 DWORD dwWidth;
1164 DWORD dwBpp;
1165 DWORD dwRefreshRate;
1166 BOOL bSupported;
1167
1168 } DDSTEREOMODE, * LPDDSTEREOMODE;
1169
1170 /*****************************************************************************
1171 * high-level ddraw implementation structures
1172 */
1173 typedef struct _IUNKNOWN_LIST {
1174 struct _IUNKNOWN_LIST * lpLink;
1175 LPGUID lpGuid;
1176
1177 #ifndef _NO_COM
1178 IUnknown * lpIUnknown;
1179 #else
1180 LPVOID lpIUnknown;
1181 #endif /* _NO_COM */
1182 } IUNKNOWN_LIST,*LPIUNKNOWN_LIST;
1183
1184
1185 typedef struct _PROCESS_LIST {
1186 struct _PROCESS_LIST * lpLink;
1187 DWORD dwProcessId;
1188 DWORD dwRefCnt;
1189 DWORD dwAlphaDepth;
1190 DWORD dwZDepth;
1191 } PROCESS_LIST,*LPPROCESS_LIST;
1192
1193 typedef struct _ATTACHLIST {
1194 DWORD dwFlags;
1195 struct _ATTACHLIST * lpLink;
1196 LPDDRAWI_DDRAWSURFACE_LCL lpAttached;
1197 LPDDRAWI_DDRAWSURFACE_INT lpIAttached;
1198 } ATTACHLIST,*LPATTACHLIST;
1199
1200 #define DDAL_IMPLICIT 0x00000001
1201
1202 typedef struct _ACCESSRECTLIST {
1203 struct _ACCESSRECTLIST * lpLink;
1204 RECT rDest;
1205 LPDDRAWI_DIRECTDRAW_LCL lpOwner;
1206 LPVOID lpSurfaceData;
1207 DWORD dwFlags;
1208 LPHEAPALIASINFO lpHeapAliasInfo;
1209 } ACCESSRECTLIST,*LPACCESSRECTLIST;
1210
1211 #define ACCESSRECT_VRAMSTYLE 0x00000001
1212 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
1213 #define ACCESSRECT_BROKEN 0x00000004
1214
1215 typedef struct _DBLNODE {
1216 struct _DBLNODE * next;
1217 struct _DBLNODE * prev;
1218 LPDDRAWI_DDRAWSURFACE_LCL object;
1219 LPDDRAWI_DDRAWSURFACE_INT object_int;
1220 } DBLNODE,*LPDBLNODE;
1221
1222 typedef struct _DDRAWI_DIRECTDRAW_INT {
1223 LPVOID lpVtbl;
1224 LPDDRAWI_DIRECTDRAW_LCL lpLcl;
1225 LPDDRAWI_DIRECTDRAW_INT lpLink;
1226 DWORD dwIntRefCnt;
1227 } DDRAWI_DIRECTDRAW_INT;
1228
1229
1230 typedef struct _DDRAWI_DIRECTDRAW_LCL {
1231 DWORD lpDDMore;
1232 LPDDRAWI_DIRECTDRAW_GBL lpGbl;
1233 DWORD dwUnused0;
1234 DWORD dwLocalFlags;
1235 DWORD dwLocalRefCnt;
1236 DWORD dwProcessId;
1237 #ifndef _NO_COM
1238 IUnknown * pUnkOuter;
1239 #else
1240 PVOID pUnkOuter;
1241 #endif
1242 DWORD dwObsolete1;
1243 ULONG_PTR hWnd;
1244 ULONG_PTR hDC;
1245 DWORD dwErrorMode;
1246 LPDDRAWI_DDRAWSURFACE_INT lpPrimary;
1247 LPDDRAWI_DDRAWSURFACE_INT lpCB;
1248 DWORD dwPreferredMode;
1249 /* DirectX 2 */
1250 HINSTANCE hD3DInstance;
1251 #ifndef _NO_COM
1252 IUnknown * pD3DIUnknown;
1253 #else
1254 PVOID pD3DIUnknown;
1255 #endif
1256 LPDDHAL_CALLBACKS lpDDCB;
1257 ULONG_PTR hDDVxd;
1258 /* DirectX 5.0 */
1259 DWORD dwAppHackFlags;
1260 /* DirectX 5.0A */
1261 ULONG_PTR hFocusWnd;
1262 DWORD dwHotTracking;
1263 DWORD dwIMEState;
1264 /* DirectX 6.0 */
1265 ULONG_PTR hWndPopup;
1266 ULONG_PTR hDD;
1267 ULONG_PTR hGammaCalibrator;
1268 LPDDGAMMACALIBRATORPROC lpGammaCalibrator;
1269 } DDRAWI_DIRECTDRAW_LCL;
1270
1271
1272 #define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001
1273 #define DDRAWILCL_ISFULLSCREEN 0x00000002
1274 #define DDRAWILCL_SETCOOPCALLED 0x00000004
1275 #define DDRAWILCL_ACTIVEYES 0x00000008
1276 #define DDRAWILCL_ACTIVENO 0x00000010
1277 #define DDRAWILCL_HOOKEDHWND 0x00000020
1278 #define DDRAWILCL_ALLOWMODEX 0x00000040
1279 #define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080
1280 #define DDRAWILCL_MODEHASBEENCHANGED 0x00000100
1281 #define DDRAWILCL_CREATEDWINDOW 0x00000200
1282 #define DDRAWILCL_DIRTYDC 0x00000400
1283 #define DDRAWILCL_DISABLEINACTIVATE 0x00000800
1284 #define DDRAWILCL_CURSORCLIPPED 0x00001000
1285 #define DDRAWILCL_EXPLICITMONITOR 0x00002000
1286 #define DDRAWILCL_MULTITHREADED 0x00004000
1287 #define DDRAWILCL_FPUSETUP 0x00008000
1288 #define DDRAWILCL_POWEREDDOWN 0x00010000
1289 #define DDRAWILCL_DIRECTDRAW7 0x00020000
1290 #define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000
1291 #define DDRAWILCL_FPUPRESERVE 0x00080000
1292 #define DDRAWILCL_DX8DRIVER 0x00100000
1293 #define DDRAWILCL_DIRECTDRAW8 0x00200000
1294
1295
1296 typedef struct _DDRAWI_DIRECTDRAW_GBL {
1297 DWORD dwRefCnt;
1298 DWORD dwFlags;
1299 FLATPTR fpPrimaryOrig;
1300 DDCORECAPS ddCaps;
1301 DWORD dwInternal1;
1302 DWORD dwUnused1[9];
1303 LPDDHAL_CALLBACKS lpDDCBtmp;
1304 LPDDRAWI_DDRAWSURFACE_INT dsList;
1305 LPDDRAWI_DDRAWPALETTE_INT palList;
1306 LPDDRAWI_DDRAWCLIPPER_INT clipperList;
1307 LPDDRAWI_DIRECTDRAW_GBL lp16DD;
1308 DWORD dwMaxOverlays;
1309 DWORD dwCurrOverlays;
1310 DWORD dwMonitorFrequency;
1311 DDCORECAPS ddHELCaps;
1312 DWORD dwUnused2[50];
1313 DDCOLORKEY ddckCKDestOverlay;
1314 DDCOLORKEY ddckCKSrcOverlay;
1315 VIDMEMINFO vmiData;
1316 LPVOID lpDriverHandle;
1317 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner;
1318 DWORD dwModeIndex;
1319 DWORD dwModeIndexOrig;
1320 DWORD dwNumFourCC;
1321 LPDWORD lpdwFourCC;
1322 DWORD dwNumModes;
1323 LPDDHALMODEINFO lpModeInfo;
1324 PROCESS_LIST plProcessList;
1325 DWORD dwSurfaceLockCount;
1326 DWORD dwAliasedLockCnt;
1327 ULONG_PTR dwReserved3;
1328 ULONG_PTR hDD;
1329 char cObsolete[12];
1330 DWORD dwReserved1;
1331 DWORD dwReserved2;
1332 DBLNODE dbnOverlayRoot;
1333 volatile LPWORD lpwPDeviceFlags;
1334 DWORD dwPDevice;
1335 DWORD dwWin16LockCnt;
1336 DWORD dwUnused3;
1337 DWORD hInstance;
1338 DWORD dwEvent16;
1339 DWORD dwSaveNumModes;
1340 /* DirectX 2 */
1341 ULONG_PTR lpD3DGlobalDriverData;
1342 ULONG_PTR lpD3DHALCallbacks;
1343 DDCORECAPS ddBothCaps;
1344 /* DirectX 5.0 */
1345 LPDDVIDEOPORTCAPS lpDDVideoPortCaps;
1346 LPDDRAWI_DDVIDEOPORT_INT dvpList;
1347 ULONG_PTR lpD3DHALCallbacks2;
1348 RECT rectDevice;
1349 DWORD cMonitors;
1350 LPVOID gpbmiSrc;
1351 LPVOID gpbmiDest;
1352 LPHEAPALIASINFO phaiHeapAliases;
1353 ULONG_PTR hKernelHandle;
1354 ULONG_PTR pfnNotifyProc;
1355 LPDDKERNELCAPS lpDDKernelCaps;
1356 LPDDNONLOCALVIDMEMCAPS lpddNLVCaps;
1357 LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps;
1358 LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps;
1359 ULONG_PTR lpD3DExtendedCaps;
1360 /* DirectX 5.0A */
1361 DWORD dwDOSBoxEvent;
1362 RECT rectDesktop;
1363 char cDriverName[MAX_DRIVER_NAME];
1364 /* DirectX 6.0 */
1365 ULONG_PTR lpD3DHALCallbacks3;
1366 DWORD dwNumZPixelFormats;
1367 LPDDPIXELFORMAT lpZPixelFormats;
1368 LPDDRAWI_DDMOTIONCOMP_INT mcList;
1369 DWORD hDDVxd;
1370 DDSCAPSEX ddsCapsMore;
1371 } DDRAWI_DIRECTDRAW_GBL;
1372
1373 #define DDRAWI_xxxxxxxxx1 0x00000001
1374 #define DDRAWI_xxxxxxxxx2 0x00000002
1375 #define DDRAWI_VIRTUALDESKTOP 0x00000008
1376 #define DDRAWI_MODEX 0x00000010
1377 #define DDRAWI_DISPLAYDRV 0x00000020
1378 #define DDRAWI_FULLSCREEN 0x00000040
1379 #define DDRAWI_MODECHANGED 0x00000080
1380 #define DDRAWI_NOHARDWARE 0x00000100
1381 #define DDRAWI_PALETTEINIT 0x00000200
1382 #define DDRAWI_NOEMULATION 0x00000400
1383 #define DDRAWI_HASCKEYDESTOVERLAY 0x00000800
1384 #define DDRAWI_HASCKEYSRCOVERLAY 0x00001000
1385 #define DDRAWI_HASGDIPALETTE 0x00002000
1386 #define DDRAWI_EMULATIONINITIALIZED 0x00004000
1387 #define DDRAWI_HASGDIPALETTE_EXCLUSIVE 0x00008000
1388 #define DDRAWI_MODEXILLEGAL 0x00010000
1389 #define DDRAWI_FLIPPEDTOGDI 0x00020000
1390 #define DDRAWI_NEEDSWIN16FORVRAMLOCK 0x00040000
1391 #define DDRAWI_PDEVICEVRAMBITCLEARED 0x00080000
1392 #define DDRAWI_STANDARDVGA 0x00100000
1393 #define DDRAWI_EXTENDEDALIGNMENT 0x00200000
1394 #define DDRAWI_CHANGINGMODE 0x00400000
1395 #define DDRAWI_GDIDRV 0x00800000
1396 #define DDRAWI_ATTACHEDTODESKTOP 0x01000000
1397 #define DDRAWI_UMODELOADED 0x02000000
1398 #define DDRAWI_DDRAWDATANOTFETCHED 0x04000000
1399 #define DDRAWI_SECONDARYDRIVERLOADED 0x08000000
1400 #define DDRAWI_TESTINGMODES 0x10000000
1401 #define DDRAWI_DRIVERINFO2 0x20000000
1402 #define DDRAWI_BADPDEV 0x40000000
1403
1404
1405 /* surfaces */
1406 typedef struct _DDRAWI_DDRAWSURFACE_INT {
1407 LPVOID lpVtbl;
1408 LPDDRAWI_DDRAWSURFACE_LCL lpLcl;
1409 LPDDRAWI_DDRAWSURFACE_INT lpLink;
1410 DWORD dwIntRefCnt;
1411 } DDRAWI_DDRAWSURFACE_INT;
1412
1413 typedef struct _DDRAWI_DDRAWSURFACE_GBL {
1414 DWORD dwRefCnt;
1415 DWORD dwGlobalFlags;
1416 __GNU_EXTENSION union {
1417 LPACCESSRECTLIST lpRectList;
1418 DWORD dwBlockSizeY;
1419 LONG lSlicePitch;
1420 };
1421 __GNU_EXTENSION union {
1422 LPVMEMHEAP lpVidMemHeap;
1423 DWORD dwBlockSizeX;
1424 };
1425 __GNU_EXTENSION union {
1426 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1427 LPVOID lpDDHandle;
1428 };
1429 FLATPTR fpVidMem;
1430 __GNU_EXTENSION union {
1431 LONG lPitch;
1432 DWORD dwLinearSize;
1433 };
1434 WORD wHeight;
1435 WORD wWidth;
1436 DWORD dwUsageCount;
1437 ULONG_PTR dwReserved1;
1438 DDPIXELFORMAT ddpfSurface;
1439 } DDRAWI_DDRAWSURFACE_GBL;
1440
1441 #define DDRAWISURFGBL_MEMFREE 0x00000001L
1442 #define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L
1443 #define DDRAWISURFGBL_ISGDISURFACE 0x00000004L
1444 #define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008L
1445 #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010L
1446 #define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020L
1447 #define DDRAWISURFGBL_LOCKBROKEN 0x00000040L
1448 #define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080L
1449 #define DDRAWISURFGBL_ISCLIENTMEM 0x00000100L
1450 #define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200L
1451 #define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400L
1452 #define DDRAWISURFGBL_HARDWAREOPSTARTED (DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST)
1453 #define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800L
1454 #define DDRAWISURFGBL_VPORTDATA 0x00001000L
1455 #define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000L
1456 #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000L
1457 #define DDRAWISURFGBL_FASTLOCKHELD 0x00008000L
1458 #define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000L
1459 #define DDRAWISURFGBL_DX8SURFACE 0x00080000L
1460 #define DDRAWISURFGBL_DDHELDONTFREE 0x00100000L
1461 #define DDRAWISURFGBL_NOTIFYWHENUNLOCKED 0x00200000L
1462 #define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag
1463
1464 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE {
1465 DWORD dwSize;
1466 __GNU_EXTENSION union {
1467 DWORD dwPhysicalPageTable;
1468 FLATPTR fpPhysicalVidMem;
1469 };
1470 LPDWORD pPageTable;
1471 DWORD cPages;
1472 ULONG_PTR dwSavedDCContext;
1473 FLATPTR fpAliasedVidMem;
1474 ULONG_PTR dwDriverReserved;
1475 ULONG_PTR dwHELReserved;
1476 DWORD cPageUnlocks;
1477 ULONG_PTR hKernelSurface;
1478 DWORD dwKernelRefCnt;
1479 LPDDCOLORCONTROL lpColorInfo;
1480 FLATPTR fpNTAlias;
1481 DWORD dwContentsStamp;
1482 LPVOID lpvUnswappedDriverReserved;
1483 LPVOID lpDDRAWReserved2;
1484 DWORD dwDDRAWReserved1;
1485 DWORD dwDDRAWReserved2;
1486 FLATPTR fpAliasOfVidMem;
1487 } DDRAWI_DDRAWSURFACE_GBL_MORE;
1488
1489 /* the MS version of this macro was somewhat obfuscated and unreadable
1490 * (possibly because of mediocre MS coders)... so I simplified it...
1491 * (and so I commit no copyright violations either, hah) */
1492 #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
1493 (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
1494
1495 #define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \
1496 ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem )
1497
1498
1499 typedef struct _DISPLAYMODEINFO
1500 {
1501 WORD wWidth;
1502 WORD wHeight;
1503 BYTE wBPP;
1504 BYTE wMonitorsAttachedToDesktop;
1505 WORD wRefreshRate;
1506 } DISPLAYMODEINFO, *LPDISPLAYMODEINFO;
1507
1508 #define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO)))
1509
1510
1511
1512
1513 typedef struct _DDRAWI_DDRAWSURFACE_MORE {
1514 DWORD dwSize;
1515 IUNKNOWN_LIST * lpIUnknowns;
1516 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
1517 DWORD dwPageLockCount;
1518 DWORD dwBytesAllocated;
1519 LPDDRAWI_DIRECTDRAW_INT lpDD_int;
1520 DWORD dwMipMapCount;
1521 LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper;
1522 /* DirectX 5.0 */
1523 LPHEAPALIASINFO lpHeapAliasInfo;
1524 DWORD dwOverlayFlags;
1525 VOID *rgjunc;
1526 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
1527 LPDDOVERLAYFX lpddOverlayFX;
1528 DDSCAPSEX ddsCapsEx;
1529 DWORD dwTextureStage;
1530 LPVOID lpDDRAWReserved;
1531 LPVOID lpDDRAWReserved2;
1532 LPVOID lpDDrawReserved3;
1533 DWORD dwDDrawReserved4;
1534 LPVOID lpDDrawReserved5;
1535 LPDWORD lpGammaRamp;
1536 LPDWORD lpOriginalGammaRamp;
1537 LPVOID lpDDrawReserved6;
1538 #ifndef WIN95
1539 DISPLAYMODEINFO dmiDDrawReserved7;
1540 #endif
1541 DWORD dwSurfaceHandle;
1542 DWORD qwDDrawReserved8[2];
1543 LPVOID lpDDrawReserved9;
1544 DWORD cSurfaces;
1545 LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2;
1546 LPDDRAWI_DDRAWSURFACE_LCL *slist;
1547 DWORD dwFVF;
1548 LPVOID lpVB;
1549 } DDRAWI_DDRAWSURFACE_MORE;
1550
1551
1552
1553 typedef struct _DDRAWI_DDRAWSURFACE_LCL {
1554 LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore;
1555 LPDDRAWI_DDRAWSURFACE_GBL lpGbl;
1556 ULONG_PTR hDDSurface;
1557 LPATTACHLIST lpAttachList;
1558 LPATTACHLIST lpAttachListFrom;
1559 DWORD dwLocalRefCnt;
1560 DWORD dwProcessId;
1561 DWORD dwFlags;
1562 DDSCAPS ddsCaps;
1563 __GNU_EXTENSION union
1564 {
1565 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette;
1566 LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette;
1567 };
1568 __GNU_EXTENSION union
1569 {
1570 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper;
1571 LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper;
1572 };
1573 DWORD dwModeCreatedIn;
1574 DWORD dwBackBufferCount;
1575 DDCOLORKEY ddckCKDestBlt;
1576 DDCOLORKEY ddckCKSrcBlt;
1577 ULONG_PTR hDC;
1578 ULONG_PTR dwReserved1;
1579 DDCOLORKEY ddckCKSrcOverlay;
1580 DDCOLORKEY ddckCKDestOverlay;
1581 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying;
1582 DBLNODE dbnOverlayNode;
1583 RECT rcOverlaySrc;
1584 RECT rcOverlayDest;
1585 DWORD dwClrXparent;
1586 DWORD dwAlpha;
1587 LONG lOverlayX;
1588 LONG lOverlayY;
1589 } DDRAWI_DDRAWSURFACE_LCL;
1590
1591 #define DDRAWISURF_ATTACHED 0x00000001L
1592 #define DDRAWISURF_IMPLICITCREATE 0x00000002L
1593 #define DDRAWISURF_ISFREE 0x00000004L
1594 #define DDRAWISURF_ATTACHED_FROM 0x00000008L
1595 #define DDRAWISURF_IMPLICITROOT 0x00000010L
1596 #define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L
1597 #define DDRAWISURF_DATAISALIASED 0x00000040L
1598 #define DDRAWISURF_HASDC 0x00000080L
1599 #define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L
1600 #define DDRAWISURF_HASCKEYDESTBLT 0x00000200L
1601 #define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L
1602 #define DDRAWISURF_HASCKEYSRCBLT 0x00000800L
1603 #define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000L
1604 #define DDRAWISURF_HASPIXELFORMAT 0x00002000L
1605 #define DDRAWISURF_HASOVERLAYDATA 0x00004000L
1606 #define DDRAWISURF_SETGAMMA 0x00008000L
1607 #define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L
1608 #define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L
1609 #define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L
1610 #define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L
1611 #define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L
1612 #define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L
1613 #define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L
1614 #define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L
1615 #define DDRAWISURF_INMASTERSPRITELIST 0x01000000L
1616 #define DDRAWISURF_HELCB 0x02000000L
1617 #define DDRAWISURF_FRONTBUFFER 0x04000000L
1618 #define DDRAWISURF_BACKBUFFER 0x08000000L
1619 #define DDRAWISURF_INVALID 0x10000000L
1620 #define DDRAWISURF_DCIBUSY 0x20000000L
1621 #define DDRAWISURF_GETDCNULL 0x40000000L
1622 #define DDRAWISURF_STEREOSURFACELEFT 0x20000000L
1623 #define DDRAWISURF_DRIVERMANAGED 0x40000000L
1624 #define DDRAWISURF_DCILOCK 0x80000000L
1625
1626 /* palettes */
1627 typedef struct _DDRAWI_DDRAWPALETTE_INT {
1628 LPVOID lpVtbl;
1629 LPDDRAWI_DDRAWPALETTE_LCL lpLcl;
1630 LPDDRAWI_DDRAWPALETTE_INT lpLink;
1631 DWORD dwIntRefCnt;
1632 } DDRAWI_DDRAWPALETTE_INT;
1633
1634 typedef struct _DDRAWI_DDRAWPALETTE_GBL {
1635 DWORD dwRefCnt;
1636 DWORD dwFlags;
1637 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
1638 DWORD dwProcessId;
1639 LPPALETTEENTRY lpColorTable;
1640 __GNU_EXTENSION union {
1641 ULONG_PTR dwReserved1;
1642 HPALETTE hHELGDIPalette;
1643 };
1644 DWORD dwDriverReserved;
1645 DWORD dwContentsStamp;
1646 DWORD dwSaveStamp;
1647 DWORD dwHandle;
1648 } DDRAWI_DDRAWPALETTE_GBL;
1649
1650 #define DDRAWIPAL_256 0x00000001
1651 #define DDRAWIPAL_16 0x00000002
1652 #define DDRAWIPAL_GDI 0x00000004
1653 #define DDRAWIPAL_STORED_8 0x00000008
1654 #define DDRAWIPAL_STORED_16 0x00000010
1655 #define DDRAWIPAL_STORED_24 0x00000020
1656 #define DDRAWIPAL_EXCLUSIVE 0x00000040
1657 #define DDRAWIPAL_INHEL 0x00000080
1658 #define DDRAWIPAL_DIRTY 0x00000100
1659 #define DDRAWIPAL_ALLOW256 0x00000200
1660 #define DDRAWIPAL_4 0x00000400
1661 #define DDRAWIPAL_2 0x00000800
1662 #define DDRAWIPAL_STORED_8INDEX 0x00001000
1663 #define DDRAWIPAL_ALPHA 0x00002000
1664
1665 #define D3DFORMAT_OP_TEXTURE 0x00000001L
1666 #define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L
1667 #define D3DFORMAT_OP_CUBETEXTURE 0x00000004L
1668 #define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L
1669 #define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L
1670 #define D3DFORMAT_OP_ZSTENCIL 0x00000040L
1671 #define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L
1672 #define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L
1673 #define D3DFORMAT_OP_DISPLAYMODE 0x00000400L
1674 #define D3DFORMAT_OP_3DACCELERATION 0x00000800L
1675 #define D3DFORMAT_OP_PIXELSIZE 0x00001000L
1676 #define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L
1677 #define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L
1678 #define D3DFORMAT_OP_SRGBREAD 0x00008000L
1679 #define D3DFORMAT_OP_BUMPMAP 0x00010000L
1680 #define D3DFORMAT_OP_NOFILTER 0x00040000L
1681 #define DDPF_D3DFORMAT 0x00200000l
1682 #define DDPF_NOVEL_TEXTURE_FORMAT 0x00100000l
1683 #define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L
1684 #define D3DFORMAT_OP_SRGBWRITE 0x00100000L
1685 #define D3DFORMAT_OP_NOALPHABLEND 0x00200000L
1686 #define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L
1687 #define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L
1688 #define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L
1689 #define DELETED_OK 0
1690 #define DELETED_LASTONE 1
1691 #define DELETED_NOTFOUND 2
1692 #define DDCALLBACKSSIZE_V1 ( offsetof( DDHAL_DDCALLBACKS, SetExclusiveMode ) )
1693 #define DDCALLBACKSSIZE sizeof( DDHAL_DDCALLBACKS )
1694 #define DDRAWICLIP_WATCHWINDOW 0x00000001
1695 #define DDRAWICLIP_ISINITIALIZED 0x00000002
1696 #define DDRAWICLIP_INMASTERSPRITELIST 0x00000004
1697 #define PFINDEX_UNINITIALIZED (0UL)
1698 #define PFINDEX_UNSUPPORTED (~0UL)
1699 #define ROP_HAS_SOURCE 0x00000001l
1700 #define ROP_HAS_PATTERN 0x00000002l
1701 #define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN
1702 #define DDRAWIVPORT_ON 0x00000001
1703 #define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002
1704 #define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004
1705 #define DDRAWIVPORT_NOKERNELHANDLES 0x00000008
1706 #define DDRAWIVPORT_SOFTWARE_BOB 0x00000010
1707 #define DDRAWIVPORT_VBION 0x00000020
1708 #define DDRAWIVPORT_VIDEOON 0x00000040
1709 #define DDRAWI_GETCOLOR 0x0001
1710 #define DDRAWI_SETCOLOR 0x0002
1711 #define DDMCQUERY_READ 0x00000001
1712 #define DDWAITVB_I_TESTVB 0x80000006
1713
1714
1715 #define DDBLT_ANYALPHA \
1716 (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \
1717 DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE | \
1718 DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST)
1719
1720 #define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \
1721 DDSCAPS_OVERLAY | DDSCAPS_TEXTURE | \
1722 DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP )
1723
1724
1725 #define DDHALINFOSIZE_V2 sizeof(DDHALINFO)
1726
1727 #define DDOVER_ANYALPHA \
1728 (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \
1729 DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE | \
1730 DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST)
1731
1732
1733 typedef struct _DDRAWI_DDRAWPALETTE_LCL {
1734 DWORD lpPalMore;
1735 LPDDRAWI_DDRAWPALETTE_GBL lpGbl;
1736 ULONG_PTR dwUnused0;
1737 DWORD dwLocalRefCnt;
1738 #ifndef _NO_COM
1739 IUnknown * pUnkOuter;
1740 #else
1741 PVOID pUnkOuter;
1742 #endif
1743 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
1744 ULONG_PTR dwReserved1;
1745 /* DirectX 6.0 */
1746 ULONG_PTR dwDDRAWReserved1;
1747 ULONG_PTR dwDDRAWReserved2;
1748 ULONG_PTR dwDDRAWReserved3;
1749 } DDRAWI_DDRAWPALETTE_LCL;
1750
1751
1752 typedef struct _DDMCCOMPBUFFERINFO
1753 {
1754 DWORD dwSize;
1755 DWORD dwNumCompBuffers;
1756 DWORD dwWidthToCreate;
1757 DWORD dwHeightToCreate;
1758 DWORD dwBytesToAllocate;
1759 DDSCAPS2 ddCompCaps;
1760 DDPIXELFORMAT ddPixelFormat;
1761 } DDMCCOMPBUFFERINFO, *LPDDMCCOMPBUFFERINFO;
1762
1763 typedef struct _DDMCBUFFERINFO
1764 {
1765 DWORD dwSize;
1766 LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface;
1767 DWORD dwDataOffset;
1768 DWORD dwDataSize;
1769 LPVOID lpPrivate;
1770 } DDMCBUFFERINFO, *LPDDMCBUFFERINFO;
1771
1772 typedef struct _DDHAL_GETDRIVERSTATEDATA {
1773 DWORD dwFlags;
1774 __GNU_EXTENSION union
1775 {
1776 ULONG_PTR dwhContext;
1777 };
1778 LPDWORD lpdwStates;
1779 DWORD dwLength;
1780 HRESULT ddRVal;
1781 } DDHAL_GETDRIVERSTATEDATA;
1782
1783 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA
1784 {
1785 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1786 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
1787 LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached;
1788 HRESULT ddRVal;
1789 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface;
1790 } DDHAL_ADDATTACHEDSURFACEDATA;
1791
1792
1793
1794 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA
1795 {
1796 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1797 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
1798 LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface;
1799 DWORD dwInputDataSize;
1800 LPVOID lpInputData;
1801 DWORD dwOutputDataSize;
1802 LPVOID lpOutputData;
1803 HRESULT ddRVal;
1804 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame;
1805 } DDHAL_BEGINMOCOMPFRAMEDATA;
1806
1807 typedef struct _DDHAL_COLORCONTROLDATA
1808 {
1809 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1810 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
1811 LPDDCOLORCONTROL lpColorData;
1812 DWORD dwFlags;
1813 HRESULT ddRVal;
1814 LPDDHALCOLORCB_COLORCONTROL ColorControl;
1815 } DDHAL_COLORCONTROLDATA;
1816
1817 typedef struct _DDHAL_CREATEMOCOMPDATA
1818 {
1819 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1820 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
1821 LPGUID lpGuid;
1822 DWORD dwUncompWidth;
1823 DWORD dwUncompHeight;
1824 DDPIXELFORMAT ddUncompPixelFormat;
1825 LPVOID lpData;
1826 DWORD dwDataSize;
1827 HRESULT ddRVal;
1828 LPDDHALMOCOMPCB_CREATE CreateMoComp;
1829 } DDHAL_CREATEMOCOMPDATA;
1830
1831 typedef struct _DDHAL_DESTROYMOCOMPDATA
1832 {
1833 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1834 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
1835 HRESULT ddRVal;
1836 LPDDHALMOCOMPCB_DESTROY DestroyMoComp;
1837 } DDHAL_DESTROYMOCOMPDATA;
1838
1839 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA
1840 {
1841 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1842 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
1843 LPVOID lpInputData;
1844 DWORD dwInputDataSize;
1845 HRESULT ddRVal;
1846 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame;
1847 } DDHAL_ENDMOCOMPFRAMEDATA;
1848
1849 typedef struct _DDHAL_FLIPTOGDISURFACEDATA
1850 {
1851 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1852 DWORD dwToGDI;
1853 DWORD dwReserved;
1854 HRESULT ddRVal;
1855 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface;
1856 } DDHAL_FLIPTOGDISURFACEDATA;
1857
1858 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
1859 {
1860 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1861 DDSCAPS DDSCaps;
1862 DWORD dwTotal;
1863 DWORD dwFree;
1864 HRESULT ddRVal;
1865 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory;
1866 DDSCAPSEX ddsCapsEx;
1867
1868 } DDHAL_GETAVAILDRIVERMEMORYDATA;
1869
1870 typedef struct _DDHAL_GETBLTSTATUSDATA
1871 {
1872 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1873 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
1874 DWORD dwFlags;
1875 HRESULT ddRVal;
1876 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus;
1877 } DDHAL_GETBLTSTATUSDATA;
1878
1879 typedef struct _DDHAL_GETFLIPSTATUSDATA
1880 {
1881 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1882 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
1883 DWORD dwFlags;
1884 HRESULT ddRVal;
1885 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus;
1886 } DDHAL_GETFLIPSTATUSDATA;
1887
1888 typedef struct _DDHAL_GETINTERNALMOCOMPDATA
1889 {
1890 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1891 LPGUID lpGuid;
1892 DWORD dwWidth;
1893 DWORD dwHeight;
1894 DDPIXELFORMAT ddPixelFormat;
1895 DWORD dwScratchMemAlloc;
1896 HRESULT ddRVal;
1897 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo;
1898 } DDHAL_GETINTERNALMOCOMPDATA;
1899
1900 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA
1901 {
1902 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1903 LPGUID lpGuid;
1904 DWORD dwWidth;
1905 DWORD dwHeight;
1906 DDPIXELFORMAT ddPixelFormat;
1907 DWORD dwNumTypesCompBuffs;
1908 LPDDMCCOMPBUFFERINFO lpCompBuffInfo;
1909 HRESULT ddRVal;
1910 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo;
1911 } DDHAL_GETMOCOMPCOMPBUFFDATA;
1912
1913 typedef struct _DDHAL_GETMOCOMPGUIDSDATA
1914 {
1915 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1916 DWORD dwNumGuids;
1917 LPGUID lpGuids;
1918 HRESULT ddRVal;
1919 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids;
1920 } DDHAL_GETMOCOMPGUIDSDATA;
1921
1922 typedef struct _DDHAL_GETMOCOMPFORMATSDATA
1923 {
1924 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1925 LPGUID lpGuid;
1926 DWORD dwNumFormats;
1927 LPDDPIXELFORMAT lpFormats;
1928 HRESULT ddRVal;
1929 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats;
1930 } DDHAL_GETMOCOMPFORMATSDATA;
1931
1932 typedef struct _DDHAL_GETSCANLINEDATA
1933 {
1934 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1935 DWORD dwScanLine;
1936 HRESULT ddRVal;
1937 LPDDHAL_GETSCANLINE GetScanLine;
1938 } DDHAL_GETSCANLINEDATA;
1939
1940 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA
1941 {
1942 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1943 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
1944 LPDDRAWI_DDRAWSURFACE_LCL lpSurface;
1945 DWORD dwFlags;
1946 HRESULT ddRVal;
1947 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus;
1948 } DDHAL_QUERYMOCOMPSTATUSDATA;
1949
1950 typedef struct _DDHAL_RENDERMOCOMPDATA
1951 {
1952 LPDDRAWI_DIRECTDRAW_LCL lpDD;
1953 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
1954 DWORD dwNumBuffers;
1955 LPDDMCBUFFERINFO lpBufferInfo;
1956 DWORD dwFunction;
1957 LPVOID lpInputData;
1958 DWORD dwInputDataSize;
1959 LPVOID lpOutputData;
1960 DWORD dwOutputDataSize;
1961 HRESULT ddRVal;
1962 LPDDHALMOCOMPCB_RENDER RenderMoComp;
1963 } DDHAL_RENDERMOCOMPDATA;
1964
1965 typedef struct _DDHAL_SETCOLORKEYDATA
1966 {
1967 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1968 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
1969 DWORD dwFlags;
1970 DDCOLORKEY ckNew;
1971 HRESULT ddRVal;
1972 LPDDHALSURFCB_SETCOLORKEY SetColorKey;
1973 } DDHAL_SETCOLORKEYDATA;
1974
1975 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
1976 {
1977 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1978 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
1979 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
1980 LONG lXPos;
1981 LONG lYPos;
1982 HRESULT ddRVal;
1983 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;
1984 } DDHAL_SETOVERLAYPOSITIONDATA;
1985
1986 typedef struct _DDHAL_UPDATEOVERLAYDATA
1987 {
1988 LPDDRAWI_DIRECTDRAW_GBL lpDD;
1989 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
1990 RECTL rDest;
1991 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
1992 RECTL rSrc;
1993 DWORD dwFlags;
1994 DDOVERLAYFX overlayFX;
1995 HRESULT ddRVal;
1996 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;
1997 } DDHAL_UPDATEOVERLAYDATA;
1998
1999 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA
2000 {
2001 LPDDRAWI_DIRECTDRAW_GBL lpDD;
2002 DWORD dwFlags;
2003 DWORD bIsInVB;
2004 ULONG_PTR hEvent;
2005 HRESULT ddRVal;
2006 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank;
2007 } DDHAL_WAITFORVERTICALBLANKDATA;
2008
2009 typedef struct _DDHAL_DRVSETCOLORKEYDATA
2010 {
2011 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
2012 DWORD dwFlags;
2013 DDCOLORKEY ckNew;
2014 HRESULT ddRVal;
2015 LPDDHAL_SETCOLORKEY SetColorKey;
2016 } DDHAL_DRVSETCOLORKEYDATA;
2017
2018 typedef struct _DDMONITORINFO
2019 {
2020 WORD Manufacturer;
2021 WORD Product;
2022 DWORD SerialNumber;
2023 GUID DeviceIdentifier;
2024 int Mode640x480;
2025 int Mode800x600;
2026 int Mode1024x768;
2027 int Mode1280x1024;
2028 int Mode1600x1200;
2029 int ModeReserved1;
2030 int ModeReserved2;
2031 int ModeReserved3;
2032 } DDMONITORINFO, FAR *LPDDMONITORINFO;
2033
2034 typedef struct _DDRAWI_DDRAWCLIPPER_INT
2035 {
2036 LPVOID lpVtbl;
2037 LPDDRAWI_DDRAWCLIPPER_LCL lpLcl;
2038 LPDDRAWI_DDRAWCLIPPER_INT lpLink;
2039 DWORD dwIntRefCnt;
2040 } DDRAWI_DDRAWCLIPPER_INT;
2041
2042 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
2043 {
2044 LPDDRAWI_DIRECTDRAW_GBL lpDD;
2045 DWORD dwHeap;
2046 FLATPTR fpGARTLin;
2047 FLATPTR fpGARTDev;
2048 ULONG_PTR ulPolicyMaxBytes;
2049 HRESULT ddRVal;
2050 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap;
2051 } DDHAL_UPDATENONLOCALHEAPDATA;
2052
2053 typedef struct _DDHAL_SETCLIPLISTDATA
2054 {
2055 LPDDRAWI_DIRECTDRAW_GBL lpDD;
2056 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
2057 HRESULT ddRVal;
2058 LPDDHALSURFCB_SETCLIPLIST SetClipList;
2059 } DDHAL_SETCLIPLISTDATA;
2060
2061 typedef struct _DDRAWI_DDMOTIONCOMP_LCL
2062 {
2063 LPDDRAWI_DIRECTDRAW_LCL lpDD;
2064 GUID guid;
2065 DWORD dwUncompWidth;
2066 DWORD dwUncompHeight;
2067 DDPIXELFORMAT ddUncompPixelFormat;
2068 DWORD dwInternalFlags;
2069 DWORD dwRefCnt;
2070 DWORD dwProcessId;
2071 HANDLE hMoComp;
2072 DWORD dwDriverReserved1;
2073 DWORD dwDriverReserved2;
2074 DWORD dwDriverReserved3;
2075 LPVOID lpDriverReserved1;
2076 LPVOID lpDriverReserved2;
2077 LPVOID lpDriverReserved3;
2078 } DDRAWI_DDMOTIONCOMP_LCL;
2079
2080 typedef struct _DDRAWI_DDMOTIONCOMP_INT
2081 {
2082 LPVOID lpVtbl;
2083 LPDDRAWI_DDMOTIONCOMP_LCL lpLcl;
2084 LPDDRAWI_DDMOTIONCOMP_INT lpLink;
2085 DWORD dwIntRefCnt;
2086 } DDRAWI_DDMOTIONCOMP_INT;
2087
2088
2089 typedef struct _DDRAWI_DDVIDEOPORT_LCL
2090 {
2091 LPDDRAWI_DIRECTDRAW_LCL lpDD;
2092 DDVIDEOPORTDESC ddvpDesc;
2093 DDVIDEOPORTINFO ddvpInfo;
2094 LPDDRAWI_DDRAWSURFACE_INT lpSurface;
2095 LPDDRAWI_DDRAWSURFACE_INT lpVBISurface;
2096 LPDDRAWI_DDRAWSURFACE_INT *lpFlipInts;
2097 DWORD dwNumAutoflip;
2098 DWORD dwProcessID;
2099 DWORD dwStateFlags;
2100 DWORD dwFlags;
2101 DWORD dwRefCnt;
2102 FLATPTR fpLastFlip;
2103 ULONG_PTR dwReserved1;
2104 ULONG_PTR dwReserved2;
2105 HANDLE hDDVideoPort;
2106 DWORD dwNumVBIAutoflip;
2107 LPDDVIDEOPORTDESC lpVBIDesc;
2108 LPDDVIDEOPORTDESC lpVideoDesc;
2109 LPDDVIDEOPORTINFO lpVBIInfo;
2110 LPDDVIDEOPORTINFO lpVideoInfo;
2111 DWORD dwVBIProcessID;
2112 LPDDRAWI_DDVIDEOPORT_INT lpVPNotify;
2113 } DDRAWI_DDVIDEOPORT_LCL;
2114
2115
2116 typedef struct _DDRAWI_DDVIDEOPORT_INT
2117 {
2118 LPVOID lpVtbl;
2119 LPDDRAWI_DDVIDEOPORT_LCL lpLcl;
2120 LPDDRAWI_DDVIDEOPORT_INT lpLink;
2121 DWORD dwIntRefCnt;
2122 DWORD dwFlags;
2123 } DDRAWI_DDVIDEOPORT_INT;
2124
2125
2126 typedef struct _DDRAWI_DDRAWCLIPPER_LCL
2127 {
2128 DWORD lpClipMore;
2129 LPDDRAWI_DDRAWCLIPPER_GBL lpGbl;
2130 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
2131 DWORD dwLocalRefCnt;
2132 #ifndef _NO_COM
2133 IUnknown *pUnkOuter;
2134 #else
2135 PVOID *pUnkOuter;
2136 #endif
2137 LPDDRAWI_DIRECTDRAW_INT lpDD_int;
2138 ULONG_PTR dwReserved1;
2139 #ifndef _NO_COM
2140 IUnknown * pAddrefedThisOwner;
2141 #else
2142 PVOID pAddrefedThisOwner;
2143 #endif
2144 } DDRAWI_DDRAWCLIPPER_LCL;
2145
2146
2147
2148 typedef struct _DDRAWI_DDRAWCLIPPER_GBL
2149 {
2150 DWORD dwRefCnt;
2151 DWORD dwFlags;
2152 LPDDRAWI_DIRECTDRAW_GBL lpDD;
2153 DWORD dwProcessId;
2154 ULONG_PTR dwReserved1;
2155 ULONG_PTR hWnd;
2156 LPRGNDATA lpStaticClipList;
2157 } DDRAWI_DDRAWCLIPPER_GBL;
2158
2159 typedef BOOL (PASCAL *LPDDHEL_INIT)(LPDDRAWI_DIRECTDRAW_GBL,BOOL);
2160
2161 extern HRESULT DDAPI
2162 LateAllocateSurfaceMem(
2163 LPDIRECTDRAWSURFACE lpSurface,
2164 DWORD dwPleaseAllocType,
2165 DWORD dwWidthInBytesOrSize,
2166 DWORD dwHeight);
2167
2168 LPDIRECTDRAWSURFACE GetNextMipMap(
2169 LPDIRECTDRAWSURFACE lpLevel);
2170
2171
2172
2173 typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS;
2174 typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS;
2175 typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS;
2176 typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS;
2177 typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS;
2178 typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS;
2179 typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS;
2180 typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS;
2181 typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS;
2182 typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS;
2183 typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS;
2184 typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS;
2185 typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS;
2186 typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS;
2187 typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS;
2188
2189
2190 typedef DIRECTDRAWCLIPPERCALLBACKS *LPDIRECTDRAWCLIPPERCALLBACKS;
2191 typedef DIRECTDRAWPALETTECALLBACKS *LPDIRECTDRAWPALETTECALLBACKS;
2192 typedef DIRECTDRAWSURFACECALLBACKS *LPDIRECTDRAWSURFACECALLBACKS;
2193 typedef DIRECTDRAWCALLBACKS *LPDIRECTDRAWCALLBACKS;
2194
2195
2196 HRESULT CALLBACK
2197 D3DParseUnknownCommand (LPVOID lpvCommands,
2198 LPVOID *lplpvReturnedCommand);
2199
2200 #ifdef __cplusplus
2201 /* extern "C" */
2202 #endif
2203
2204 #endif /* __DDRAWI_INCLUDED__ */