2 * DirectDraw driver interface
5 * Copyright (C) 2001 Ove Kaaven
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.
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.
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
22 #ifndef __DDRAWI_INCLUDED__
23 #define __DDRAWI_INCLUDED__
25 /* Helper macro to enable gcc's extension. */
26 #ifndef __GNU_EXTENSION
28 #define __GNU_EXTENSION __extension__
30 #define __GNU_EXTENSION
38 #define OBJECT_ISROOT 0x80000000
47 #define VALID_ALIGNMENT(align) \
48 (!((align==0)||(align%2)!= 0 ))
50 /* the DirectDraw versions */
51 #define DD_VERSION 0x0200 /* compatibility version */
52 #define DD_RUNTIME_VERSION 0x0902 /* actual version */
54 /* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */
55 #define DD_HAL_VERSION 0x0100
57 /* more DCICOMMAND escapes */
59 #define DCICOMMAND 3075
62 #define DDCREATEDRIVEROBJECT 10
63 #define DDGET32BITDRIVERNAME 11
64 #define DDNEWCALLBACKFNS 12
65 #define DDVERSIONINFO 13
69 #define DDUNSUPPORTEDMODE ((DWORD) -1)
74 #define CCHDEVICENAME 32
76 #define MAX_DRIVER_NAME CCHDEVICENAME
78 #define DDHAL_DRIVER_DLLNAME "DDRAW16.DLL"
79 #define DDHAL_APP_DLLNAME "DDRAW.DLL"
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);
112 #define E_NOTIMPL 0x80004001L
113 #define E_OUTOFMEMORY 0x8007000EL
114 #define E_INVALIDARG 0x80070057L
115 #define E_FAIL 0x80004005L
119 /*****************************************************************************
120 * Initialization stuff
124 char szEntryPoint
[64];
126 } DD32BITDRIVERDATA
,*LPDD32BITDRIVERDATA
;
130 ULONG_PTR dwReserved1
;
131 ULONG_PTR dwReserved2
;
132 } DDVERSIONDATA
,*LPDDVERSIONDATA
;
134 typedef DWORD (PASCAL
*LPDD32BITDRIVERINIT
)(DWORD dwContext
);
138 /* predeclare some structures */
139 typedef struct _DDHALINFO
*LPDDHALINFO
;
140 typedef struct _DDRAWI_DIRECTDRAW_INT
*LPDDRAWI_DIRECTDRAW_INT
;
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
148 typedef struct _DDRAWI_DDRAWSURFACE_INT
*LPDDRAWI_DDRAWSURFACE_INT
;
150 #ifndef DDRAWI_DDRAWSURFACE_DEFINED
151 typedef struct _DDRAWI_DDRAWSURFACE_LCL
*LPDDRAWI_DDRAWSURFACE_LCL
;
152 #define DDRAWI_DDRAWSURFACE_DEFINED
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
;
169 /*****************************************************************************
170 * driver->ddraw callbacks
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
);
178 LPDDHAL_SETINFO lpSetInfo
;
179 LPDDHAL_VIDMEMALLOC lpVidMemAlloc
;
180 LPDDHAL_VIDMEMFREE lpVidMemFree
;
181 } DDHALDDRAWFNS
,*LPDDHALDDRAWFNS
;
183 /*****************************************************************************
184 * mode info structure
186 typedef struct _DDHALMODEINFO
{
196 DWORD dwAlphaBitMask
;
197 } DDHALMODEINFO
,*LPDDHALMODEINFO
;
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
209 /*****************************************************************************
210 * video memory info structure
212 typedef struct _VIDMEM
{
215 __GNU_EXTENSION
union {
221 __GNU_EXTENSION
union {
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
235 typedef struct _VIDMEMINFO
{
238 DWORD dwDisplayWidth
;
239 DWORD dwDisplayHeight
;
241 DDPIXELFORMAT ddpfDisplay
;
242 DWORD dwOffscreenAlign
;
243 DWORD dwOverlayAlign
;
244 DWORD dwTextureAlign
;
245 DWORD dwZBufferAlign
;
249 } VIDMEMINFO
,*LPVIDMEMINFO
;
253 typedef struct _HEAPALIAS
{
257 } HEAPALIAS
,*LPHEAPALIAS
;
259 typedef struct _HEAPALIASINFO
{
263 LPHEAPALIAS lpAliases
;
264 } HEAPALIASINFO
,*LPHEAPALIASINFO
;
266 #define HEAPALIASINFO_MAPPEDREAL 0x00000001
267 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
269 /*****************************************************************************
270 * capabilities structures
272 typedef struct _DDCORECAPS
{
281 DWORD dwAlphaBltConstBitDepths
;
282 DWORD dwAlphaBltPixelBitDepths
;
283 DWORD dwAlphaBltSurfaceBitDepths
;
284 DWORD dwAlphaOverlayConstBitDepths
;
285 DWORD dwAlphaOverlayPixelBitDepths
;
286 DWORD dwAlphaOverlaySurfaceBitDepths
;
287 DWORD dwZBufferBitDepths
;
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
];
300 DWORD dwMinOverlayStretch
;
301 DWORD dwMaxOverlayStretch
;
302 DWORD dwMinLiveVideoStretch
;
303 DWORD dwMaxLiveVideoStretch
;
304 DWORD dwMinHwCodecStretch
;
305 DWORD dwMaxHwCodecStretch
;
312 DWORD dwSVBRops
[DD_ROP_SPACE
];
316 DWORD dwVSBRops
[DD_ROP_SPACE
];
320 DWORD dwSSBRops
[DD_ROP_SPACE
];
321 DWORD dwMaxVideoPorts
;
322 DWORD dwCurrVideoPorts
;
324 } DDCORECAPS
,*LPDDCORECAPS
;
326 typedef struct _DDNONLOCALVIDMEMCAPS
{
330 DWORD dwNLVBCKeyCaps
;
332 DWORD dwNLVBRops
[DD_ROP_SPACE
];
333 } DDNONLOCALVIDMEMCAPS
,*LPDDNONLOCALVIDMEMCAPS
;
337 #define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2
338 #define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1
339 #define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
344 /*****************************************************************************
345 * ddraw->driver callbacks
347 #define DDHAL_DRIVER_NOTHANDLED 0x00000000l
348 #define DDHAL_DRIVER_HANDLED 0x00000001l
349 #define DDHAL_DRIVER_NOCKEYHW 0x00000002l
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
;
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
);
375 typedef struct _DDHAL_DDCALLBACKS
{
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
;
387 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
388 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface
;
389 } DDHAL_DDCALLBACKS
,*LPDDHAL_DDCALLBACKS
;
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
;
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
);
421 typedef struct _DDHAL_DDSURFACECALLBACKS
{
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
;
437 LPDDHALSURFCB_SETPALETTE SetPalette
;
438 } DDHAL_DDSURFACECALLBACKS
,*LPDDHAL_DDSURFACECALLBACKS
;
442 typedef struct _DDHAL_DESTROYPALETTEDATA
*LPDDHAL_DESTROYPALETTEDATA
;
443 typedef struct _DDHAL_SETENTRIESDATA
*LPDDHAL_SETENTRIESDATA
;
445 typedef DWORD (PASCAL
*LPDDHALPALCB_DESTROYPALETTE
)(LPDDHAL_DESTROYPALETTEDATA
);
446 typedef DWORD (PASCAL
*LPDDHALPALCB_SETENTRIES
) (LPDDHAL_SETENTRIESDATA
);
448 typedef struct _DDHAL_DDPALETTECALLBACKS
{
451 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
452 LPDDHALPALCB_SETENTRIES SetEntries
;
453 } DDHAL_DDPALETTECALLBACKS
,*LPDDHAL_DDPALETTECALLBACKS
;
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
);
461 typedef struct _DDHAL_DDEXEBUFCALLBACKS
{
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
;
471 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
*LPDDHAL_GETAVAILDRIVERMEMORYDATA
;
472 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
*LPDDHAL_UPDATENONLOCALHEAPDATA
;
473 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
*LPDDHAL_GETHEAPALIGNMENTDATA
;
475 typedef DWORD (PASCAL
*LPDDHAL_GETAVAILDRIVERMEMORY
)(LPDDHAL_GETAVAILDRIVERMEMORYDATA
);
476 typedef DWORD (PASCAL
*LPDDHAL_UPDATENONLOCALHEAP
) (LPDDHAL_UPDATENONLOCALHEAPDATA
);
477 typedef DWORD (PASCAL
*LPDDHAL_GETHEAPALIGNMENT
) (LPDDHAL_GETHEAPALIGNMENTDATA
);
479 typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS
{
482 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
483 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap
;
484 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment
;
485 LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus
;
486 } DDHAL_DDMISCELLANEOUSCALLBACKS
,*LPDDHAL_DDMISCELLANEOUSCALLBACKS
;
488 typedef struct _DDHAL_CREATESURFACEEXDATA
*LPDDHAL_CREATESURFACEEXDATA
;
489 typedef struct _DDHAL_GETDRIVERSTATEDATA
*LPDDHAL_GETDRIVERSTATEDATA
;
490 typedef struct _DDHAL_DESTROYDDLOCALDATA
*LPDDHAL_DESTROYDDLOCALDATA
;
492 typedef DWORD (PASCAL
*LPDDHAL_CREATESURFACEEX
)(LPDDHAL_CREATESURFACEEXDATA
);
493 typedef DWORD (PASCAL
*LPDDHAL_GETDRIVERSTATE
) (LPDDHAL_GETDRIVERSTATEDATA
);
494 typedef DWORD (PASCAL
*LPDDHAL_DESTROYDDLOCAL
) (LPDDHAL_DESTROYDDLOCALDATA
);
496 typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS
{
500 LPDDHAL_CREATESURFACEEX CreateSurfaceEx
;
501 LPDDHAL_GETDRIVERSTATE GetDriverState
;
502 LPDDHAL_DESTROYDDLOCAL DestroyDDLocal
;
503 } DDHAL_DDMISCELLANEOUS2CALLBACKS
,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS
;
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
;
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
);
538 typedef struct _DDHAL_DDVIDEOPORTCALLBACKS
542 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort
;
543 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort
;
544 LPDDHALVPORTCB_FLIP FlipVideoPort
;
545 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth
;
546 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats
;
547 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats
;
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
;
561 typedef struct _DDHAL_COLORCONTROLDATA
*LPDDHAL_COLORCONTROLDATA
;
563 typedef DWORD (PASCAL
*LPDDHALCOLORCB_COLORCONTROL
)(LPDDHAL_COLORCONTROLDATA
);
566 typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS
570 LPDDHALCOLORCB_COLORCONTROL ColorControl
;
571 } DDHAL_DDCOLORCONTROLCALLBACKS
;
573 typedef struct _DDHAL_SYNCSURFACEDATA
*LPDDHAL_SYNCSURFACEDATA
;
574 typedef struct _DDHAL_SYNCVIDEOPORTDATA
*LPDDHAL_SYNCVIDEOPORTDATA
;
576 typedef DWORD (PASCAL
*LPDDHALKERNELCB_SYNCSURFACE
)(LPDDHAL_SYNCSURFACEDATA
);
577 typedef DWORD (PASCAL
*LPDDHALKERNELCB_SYNCVIDEOPORT
)(LPDDHAL_SYNCVIDEOPORTDATA
);
579 typedef struct _DDHAL_DDKERNELCALLBACKS
583 LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData
;
584 LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData
;
585 } DDHAL_DDKERNELCALLBACKS
, *LPDDHAL_DDKERNELCALLBACKS
;
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
;
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
);
609 typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS
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
;
627 typedef HRESULT (WINAPI
*LPDDGAMMACALIBRATORPROC
)(LPDDGAMMARAMP
, LPBYTE
);
631 /*****************************************************************************
632 * driver info structure
634 * The HAL is queried for additional callbacks via the GetDriverInfo callback.
636 typedef struct _DDHAL_GETDRIVERINFODATA
*LPDDHAL_GETDRIVERINFODATA
;
637 typedef DWORD (PASCAL
*LPDDHAL_GETDRIVERINFO
)(LPDDHAL_GETDRIVERINFODATA
);
640 typedef struct _DDHAL_GETDRIVERINFODATA
{
644 DWORD dwExpectedSize
;
650 } DDHAL_GETDRIVERINFODATA
;
652 typedef struct _DDHALINFO
{
654 LPDDHAL_DDCALLBACKS lpDDCallbacks
;
655 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks
;
656 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks
;
659 DWORD dwMonitorFrequency
;
660 LPDDHAL_GETDRIVERINFO GetDriverInfo
;
664 LPDDHALMODEINFO lpModeInfo
;
669 ULONG_PTR lpD3DGlobalDriverData
;
670 ULONG_PTR lpD3DHALCallbacks
;
671 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks
;
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 )
686 #define MAX_PALETTE_SIZE 256
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
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
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
;
805 /*****************************************************************************
806 * parameter structures
808 typedef struct _DDHAL_DESTROYDRIVERDATA
{
809 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
811 LPDDHAL_DESTROYDRIVER DestroyDriver
;
812 } DDHAL_DESTROYDRIVERDATA
;
814 typedef struct _DDHAL_SETMODEDATA
{
815 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
818 LPDDHAL_SETMODE SetMode
;
823 typedef struct _DDHAL_CREATESURFACEDATA
{
824 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
825 LPDDSURFACEDESC lpDDSurfaceDesc
;
826 LPDDRAWI_DDRAWSURFACE_LCL
* lplpSList
;
829 LPDDHAL_CREATESURFACE CreateSurface
;
830 } DDHAL_CREATESURFACEDATA
;
832 typedef struct _DDHAL_CANCREATESURFACEDATA
{
833 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
834 LPDDSURFACEDESC lpDDSurfaceDesc
;
835 DWORD bIsDifferentPixelFormat
;
837 LPDDHAL_CANCREATESURFACE CanCreateSurface
;
838 } DDHAL_CANCREATESURFACEDATA
;
840 typedef struct _DDHAL_CREATEPALETTEDATA
{
841 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
842 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
843 LPPALETTEENTRY lpColorTable
;
845 LPDDHAL_CREATEPALETTE CreatePalette
;
847 } DDHAL_CREATEPALETTEDATA
;
849 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA
{
850 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
854 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
855 } DDHAL_SETEXCLUSIVEMODEDATA
;
858 typedef struct _DDHAL_DESTROYSURFACEDATA
{
859 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
860 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
862 LPDDHALSURFCB_DESTROYSURFACE DestroySurface
;
863 } DDHAL_DESTROYSURFACEDATA
;
865 typedef struct _DDHAL_FLIPDATA
{
866 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
867 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr
;
868 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg
;
871 LPDDHALSURFCB_FLIP Flip
;
872 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft
;
873 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft
;
876 typedef struct _DDHAL_LOCKDATA
{
877 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
878 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
883 LPDDHALSURFCB_LOCK Lock
;
887 typedef struct _DDHAL_UNLOCKDATA
{
888 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
889 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
891 LPDDHALSURFCB_UNLOCK Unlock
;
894 typedef struct _DDHAL_BLTDATA
{
895 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
896 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
898 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
904 LPDDHALSURFCB_BLT Blt
;
912 typedef struct _DDHAL_SETPALETTEDATA
{
913 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
914 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
915 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
917 LPDDHALSURFCB_SETPALETTE SetPalette
;
919 } DDHAL_SETPALETTEDATA
;
922 typedef struct _DDHAL_DESTROYPALETTEDATA
{
923 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
924 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
926 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
927 } DDHAL_DESTROYPALETTEDATA
;
929 typedef struct _DDHAL_SETENTRIESDATA
{
930 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
931 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
934 LPPALETTEENTRY lpEntries
;
936 LPDDHALPALCB_SETENTRIES SetEntries
;
937 } DDHAL_SETENTRIESDATA
;
940 typedef struct _DDHAL_CANCREATEVPORTDATA
942 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
943 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
945 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort
;
946 } DDHAL_CANCREATEVPORTDATA
;
948 typedef struct _DDHAL_CREATEVPORTDATA
950 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
951 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
952 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
954 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort
;
955 } DDHAL_CREATEVPORTDATA
;
957 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA
959 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
960 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
961 LPDDPIXELFORMAT lpddpfFormat
;
965 LPDDVIDEOPORTBANDWIDTH lpBandwidth
;
967 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth
;
968 } DDHAL_GETVPORTBANDWIDTHDATA
;
970 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA
972 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
973 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
975 LPDDPIXELFORMAT lpddpfFormat
;
978 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats
;
979 } DDHAL_GETVPORTINPUTFORMATDATA
;
981 typedef struct _DDHAL_GETVPORTFIELDDATA
983 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
984 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
987 LPDDHALVPORTCB_GETFIELD GetVideoPortField
;
988 } DDHAL_GETVPORTFIELDDATA
;
990 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA
992 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
993 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
995 LPDDPIXELFORMAT lpddpfInputFormat
;
996 LPDDPIXELFORMAT lpddpfOutputFormats
;
999 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats
;
1000 } DDHAL_GETVPORTOUTPUTFORMATDATA
;
1002 typedef struct _DDHAL_GETVPORTLINEDATA
1004 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1005 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1008 LPDDHALVPORTCB_GETLINE GetVideoPortLine
;
1009 } DDHAL_GETVPORTLINEDATA
;
1011 typedef struct _DDHAL_DESTROYVPORTDATA
1013 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1014 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1016 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort
;
1017 } DDHAL_DESTROYVPORTDATA
;
1019 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA
1021 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1024 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus
;
1025 } DDHAL_GETVPORTFLIPSTATUSDATA
;
1027 typedef struct _DDHAL_UPDATEVPORTDATA
1029 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1030 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1031 LPDDRAWI_DDRAWSURFACE_INT
*lplpDDSurface
;
1032 LPDDRAWI_DDRAWSURFACE_INT
*lplpDDVBISurface
;
1033 LPDDVIDEOPORTINFO lpVideoInfo
;
1035 DWORD dwNumAutoflip
;
1036 DWORD dwNumVBIAutoflip
;
1038 LPDDHALVPORTCB_UPDATE UpdateVideoPort
;
1039 } DDHAL_UPDATEVPORTDATA
;
1041 typedef struct _DDHAL_WAITFORVPORTSYNCDATA
1043 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1044 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1049 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync
;
1050 } DDHAL_WAITFORVPORTSYNCDATA
;
1052 typedef struct _DDHAL_GETVPORTSIGNALDATA
1054 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1055 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1058 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus
;
1059 } DDHAL_GETVPORTSIGNALDATA
;
1061 typedef struct _DDHAL_VPORTCOLORDATA
1063 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1064 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1066 LPDDCOLORCONTROL lpColorData
;
1068 LPDDHALVPORTCB_COLORCONTROL ColorControl
;
1069 } DDHAL_VPORTCOLORDATA
;
1071 typedef struct _DDHAL_FLIPVPORTDATA
1073 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1074 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1075 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr
;
1076 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg
;
1078 LPDDHALVPORTCB_FLIP FlipVideoPort
;
1079 } DDHAL_FLIPVPORTDATA
;
1081 typedef struct _DDHAL_GETVPORTCONNECTDATA
1083 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1085 LPDDVIDEOPORTCONNECT lpConnect
;
1088 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo
;
1089 } DDHAL_GETVPORTCONNECTDATA
;
1091 typedef struct _DDHAL_SYNCSURFACEDATA
1094 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1095 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1096 DWORD dwSurfaceOffset
;
1097 ULONG_PTR fpLockPtr
;
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
;
1108 } DDHAL_SYNCSURFACEDATA
;
1110 typedef struct _DDHAL_SYNCVIDEOPORTDATA
1113 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1114 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1115 DWORD dwOriginOffset
;
1118 ULONG_PTR dwDriverReserved1
;
1119 ULONG_PTR dwDriverReserved2
;
1120 ULONG_PTR dwDriverReserved3
;
1122 } DDHAL_SYNCVIDEOPORTDATA
;
1124 typedef struct _DDHAL_DESTROYDDLOCALDATA
1127 LPDDRAWI_DIRECTDRAW_LCL pDDLcl
;
1129 } DDHAL_DESTROYDDLOCALDATA
;
1131 typedef struct _DDHAL_CREATESURFACEEXDATA
{
1133 LPDDRAWI_DIRECTDRAW_LCL lpDDLcl
;
1134 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl
;
1136 } DDHAL_CREATESURFACEEXDATA
;
1138 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
1140 ULONG_PTR dwInstance
;
1143 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment
;
1144 HEAPALIGNMENT Alignment
;
1145 } DDHAL_GETHEAPALIGNMENTDATA
;
1148 typedef struct _DDMORESURFACECAPS
1151 DDSCAPSEX ddsCapsMore
;
1152 struct tagExtendedHeapRestrictions
1154 DDSCAPSEX ddsCapsEx
;
1155 DDSCAPSEX ddsCapsExAlt
;
1156 } ddsExtendedHeapRestrictions
[1];
1157 } DDMORESURFACECAPS
, * LPDDMORESURFACECAPS
;
1159 typedef struct _DDSTEREOMODE
1165 DWORD dwRefreshRate
;
1168 } DDSTEREOMODE
, * LPDDSTEREOMODE
;
1170 /*****************************************************************************
1171 * high-level ddraw implementation structures
1173 typedef struct _IUNKNOWN_LIST
{
1174 struct _IUNKNOWN_LIST
* lpLink
;
1178 IUnknown
* lpIUnknown
;
1181 #endif /* _NO_COM */
1182 } IUNKNOWN_LIST
,*LPIUNKNOWN_LIST
;
1185 typedef struct _PROCESS_LIST
{
1186 struct _PROCESS_LIST
* lpLink
;
1191 } PROCESS_LIST
,*LPPROCESS_LIST
;
1193 typedef struct _ATTACHLIST
{
1195 struct _ATTACHLIST
* lpLink
;
1196 LPDDRAWI_DDRAWSURFACE_LCL lpAttached
;
1197 LPDDRAWI_DDRAWSURFACE_INT lpIAttached
;
1198 } ATTACHLIST
,*LPATTACHLIST
;
1200 #define DDAL_IMPLICIT 0x00000001
1202 typedef struct _ACCESSRECTLIST
{
1203 struct _ACCESSRECTLIST
* lpLink
;
1205 LPDDRAWI_DIRECTDRAW_LCL lpOwner
;
1206 LPVOID lpSurfaceData
;
1208 LPHEAPALIASINFO lpHeapAliasInfo
;
1209 } ACCESSRECTLIST
,*LPACCESSRECTLIST
;
1211 #define ACCESSRECT_VRAMSTYLE 0x00000001
1212 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
1213 #define ACCESSRECT_BROKEN 0x00000004
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
;
1222 typedef struct _DDRAWI_DIRECTDRAW_INT
{
1224 LPDDRAWI_DIRECTDRAW_LCL lpLcl
;
1225 LPDDRAWI_DIRECTDRAW_INT lpLink
;
1227 } DDRAWI_DIRECTDRAW_INT
;
1230 typedef struct _DDRAWI_DIRECTDRAW_LCL
{
1232 LPDDRAWI_DIRECTDRAW_GBL lpGbl
;
1235 DWORD dwLocalRefCnt
;
1238 IUnknown
* pUnkOuter
;
1246 LPDDRAWI_DDRAWSURFACE_INT lpPrimary
;
1247 LPDDRAWI_DDRAWSURFACE_INT lpCB
;
1248 DWORD dwPreferredMode
;
1250 HINSTANCE hD3DInstance
;
1252 IUnknown
* pD3DIUnknown
;
1256 LPDDHAL_CALLBACKS lpDDCB
;
1259 DWORD dwAppHackFlags
;
1261 ULONG_PTR hFocusWnd
;
1262 DWORD dwHotTracking
;
1265 ULONG_PTR hWndPopup
;
1267 ULONG_PTR hGammaCalibrator
;
1268 LPDDGAMMACALIBRATORPROC lpGammaCalibrator
;
1269 } DDRAWI_DIRECTDRAW_LCL
;
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
1296 typedef struct _DDRAWI_DIRECTDRAW_GBL
{
1299 FLATPTR fpPrimaryOrig
;
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
;
1316 LPVOID lpDriverHandle
;
1317 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner
;
1319 DWORD dwModeIndexOrig
;
1323 LPDDHALMODEINFO lpModeInfo
;
1324 PROCESS_LIST plProcessList
;
1325 DWORD dwSurfaceLockCount
;
1326 DWORD dwAliasedLockCnt
;
1327 ULONG_PTR dwReserved3
;
1332 DBLNODE dbnOverlayRoot
;
1333 volatile LPWORD lpwPDeviceFlags
;
1335 DWORD dwWin16LockCnt
;
1339 DWORD dwSaveNumModes
;
1341 ULONG_PTR lpD3DGlobalDriverData
;
1342 ULONG_PTR lpD3DHALCallbacks
;
1343 DDCORECAPS ddBothCaps
;
1345 LPDDVIDEOPORTCAPS lpDDVideoPortCaps
;
1346 LPDDRAWI_DDVIDEOPORT_INT dvpList
;
1347 ULONG_PTR lpD3DHALCallbacks2
;
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
;
1361 DWORD dwDOSBoxEvent
;
1363 char cDriverName
[MAX_DRIVER_NAME
];
1365 ULONG_PTR lpD3DHALCallbacks3
;
1366 DWORD dwNumZPixelFormats
;
1367 LPDDPIXELFORMAT lpZPixelFormats
;
1368 LPDDRAWI_DDMOTIONCOMP_INT mcList
;
1370 DDSCAPSEX ddsCapsMore
;
1371 } DDRAWI_DIRECTDRAW_GBL
;
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
1406 typedef struct _DDRAWI_DDRAWSURFACE_INT
{
1408 LPDDRAWI_DDRAWSURFACE_LCL lpLcl
;
1409 LPDDRAWI_DDRAWSURFACE_INT lpLink
;
1411 } DDRAWI_DDRAWSURFACE_INT
;
1413 typedef struct _DDRAWI_DDRAWSURFACE_GBL
{
1415 DWORD dwGlobalFlags
;
1416 __GNU_EXTENSION
union {
1417 LPACCESSRECTLIST lpRectList
;
1421 __GNU_EXTENSION
union {
1422 LPVMEMHEAP lpVidMemHeap
;
1425 __GNU_EXTENSION
union {
1426 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1430 __GNU_EXTENSION
union {
1437 ULONG_PTR dwReserved1
;
1438 DDPIXELFORMAT ddpfSurface
;
1439 } DDRAWI_DDRAWSURFACE_GBL
;
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
1464 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE
{
1466 __GNU_EXTENSION
union {
1467 DWORD dwPhysicalPageTable
;
1468 FLATPTR fpPhysicalVidMem
;
1472 ULONG_PTR dwSavedDCContext
;
1473 FLATPTR fpAliasedVidMem
;
1474 ULONG_PTR dwDriverReserved
;
1475 ULONG_PTR dwHELReserved
;
1477 ULONG_PTR hKernelSurface
;
1478 DWORD dwKernelRefCnt
;
1479 LPDDCOLORCONTROL lpColorInfo
;
1481 DWORD dwContentsStamp
;
1482 LPVOID lpvUnswappedDriverReserved
;
1483 LPVOID lpDDRAWReserved2
;
1484 DWORD dwDDRAWReserved1
;
1485 DWORD dwDDRAWReserved2
;
1486 FLATPTR fpAliasOfVidMem
;
1487 } DDRAWI_DDRAWSURFACE_GBL_MORE
;
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))
1495 #define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \
1496 ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem )
1499 typedef struct _DISPLAYMODEINFO
1504 BYTE wMonitorsAttachedToDesktop
;
1506 } DISPLAYMODEINFO
, *LPDISPLAYMODEINFO
;
1508 #define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO)))
1513 typedef struct _DDRAWI_DDRAWSURFACE_MORE
{
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
;
1523 LPHEAPALIASINFO lpHeapAliasInfo
;
1524 DWORD dwOverlayFlags
;
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
;
1539 DISPLAYMODEINFO dmiDDrawReserved7
;
1541 DWORD dwSurfaceHandle
;
1542 DWORD qwDDrawReserved8
[2];
1543 LPVOID lpDDrawReserved9
;
1545 LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2
;
1546 LPDDRAWI_DDRAWSURFACE_LCL
*slist
;
1549 } DDRAWI_DDRAWSURFACE_MORE
;
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
;
1563 __GNU_EXTENSION
union
1565 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette
;
1566 LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette
;
1568 __GNU_EXTENSION
union
1570 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper
;
1571 LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper
;
1573 DWORD dwModeCreatedIn
;
1574 DWORD dwBackBufferCount
;
1575 DDCOLORKEY ddckCKDestBlt
;
1576 DDCOLORKEY ddckCKSrcBlt
;
1578 ULONG_PTR dwReserved1
;
1579 DDCOLORKEY ddckCKSrcOverlay
;
1580 DDCOLORKEY ddckCKDestOverlay
;
1581 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying
;
1582 DBLNODE dbnOverlayNode
;
1589 } DDRAWI_DDRAWSURFACE_LCL
;
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
1627 typedef struct _DDRAWI_DDRAWPALETTE_INT
{
1629 LPDDRAWI_DDRAWPALETTE_LCL lpLcl
;
1630 LPDDRAWI_DDRAWPALETTE_INT lpLink
;
1632 } DDRAWI_DDRAWPALETTE_INT
;
1634 typedef struct _DDRAWI_DDRAWPALETTE_GBL
{
1637 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1639 LPPALETTEENTRY lpColorTable
;
1640 __GNU_EXTENSION
union {
1641 ULONG_PTR dwReserved1
;
1642 HPALETTE hHELGDIPalette
;
1644 DWORD dwDriverReserved
;
1645 DWORD dwContentsStamp
;
1648 } DDRAWI_DDRAWPALETTE_GBL
;
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
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
1715 #define DDBLT_ANYALPHA \
1716 (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \
1717 DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE | \
1718 DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST)
1720 #define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \
1721 DDSCAPS_OVERLAY | DDSCAPS_TEXTURE | \
1722 DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP )
1725 #define DDHALINFOSIZE_V2 sizeof(DDHALINFO)
1727 #define DDOVER_ANYALPHA \
1728 (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \
1729 DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE | \
1730 DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST)
1733 typedef struct _DDRAWI_DDRAWPALETTE_LCL
{
1735 LPDDRAWI_DDRAWPALETTE_GBL lpGbl
;
1736 ULONG_PTR dwUnused0
;
1737 DWORD dwLocalRefCnt
;
1739 IUnknown
* pUnkOuter
;
1743 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1744 ULONG_PTR dwReserved1
;
1746 ULONG_PTR dwDDRAWReserved1
;
1747 ULONG_PTR dwDDRAWReserved2
;
1748 ULONG_PTR dwDDRAWReserved3
;
1749 } DDRAWI_DDRAWPALETTE_LCL
;
1752 typedef struct _DDMCCOMPBUFFERINFO
1755 DWORD dwNumCompBuffers
;
1756 DWORD dwWidthToCreate
;
1757 DWORD dwHeightToCreate
;
1758 DWORD dwBytesToAllocate
;
1759 DDSCAPS2 ddCompCaps
;
1760 DDPIXELFORMAT ddPixelFormat
;
1761 } DDMCCOMPBUFFERINFO
, *LPDDMCCOMPBUFFERINFO
;
1763 typedef struct _DDMCBUFFERINFO
1766 LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface
;
1770 } DDMCBUFFERINFO
, *LPDDMCBUFFERINFO
;
1772 typedef struct _DDHAL_GETDRIVERSTATEDATA
{
1774 __GNU_EXTENSION
union
1776 ULONG_PTR dwhContext
;
1781 } DDHAL_GETDRIVERSTATEDATA
;
1783 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA
1785 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1786 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1787 LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached
;
1789 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface
;
1790 } DDHAL_ADDATTACHEDSURFACEDATA
;
1794 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA
1796 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1797 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1798 LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface
;
1799 DWORD dwInputDataSize
;
1801 DWORD dwOutputDataSize
;
1802 LPVOID lpOutputData
;
1804 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame
;
1805 } DDHAL_BEGINMOCOMPFRAMEDATA
;
1807 typedef struct _DDHAL_COLORCONTROLDATA
1809 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1810 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1811 LPDDCOLORCONTROL lpColorData
;
1814 LPDDHALCOLORCB_COLORCONTROL ColorControl
;
1815 } DDHAL_COLORCONTROLDATA
;
1817 typedef struct _DDHAL_CREATEMOCOMPDATA
1819 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1820 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1822 DWORD dwUncompWidth
;
1823 DWORD dwUncompHeight
;
1824 DDPIXELFORMAT ddUncompPixelFormat
;
1828 LPDDHALMOCOMPCB_CREATE CreateMoComp
;
1829 } DDHAL_CREATEMOCOMPDATA
;
1831 typedef struct _DDHAL_DESTROYMOCOMPDATA
1833 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1834 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1836 LPDDHALMOCOMPCB_DESTROY DestroyMoComp
;
1837 } DDHAL_DESTROYMOCOMPDATA
;
1839 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA
1841 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1842 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1844 DWORD dwInputDataSize
;
1846 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame
;
1847 } DDHAL_ENDMOCOMPFRAMEDATA
;
1849 typedef struct _DDHAL_FLIPTOGDISURFACEDATA
1851 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1855 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface
;
1856 } DDHAL_FLIPTOGDISURFACEDATA
;
1858 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
1860 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1865 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
1866 DDSCAPSEX ddsCapsEx
;
1868 } DDHAL_GETAVAILDRIVERMEMORYDATA
;
1870 typedef struct _DDHAL_GETBLTSTATUSDATA
1872 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1873 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1876 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus
;
1877 } DDHAL_GETBLTSTATUSDATA
;
1879 typedef struct _DDHAL_GETFLIPSTATUSDATA
1881 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1882 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1885 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus
;
1886 } DDHAL_GETFLIPSTATUSDATA
;
1888 typedef struct _DDHAL_GETINTERNALMOCOMPDATA
1890 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1894 DDPIXELFORMAT ddPixelFormat
;
1895 DWORD dwScratchMemAlloc
;
1897 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo
;
1898 } DDHAL_GETINTERNALMOCOMPDATA
;
1900 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA
1902 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1906 DDPIXELFORMAT ddPixelFormat
;
1907 DWORD dwNumTypesCompBuffs
;
1908 LPDDMCCOMPBUFFERINFO lpCompBuffInfo
;
1910 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo
;
1911 } DDHAL_GETMOCOMPCOMPBUFFDATA
;
1913 typedef struct _DDHAL_GETMOCOMPGUIDSDATA
1915 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1919 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids
;
1920 } DDHAL_GETMOCOMPGUIDSDATA
;
1922 typedef struct _DDHAL_GETMOCOMPFORMATSDATA
1924 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1927 LPDDPIXELFORMAT lpFormats
;
1929 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats
;
1930 } DDHAL_GETMOCOMPFORMATSDATA
;
1932 typedef struct _DDHAL_GETSCANLINEDATA
1934 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1937 LPDDHAL_GETSCANLINE GetScanLine
;
1938 } DDHAL_GETSCANLINEDATA
;
1940 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA
1942 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1943 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1944 LPDDRAWI_DDRAWSURFACE_LCL lpSurface
;
1947 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus
;
1948 } DDHAL_QUERYMOCOMPSTATUSDATA
;
1950 typedef struct _DDHAL_RENDERMOCOMPDATA
1952 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1953 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1955 LPDDMCBUFFERINFO lpBufferInfo
;
1958 DWORD dwInputDataSize
;
1959 LPVOID lpOutputData
;
1960 DWORD dwOutputDataSize
;
1962 LPDDHALMOCOMPCB_RENDER RenderMoComp
;
1963 } DDHAL_RENDERMOCOMPDATA
;
1965 typedef struct _DDHAL_SETCOLORKEYDATA
1967 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1968 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1972 LPDDHALSURFCB_SETCOLORKEY SetColorKey
;
1973 } DDHAL_SETCOLORKEYDATA
;
1975 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
1977 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1978 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
1979 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
1983 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition
;
1984 } DDHAL_SETOVERLAYPOSITIONDATA
;
1986 typedef struct _DDHAL_UPDATEOVERLAYDATA
1988 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1989 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
1991 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
1994 DDOVERLAYFX overlayFX
;
1996 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay
;
1997 } DDHAL_UPDATEOVERLAYDATA
;
1999 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA
2001 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2006 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank
;
2007 } DDHAL_WAITFORVERTICALBLANKDATA
;
2009 typedef struct _DDHAL_DRVSETCOLORKEYDATA
2011 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
2015 LPDDHAL_SETCOLORKEY SetColorKey
;
2016 } DDHAL_DRVSETCOLORKEYDATA
;
2018 typedef struct _DDMONITORINFO
2023 GUID DeviceIdentifier
;
2032 } DDMONITORINFO
, FAR
*LPDDMONITORINFO
;
2034 typedef struct _DDRAWI_DDRAWCLIPPER_INT
2037 LPDDRAWI_DDRAWCLIPPER_LCL lpLcl
;
2038 LPDDRAWI_DDRAWCLIPPER_INT lpLink
;
2040 } DDRAWI_DDRAWCLIPPER_INT
;
2042 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
2044 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2048 ULONG_PTR ulPolicyMaxBytes
;
2050 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap
;
2051 } DDHAL_UPDATENONLOCALHEAPDATA
;
2053 typedef struct _DDHAL_SETCLIPLISTDATA
2055 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2056 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
2058 LPDDHALSURFCB_SETCLIPLIST SetClipList
;
2059 } DDHAL_SETCLIPLISTDATA
;
2061 typedef struct _DDRAWI_DDMOTIONCOMP_LCL
2063 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
2065 DWORD dwUncompWidth
;
2066 DWORD dwUncompHeight
;
2067 DDPIXELFORMAT ddUncompPixelFormat
;
2068 DWORD dwInternalFlags
;
2072 DWORD dwDriverReserved1
;
2073 DWORD dwDriverReserved2
;
2074 DWORD dwDriverReserved3
;
2075 LPVOID lpDriverReserved1
;
2076 LPVOID lpDriverReserved2
;
2077 LPVOID lpDriverReserved3
;
2078 } DDRAWI_DDMOTIONCOMP_LCL
;
2080 typedef struct _DDRAWI_DDMOTIONCOMP_INT
2083 LPDDRAWI_DDMOTIONCOMP_LCL lpLcl
;
2084 LPDDRAWI_DDMOTIONCOMP_INT lpLink
;
2086 } DDRAWI_DDMOTIONCOMP_INT
;
2089 typedef struct _DDRAWI_DDVIDEOPORT_LCL
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
;
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
;
2116 typedef struct _DDRAWI_DDVIDEOPORT_INT
2119 LPDDRAWI_DDVIDEOPORT_LCL lpLcl
;
2120 LPDDRAWI_DDVIDEOPORT_INT lpLink
;
2123 } DDRAWI_DDVIDEOPORT_INT
;
2126 typedef struct _DDRAWI_DDRAWCLIPPER_LCL
2129 LPDDRAWI_DDRAWCLIPPER_GBL lpGbl
;
2130 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
2131 DWORD dwLocalRefCnt
;
2133 IUnknown
*pUnkOuter
;
2137 LPDDRAWI_DIRECTDRAW_INT lpDD_int
;
2138 ULONG_PTR dwReserved1
;
2140 IUnknown
* pAddrefedThisOwner
;
2142 PVOID pAddrefedThisOwner
;
2144 } DDRAWI_DDRAWCLIPPER_LCL
;
2148 typedef struct _DDRAWI_DDRAWCLIPPER_GBL
2152 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2154 ULONG_PTR dwReserved1
;
2156 LPRGNDATA lpStaticClipList
;
2157 } DDRAWI_DDRAWCLIPPER_GBL
;
2159 typedef BOOL (PASCAL
*LPDDHEL_INIT
)(LPDDRAWI_DIRECTDRAW_GBL
,BOOL
);
2161 extern HRESULT DDAPI
2162 LateAllocateSurfaceMem(
2163 LPDIRECTDRAWSURFACE lpSurface
,
2164 DWORD dwPleaseAllocType
,
2165 DWORD dwWidthInBytesOrSize
,
2168 LPDIRECTDRAWSURFACE
GetNextMipMap(
2169 LPDIRECTDRAWSURFACE lpLevel
);
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
;
2190 typedef DIRECTDRAWCLIPPERCALLBACKS
*LPDIRECTDRAWCLIPPERCALLBACKS
;
2191 typedef DIRECTDRAWPALETTECALLBACKS
*LPDIRECTDRAWPALETTECALLBACKS
;
2192 typedef DIRECTDRAWSURFACECALLBACKS
*LPDIRECTDRAWSURFACECALLBACKS
;
2193 typedef DIRECTDRAWCALLBACKS
*LPDIRECTDRAWCALLBACKS
;
2197 D3DParseUnknownCommand (LPVOID lpvCommands
,
2198 LPVOID
*lplpvReturnedCommand
);
2204 #endif /* __DDRAWI_INCLUDED__ */