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