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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #ifndef __DDRAWI_INCLUDED__
23 #define __DDRAWI_INCLUDED__
29 #define OBJECT_ISROOT 0x80000000
38 #define VALID_ALIGNMENT(align) \
39 (!((align==0)||(align%2)!= 0 ))
41 /* the DirectDraw versions */
42 #define DD_VERSION 0x0200 /* compatibility version */
43 #define DD_RUNTIME_VERSION 0x0902 /* actual version */
45 /* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */
46 #define DD_HAL_VERSION 0x0100
48 /* more DCICOMMAND escapes */
50 #define DCICOMMAND 3075
53 #define DDCREATEDRIVEROBJECT 10
54 #define DDGET32BITDRIVERNAME 11
55 #define DDNEWCALLBACKFNS 12
56 #define DDVERSIONINFO 13
60 #define DDUNSUPPORTEDMODE ((DWORD) -1)
65 #define CCHDEVICENAME 32
67 #define MAX_DRIVER_NAME CCHDEVICENAME
69 #define DDHAL_DRIVER_DLLNAME "DDRAW16.DLL"
70 #define DDHAL_APP_DLLNAME "DDRAW.DLL"
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);
103 #define E_NOTIMPL 0x80004001L
104 #define E_OUTOFMEMORY 0x8007000EL
105 #define E_INVALIDARG 0x80070057L
106 #define E_FAIL 0x80004005L
110 /*****************************************************************************
111 * Initialization stuff
115 char szEntryPoint
[64];
117 } DD32BITDRIVERDATA
,*LPDD32BITDRIVERDATA
;
121 ULONG_PTR dwReserved1
;
122 ULONG_PTR dwReserved2
;
123 } DDVERSIONDATA
,*LPDDVERSIONDATA
;
125 typedef DWORD (PASCAL
*LPDD32BITDRIVERINIT
)(DWORD dwContext
);
129 /* predeclare some structures */
130 typedef struct _DDHALINFO
*LPDDHALINFO
;
131 typedef struct _DDRAWI_DIRECTDRAW_INT
*LPDDRAWI_DIRECTDRAW_INT
;
132 typedef struct _DDRAWI_DIRECTDRAW_LCL
*LPDDRAWI_DIRECTDRAW_LCL
;
133 typedef struct _DDRAWI_DIRECTDRAW_GBL
*LPDDRAWI_DIRECTDRAW_GBL
;
134 typedef struct _DDRAWI_DDRAWSURFACE_INT
*LPDDRAWI_DDRAWSURFACE_INT
;
135 typedef struct _DDRAWI_DDRAWSURFACE_LCL
*LPDDRAWI_DDRAWSURFACE_LCL
;
136 typedef struct _DDRAWI_DDRAWSURFACE_GBL
*LPDDRAWI_DDRAWSURFACE_GBL
;
137 typedef struct _DDRAWI_DDRAWSURFACE_MORE
*LPDDRAWI_DDRAWSURFACE_MORE
;
138 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE
*LPDDRAWI_DDRAWSURFACE_GBL_MORE
;
139 typedef struct _DDRAWI_DDRAWPALETTE_INT
*LPDDRAWI_DDRAWPALETTE_INT
;
140 typedef struct _DDRAWI_DDRAWPALETTE_LCL
*LPDDRAWI_DDRAWPALETTE_LCL
;
141 typedef struct _DDRAWI_DDRAWPALETTE_GBL
*LPDDRAWI_DDRAWPALETTE_GBL
;
142 typedef struct _DDRAWI_DDRAWCLIPPER_INT
*LPDDRAWI_DDRAWCLIPPER_INT
;
143 typedef struct _DDRAWI_DDRAWCLIPPER_LCL
*LPDDRAWI_DDRAWCLIPPER_LCL
;
144 typedef struct _DDRAWI_DDRAWCLIPPER_GBL
*LPDDRAWI_DDRAWCLIPPER_GBL
;
145 typedef struct _DDRAWI_DDVIDEOPORT_INT
*LPDDRAWI_DDVIDEOPORT_INT
;
146 typedef struct _DDRAWI_DDVIDEOPORT_LCL
*LPDDRAWI_DDVIDEOPORT_LCL
;
147 typedef struct _DDRAWI_DDMOTIONCOMP_INT
*LPDDRAWI_DDMOTIONCOMP_INT
;
148 typedef struct _DDRAWI_DDMOTIONCOMP_LCL
*LPDDRAWI_DDMOTIONCOMP_LCL
;
150 /*****************************************************************************
151 * driver->ddraw callbacks
153 typedef BOOL (DDAPI
*LPDDHAL_SETINFO
)(LPDDHALINFO lpDDHalInfo
, BOOL reset
);
154 typedef FLATPTR (DDAPI
*LPDDHAL_VIDMEMALLOC
)(LPDDRAWI_DIRECTDRAW_GBL lpDD
, int heap
, DWORD dwWidth
, DWORD dwHeight
);
155 typedef void (DDAPI
*LPDDHAL_VIDMEMFREE
)(LPDDRAWI_DIRECTDRAW_GBL lpDD
, int heap
, FLATPTR fpMem
);
159 LPDDHAL_SETINFO lpSetInfo
;
160 LPDDHAL_VIDMEMALLOC lpVidMemAlloc
;
161 LPDDHAL_VIDMEMFREE lpVidMemFree
;
162 } DDHALDDRAWFNS
,*LPDDHALDDRAWFNS
;
164 /*****************************************************************************
165 * mode info structure
167 typedef struct _DDHALMODEINFO
{
177 DWORD dwAlphaBitMask
;
178 } DDHALMODEINFO
,*LPDDHALMODEINFO
;
183 #define DDMODEINFO_PALETTIZED 0x0001
184 #define DDMODEINFO_MODEX 0x0002
185 #define DDMODEINFO_UNSUPPORTED 0x0004
186 #define DDMODEINFO_STANDARDVGA 0x0008
187 #define DDMODEINFO_MAXREFRESH 0x0010
188 #define DDMODEINFO_STEREO 0x0020
190 /*****************************************************************************
191 * video memory info structure
193 typedef struct _VIDMEM
{
211 #define VIDMEM_ISLINEAR 0x00000001
212 #define VIDMEM_ISRECTANGULAR 0x00000002
213 #define VIDMEM_ISHEAP 0x00000004
214 #define VIDMEM_ISNONLOCAL 0x00000008
215 #define VIDMEM_ISWC 0x00000010
216 #define VIDMEM_ISDISABLED 0x00000020
219 typedef struct _VIDMEMINFO
{
222 DWORD dwDisplayWidth
;
223 DWORD dwDisplayHeight
;
225 DDPIXELFORMAT ddpfDisplay
;
226 DWORD dwOffscreenAlign
;
227 DWORD dwOverlayAlign
;
228 DWORD dwTextureAlign
;
229 DWORD dwZBufferAlign
;
233 } VIDMEMINFO
,*LPVIDMEMINFO
;
237 typedef struct _HEAPALIAS
{
241 } HEAPALIAS
,*LPHEAPALIAS
;
243 typedef struct _HEAPALIASINFO
{
247 LPHEAPALIAS lpAliases
;
248 } HEAPALIASINFO
,*LPHEAPALIASINFO
;
250 #define HEAPALIASINFO_MAPPEDREAL 0x00000001
251 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
253 /*****************************************************************************
254 * capabilities structures
256 typedef struct _DDCORECAPS
{
265 DWORD dwAlphaBltConstBitDepths
;
266 DWORD dwAlphaBltPixelBitDepths
;
267 DWORD dwAlphaBltSurfaceBitDepths
;
268 DWORD dwAlphaOverlayConstBitDepths
;
269 DWORD dwAlphaOverlayPixelBitDepths
;
270 DWORD dwAlphaOverlaySurfaceBitDepths
;
271 DWORD dwZBufferBitDepths
;
274 DWORD dwMaxVisibleOverlays
;
275 DWORD dwCurrVisibleOverlays
;
276 DWORD dwNumFourCCCodes
;
277 DWORD dwAlignBoundarySrc
;
278 DWORD dwAlignSizeSrc
;
279 DWORD dwAlignBoundaryDest
;
280 DWORD dwAlignSizeDest
;
281 DWORD dwAlignStrideAlign
;
282 DWORD dwRops
[DD_ROP_SPACE
];
284 DWORD dwMinOverlayStretch
;
285 DWORD dwMaxOverlayStretch
;
286 DWORD dwMinLiveVideoStretch
;
287 DWORD dwMaxLiveVideoStretch
;
288 DWORD dwMinHwCodecStretch
;
289 DWORD dwMaxHwCodecStretch
;
296 DWORD dwSVBRops
[DD_ROP_SPACE
];
300 DWORD dwVSBRops
[DD_ROP_SPACE
];
304 DWORD dwSSBRops
[DD_ROP_SPACE
];
305 DWORD dwMaxVideoPorts
;
306 DWORD dwCurrVideoPorts
;
308 } DDCORECAPS
,*LPDDCORECAPS
;
310 typedef struct _DDNONLOCALVIDMEMCAPS
{
314 DWORD dwNLVBCKeyCaps
;
316 DWORD dwNLVBRops
[DD_ROP_SPACE
];
317 } DDNONLOCALVIDMEMCAPS
,*LPDDNONLOCALVIDMEMCAPS
;
321 #define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2
322 #define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1
323 #define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
328 /*****************************************************************************
329 * ddraw->driver callbacks
331 #define DDHAL_DRIVER_NOTHANDLED 0
332 #define DDHAL_DRIVER_HANDLED 1
333 #define DDHAL_DRIVER_NOCKEYHW 2
335 typedef struct _DDHAL_DESTROYDRIVERDATA
*LPDDHAL_DESTROYDRIVERDATA
;
336 typedef struct _DDHAL_CREATESURFACEDATA
*LPDDHAL_CREATESURFACEDATA
;
337 typedef struct _DDHAL_DRVSETCOLORKEYDATA
*LPDDHAL_DRVSETCOLORKEYDATA
;
338 typedef struct _DDHAL_SETMODEDATA
*LPDDHAL_SETMODEDATA
;
339 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA
*LPDDHAL_WAITFORVERTICALBLANKDATA
;
340 typedef struct _DDHAL_CANCREATESURFACEDATA
*LPDDHAL_CANCREATESURFACEDATA
;
341 typedef struct _DDHAL_CREATEPALETTEDATA
*LPDDHAL_CREATEPALETTEDATA
;
342 typedef struct _DDHAL_GETSCANLINEDATA
*LPDDHAL_GETSCANLINEDATA
;
343 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA
*LPDDHAL_SETEXCLUSIVEMODEDATA
;
344 typedef struct _DDHAL_FLIPTOGDISURFACEDATA
*LPDDHAL_FLIPTOGDISURFACEDATA
;
346 typedef DWORD (PASCAL
*LPDDHAL_DESTROYDRIVER
) (LPDDHAL_DESTROYDRIVERDATA
);
347 typedef DWORD (PASCAL
*LPDDHAL_CREATESURFACE
) (LPDDHAL_CREATESURFACEDATA
);
348 typedef DWORD (PASCAL
*LPDDHAL_SETCOLORKEY
) (LPDDHAL_DRVSETCOLORKEYDATA
);
349 typedef DWORD (PASCAL
*LPDDHAL_SETMODE
) (LPDDHAL_SETMODEDATA
);
350 typedef DWORD (PASCAL
*LPDDHAL_WAITFORVERTICALBLANK
)(LPDDHAL_WAITFORVERTICALBLANKDATA
);
351 typedef DWORD (PASCAL
*LPDDHAL_CANCREATESURFACE
) (LPDDHAL_CANCREATESURFACEDATA
);
352 typedef DWORD (PASCAL
*LPDDHAL_CREATEPALETTE
) (LPDDHAL_CREATEPALETTEDATA
);
353 typedef DWORD (PASCAL
*LPDDHAL_GETSCANLINE
) (LPDDHAL_GETSCANLINEDATA
);
354 typedef DWORD (PASCAL
*LPDDHAL_SETEXCLUSIVEMODE
) (LPDDHAL_SETEXCLUSIVEMODEDATA
);
355 typedef DWORD (PASCAL
*LPDDHAL_FLIPTOGDISURFACE
) (LPDDHAL_FLIPTOGDISURFACEDATA
);
359 typedef struct _DDHAL_DDCALLBACKS
{
362 LPDDHAL_DESTROYDRIVER DestroyDriver
;
363 LPDDHAL_CREATESURFACE CreateSurface
;
364 LPDDHAL_SETCOLORKEY SetColorKey
;
365 LPDDHAL_SETMODE SetMode
;
366 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank
;
367 LPDDHAL_CANCREATESURFACE CanCreateSurface
;
368 LPDDHAL_CREATEPALETTE CreatePalette
;
369 LPDDHAL_GETSCANLINE GetScanLine
;
371 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
372 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface
;
373 } DDHAL_DDCALLBACKS
,*LPDDHAL_DDCALLBACKS
;
377 typedef struct _DDHAL_DESTROYSURFACEDATA
*LPDDHAL_DESTROYSURFACEDATA
;
378 typedef struct _DDHAL_FLIPDATA
*LPDDHAL_FLIPDATA
;
379 typedef struct _DDHAL_SETCLIPLISTDATA
*LPDDHAL_SETCLIPLISTDATA
;
380 typedef struct _DDHAL_LOCKDATA
*LPDDHAL_LOCKDATA
;
381 typedef struct _DDHAL_UNLOCKDATA
*LPDDHAL_UNLOCKDATA
;
382 typedef struct _DDHAL_BLTDATA
*LPDDHAL_BLTDATA
;
383 typedef struct _DDHAL_SETCOLORKEYDATA
*LPDDHAL_SETCOLORKEYDATA
;
384 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA
*LPDDHAL_ADDATTACHEDSURFACEDATA
;
385 typedef struct _DDHAL_GETBLTSTATUSDATA
*LPDDHAL_GETBLTSTATUSDATA
;
386 typedef struct _DDHAL_GETFLIPSTATUSDATA
*LPDDHAL_GETFLIPSTATUSDATA
;
387 typedef struct _DDHAL_UPDATEOVERLAYDATA
*LPDDHAL_UPDATEOVERLAYDATA
;
388 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
*LPDDHAL_SETOVERLAYPOSITIONDATA
;
389 typedef struct _DDHAL_SETPALETTEDATA
*LPDDHAL_SETPALETTEDATA
;
391 typedef DWORD (PASCAL
*LPDDHALSURFCB_DESTROYSURFACE
) (LPDDHAL_DESTROYSURFACEDATA
);
392 typedef DWORD (PASCAL
*LPDDHALSURFCB_FLIP
) (LPDDHAL_FLIPDATA
);
393 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETCLIPLIST
) (LPDDHAL_SETCLIPLISTDATA
);
394 typedef DWORD (PASCAL
*LPDDHALSURFCB_LOCK
) (LPDDHAL_LOCKDATA
);
395 typedef DWORD (PASCAL
*LPDDHALSURFCB_UNLOCK
) (LPDDHAL_UNLOCKDATA
);
396 typedef DWORD (PASCAL
*LPDDHALSURFCB_BLT
) (LPDDHAL_BLTDATA
);
397 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETCOLORKEY
) (LPDDHAL_SETCOLORKEYDATA
);
398 typedef DWORD (PASCAL
*LPDDHALSURFCB_ADDATTACHEDSURFACE
)(LPDDHAL_ADDATTACHEDSURFACEDATA
);
399 typedef DWORD (PASCAL
*LPDDHALSURFCB_GETBLTSTATUS
) (LPDDHAL_GETBLTSTATUSDATA
);
400 typedef DWORD (PASCAL
*LPDDHALSURFCB_GETFLIPSTATUS
) (LPDDHAL_GETFLIPSTATUSDATA
);
401 typedef DWORD (PASCAL
*LPDDHALSURFCB_UPDATEOVERLAY
) (LPDDHAL_UPDATEOVERLAYDATA
);
402 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETOVERLAYPOSITION
)(LPDDHAL_SETOVERLAYPOSITIONDATA
);
403 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETPALETTE
) (LPDDHAL_SETPALETTEDATA
);
405 typedef struct _DDHAL_DDSURFACECALLBACKS
{
408 LPDDHALSURFCB_DESTROYSURFACE DestroySurface
;
409 LPDDHALSURFCB_FLIP Flip
;
410 LPDDHALSURFCB_SETCLIPLIST SetClipList
;
411 LPDDHALSURFCB_LOCK Lock
;
412 LPDDHALSURFCB_UNLOCK Unlock
;
413 LPDDHALSURFCB_BLT Blt
;
414 LPDDHALSURFCB_SETCOLORKEY SetColorKey
;
415 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface
;
416 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus
;
417 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus
;
418 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay
;
419 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition
;
421 LPDDHALSURFCB_SETPALETTE SetPalette
;
422 } DDHAL_DDSURFACECALLBACKS
,*LPDDHAL_DDSURFACECALLBACKS
;
426 typedef struct _DDHAL_DESTROYPALETTEDATA
*LPDDHAL_DESTROYPALETTEDATA
;
427 typedef struct _DDHAL_SETENTRIESDATA
*LPDDHAL_SETENTRIESDATA
;
429 typedef DWORD (PASCAL
*LPDDHALPALCB_DESTROYPALETTE
)(LPDDHAL_DESTROYPALETTEDATA
);
430 typedef DWORD (PASCAL
*LPDDHALPALCB_SETENTRIES
) (LPDDHAL_SETENTRIESDATA
);
432 typedef struct _DDHAL_DDPALETTECALLBACKS
{
435 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
436 LPDDHALPALCB_SETENTRIES SetEntries
;
437 } DDHAL_DDPALETTECALLBACKS
,*LPDDHAL_DDPALETTECALLBACKS
;
439 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_CANCREATEEXEBUF
)(LPDDHAL_CANCREATESURFACEDATA
);
440 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_CREATEEXEBUF
) (LPDDHAL_CREATESURFACEDATA
);
441 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_DESTROYEXEBUF
) (LPDDHAL_DESTROYSURFACEDATA
);
442 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_LOCKEXEBUF
) (LPDDHAL_LOCKDATA
);
443 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_UNLOCKEXEBUF
) (LPDDHAL_UNLOCKDATA
);
445 typedef struct _DDHAL_DDEXEBUFCALLBACKS
{
448 LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer
;
449 LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer
;
450 LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer
;
451 LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer
;
452 LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer
;
453 } DDHAL_DDEXEBUFCALLBACKS
,*LPDDHAL_DDEXEBUFCALLBACKS
;
455 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
*LPDDHAL_GETAVAILDRIVERMEMORYDATA
;
456 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
*LPDDHAL_UPDATENONLOCALHEAPDATA
;
457 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
*LPDDHAL_GETHEAPALIGNMENTDATA
;
459 typedef DWORD (PASCAL
*LPDDHAL_GETAVAILDRIVERMEMORY
)(LPDDHAL_GETAVAILDRIVERMEMORYDATA
);
460 typedef DWORD (PASCAL
*LPDDHAL_UPDATENONLOCALHEAP
) (LPDDHAL_UPDATENONLOCALHEAPDATA
);
461 typedef DWORD (PASCAL
*LPDDHAL_GETHEAPALIGNMENT
) (LPDDHAL_GETHEAPALIGNMENTDATA
);
463 typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS
{
466 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
467 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap
;
468 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment
;
469 LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus
;
470 } DDHAL_DDMISCELLANEOUSCALLBACKS
,*LPDDHAL_DDMISCELLANEOUSCALLBACKS
;
472 typedef struct _DDHAL_CREATESURFACEEXDATA
*LPDDHAL_CREATESURFACEEXDATA
;
473 typedef struct _DDHAL_GETDRIVERSTATEDATA
*LPDDHAL_GETDRIVERSTATEDATA
;
474 typedef struct _DDHAL_DESTROYDDLOCALDATA
*LPDDHAL_DESTROYDDLOCALDATA
;
476 typedef DWORD (PASCAL
*LPDDHAL_CREATESURFACEEX
)(LPDDHAL_CREATESURFACEEXDATA
);
477 typedef DWORD (PASCAL
*LPDDHAL_GETDRIVERSTATE
) (LPDDHAL_GETDRIVERSTATEDATA
);
478 typedef DWORD (PASCAL
*LPDDHAL_DESTROYDDLOCAL
) (LPDDHAL_DESTROYDDLOCALDATA
);
480 typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS
{
484 LPDDHAL_CREATESURFACEEX CreateSurfaceEx
;
485 LPDDHAL_GETDRIVERSTATE GetDriverState
;
486 LPDDHAL_DESTROYDDLOCAL DestroyDDLocal
;
487 } DDHAL_DDMISCELLANEOUS2CALLBACKS
,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS
;
490 typedef struct _DDHAL_CANCREATEVPORTDATA
*LPDDHAL_CANCREATEVPORTDATA
;
491 typedef struct _DDHAL_CREATEVPORTDATA
*LPDDHAL_CREATEVPORTDATA
;
492 typedef struct _DDHAL_FLIPVPORTDATA
*LPDDHAL_FLIPVPORTDATA
;
493 typedef struct _DDHAL_GETVPORTCONNECTDATA
*LPDDHAL_GETVPORTCONNECTDATA
;
494 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA
*LPDDHAL_GETVPORTBANDWIDTHDATA
;
495 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA
*LPDDHAL_GETVPORTINPUTFORMATDATA
;
496 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA
*LPDDHAL_GETVPORTOUTPUTFORMATDATA
;
497 typedef struct _DDHAL_GETVPORTFIELDDATA
*LPDDHAL_GETVPORTFIELDDATA
;
498 typedef struct _DDHAL_GETVPORTLINEDATA
*LPDDHAL_GETVPORTLINEDATA
;
499 typedef struct _DDHAL_DESTROYVPORTDATA
*LPDDHAL_DESTROYVPORTDATA
;
500 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA
*LPDDHAL_GETVPORTFLIPSTATUSDATA
;
501 typedef struct _DDHAL_UPDATEVPORTDATA
*LPDDHAL_UPDATEVPORTDATA
;
502 typedef struct _DDHAL_WAITFORVPORTSYNCDATA
*LPDDHAL_WAITFORVPORTSYNCDATA
;
503 typedef struct _DDHAL_GETVPORTSIGNALDATA
*LPDDHAL_GETVPORTSIGNALDATA
;
504 typedef struct _DDHAL_VPORTCOLORDATA
*LPDDHAL_VPORTCOLORDATA
;
506 typedef DWORD (PASCAL
*LPDDHALVPORTCB_CANCREATEVIDEOPORT
)(LPDDHAL_CANCREATEVPORTDATA
);
507 typedef DWORD (PASCAL
*LPDDHALVPORTCB_CREATEVIDEOPORT
)(LPDDHAL_CREATEVPORTDATA
);
508 typedef DWORD (PASCAL
*LPDDHALVPORTCB_FLIP
)(LPDDHAL_FLIPVPORTDATA
);
509 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETBANDWIDTH
)(LPDDHAL_GETVPORTBANDWIDTHDATA
);
510 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETINPUTFORMATS
)(LPDDHAL_GETVPORTINPUTFORMATDATA
);
511 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETOUTPUTFORMATS
)(LPDDHAL_GETVPORTOUTPUTFORMATDATA
);
512 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETFIELD
)(LPDDHAL_GETVPORTFIELDDATA
);
513 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETLINE
)(LPDDHAL_GETVPORTLINEDATA
);
514 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETVPORTCONNECT
)(LPDDHAL_GETVPORTCONNECTDATA
);
515 typedef DWORD (PASCAL
*LPDDHALVPORTCB_DESTROYVPORT
)(LPDDHAL_DESTROYVPORTDATA
);
516 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETFLIPSTATUS
)(LPDDHAL_GETVPORTFLIPSTATUSDATA
);
517 typedef DWORD (PASCAL
*LPDDHALVPORTCB_UPDATE
)(LPDDHAL_UPDATEVPORTDATA
);
518 typedef DWORD (PASCAL
*LPDDHALVPORTCB_WAITFORSYNC
)(LPDDHAL_WAITFORVPORTSYNCDATA
);
519 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETSIGNALSTATUS
)(LPDDHAL_GETVPORTSIGNALDATA
);
520 typedef DWORD (PASCAL
*LPDDHALVPORTCB_COLORCONTROL
)(LPDDHAL_VPORTCOLORDATA
);
522 typedef struct _DDHAL_DDVIDEOPORTCALLBACKS
526 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort
;
527 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort
;
528 LPDDHALVPORTCB_FLIP FlipVideoPort
;
529 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth
;
530 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats
;
531 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats
;
533 LPDDHALVPORTCB_GETFIELD GetVideoPortField
;
534 LPDDHALVPORTCB_GETLINE GetVideoPortLine
;
535 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo
;
536 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort
;
537 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus
;
538 LPDDHALVPORTCB_UPDATE UpdateVideoPort
;
539 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync
;
540 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus
;
541 LPDDHALVPORTCB_COLORCONTROL ColorControl
;
542 } DDHAL_DDVIDEOPORTCALLBACKS
;
545 typedef struct _DDHAL_COLORCONTROLDATA
*LPDDHAL_COLORCONTROLDATA
;
547 typedef DWORD (PASCAL
*LPDDHALCOLORCB_COLORCONTROL
)(LPDDHAL_COLORCONTROLDATA
);
550 typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS
554 LPDDHALCOLORCB_COLORCONTROL ColorControl
;
555 } DDHAL_DDCOLORCONTROLCALLBACKS
;
557 typedef struct _DDHAL_SYNCSURFACEDATA
*LPDDHAL_SYNCSURFACEDATA
;
558 typedef struct _DDHAL_SYNCVIDEOPORTDATA
*LPDDHAL_SYNCVIDEOPORTDATA
;
560 typedef DWORD (PASCAL
*LPDDHALKERNELCB_SYNCSURFACE
)(LPDDHAL_SYNCSURFACEDATA
);
561 typedef DWORD (PASCAL
*LPDDHALKERNELCB_SYNCVIDEOPORT
)(LPDDHAL_SYNCVIDEOPORTDATA
);
563 typedef struct _DDHAL_DDKERNELCALLBACKS
567 LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData
;
568 LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData
;
569 } DDHAL_DDKERNELCALLBACKS
, *LPDDHAL_DDKERNELCALLBACKS
;
571 typedef struct _DDHAL_GETMOCOMPGUIDSDATA
*LPDDHAL_GETMOCOMPGUIDSDATA
;
572 typedef struct _DDHAL_GETMOCOMPFORMATSDATA
*LPDDHAL_GETMOCOMPFORMATSDATA
;
573 typedef struct _DDHAL_CREATEMOCOMPDATA
*LPDDHAL_CREATEMOCOMPDATA
;
574 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA
*LPDDHAL_GETMOCOMPCOMPBUFFDATA
;
575 typedef struct _DDHAL_GETINTERNALMOCOMPDATA
*LPDDHAL_GETINTERNALMOCOMPDATA
;
576 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA
*LPDDHAL_BEGINMOCOMPFRAMEDATA
;
577 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA
*LPDDHAL_ENDMOCOMPFRAMEDATA
;
578 typedef struct _DDHAL_RENDERMOCOMPDATA
*LPDDHAL_RENDERMOCOMPDATA
;
579 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA
*LPDDHAL_QUERYMOCOMPSTATUSDATA
;
580 typedef struct _DDHAL_DESTROYMOCOMPDATA
*LPDDHAL_DESTROYMOCOMPDATA
;
582 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETGUIDS
)( LPDDHAL_GETMOCOMPGUIDSDATA
);
583 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETFORMATS
)( LPDDHAL_GETMOCOMPFORMATSDATA
);
584 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_CREATE
)( LPDDHAL_CREATEMOCOMPDATA
);
585 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETCOMPBUFFINFO
)( LPDDHAL_GETMOCOMPCOMPBUFFDATA
);
586 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETINTERNALINFO
)( LPDDHAL_GETINTERNALMOCOMPDATA
);
587 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_BEGINFRAME
)( LPDDHAL_BEGINMOCOMPFRAMEDATA
);
588 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_ENDFRAME
)( LPDDHAL_ENDMOCOMPFRAMEDATA
);
589 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_RENDER
)( LPDDHAL_RENDERMOCOMPDATA
);
590 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_QUERYSTATUS
)( LPDDHAL_QUERYMOCOMPSTATUSDATA
);
591 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_DESTROY
)( LPDDHAL_DESTROYMOCOMPDATA
);
593 typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS
597 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids
;
598 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats
;
599 LPDDHALMOCOMPCB_CREATE CreateMoComp
;
600 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo
;
601 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo
;
602 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame
;
603 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame
;
604 LPDDHALMOCOMPCB_RENDER RenderMoComp
;
605 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus
;
606 LPDDHALMOCOMPCB_DESTROY DestroyMoComp
;
607 } DDHAL_DDMOTIONCOMPCALLBACKS
, *LPDDHAL_DDMOTIONCOMPCALLBACKS
;
611 typedef HRESULT (WINAPI
*LPDDGAMMACALIBRATORPROC
)(LPDDGAMMARAMP
, LPBYTE
);
615 /*****************************************************************************
616 * driver info structure
618 * The HAL is queried for additional callbacks via the GetDriverInfo callback.
620 typedef struct _DDHAL_GETDRIVERINFODATA
*LPDDHAL_GETDRIVERINFODATA
;
621 typedef DWORD (PASCAL
*LPDDHAL_GETDRIVERINFO
)(LPDDHAL_GETDRIVERINFODATA
);
624 typedef struct _DDHAL_GETDRIVERINFODATA
{
628 DWORD dwExpectedSize
;
634 } DDHAL_GETDRIVERINFODATA
;
636 typedef struct _DDHALINFO
{
638 LPDDHAL_DDCALLBACKS lpDDCallbacks
;
639 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks
;
640 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks
;
643 DWORD dwMonitorFrequency
;
644 LPDDHAL_GETDRIVERINFO GetDriverInfo
;
648 LPDDHALMODEINFO lpModeInfo
;
653 ULONG_PTR lpD3DGlobalDriverData
;
654 ULONG_PTR lpD3DHALCallbacks
;
655 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks
;
660 #define DDPALETTECALLBACKSSIZE sizeof( DDHAL_DDPALETTECALLBACKS )
661 #define DDSURFACECALLBACKSSIZE sizeof( DDHAL_DDSURFACECALLBACKS )
662 #define DDMISCELLANEOUSCALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS)
663 #define DDMISCELLANEOUS2CALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS)
664 #define DDEXEBUFCALLBACKSSIZE sizeof( DDHAL_DDEXEBUFCALLBACKS )
665 #define DDVIDEOPORTCALLBACKSSIZE sizeof( DDHAL_DDVIDEOPORTCALLBACKS )
666 #define DDCOLORCONTROLCALLBACKSSIZE sizeof( DDHAL_DDCOLORCONTROLCALLBACKS )
667 #define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS)
668 #define DDMOTIONCOMPCALLBACKSSIZE sizeof( DDHAL_DDMOTIONCOMPCALLBACKS )
670 #define MAX_PALETTE_SIZE 256
672 #define MAX_AUTOFLIP_BUFFERS 10
673 #define DDSCAPS2_INDEXBUFFER DDSCAPS2_RESERVED3
674 #define DDSCAPS3_VIDEO DDSCAPS3_RESERVED2
675 #define D3DFMT_INTERNAL_D32 71
676 #define D3DFMT_INTERNAL_S1D15 72
677 #define D3DFMT_INTERNAL_D15S1 73
678 #define D3DFMT_INTERNAL_S8D24 74
679 #define D3DFMT_INTERNAL_D24S8 75
680 #define D3DFMT_INTERNAL_X8D24 76
681 #define D3DFMT_INTERNAL_D24X8 77
682 #define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l
683 #define DDHAL_PLEASEALLOC_LINEARSIZE 0x00000003l
685 #define DDHAL_CB32_DESTROYDRIVER 0x00000001l
686 #define DDHAL_CB32_CREATESURFACE 0x00000002l
687 #define DDHAL_CB32_SETCOLORKEY 0x00000004l
688 #define DDHAL_CB32_SETMODE 0x00000008l
689 #define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l
690 #define DDHAL_CB32_CANCREATESURFACE 0x00000020l
691 #define DDHAL_CB32_CREATEPALETTE 0x00000040l
692 #define DDHAL_CB32_GETSCANLINE 0x00000080l
693 #define DDHAL_CB32_SETEXCLUSIVEMODE 0x00000100l
694 #define DDHAL_CB32_FLIPTOGDISURFACE 0x00000200l
695 #define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l
696 #define DDHAL_PALCB32_SETENTRIES 0x00000002l
697 #define DDHALINFO_ISPRIMARYDISPLAY 0x00000001
698 #define DDHALINFO_MODEXILLEGAL 0x00000002
699 #define DDHALINFO_GETDRIVERINFOSET 0x00000004
700 #define DDHALINFO_GETDRIVERINFO2 0x00000008
701 #define DDRAWI_VPORTSTART 0x0001
702 #define DDRAWI_VPORTSTOP 0x0002
703 #define DDRAWI_VPORTUPDATE 0x0003
704 #define DDRAWI_VPORTGETCOLOR 0x0001
705 #define DDRAWI_VPORTSETCOLOR 0x0002
706 #define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001
707 #define DDHAL_SURFCB32_FLIP 0x00000002
708 #define DDHAL_SURFCB32_SETCLIPLIST 0x00000004
709 #define DDHAL_SURFCB32_LOCK 0x00000008
710 #define DDHAL_SURFCB32_UNLOCK 0x00000010
711 #define DDHAL_SURFCB32_BLT 0x00000020
712 #define DDHAL_SURFCB32_SETCOLORKEY 0x00000040
713 #define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080
714 #define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100
715 #define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200
716 #define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400
717 #define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800
718 #define DDHAL_SURFCB32_RESERVED4 0x00001000
719 #define DDHAL_SURFCB32_SETPALETTE 0x00002000
720 #define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001
721 #define DDHAL_MISCCB32_UPDATENONLOCALHEAP 0x00000002
722 #define DDHAL_MISCCB32_GETHEAPALIGNMENT 0x00000004
723 #define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS 0x00000008
724 #define DDHAL_MISC2CB32_ALPHABLT 0x00000001
725 #define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002
726 #define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004
727 #define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008
728 #define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001
729 #define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002
730 #define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004
731 #define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008
732 #define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010
733 #define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001
734 #define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002
735 #define DDHAL_VPORT32_FLIP 0x00000004
736 #define DDHAL_VPORT32_GETBANDWIDTH 0x00000008
737 #define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010
738 #define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020
739 #define DDHAL_VPORT32_GETFIELD 0x00000080
740 #define DDHAL_VPORT32_GETLINE 0x00000100
741 #define DDHAL_VPORT32_GETCONNECT 0x00000200
742 #define DDHAL_VPORT32_DESTROY 0x00000400
743 #define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800
744 #define DDHAL_VPORT32_UPDATE 0x00001000
745 #define DDHAL_VPORT32_WAITFORSYNC 0x00002000
746 #define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000
747 #define DDHAL_VPORT32_COLORCONTROL 0x00008000
748 #define DDHAL_COLOR_COLORCONTROL 0x00000001
749 #define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001
750 #define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002
751 #define DDHAL_MOCOMP32_GETGUIDS 0x00000001
752 #define DDHAL_MOCOMP32_GETFORMATS 0x00000002
753 #define DDHAL_MOCOMP32_CREATE 0x00000004
754 #define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008
755 #define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010
756 #define DDHAL_MOCOMP32_BEGINFRAME 0x00000020
757 #define DDHAL_MOCOMP32_ENDFRAME 0x00000040
758 #define DDHAL_MOCOMP32_RENDER 0x00000080
759 #define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100
760 #define DDHAL_MOCOMP32_DESTROY 0x00000200
763 /* where the high-level ddraw implementation stores the callbacks */
764 typedef struct _DDHAL_CALLBACKS
{
765 DDHAL_DDCALLBACKS cbDDCallbacks
;
766 DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks
;
767 DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks
;
768 DDHAL_DDCALLBACKS HALDD
;
769 DDHAL_DDSURFACECALLBACKS HALDDSurface
;
770 DDHAL_DDPALETTECALLBACKS HALDDPalette
;
771 DDHAL_DDCALLBACKS HELDD
;
772 DDHAL_DDSURFACECALLBACKS HELDDSurface
;
773 DDHAL_DDPALETTECALLBACKS HELDDPalette
;
774 DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks
;
775 DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf
;
776 DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf
;
777 DDHAL_DDVIDEOPORTCALLBACKS cbDDVideoPortCallbacks
;
778 DDHAL_DDVIDEOPORTCALLBACKS HALDDVideoPort
;
779 DDHAL_DDCOLORCONTROLCALLBACKS cbDDColorControlCallbacks
;
780 DDHAL_DDCOLORCONTROLCALLBACKS HALDDColorControl
;
781 DDHAL_DDMISCELLANEOUSCALLBACKS cbDDMiscellaneousCallbacks
;
782 DDHAL_DDMISCELLANEOUSCALLBACKS HALDDMiscellaneous
;
783 DDHAL_DDKERNELCALLBACKS cbDDKernelCallbacks
;
784 DDHAL_DDKERNELCALLBACKS HALDDKernel
;
785 DDHAL_DDMOTIONCOMPCALLBACKS cbDDMotionCompCallbacks
;
786 DDHAL_DDMOTIONCOMPCALLBACKS HALDDMotionComp
;
787 } DDHAL_CALLBACKS
,*LPDDHAL_CALLBACKS
;
789 /*****************************************************************************
790 * parameter structures
792 typedef struct _DDHAL_DESTROYDRIVERDATA
{
793 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
795 LPDDHAL_DESTROYDRIVER DestroyDriver
;
796 } DDHAL_DESTROYDRIVERDATA
;
798 typedef struct _DDHAL_SETMODEDATA
{
799 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
802 LPDDHAL_SETMODE SetMode
;
807 typedef struct _DDHAL_CREATESURFACEDATA
{
808 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
809 LPDDSURFACEDESC lpDDSurfaceDesc
;
810 LPDDRAWI_DDRAWSURFACE_LCL
* lplpSList
;
813 LPDDHAL_CREATESURFACE CreateSurface
;
814 } DDHAL_CREATESURFACEDATA
;
816 typedef struct _DDHAL_CANCREATESURFACEDATA
{
817 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
818 LPDDSURFACEDESC lpDDSurfaceDesc
;
819 DWORD bIsDifferentPixelFormat
;
821 LPDDHAL_CANCREATESURFACE CanCreateSurface
;
822 } DDHAL_CANCREATESURFACEDATA
;
824 typedef struct _DDHAL_CREATEPALETTEDATA
{
825 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
826 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
827 LPPALETTEENTRY lpColorTable
;
829 LPDDHAL_CREATEPALETTE CreatePalette
;
831 } DDHAL_CREATEPALETTEDATA
;
833 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA
{
834 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
838 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
839 } DDHAL_SETEXCLUSIVEMODEDATA
;
842 typedef struct _DDHAL_DESTROYSURFACEDATA
{
843 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
844 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
846 LPDDHALSURFCB_DESTROYSURFACE DestroySurface
;
847 } DDHAL_DESTROYSURFACEDATA
;
849 typedef struct _DDHAL_FLIPDATA
{
850 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
851 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr
;
852 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg
;
855 LPDDHALSURFCB_FLIP Flip
;
856 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft
;
857 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft
;
860 typedef struct _DDHAL_LOCKDATA
{
861 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
862 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
867 LPDDHALSURFCB_LOCK Lock
;
871 typedef struct _DDHAL_UNLOCKDATA
{
872 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
873 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
875 LPDDHALSURFCB_UNLOCK Unlock
;
878 typedef struct _DDHAL_BLTDATA
{
879 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
880 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
882 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
888 LPDDHALSURFCB_BLT Blt
;
896 typedef struct _DDHAL_SETPALETTEDATA
{
897 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
898 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
899 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
901 LPDDHALSURFCB_SETPALETTE SetPalette
;
903 } DDHAL_SETPALETTEDATA
;
906 typedef struct _DDHAL_DESTROYPALETTEDATA
{
907 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
908 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
910 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
911 } DDHAL_DESTROYPALETTEDATA
;
913 typedef struct _DDHAL_SETENTRIESDATA
{
914 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
915 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
918 LPPALETTEENTRY lpEntries
;
920 LPDDHALPALCB_SETENTRIES SetEntries
;
921 } DDHAL_SETENTRIESDATA
;
924 typedef struct _DDHAL_CANCREATEVPORTDATA
926 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
927 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
929 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort
;
930 } DDHAL_CANCREATEVPORTDATA
;
932 typedef struct _DDHAL_CREATEVPORTDATA
934 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
935 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
936 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
938 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort
;
939 } DDHAL_CREATEVPORTDATA
;
941 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA
943 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
944 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
945 LPDDPIXELFORMAT lpddpfFormat
;
949 LPDDVIDEOPORTBANDWIDTH lpBandwidth
;
951 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth
;
952 } DDHAL_GETVPORTBANDWIDTHDATA
;
954 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA
956 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
957 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
959 LPDDPIXELFORMAT lpddpfFormat
;
962 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats
;
963 } DDHAL_GETVPORTINPUTFORMATDATA
;
965 typedef struct _DDHAL_GETVPORTFIELDDATA
967 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
968 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
971 LPDDHALVPORTCB_GETFIELD GetVideoPortField
;
972 } DDHAL_GETVPORTFIELDDATA
;
974 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA
976 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
977 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
979 LPDDPIXELFORMAT lpddpfInputFormat
;
980 LPDDPIXELFORMAT lpddpfOutputFormats
;
983 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats
;
984 } DDHAL_GETVPORTOUTPUTFORMATDATA
;
986 typedef struct _DDHAL_GETVPORTLINEDATA
988 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
989 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
992 LPDDHALVPORTCB_GETLINE GetVideoPortLine
;
993 } DDHAL_GETVPORTLINEDATA
;
995 typedef struct _DDHAL_DESTROYVPORTDATA
997 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
998 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1000 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort
;
1001 } DDHAL_DESTROYVPORTDATA
;
1003 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA
1005 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1008 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus
;
1009 } DDHAL_GETVPORTFLIPSTATUSDATA
;
1011 typedef struct _DDHAL_UPDATEVPORTDATA
1013 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1014 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1015 LPDDRAWI_DDRAWSURFACE_INT
*lplpDDSurface
;
1016 LPDDRAWI_DDRAWSURFACE_INT
*lplpDDVBISurface
;
1017 LPDDVIDEOPORTINFO lpVideoInfo
;
1019 DWORD dwNumAutoflip
;
1020 DWORD dwNumVBIAutoflip
;
1022 LPDDHALVPORTCB_UPDATE UpdateVideoPort
;
1023 } DDHAL_UPDATEVPORTDATA
;
1025 typedef struct _DDHAL_WAITFORVPORTSYNCDATA
1027 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1028 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1033 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync
;
1034 } DDHAL_WAITFORVPORTSYNCDATA
;
1036 typedef struct _DDHAL_GETVPORTSIGNALDATA
1038 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1039 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1042 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus
;
1043 } DDHAL_GETVPORTSIGNALDATA
;
1045 typedef struct _DDHAL_VPORTCOLORDATA
1047 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1048 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1050 LPDDCOLORCONTROL lpColorData
;
1052 LPDDHALVPORTCB_COLORCONTROL ColorControl
;
1053 } DDHAL_VPORTCOLORDATA
;
1055 typedef struct _DDHAL_FLIPVPORTDATA
1057 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1058 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1059 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr
;
1060 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg
;
1062 LPDDHALVPORTCB_FLIP FlipVideoPort
;
1063 } DDHAL_FLIPVPORTDATA
;
1065 typedef struct _DDHAL_GETVPORTCONNECTDATA
1067 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1069 LPDDVIDEOPORTCONNECT lpConnect
;
1072 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo
;
1073 } DDHAL_GETVPORTCONNECTDATA
;
1075 typedef struct _DDHAL_SYNCSURFACEDATA
1078 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1079 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1080 DWORD dwSurfaceOffset
;
1081 ULONG_PTR fpLockPtr
;
1083 DWORD dwOverlayOffset
;
1084 DWORD dwOverlaySrcWidth
;
1085 DWORD dwOverlaySrcHeight
;
1086 DWORD dwOverlayDestWidth
;
1087 DWORD dwOverlayDestHeight
;
1088 ULONG_PTR dwDriverReserved1
;
1089 ULONG_PTR dwDriverReserved2
;
1090 ULONG_PTR dwDriverReserved3
;
1092 } DDHAL_SYNCSURFACEDATA
;
1094 typedef struct _DDHAL_SYNCVIDEOPORTDATA
1097 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1098 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1099 DWORD dwOriginOffset
;
1102 ULONG_PTR dwDriverReserved1
;
1103 ULONG_PTR dwDriverReserved2
;
1104 ULONG_PTR dwDriverReserved3
;
1106 } DDHAL_SYNCVIDEOPORTDATA
;
1108 typedef struct _DDHAL_DESTROYDDLOCALDATA
1111 LPDDRAWI_DIRECTDRAW_LCL pDDLcl
;
1113 } DDHAL_DESTROYDDLOCALDATA
;
1115 typedef struct _DDHAL_CREATESURFACEEXDATA
{
1117 LPDDRAWI_DIRECTDRAW_LCL lpDDLcl
;
1118 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl
;
1120 } DDHAL_CREATESURFACEEXDATA
;
1122 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
1124 ULONG_PTR dwInstance
;
1127 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment
;
1128 HEAPALIGNMENT Alignment
;
1129 } DDHAL_GETHEAPALIGNMENTDATA
;
1132 typedef struct _DDMORESURFACECAPS
1135 DDSCAPSEX ddsCapsMore
;
1136 struct tagExtendedHeapRestrictions
1138 DDSCAPSEX ddsCapsEx
;
1139 DDSCAPSEX ddsCapsExAlt
;
1140 } ddsExtendedHeapRestrictions
[1];
1141 } DDMORESURFACECAPS
, * LPDDMORESURFACECAPS
;
1143 typedef struct _DDSTEREOMODE
1149 DWORD dwRefreshRate
;
1152 } DDSTEREOMODE
, * LPDDSTEREOMODE
;
1154 /*****************************************************************************
1155 * high-level ddraw implementation structures
1157 typedef struct _IUNKNOWN_LIST
{
1158 struct _IUNKNOWN_LIST
* lpLink
;
1162 IUnknown
* lpIUnknown
;
1165 #endif /* _NO_COM */
1166 } IUNKNOWN_LIST
,*LPIUNKNOWN_LIST
;
1169 typedef struct _PROCESS_LIST
{
1170 struct _PROCESS_LIST
* lpLink
;
1175 } PROCESS_LIST
,*LPPROCESS_LIST
;
1177 typedef struct _ATTACHLIST
{
1179 struct _ATTACHLIST
* lpLink
;
1180 LPDDRAWI_DDRAWSURFACE_LCL lpAttached
;
1181 LPDDRAWI_DDRAWSURFACE_INT lpIAttached
;
1182 } ATTACHLIST
,*LPATTACHLIST
;
1184 #define DDAL_IMPLICIT 0x00000001
1186 typedef struct _ACCESSRECTLIST
{
1187 struct _ACCESSRECTLIST
* lpLink
;
1189 LPDDRAWI_DIRECTDRAW_LCL lpOwner
;
1190 LPVOID lpSurfaceData
;
1192 LPHEAPALIASINFO lpHeapAliasInfo
;
1193 } ACCESSRECTLIST
,*LPACCESSRECTLIST
;
1195 #define ACCESSRECT_VRAMSTYLE 0x00000001
1196 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
1197 #define ACCESSRECT_BROKEN 0x00000004
1199 typedef struct _DBLNODE
{
1200 struct _DBLNODE
* next
;
1201 struct _DBLNODE
* prev
;
1202 LPDDRAWI_DDRAWSURFACE_LCL object
;
1203 LPDDRAWI_DDRAWSURFACE_INT object_int
;
1204 } DBLNODE
,*LPDBLNODE
;
1206 typedef struct _DDRAWI_DIRECTDRAW_INT
{
1208 LPDDRAWI_DIRECTDRAW_LCL lpLcl
;
1209 LPDDRAWI_DIRECTDRAW_INT lpLink
;
1211 } DDRAWI_DIRECTDRAW_INT
;
1214 typedef struct _DDRAWI_DIRECTDRAW_LCL
{
1216 LPDDRAWI_DIRECTDRAW_GBL lpGbl
;
1219 DWORD dwLocalRefCnt
;
1222 IUnknown
* pUnkOuter
;
1230 LPDDRAWI_DDRAWSURFACE_INT lpPrimary
;
1231 LPDDRAWI_DDRAWSURFACE_INT lpCB
;
1232 DWORD dwPreferredMode
;
1234 HINSTANCE hD3DInstance
;
1236 IUnknown
* pD3DIUnknown
;
1240 LPDDHAL_CALLBACKS lpDDCB
;
1243 DWORD dwAppHackFlags
;
1245 ULONG_PTR hFocusWnd
;
1246 DWORD dwHotTracking
;
1249 ULONG_PTR hWndPopup
;
1251 ULONG_PTR hGammaCalibrator
;
1252 LPDDGAMMACALIBRATORPROC lpGammaCalibrator
;
1253 } DDRAWI_DIRECTDRAW_LCL
;
1256 #define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001
1257 #define DDRAWILCL_ISFULLSCREEN 0x00000002
1258 #define DDRAWILCL_SETCOOPCALLED 0x00000004
1259 #define DDRAWILCL_ACTIVEYES 0x00000008
1260 #define DDRAWILCL_ACTIVENO 0x00000010
1261 #define DDRAWILCL_HOOKEDHWND 0x00000020
1262 #define DDRAWILCL_ALLOWMODEX 0x00000040
1263 #define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080
1264 #define DDRAWILCL_MODEHASBEENCHANGED 0x00000100
1265 #define DDRAWILCL_CREATEDWINDOW 0x00000200
1266 #define DDRAWILCL_DIRTYDC 0x00000400
1267 #define DDRAWILCL_DISABLEINACTIVATE 0x00000800
1268 #define DDRAWILCL_CURSORCLIPPED 0x00001000
1269 #define DDRAWILCL_EXPLICITMONITOR 0x00002000
1270 #define DDRAWILCL_MULTITHREADED 0x00004000
1271 #define DDRAWILCL_FPUSETUP 0x00008000
1272 #define DDRAWILCL_POWEREDDOWN 0x00010000
1273 #define DDRAWILCL_DIRECTDRAW7 0x00020000
1274 #define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000
1275 #define DDRAWILCL_FPUPRESERVE 0x00080000
1276 #define DDRAWILCL_DX8DRIVER 0x00100000
1277 #define DDRAWILCL_DIRECTDRAW8 0x00200000
1280 typedef struct _DDRAWI_DIRECTDRAW_GBL
{
1283 FLATPTR fpPrimaryOrig
;
1287 LPDDHAL_CALLBACKS lpDDCBtmp
;
1288 LPDDRAWI_DDRAWSURFACE_INT dsList
;
1289 LPDDRAWI_DDRAWPALETTE_INT palList
;
1290 LPDDRAWI_DDRAWCLIPPER_INT clipperList
;
1291 LPDDRAWI_DIRECTDRAW_GBL lp16DD
;
1292 DWORD dwMaxOverlays
;
1293 DWORD dwCurrOverlays
;
1294 DWORD dwMonitorFrequency
;
1295 DDCORECAPS ddHELCaps
;
1296 DWORD dwUnused2
[50];
1297 DDCOLORKEY ddckCKDestOverlay
;
1298 DDCOLORKEY ddckCKSrcOverlay
;
1300 LPVOID lpDriverHandle
;
1301 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner
;
1303 DWORD dwModeIndexOrig
;
1307 LPDDHALMODEINFO lpModeInfo
;
1308 PROCESS_LIST plProcessList
;
1309 DWORD dwSurfaceLockCount
;
1310 DWORD dwAliasedLockCnt
;
1311 ULONG_PTR dwReserved3
;
1316 DBLNODE dbnOverlayRoot
;
1317 volatile LPWORD lpwPDeviceFlags
;
1319 DWORD dwWin16LockCnt
;
1323 DWORD dwSaveNumModes
;
1325 ULONG_PTR lpD3DGlobalDriverData
;
1326 ULONG_PTR lpD3DHALCallbacks
;
1327 DDCORECAPS ddBothCaps
;
1329 LPDDVIDEOPORTCAPS lpDDVideoPortCaps
;
1330 LPDDRAWI_DDVIDEOPORT_INT dvpList
;
1331 ULONG_PTR lpD3DHALCallbacks2
;
1336 LPHEAPALIASINFO phaiHeapAliases
;
1337 ULONG_PTR hKernelHandle
;
1338 ULONG_PTR pfnNotifyProc
;
1339 LPDDKERNELCAPS lpDDKernelCaps
;
1340 LPDDNONLOCALVIDMEMCAPS lpddNLVCaps
;
1341 LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps
;
1342 LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps
;
1343 ULONG_PTR lpD3DExtendedCaps
;
1345 DWORD dwDOSBoxEvent
;
1347 char cDriverName
[MAX_DRIVER_NAME
];
1349 ULONG_PTR lpD3DHALCallbacks3
;
1350 DWORD dwNumZPixelFormats
;
1351 LPDDPIXELFORMAT lpZPixelFormats
;
1352 LPDDRAWI_DDMOTIONCOMP_INT mcList
;
1354 DDSCAPSEX ddsCapsMore
;
1355 } DDRAWI_DIRECTDRAW_GBL
;
1357 #define DDRAWI_xxxxxxxxx1 0x00000001
1358 #define DDRAWI_xxxxxxxxx2 0x00000002
1359 #define DDRAWI_VIRTUALDESKTOP 0x00000008
1360 #define DDRAWI_MODEX 0x00000010
1361 #define DDRAWI_DISPLAYDRV 0x00000020
1362 #define DDRAWI_FULLSCREEN 0x00000040
1363 #define DDRAWI_MODECHANGED 0x00000080
1364 #define DDRAWI_NOHARDWARE 0x00000100
1365 #define DDRAWI_PALETTEINIT 0x00000200
1366 #define DDRAWI_NOEMULATION 0x00000400
1367 #define DDRAWI_HASCKEYDESTOVERLAY 0x00000800
1368 #define DDRAWI_HASCKEYSRCOVERLAY 0x00001000
1369 #define DDRAWI_HASGDIPALETTE 0x00002000
1370 #define DDRAWI_EMULATIONINITIALIZED 0x00004000
1371 #define DDRAWI_HASGDIPALETTE_EXCLUSIVE 0x00008000
1372 #define DDRAWI_MODEXILLEGAL 0x00010000
1373 #define DDRAWI_FLIPPEDTOGDI 0x00020000
1374 #define DDRAWI_NEEDSWIN16FORVRAMLOCK 0x00040000
1375 #define DDRAWI_PDEVICEVRAMBITCLEARED 0x00080000
1376 #define DDRAWI_STANDARDVGA 0x00100000
1377 #define DDRAWI_EXTENDEDALIGNMENT 0x00200000
1378 #define DDRAWI_CHANGINGMODE 0x00400000
1379 #define DDRAWI_GDIDRV 0x00800000
1380 #define DDRAWI_ATTACHEDTODESKTOP 0x01000000
1381 #define DDRAWI_UMODELOADED 0x02000000
1382 #define DDRAWI_DDRAWDATANOTFETCHED 0x04000000
1383 #define DDRAWI_SECONDARYDRIVERLOADED 0x08000000
1384 #define DDRAWI_TESTINGMODES 0x10000000
1385 #define DDRAWI_DRIVERINFO2 0x20000000
1386 #define DDRAWI_BADPDEV 0x40000000
1390 typedef struct _DDRAWI_DDRAWSURFACE_INT
{
1392 LPDDRAWI_DDRAWSURFACE_LCL lpLcl
;
1393 LPDDRAWI_DDRAWSURFACE_INT lpLink
;
1395 } DDRAWI_DDRAWSURFACE_INT
;
1397 typedef struct _DDRAWI_DDRAWSURFACE_GBL
{
1399 DWORD dwGlobalFlags
;
1401 LPACCESSRECTLIST lpRectList
;
1406 LPVMEMHEAP lpVidMemHeap
;
1410 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1421 ULONG_PTR dwReserved1
;
1422 DDPIXELFORMAT ddpfSurface
;
1423 } DDRAWI_DDRAWSURFACE_GBL
;
1425 #define DDRAWISURFGBL_MEMFREE 0x00000001L
1426 #define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L
1427 #define DDRAWISURFGBL_ISGDISURFACE 0x00000004L
1428 #define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008L
1429 #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010L
1430 #define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020L
1431 #define DDRAWISURFGBL_LOCKBROKEN 0x00000040L
1432 #define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080L
1433 #define DDRAWISURFGBL_ISCLIENTMEM 0x00000100L
1434 #define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200L
1435 #define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400L
1436 #define DDRAWISURFGBL_HARDWAREOPSTARTED (DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST)
1437 #define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800L
1438 #define DDRAWISURFGBL_VPORTDATA 0x00001000L
1439 #define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000L
1440 #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000L
1441 #define DDRAWISURFGBL_FASTLOCKHELD 0x00008000L
1442 #define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000L
1443 #define DDRAWISURFGBL_DX8SURFACE 0x00080000L
1444 #define DDRAWISURFGBL_DDHELDONTFREE 0x00100000L
1445 #define DDRAWISURFGBL_NOTIFYWHENUNLOCKED 0x00200000L
1446 #define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag
1448 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE
{
1451 DWORD dwPhysicalPageTable
;
1452 FLATPTR fpPhysicalVidMem
;
1456 ULONG_PTR dwSavedDCContext
;
1457 FLATPTR fpAliasedVidMem
;
1458 ULONG_PTR dwDriverReserved
;
1459 ULONG_PTR dwHELReserved
;
1461 ULONG_PTR hKernelSurface
;
1462 DWORD dwKernelRefCnt
;
1463 LPDDCOLORCONTROL lpColorInfo
;
1465 DWORD dwContentsStamp
;
1466 LPVOID lpvUnswappedDriverReserved
;
1467 LPVOID lpDDRAWReserved2
;
1468 DWORD dwDDRAWReserved1
;
1469 DWORD dwDDRAWReserved2
;
1470 FLATPTR fpAliasOfVidMem
;
1471 } DDRAWI_DDRAWSURFACE_GBL_MORE
;
1473 /* the MS version of this macro was somewhat obfuscated and unreadable
1474 * (possibly because of mediocre MS coders)... so I simplified it...
1475 * (and so I commit no copyright violations either, hah) */
1476 #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
1477 (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
1479 #define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \
1480 ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem )
1483 typedef struct _DISPLAYMODEINFO
1488 BYTE wMonitorsAttachedToDesktop
;
1490 } DISPLAYMODEINFO
, *LPDISPLAYMODEINFO
;
1492 #define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO)))
1497 typedef struct _DDRAWI_DDRAWSURFACE_MORE
{
1499 IUNKNOWN_LIST
* lpIUnknowns
;
1500 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1501 DWORD dwPageLockCount
;
1502 DWORD dwBytesAllocated
;
1503 LPDDRAWI_DIRECTDRAW_INT lpDD_int
;
1504 DWORD dwMipMapCount
;
1505 LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper
;
1507 LPHEAPALIASINFO lpHeapAliasInfo
;
1508 DWORD dwOverlayFlags
;
1510 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1511 LPDDOVERLAYFX lpddOverlayFX
;
1512 DDSCAPSEX ddsCapsEx
;
1513 DWORD dwTextureStage
;
1514 LPVOID lpDDRAWReserved
;
1515 LPVOID lpDDRAWReserved2
;
1516 LPVOID lpDDrawReserved3
;
1517 DWORD dwDDrawReserved4
;
1518 LPVOID lpDDrawReserved5
;
1519 LPDWORD lpGammaRamp
;
1520 LPDWORD lpOriginalGammaRamp
;
1521 LPVOID lpDDrawReserved6
;
1523 DISPLAYMODEINFO dmiDDrawReserved7
;
1525 DWORD dwSurfaceHandle
;
1526 DWORD qwDDrawReserved8
[2];
1527 LPVOID lpDDrawReserved9
;
1529 LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2
;
1530 LPDDRAWI_DDRAWSURFACE_LCL
*slist
;
1533 } DDRAWI_DDRAWSURFACE_MORE
;
1537 typedef struct _DDRAWI_DDRAWSURFACE_LCL
{
1538 LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore
;
1539 LPDDRAWI_DDRAWSURFACE_GBL lpGbl
;
1540 ULONG_PTR hDDSurface
;
1541 LPATTACHLIST lpAttachList
;
1542 LPATTACHLIST lpAttachListFrom
;
1543 DWORD dwLocalRefCnt
;
1549 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette
;
1550 LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette
;
1554 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper
;
1555 LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper
;
1557 DWORD dwModeCreatedIn
;
1558 DWORD dwBackBufferCount
;
1559 DDCOLORKEY ddckCKDestBlt
;
1560 DDCOLORKEY ddckCKSrcBlt
;
1562 ULONG_PTR dwReserved1
;
1563 DDCOLORKEY ddckCKSrcOverlay
;
1564 DDCOLORKEY ddckCKDestOverlay
;
1565 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying
;
1566 DBLNODE dbnOverlayNode
;
1573 } DDRAWI_DDRAWSURFACE_LCL
;
1575 #define DDRAWISURF_ATTACHED 0x00000001L
1576 #define DDRAWISURF_IMPLICITCREATE 0x00000002L
1577 #define DDRAWISURF_ISFREE 0x00000004L
1578 #define DDRAWISURF_ATTACHED_FROM 0x00000008L
1579 #define DDRAWISURF_IMPLICITROOT 0x00000010L
1580 #define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L
1581 #define DDRAWISURF_DATAISALIASED 0x00000040L
1582 #define DDRAWISURF_HASDC 0x00000080L
1583 #define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L
1584 #define DDRAWISURF_HASCKEYDESTBLT 0x00000200L
1585 #define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L
1586 #define DDRAWISURF_HASCKEYSRCBLT 0x00000800L
1587 #define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000L
1588 #define DDRAWISURF_HASPIXELFORMAT 0x00002000L
1589 #define DDRAWISURF_HASOVERLAYDATA 0x00004000L
1590 #define DDRAWISURF_SETGAMMA 0x00008000L
1591 #define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L
1592 #define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L
1593 #define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L
1594 #define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L
1595 #define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L
1596 #define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L
1597 #define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L
1598 #define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L
1599 #define DDRAWISURF_INMASTERSPRITELIST 0x01000000L
1600 #define DDRAWISURF_HELCB 0x02000000L
1601 #define DDRAWISURF_FRONTBUFFER 0x04000000L
1602 #define DDRAWISURF_BACKBUFFER 0x08000000L
1603 #define DDRAWISURF_INVALID 0x10000000L
1604 #define DDRAWISURF_DCIBUSY 0x20000000L
1605 #define DDRAWISURF_GETDCNULL 0x40000000L
1606 #define DDRAWISURF_STEREOSURFACELEFT 0x20000000L
1607 #define DDRAWISURF_DRIVERMANAGED 0x40000000L
1608 #define DDRAWISURF_DCILOCK 0x80000000L
1611 typedef struct _DDRAWI_DDRAWPALETTE_INT
{
1613 LPDDRAWI_DDRAWPALETTE_LCL lpLcl
;
1614 LPDDRAWI_DDRAWPALETTE_INT lpLink
;
1616 } DDRAWI_DDRAWPALETTE_INT
;
1618 typedef struct _DDRAWI_DDRAWPALETTE_GBL
{
1621 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1623 LPPALETTEENTRY lpColorTable
;
1625 ULONG_PTR dwReserved1
;
1626 HPALETTE hHELGDIPalette
;
1628 DWORD dwDriverReserved
;
1629 DWORD dwContentsStamp
;
1632 } DDRAWI_DDRAWPALETTE_GBL
;
1634 #define DDRAWIPAL_256 0x00000001
1635 #define DDRAWIPAL_16 0x00000002
1636 #define DDRAWIPAL_GDI 0x00000004
1637 #define DDRAWIPAL_STORED_8 0x00000008
1638 #define DDRAWIPAL_STORED_16 0x00000010
1639 #define DDRAWIPAL_STORED_24 0x00000020
1640 #define DDRAWIPAL_EXCLUSIVE 0x00000040
1641 #define DDRAWIPAL_INHEL 0x00000080
1642 #define DDRAWIPAL_DIRTY 0x00000100
1643 #define DDRAWIPAL_ALLOW256 0x00000200
1644 #define DDRAWIPAL_4 0x00000400
1645 #define DDRAWIPAL_2 0x00000800
1646 #define DDRAWIPAL_STORED_8INDEX 0x00001000
1647 #define DDRAWIPAL_ALPHA 0x00002000
1649 #define D3DFORMAT_OP_TEXTURE 0x00000001L
1650 #define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L
1651 #define D3DFORMAT_OP_CUBETEXTURE 0x00000004L
1652 #define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L
1653 #define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L
1654 #define D3DFORMAT_OP_ZSTENCIL 0x00000040L
1655 #define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L
1656 #define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L
1657 #define D3DFORMAT_OP_DISPLAYMODE 0x00000400L
1658 #define D3DFORMAT_OP_3DACCELERATION 0x00000800L
1659 #define D3DFORMAT_OP_PIXELSIZE 0x00001000L
1660 #define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L
1661 #define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L
1662 #define D3DFORMAT_OP_SRGBREAD 0x00008000L
1663 #define D3DFORMAT_OP_BUMPMAP 0x00010000L
1664 #define D3DFORMAT_OP_NOFILTER 0x00040000L
1665 #define DDPF_D3DFORMAT 0x00200000l
1666 #define DDPF_NOVEL_TEXTURE_FORMAT 0x00100000l
1667 #define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L
1668 #define D3DFORMAT_OP_SRGBWRITE 0x00100000L
1669 #define D3DFORMAT_OP_NOALPHABLEND 0x00200000L
1670 #define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L
1671 #define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L
1672 #define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L
1673 #define DELETED_OK 0
1674 #define DELETED_LASTONE 1
1675 #define DELETED_NOTFOUND 2
1676 #define DDCALLBACKSSIZE_V1 ( offsetof( DDHAL_DDCALLBACKS, SetExclusiveMode ) )
1677 #define DDCALLBACKSSIZE sizeof( DDHAL_DDCALLBACKS )
1678 #define DDRAWICLIP_WATCHWINDOW 0x00000001
1679 #define DDRAWICLIP_ISINITIALIZED 0x00000002
1680 #define DDRAWICLIP_INMASTERSPRITELIST 0x00000004
1681 #define PFINDEX_UNINITIALIZED (0UL)
1682 #define PFINDEX_UNSUPPORTED (~0UL)
1683 #define ROP_HAS_SOURCE 0x00000001
1684 #define ROP_HAS_PATTERN 0x00000002
1685 #define ROP_HAS_SOURCEPATTERN ROP_HAS_PATTERN | ROP_HAS_SOURCE
1686 #define DDRAWIVPORT_ON 0x00000001
1687 #define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002
1688 #define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004
1689 #define DDRAWIVPORT_NOKERNELHANDLES 0x00000008
1690 #define DDRAWIVPORT_SOFTWARE_BOB 0x00000010
1691 #define DDRAWIVPORT_VBION 0x00000020
1692 #define DDRAWIVPORT_VIDEOON 0x00000040
1693 #define DDRAWI_GETCOLOR 0x0001
1694 #define DDRAWI_SETCOLOR 0x0002
1695 #define DDMCQUERY_READ 0x00000001
1696 #define DDWAITVB_I_TESTVB 0x80000006
1699 #define DDBLT_ANYALPHA \
1700 (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \
1701 DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE | \
1702 DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST)
1704 #define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \
1705 DDSCAPS_OVERLAY | DDSCAPS_TEXTURE | \
1706 DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP )
1709 #define DDHALINFOSIZE_V2 sizeof(DDHALINFO)
1711 #define DDOVER_ANYALPHA \
1712 (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \
1713 DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE | \
1714 DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST)
1717 typedef struct _DDRAWI_DDRAWPALETTE_LCL
{
1719 LPDDRAWI_DDRAWPALETTE_GBL lpGbl
;
1720 ULONG_PTR dwUnused0
;
1721 DWORD dwLocalRefCnt
;
1723 IUnknown
* pUnkOuter
;
1727 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1728 ULONG_PTR dwReserved1
;
1730 ULONG_PTR dwDDRAWReserved1
;
1731 ULONG_PTR dwDDRAWReserved2
;
1732 ULONG_PTR dwDDRAWReserved3
;
1733 } DDRAWI_DDRAWPALETTE_LCL
;
1736 typedef struct _DDMCCOMPBUFFERINFO
1739 DWORD dwNumCompBuffers
;
1740 DWORD dwWidthToCreate
;
1741 DWORD dwHeightToCreate
;
1742 DWORD dwBytesToAllocate
;
1743 DDSCAPS2 ddCompCaps
;
1744 DDPIXELFORMAT ddPixelFormat
;
1745 } DDMCCOMPBUFFERINFO
, *LPDDMCCOMPBUFFERINFO
;
1747 typedef struct _DDMCBUFFERINFO
1750 LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface
;
1754 } DDMCBUFFERINFO
, *LPDDMCBUFFERINFO
;
1756 typedef struct _DDHAL_GETDRIVERSTATEDATA
{
1760 ULONG_PTR dwhContext
;
1765 } DDHAL_GETDRIVERSTATEDATA
;
1767 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA
1769 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1770 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1771 LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached
;
1773 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface
;
1774 } DDHAL_ADDATTACHEDSURFACEDATA
;
1778 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA
1780 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1781 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1782 LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface
;
1783 DWORD dwInputDataSize
;
1785 DWORD dwOutputDataSize
;
1786 LPVOID lpOutputData
;
1788 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame
;
1789 } DDHAL_BEGINMOCOMPFRAMEDATA
;
1791 typedef struct _DDHAL_COLORCONTROLDATA
1793 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1794 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1795 LPDDCOLORCONTROL lpColorData
;
1798 LPDDHALCOLORCB_COLORCONTROL ColorControl
;
1799 } DDHAL_COLORCONTROLDATA
;
1801 typedef struct _DDHAL_CREATEMOCOMPDATA
1803 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1804 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1806 DWORD dwUncompWidth
;
1807 DWORD dwUncompHeight
;
1808 DDPIXELFORMAT ddUncompPixelFormat
;
1812 LPDDHALMOCOMPCB_CREATE CreateMoComp
;
1813 } DDHAL_CREATEMOCOMPDATA
;
1815 typedef struct _DDHAL_DESTROYMOCOMPDATA
1817 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1818 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1820 LPDDHALMOCOMPCB_DESTROY DestroyMoComp
;
1821 } DDHAL_DESTROYMOCOMPDATA
;
1823 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA
1825 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1826 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1828 DWORD dwInputDataSize
;
1830 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame
;
1831 } DDHAL_ENDMOCOMPFRAMEDATA
;
1833 typedef struct _DDHAL_FLIPTOGDISURFACEDATA
1835 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1839 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface
;
1840 } DDHAL_FLIPTOGDISURFACEDATA
;
1842 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
1844 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1849 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
1850 DDSCAPSEX ddsCapsEx
;
1852 } DDHAL_GETAVAILDRIVERMEMORYDATA
;
1854 typedef struct _DDHAL_GETBLTSTATUSDATA
1856 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1857 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1860 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus
;
1861 } DDHAL_GETBLTSTATUSDATA
;
1863 typedef struct _DDHAL_GETFLIPSTATUSDATA
1865 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1866 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1869 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus
;
1870 } DDHAL_GETFLIPSTATUSDATA
;
1872 typedef struct _DDHAL_GETINTERNALMOCOMPDATA
1874 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1878 DDPIXELFORMAT ddPixelFormat
;
1879 DWORD dwScratchMemAlloc
;
1881 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo
;
1882 } DDHAL_GETINTERNALMOCOMPDATA
;
1884 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA
1886 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1890 DDPIXELFORMAT ddPixelFormat
;
1891 DWORD dwNumTypesCompBuffs
;
1892 LPDDMCCOMPBUFFERINFO lpCompBuffInfo
;
1894 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo
;
1895 } DDHAL_GETMOCOMPCOMPBUFFDATA
;
1897 typedef struct _DDHAL_GETMOCOMPGUIDSDATA
1899 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1903 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids
;
1904 } DDHAL_GETMOCOMPGUIDSDATA
;
1906 typedef struct _DDHAL_GETMOCOMPFORMATSDATA
1908 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1911 LPDDPIXELFORMAT lpFormats
;
1913 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats
;
1914 } DDHAL_GETMOCOMPFORMATSDATA
;
1916 typedef struct _DDHAL_GETSCANLINEDATA
1918 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1921 LPDDHAL_GETSCANLINE GetScanLine
;
1922 } DDHAL_GETSCANLINEDATA
;
1924 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA
1926 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1927 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1928 LPDDRAWI_DDRAWSURFACE_LCL lpSurface
;
1931 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus
;
1932 } DDHAL_QUERYMOCOMPSTATUSDATA
;
1934 typedef struct _DDHAL_RENDERMOCOMPDATA
1936 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1937 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1939 LPDDMCBUFFERINFO lpBufferInfo
;
1942 DWORD dwInputDataSize
;
1943 LPVOID lpOutputData
;
1944 DWORD dwOutputDataSize
;
1946 LPDDHALMOCOMPCB_RENDER RenderMoComp
;
1947 } DDHAL_RENDERMOCOMPDATA
;
1949 typedef struct _DDHAL_SETCOLORKEYDATA
1951 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1952 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1956 LPDDHALSURFCB_SETCOLORKEY SetColorKey
;
1957 } DDHAL_SETCOLORKEYDATA
;
1959 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
1961 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1962 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
1963 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
1967 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition
;
1968 } DDHAL_SETOVERLAYPOSITIONDATA
;
1970 typedef struct _DDHAL_UPDATEOVERLAYDATA
1972 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1973 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
1975 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
1978 DDOVERLAYFX overlayFX
;
1980 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay
;
1981 } DDHAL_UPDATEOVERLAYDATA
;
1983 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA
1985 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1990 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank
;
1991 } DDHAL_WAITFORVERTICALBLANKDATA
;
1993 typedef struct _DDHAL_DRVSETCOLORKEYDATA
1995 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1999 LPDDHAL_SETCOLORKEY SetColorKey
;
2000 } DDHAL_DRVSETCOLORKEYDATA
;
2002 typedef struct _DDMONITORINFO
2007 GUID DeviceIdentifier
;
2016 } DDMONITORINFO
, FAR
*LPDDMONITORINFO
;
2018 typedef struct _DDRAWI_DDRAWCLIPPER_INT
2021 LPDDRAWI_DDRAWCLIPPER_LCL lpLcl
;
2022 LPDDRAWI_DDRAWCLIPPER_INT lpLink
;
2024 } DDRAWI_DDRAWCLIPPER_INT
;
2026 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
2028 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2032 ULONG_PTR ulPolicyMaxBytes
;
2034 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap
;
2035 } DDHAL_UPDATENONLOCALHEAPDATA
;
2037 typedef struct _DDHAL_SETCLIPLISTDATA
2039 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2040 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
2042 LPDDHALSURFCB_SETCLIPLIST SetClipList
;
2043 } DDHAL_SETCLIPLISTDATA
;
2045 typedef struct _DDRAWI_DDMOTIONCOMP_LCL
2047 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
2049 DWORD dwUncompWidth
;
2050 DWORD dwUncompHeight
;
2051 DDPIXELFORMAT ddUncompPixelFormat
;
2052 DWORD dwInternalFlags
;
2056 DWORD dwDriverReserved1
;
2057 DWORD dwDriverReserved2
;
2058 DWORD dwDriverReserved3
;
2059 LPVOID lpDriverReserved1
;
2060 LPVOID lpDriverReserved2
;
2061 LPVOID lpDriverReserved3
;
2062 } DDRAWI_DDMOTIONCOMP_LCL
;
2064 typedef struct _DDRAWI_DDMOTIONCOMP_INT
2067 LPDDRAWI_DDMOTIONCOMP_LCL lpLcl
;
2068 LPDDRAWI_DDMOTIONCOMP_INT lpLink
;
2070 } DDRAWI_DDMOTIONCOMP_INT
;
2073 typedef struct _DDRAWI_DDVIDEOPORT_LCL
2075 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
2076 DDVIDEOPORTDESC ddvpDesc
;
2077 DDVIDEOPORTINFO ddvpInfo
;
2078 LPDDRAWI_DDRAWSURFACE_INT lpSurface
;
2079 LPDDRAWI_DDRAWSURFACE_INT lpVBISurface
;
2080 LPDDRAWI_DDRAWSURFACE_INT
*lpFlipInts
;
2081 DWORD dwNumAutoflip
;
2087 ULONG_PTR dwReserved1
;
2088 ULONG_PTR dwReserved2
;
2089 HANDLE hDDVideoPort
;
2090 DWORD dwNumVBIAutoflip
;
2091 LPDDVIDEOPORTDESC lpVBIDesc
;
2092 LPDDVIDEOPORTDESC lpVideoDesc
;
2093 LPDDVIDEOPORTINFO lpVBIInfo
;
2094 LPDDVIDEOPORTINFO lpVideoInfo
;
2095 DWORD dwVBIProcessID
;
2096 LPDDRAWI_DDVIDEOPORT_INT lpVPNotify
;
2097 } DDRAWI_DDVIDEOPORT_LCL
;
2100 typedef struct _DDRAWI_DDVIDEOPORT_INT
2103 LPDDRAWI_DDVIDEOPORT_LCL lpLcl
;
2104 LPDDRAWI_DDVIDEOPORT_INT lpLink
;
2107 } DDRAWI_DDVIDEOPORT_INT
;
2110 typedef struct _DDRAWI_DDRAWCLIPPER_LCL
2113 LPDDRAWI_DDRAWCLIPPER_GBL lpGbl
;
2114 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
2115 DWORD dwLocalRefCnt
;
2117 IUnknown
*pUnkOuter
;
2121 LPDDRAWI_DIRECTDRAW_INT lpDD_int
;
2122 ULONG_PTR dwReserved1
;
2124 IUnknown
* pAddrefedThisOwner
;
2126 PVOID pAddrefedThisOwner
;
2128 } DDRAWI_DDRAWCLIPPER_LCL
;
2132 typedef struct _DDRAWI_DDRAWCLIPPER_GBL
2136 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2138 ULONG_PTR dwReserved1
;
2140 LPRGNDATA lpStaticClipList
;
2141 } DDRAWI_DDRAWCLIPPER_GBL
;
2143 typedef BOOL (PASCAL
*LPDDHEL_INIT
)(LPDDRAWI_DIRECTDRAW_GBL
,BOOL
);
2145 extern HRESULT DDAPI
2146 LateAllocateSurfaceMem(
2147 LPDIRECTDRAWSURFACE lpSurface
,
2148 DWORD dwPleaseAllocType
,
2149 DWORD dwWidthInBytesOrSize
,
2152 LPDIRECTDRAWSURFACE
GetNextMipMap(
2153 LPDIRECTDRAWSURFACE lpLevel
);
2157 typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS
;
2158 typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS
;
2159 typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS
;
2160 typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS
;
2161 typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS
;
2162 typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS
;
2163 typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS
;
2164 typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS
;
2165 typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS
;
2166 typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS
;
2167 typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS
;
2168 typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS
;
2169 typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS
;
2170 typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS
;
2171 typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS
;
2174 typedef DIRECTDRAWCLIPPERCALLBACKS FAR
*LPDIRECTDRAWCLIPPERCALLBACKS
;
2175 typedef DIRECTDRAWPALETTECALLBACKS FAR
*LPDIRECTDRAWPALETTECALLBACKS
;
2176 typedef DIRECTDRAWSURFACECALLBACKS FAR
*LPDIRECTDRAWSURFACECALLBACKS
;
2177 typedef DIRECTDRAWCALLBACKS FAR
*LPDIRECTDRAWCALLBACKS
;
2180 D3DParseUnknownCommand (LPVOID lpvCommands
,
2181 LPVOID
*lplpvReturnedCommand
);
2187 #endif /* __DDRAWI_INCLUDED__ */