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__
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
58 #define DDUNSUPPORTEDMODE ((DWORD) -1)
63 #define CCHDEVICENAME 32
65 #define MAX_DRIVER_NAME CCHDEVICENAME
67 #define DDHAL_DRIVER_DLLNAME "DDRAW16.DLL"
68 #define DDHAL_APP_DLLNAME "DDRAW.DLL"
72 DEFINE_GUID(GUID_MiscellaneousCallbacks
, 0xefd60cc0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
73 DEFINE_GUID(GUID_VideoPortCallbacks
, 0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
74 DEFINE_GUID(GUID_ColorControlCallbacks
, 0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
75 DEFINE_GUID(GUID_VideoPortCaps
, 0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
76 DEFINE_GUID(GUID_D3DCallbacks2
, 0x0ba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
77 DEFINE_GUID(GUID_D3DCallbacks3
, 0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e);
78 DEFINE_GUID(GUID_NonLocalVidMemCaps
, 0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37);
79 DEFINE_GUID(GUID_KernelCallbacks
, 0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
80 DEFINE_GUID(GUID_KernelCaps
, 0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
81 DEFINE_GUID(GUID_D3DExtendedCaps
, 0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
82 DEFINE_GUID(GUID_ZPixelFormats
, 0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae);
83 DEFINE_GUID(GUID_DDMoreSurfaceCaps
, 0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5);
84 DEFINE_GUID(GUID_DDStereoMode
, 0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6);
85 DEFINE_GUID(GUID_OptSurfaceKmodeInfo
, 0xe05c8472, 0x51d4, 0x11d1, 0x8c, 0xce, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
86 DEFINE_GUID(GUID_OptSurfaceUmodeInfo
, 0x9d792804, 0x5fa8, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
87 DEFINE_GUID(GUID_UserModeDriverInfo
, 0xf0b0e8e2, 0x5f97, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
88 DEFINE_GUID(GUID_UserModeDriverPassword
, 0x97f861b6, 0x60a1, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
89 DEFINE_GUID(GUID_D3DParseUnknownCommandCallback
, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
90 DEFINE_GUID(GUID_MotionCompCallbacks
, 0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e);
91 DEFINE_GUID(GUID_Miscellaneous2Callbacks
, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);
99 #define E_NOTIMPL 0x80004001L
100 #define E_OUTOFMEMORY 0x8007000EL
101 #define E_INVALIDARG 0x80070057L
102 #define E_FAIL 0x80004005L
105 /*****************************************************************************
106 * Initialization stuff
110 char szEntryPoint
[64];
112 } DD32BITDRIVERDATA
,*LPDD32BITDRIVERDATA
;
116 ULONG_PTR dwReserved1
;
117 ULONG_PTR dwReserved2
;
118 } DDVERSIONDATA
,*LPDDVERSIONDATA
;
120 typedef DWORD (PASCAL
*LPDD32BITDRIVERINIT
)(DWORD dwContext
);
122 /* predeclare some structures */
123 typedef struct _DDHALINFO
*LPDDHALINFO
;
124 typedef struct _DDRAWI_DIRECTDRAW_INT
*LPDDRAWI_DIRECTDRAW_INT
;
126 #ifndef DDRAWI_DIRECTDRAW_DEFINED
127 typedef struct _DDRAWI_DIRECTDRAW_LCL
*LPDDRAWI_DIRECTDRAW_LCL
;
128 typedef struct _DDRAWI_DIRECTDRAW_GBL
*LPDDRAWI_DIRECTDRAW_GBL
;
129 #define DDRAWI_DIRECTDRAW_DEFINED
132 typedef struct _DDRAWI_DDRAWSURFACE_INT
*LPDDRAWI_DDRAWSURFACE_INT
;
134 #ifndef DDRAWI_DDRAWSURFACE_DEFINED
135 typedef struct _DDRAWI_DDRAWSURFACE_LCL
*LPDDRAWI_DDRAWSURFACE_LCL
;
136 #define DDRAWI_DDRAWSURFACE_DEFINED
139 typedef struct _DDRAWI_DDRAWSURFACE_GBL
*LPDDRAWI_DDRAWSURFACE_GBL
;
140 typedef struct _DDRAWI_DDRAWSURFACE_MORE
*LPDDRAWI_DDRAWSURFACE_MORE
;
141 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE
*LPDDRAWI_DDRAWSURFACE_GBL_MORE
;
142 typedef struct _DDRAWI_DDRAWPALETTE_INT
*LPDDRAWI_DDRAWPALETTE_INT
;
143 typedef struct _DDRAWI_DDRAWPALETTE_LCL
*LPDDRAWI_DDRAWPALETTE_LCL
;
144 typedef struct _DDRAWI_DDRAWPALETTE_GBL
*LPDDRAWI_DDRAWPALETTE_GBL
;
145 typedef struct _DDRAWI_DDRAWCLIPPER_INT
*LPDDRAWI_DDRAWCLIPPER_INT
;
146 typedef struct _DDRAWI_DDRAWCLIPPER_LCL
*LPDDRAWI_DDRAWCLIPPER_LCL
;
147 typedef struct _DDRAWI_DDRAWCLIPPER_GBL
*LPDDRAWI_DDRAWCLIPPER_GBL
;
148 typedef struct _DDRAWI_DDVIDEOPORT_INT
*LPDDRAWI_DDVIDEOPORT_INT
;
149 typedef struct _DDRAWI_DDVIDEOPORT_LCL
*LPDDRAWI_DDVIDEOPORT_LCL
;
150 typedef struct _DDRAWI_DDMOTIONCOMP_INT
*LPDDRAWI_DDMOTIONCOMP_INT
;
151 typedef struct _DDRAWI_DDMOTIONCOMP_LCL
*LPDDRAWI_DDMOTIONCOMP_LCL
;
153 /*****************************************************************************
154 * driver->ddraw callbacks
156 typedef BOOL (DDAPI
*LPDDHAL_SETINFO
)(LPDDHALINFO lpDDHalInfo
, BOOL reset
);
157 typedef FLATPTR (DDAPI
*LPDDHAL_VIDMEMALLOC
)(LPDDRAWI_DIRECTDRAW_GBL lpDD
, int heap
, DWORD dwWidth
, DWORD dwHeight
);
158 typedef void (DDAPI
*LPDDHAL_VIDMEMFREE
)(LPDDRAWI_DIRECTDRAW_GBL lpDD
, int heap
, FLATPTR fpMem
);
162 LPDDHAL_SETINFO lpSetInfo
;
163 LPDDHAL_VIDMEMALLOC lpVidMemAlloc
;
164 LPDDHAL_VIDMEMFREE lpVidMemFree
;
165 } DDHALDDRAWFNS
, *LPDDHALDDRAWFNS
;
167 /*****************************************************************************
168 * mode info structure
170 typedef struct _DDHALMODEINFO
{
180 DWORD dwAlphaBitMask
;
181 } 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
{
196 __GNU_EXTENSION
union {
202 __GNU_EXTENSION
union {
208 #define VIDMEM_ISLINEAR 0x00000001l
209 #define VIDMEM_ISRECTANGULAR 0x00000002l
210 #define VIDMEM_ISHEAP 0x00000004l
211 #define VIDMEM_ISNONLOCAL 0x00000008l
212 #define VIDMEM_ISWC 0x00000010l
213 #define VIDMEM_HEAPDISABLED 0x00000020l
215 typedef struct _VIDMEMINFO
{
218 DWORD dwDisplayWidth
;
219 DWORD dwDisplayHeight
;
221 DDPIXELFORMAT ddpfDisplay
;
222 DWORD dwOffscreenAlign
;
223 DWORD dwOverlayAlign
;
224 DWORD dwTextureAlign
;
225 DWORD dwZBufferAlign
;
229 } VIDMEMINFO
, *LPVIDMEMINFO
;
231 typedef struct _HEAPALIAS
{
235 } HEAPALIAS
, *LPHEAPALIAS
;
237 typedef struct _HEAPALIASINFO
{
241 LPHEAPALIAS lpAliases
;
242 } HEAPALIASINFO
, *LPHEAPALIASINFO
;
244 #define HEAPALIASINFO_MAPPEDREAL 0x00000001
245 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
247 /*****************************************************************************
248 * capabilities structures
250 typedef struct _DDCORECAPS
{
259 DWORD dwAlphaBltConstBitDepths
;
260 DWORD dwAlphaBltPixelBitDepths
;
261 DWORD dwAlphaBltSurfaceBitDepths
;
262 DWORD dwAlphaOverlayConstBitDepths
;
263 DWORD dwAlphaOverlayPixelBitDepths
;
264 DWORD dwAlphaOverlaySurfaceBitDepths
;
265 DWORD dwZBufferBitDepths
;
268 DWORD dwMaxVisibleOverlays
;
269 DWORD dwCurrVisibleOverlays
;
270 DWORD dwNumFourCCCodes
;
271 DWORD dwAlignBoundarySrc
;
272 DWORD dwAlignSizeSrc
;
273 DWORD dwAlignBoundaryDest
;
274 DWORD dwAlignSizeDest
;
275 DWORD dwAlignStrideAlign
;
276 DWORD dwRops
[DD_ROP_SPACE
];
278 DWORD dwMinOverlayStretch
;
279 DWORD dwMaxOverlayStretch
;
280 DWORD dwMinLiveVideoStretch
;
281 DWORD dwMaxLiveVideoStretch
;
282 DWORD dwMinHwCodecStretch
;
283 DWORD dwMaxHwCodecStretch
;
290 DWORD dwSVBRops
[DD_ROP_SPACE
];
294 DWORD dwVSBRops
[DD_ROP_SPACE
];
298 DWORD dwSSBRops
[DD_ROP_SPACE
];
299 DWORD dwMaxVideoPorts
;
300 DWORD dwCurrVideoPorts
;
302 } DDCORECAPS
, *LPDDCORECAPS
;
304 typedef struct _DDNONLOCALVIDMEMCAPS
{
308 DWORD dwNLVBCKeyCaps
;
310 DWORD dwNLVBRops
[DD_ROP_SPACE
];
311 } DDNONLOCALVIDMEMCAPS
, *LPDDNONLOCALVIDMEMCAPS
;
313 #define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2
314 #define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1
315 #define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
317 /*****************************************************************************
318 * ddraw->driver callbacks
320 #define DDHAL_DRIVER_NOTHANDLED 0x00000000l
321 #define DDHAL_DRIVER_HANDLED 0x00000001l
322 #define DDHAL_DRIVER_NOCKEYHW 0x00000002l
324 typedef struct _DDHAL_DESTROYDRIVERDATA
*LPDDHAL_DESTROYDRIVERDATA
;
325 typedef struct _DDHAL_CREATESURFACEDATA
*LPDDHAL_CREATESURFACEDATA
;
326 typedef struct _DDHAL_DRVSETCOLORKEYDATA
*LPDDHAL_DRVSETCOLORKEYDATA
;
327 typedef struct _DDHAL_SETMODEDATA
*LPDDHAL_SETMODEDATA
;
328 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA
*LPDDHAL_WAITFORVERTICALBLANKDATA
;
329 typedef struct _DDHAL_CANCREATESURFACEDATA
*LPDDHAL_CANCREATESURFACEDATA
;
330 typedef struct _DDHAL_CREATEPALETTEDATA
*LPDDHAL_CREATEPALETTEDATA
;
331 typedef struct _DDHAL_GETSCANLINEDATA
*LPDDHAL_GETSCANLINEDATA
;
332 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA
*LPDDHAL_SETEXCLUSIVEMODEDATA
;
333 typedef struct _DDHAL_FLIPTOGDISURFACEDATA
*LPDDHAL_FLIPTOGDISURFACEDATA
;
335 typedef DWORD (PASCAL
*LPDDHAL_DESTROYDRIVER
) (LPDDHAL_DESTROYDRIVERDATA
);
336 typedef DWORD (PASCAL
*LPDDHAL_CREATESURFACE
) (LPDDHAL_CREATESURFACEDATA
);
337 typedef DWORD (PASCAL
*LPDDHAL_SETCOLORKEY
) (LPDDHAL_DRVSETCOLORKEYDATA
);
338 typedef DWORD (PASCAL
*LPDDHAL_SETMODE
) (LPDDHAL_SETMODEDATA
);
339 typedef DWORD (PASCAL
*LPDDHAL_WAITFORVERTICALBLANK
)(LPDDHAL_WAITFORVERTICALBLANKDATA
);
340 typedef DWORD (PASCAL
*LPDDHAL_CANCREATESURFACE
) (LPDDHAL_CANCREATESURFACEDATA
);
341 typedef DWORD (PASCAL
*LPDDHAL_CREATEPALETTE
) (LPDDHAL_CREATEPALETTEDATA
);
342 typedef DWORD (PASCAL
*LPDDHAL_GETSCANLINE
) (LPDDHAL_GETSCANLINEDATA
);
343 typedef DWORD (PASCAL
*LPDDHAL_SETEXCLUSIVEMODE
) (LPDDHAL_SETEXCLUSIVEMODEDATA
);
344 typedef DWORD (PASCAL
*LPDDHAL_FLIPTOGDISURFACE
) (LPDDHAL_FLIPTOGDISURFACEDATA
);
346 typedef struct _DDHAL_DDCALLBACKS
{
349 LPDDHAL_DESTROYDRIVER DestroyDriver
;
350 LPDDHAL_CREATESURFACE CreateSurface
;
351 LPDDHAL_SETCOLORKEY SetColorKey
;
352 LPDDHAL_SETMODE SetMode
;
353 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank
;
354 LPDDHAL_CANCREATESURFACE CanCreateSurface
;
355 LPDDHAL_CREATEPALETTE CreatePalette
;
356 LPDDHAL_GETSCANLINE GetScanLine
;
358 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
359 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface
;
360 } DDHAL_DDCALLBACKS
, *LPDDHAL_DDCALLBACKS
;
362 typedef struct _DDHAL_DESTROYSURFACEDATA
*LPDDHAL_DESTROYSURFACEDATA
;
363 typedef struct _DDHAL_FLIPDATA
*LPDDHAL_FLIPDATA
;
364 typedef struct _DDHAL_SETCLIPLISTDATA
*LPDDHAL_SETCLIPLISTDATA
;
365 typedef struct _DDHAL_LOCKDATA
*LPDDHAL_LOCKDATA
;
366 typedef struct _DDHAL_UNLOCKDATA
*LPDDHAL_UNLOCKDATA
;
367 typedef struct _DDHAL_BLTDATA
*LPDDHAL_BLTDATA
;
368 typedef struct _DDHAL_SETCOLORKEYDATA
*LPDDHAL_SETCOLORKEYDATA
;
369 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA
*LPDDHAL_ADDATTACHEDSURFACEDATA
;
370 typedef struct _DDHAL_GETBLTSTATUSDATA
*LPDDHAL_GETBLTSTATUSDATA
;
371 typedef struct _DDHAL_GETFLIPSTATUSDATA
*LPDDHAL_GETFLIPSTATUSDATA
;
372 typedef struct _DDHAL_UPDATEOVERLAYDATA
*LPDDHAL_UPDATEOVERLAYDATA
;
373 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
*LPDDHAL_SETOVERLAYPOSITIONDATA
;
374 typedef struct _DDHAL_SETPALETTEDATA
*LPDDHAL_SETPALETTEDATA
;
376 typedef DWORD (PASCAL
*LPDDHALSURFCB_DESTROYSURFACE
) (LPDDHAL_DESTROYSURFACEDATA
);
377 typedef DWORD (PASCAL
*LPDDHALSURFCB_FLIP
) (LPDDHAL_FLIPDATA
);
378 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETCLIPLIST
) (LPDDHAL_SETCLIPLISTDATA
);
379 typedef DWORD (PASCAL
*LPDDHALSURFCB_LOCK
) (LPDDHAL_LOCKDATA
);
380 typedef DWORD (PASCAL
*LPDDHALSURFCB_UNLOCK
) (LPDDHAL_UNLOCKDATA
);
381 typedef DWORD (PASCAL
*LPDDHALSURFCB_BLT
) (LPDDHAL_BLTDATA
);
382 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETCOLORKEY
) (LPDDHAL_SETCOLORKEYDATA
);
383 typedef DWORD (PASCAL
*LPDDHALSURFCB_ADDATTACHEDSURFACE
)(LPDDHAL_ADDATTACHEDSURFACEDATA
);
384 typedef DWORD (PASCAL
*LPDDHALSURFCB_GETBLTSTATUS
) (LPDDHAL_GETBLTSTATUSDATA
);
385 typedef DWORD (PASCAL
*LPDDHALSURFCB_GETFLIPSTATUS
) (LPDDHAL_GETFLIPSTATUSDATA
);
386 typedef DWORD (PASCAL
*LPDDHALSURFCB_UPDATEOVERLAY
) (LPDDHAL_UPDATEOVERLAYDATA
);
387 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETOVERLAYPOSITION
)(LPDDHAL_SETOVERLAYPOSITIONDATA
);
388 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETPALETTE
) (LPDDHAL_SETPALETTEDATA
);
390 typedef struct _DDHAL_DDSURFACECALLBACKS
{
393 LPDDHALSURFCB_DESTROYSURFACE DestroySurface
;
394 LPDDHALSURFCB_FLIP Flip
;
395 LPDDHALSURFCB_SETCLIPLIST SetClipList
;
396 LPDDHALSURFCB_LOCK Lock
;
397 LPDDHALSURFCB_UNLOCK Unlock
;
398 LPDDHALSURFCB_BLT Blt
;
399 LPDDHALSURFCB_SETCOLORKEY SetColorKey
;
400 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface
;
401 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus
;
402 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus
;
403 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay
;
404 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition
;
406 LPDDHALSURFCB_SETPALETTE SetPalette
;
407 } DDHAL_DDSURFACECALLBACKS
, *LPDDHAL_DDSURFACECALLBACKS
;
409 typedef struct _DDHAL_DESTROYPALETTEDATA
*LPDDHAL_DESTROYPALETTEDATA
;
410 typedef struct _DDHAL_SETENTRIESDATA
*LPDDHAL_SETENTRIESDATA
;
412 typedef DWORD (PASCAL
*LPDDHALPALCB_DESTROYPALETTE
) (LPDDHAL_DESTROYPALETTEDATA
);
413 typedef DWORD (PASCAL
*LPDDHALPALCB_SETENTRIES
) (LPDDHAL_SETENTRIESDATA
);
415 typedef struct _DDHAL_DDPALETTECALLBACKS
{
418 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
419 LPDDHALPALCB_SETENTRIES SetEntries
;
420 } DDHAL_DDPALETTECALLBACKS
, *LPDDHAL_DDPALETTECALLBACKS
;
422 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_CANCREATEEXEBUF
) (LPDDHAL_CANCREATESURFACEDATA
);
423 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_CREATEEXEBUF
) (LPDDHAL_CREATESURFACEDATA
);
424 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_DESTROYEXEBUF
) (LPDDHAL_DESTROYSURFACEDATA
);
425 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_LOCKEXEBUF
) (LPDDHAL_LOCKDATA
);
426 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_UNLOCKEXEBUF
) (LPDDHAL_UNLOCKDATA
);
428 typedef struct _DDHAL_DDEXEBUFCALLBACKS
{
431 LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer
;
432 LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer
;
433 LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer
;
434 LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer
;
435 LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer
;
436 } DDHAL_DDEXEBUFCALLBACKS
, *LPDDHAL_DDEXEBUFCALLBACKS
;
438 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
*LPDDHAL_GETAVAILDRIVERMEMORYDATA
;
439 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
*LPDDHAL_UPDATENONLOCALHEAPDATA
;
440 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
*LPDDHAL_GETHEAPALIGNMENTDATA
;
442 typedef DWORD (PASCAL
*LPDDHAL_GETAVAILDRIVERMEMORY
)(LPDDHAL_GETAVAILDRIVERMEMORYDATA
);
443 typedef DWORD (PASCAL
*LPDDHAL_UPDATENONLOCALHEAP
) (LPDDHAL_UPDATENONLOCALHEAPDATA
);
444 typedef DWORD (PASCAL
*LPDDHAL_GETHEAPALIGNMENT
) (LPDDHAL_GETHEAPALIGNMENTDATA
);
446 typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS
{
449 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
450 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap
;
451 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment
;
452 LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus
;
453 } DDHAL_DDMISCELLANEOUSCALLBACKS
, *LPDDHAL_DDMISCELLANEOUSCALLBACKS
;
455 typedef struct _DDHAL_CREATESURFACEEXDATA
*LPDDHAL_CREATESURFACEEXDATA
;
456 typedef struct _DDHAL_GETDRIVERSTATEDATA
*LPDDHAL_GETDRIVERSTATEDATA
;
457 typedef struct _DDHAL_DESTROYDDLOCALDATA
*LPDDHAL_DESTROYDDLOCALDATA
;
459 typedef DWORD (PASCAL
*LPDDHAL_CREATESURFACEEX
)(LPDDHAL_CREATESURFACEEXDATA
);
460 typedef DWORD (PASCAL
*LPDDHAL_GETDRIVERSTATE
) (LPDDHAL_GETDRIVERSTATEDATA
);
461 typedef DWORD (PASCAL
*LPDDHAL_DESTROYDDLOCAL
) (LPDDHAL_DESTROYDDLOCALDATA
);
463 typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS
{
467 LPDDHAL_CREATESURFACEEX CreateSurfaceEx
;
468 LPDDHAL_GETDRIVERSTATE GetDriverState
;
469 LPDDHAL_DESTROYDDLOCAL DestroyDDLocal
;
470 } DDHAL_DDMISCELLANEOUS2CALLBACKS
, *LPDDHAL_DDMISCELLANEOUS2CALLBACKS
;
472 typedef struct _DDHAL_CANCREATEVPORTDATA
*LPDDHAL_CANCREATEVPORTDATA
;
473 typedef struct _DDHAL_CREATEVPORTDATA
*LPDDHAL_CREATEVPORTDATA
;
474 typedef struct _DDHAL_FLIPVPORTDATA
*LPDDHAL_FLIPVPORTDATA
;
475 typedef struct _DDHAL_GETVPORTCONNECTDATA
*LPDDHAL_GETVPORTCONNECTDATA
;
476 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA
*LPDDHAL_GETVPORTBANDWIDTHDATA
;
477 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA
*LPDDHAL_GETVPORTINPUTFORMATDATA
;
478 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA
*LPDDHAL_GETVPORTOUTPUTFORMATDATA
;
479 typedef struct _DDHAL_GETVPORTFIELDDATA
*LPDDHAL_GETVPORTFIELDDATA
;
480 typedef struct _DDHAL_GETVPORTLINEDATA
*LPDDHAL_GETVPORTLINEDATA
;
481 typedef struct _DDHAL_DESTROYVPORTDATA
*LPDDHAL_DESTROYVPORTDATA
;
482 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA
*LPDDHAL_GETVPORTFLIPSTATUSDATA
;
483 typedef struct _DDHAL_UPDATEVPORTDATA
*LPDDHAL_UPDATEVPORTDATA
;
484 typedef struct _DDHAL_WAITFORVPORTSYNCDATA
*LPDDHAL_WAITFORVPORTSYNCDATA
;
485 typedef struct _DDHAL_GETVPORTSIGNALDATA
*LPDDHAL_GETVPORTSIGNALDATA
;
486 typedef struct _DDHAL_VPORTCOLORDATA
*LPDDHAL_VPORTCOLORDATA
;
488 typedef DWORD (PASCAL
*LPDDHALVPORTCB_CANCREATEVIDEOPORT
)(LPDDHAL_CANCREATEVPORTDATA
);
489 typedef DWORD (PASCAL
*LPDDHALVPORTCB_CREATEVIDEOPORT
)(LPDDHAL_CREATEVPORTDATA
);
490 typedef DWORD (PASCAL
*LPDDHALVPORTCB_FLIP
)(LPDDHAL_FLIPVPORTDATA
);
491 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETBANDWIDTH
)(LPDDHAL_GETVPORTBANDWIDTHDATA
);
492 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETINPUTFORMATS
)(LPDDHAL_GETVPORTINPUTFORMATDATA
);
493 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETOUTPUTFORMATS
)(LPDDHAL_GETVPORTOUTPUTFORMATDATA
);
494 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETFIELD
)(LPDDHAL_GETVPORTFIELDDATA
);
495 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETLINE
)(LPDDHAL_GETVPORTLINEDATA
);
496 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETVPORTCONNECT
)(LPDDHAL_GETVPORTCONNECTDATA
);
497 typedef DWORD (PASCAL
*LPDDHALVPORTCB_DESTROYVPORT
)(LPDDHAL_DESTROYVPORTDATA
);
498 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETFLIPSTATUS
)(LPDDHAL_GETVPORTFLIPSTATUSDATA
);
499 typedef DWORD (PASCAL
*LPDDHALVPORTCB_UPDATE
)(LPDDHAL_UPDATEVPORTDATA
);
500 typedef DWORD (PASCAL
*LPDDHALVPORTCB_WAITFORSYNC
)(LPDDHAL_WAITFORVPORTSYNCDATA
);
501 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETSIGNALSTATUS
)(LPDDHAL_GETVPORTSIGNALDATA
);
502 typedef DWORD (PASCAL
*LPDDHALVPORTCB_COLORCONTROL
)(LPDDHAL_VPORTCOLORDATA
);
504 typedef struct _DDHAL_DDVIDEOPORTCALLBACKS
{
507 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort
;
508 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort
;
509 LPDDHALVPORTCB_FLIP FlipVideoPort
;
510 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth
;
511 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats
;
512 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats
;
514 LPDDHALVPORTCB_GETFIELD GetVideoPortField
;
515 LPDDHALVPORTCB_GETLINE GetVideoPortLine
;
516 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo
;
517 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort
;
518 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus
;
519 LPDDHALVPORTCB_UPDATE UpdateVideoPort
;
520 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync
;
521 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus
;
522 LPDDHALVPORTCB_COLORCONTROL ColorControl
;
523 } DDHAL_DDVIDEOPORTCALLBACKS
;
525 typedef struct _DDHAL_COLORCONTROLDATA
*LPDDHAL_COLORCONTROLDATA
;
527 typedef DWORD (PASCAL
*LPDDHALCOLORCB_COLORCONTROL
)(LPDDHAL_COLORCONTROLDATA
);
529 typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS
{
532 LPDDHALCOLORCB_COLORCONTROL ColorControl
;
533 } DDHAL_DDCOLORCONTROLCALLBACKS
;
535 typedef struct _DDHAL_SYNCSURFACEDATA
*LPDDHAL_SYNCSURFACEDATA
;
536 typedef struct _DDHAL_SYNCVIDEOPORTDATA
*LPDDHAL_SYNCVIDEOPORTDATA
;
538 typedef DWORD (PASCAL
*LPDDHALKERNELCB_SYNCSURFACE
)(LPDDHAL_SYNCSURFACEDATA
);
539 typedef DWORD (PASCAL
*LPDDHALKERNELCB_SYNCVIDEOPORT
)(LPDDHAL_SYNCVIDEOPORTDATA
);
541 typedef struct _DDHAL_DDKERNELCALLBACKS
{
544 LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData
;
545 LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData
;
546 } DDHAL_DDKERNELCALLBACKS
, *LPDDHAL_DDKERNELCALLBACKS
;
548 typedef struct _DDHAL_GETMOCOMPGUIDSDATA
*LPDDHAL_GETMOCOMPGUIDSDATA
;
549 typedef struct _DDHAL_GETMOCOMPFORMATSDATA
*LPDDHAL_GETMOCOMPFORMATSDATA
;
550 typedef struct _DDHAL_CREATEMOCOMPDATA
*LPDDHAL_CREATEMOCOMPDATA
;
551 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA
*LPDDHAL_GETMOCOMPCOMPBUFFDATA
;
552 typedef struct _DDHAL_GETINTERNALMOCOMPDATA
*LPDDHAL_GETINTERNALMOCOMPDATA
;
553 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA
*LPDDHAL_BEGINMOCOMPFRAMEDATA
;
554 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA
*LPDDHAL_ENDMOCOMPFRAMEDATA
;
555 typedef struct _DDHAL_RENDERMOCOMPDATA
*LPDDHAL_RENDERMOCOMPDATA
;
556 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA
*LPDDHAL_QUERYMOCOMPSTATUSDATA
;
557 typedef struct _DDHAL_DESTROYMOCOMPDATA
*LPDDHAL_DESTROYMOCOMPDATA
;
559 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETGUIDS
)(LPDDHAL_GETMOCOMPGUIDSDATA
);
560 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETFORMATS
)(LPDDHAL_GETMOCOMPFORMATSDATA
);
561 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_CREATE
)(LPDDHAL_CREATEMOCOMPDATA
);
562 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETCOMPBUFFINFO
)(LPDDHAL_GETMOCOMPCOMPBUFFDATA
);
563 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETINTERNALINFO
)(LPDDHAL_GETINTERNALMOCOMPDATA
);
564 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_BEGINFRAME
)(LPDDHAL_BEGINMOCOMPFRAMEDATA
);
565 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_ENDFRAME
)(LPDDHAL_ENDMOCOMPFRAMEDATA
);
566 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_RENDER
)(LPDDHAL_RENDERMOCOMPDATA
);
567 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_QUERYSTATUS
)(LPDDHAL_QUERYMOCOMPSTATUSDATA
);
568 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_DESTROY
)(LPDDHAL_DESTROYMOCOMPDATA
);
570 typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS
{
573 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids
;
574 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats
;
575 LPDDHALMOCOMPCB_CREATE CreateMoComp
;
576 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo
;
577 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo
;
578 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame
;
579 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame
;
580 LPDDHALMOCOMPCB_RENDER RenderMoComp
;
581 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus
;
582 LPDDHALMOCOMPCB_DESTROY DestroyMoComp
;
583 } DDHAL_DDMOTIONCOMPCALLBACKS
, *LPDDHAL_DDMOTIONCOMPCALLBACKS
;
585 typedef HRESULT (WINAPI
*LPDDGAMMACALIBRATORPROC
)(LPDDGAMMARAMP
, LPBYTE
);
587 /*****************************************************************************
588 * driver info structure
590 * The HAL is queried for additional callbacks via the GetDriverInfo callback.
592 typedef struct _DDHAL_GETDRIVERINFODATA
*LPDDHAL_GETDRIVERINFODATA
;
593 typedef DWORD (PASCAL
*LPDDHAL_GETDRIVERINFO
)(LPDDHAL_GETDRIVERINFODATA
);
595 typedef struct _DDHAL_GETDRIVERINFODATA
{
599 DWORD dwExpectedSize
;
604 } DDHAL_GETDRIVERINFODATA
;
606 typedef struct _DDHALINFO
{
608 LPDDHAL_DDCALLBACKS lpDDCallbacks
;
609 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks
;
610 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks
;
613 DWORD dwMonitorFrequency
;
614 LPDDHAL_GETDRIVERINFO GetDriverInfo
;
618 LPDDHALMODEINFO lpModeInfo
;
623 ULONG_PTR lpD3DGlobalDriverData
;
624 ULONG_PTR lpD3DHALCallbacks
;
625 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks
;
628 #define DDPALETTECALLBACKSSIZE sizeof(DDHAL_DDPALETTECALLBACKS)
629 #define DDSURFACECALLBACKSSIZE sizeof(DDHAL_DDSURFACECALLBACKS)
630 #define DDMISCELLANEOUSCALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS)
631 #define DDMISCELLANEOUS2CALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS)
632 #define DDEXEBUFCALLBACKSSIZE sizeof(DDHAL_DDEXEBUFCALLBACKS)
633 #define DDVIDEOPORTCALLBACKSSIZE sizeof(DDHAL_DDVIDEOPORTCALLBACKS)
634 #define DDCOLORCONTROLCALLBACKSSIZE sizeof(DDHAL_DDCOLORCONTROLCALLBACKS)
635 #define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS)
636 #define DDMOTIONCOMPCALLBACKSSIZE sizeof(DDHAL_DDMOTIONCOMPCALLBACKS)
638 #define MAX_PALETTE_SIZE 256
640 #define MAX_AUTOFLIP_BUFFERS 10
641 #define DDSCAPS2_INDEXBUFFER DDSCAPS2_RESERVED3
642 #define DDSCAPS3_VIDEO DDSCAPS3_RESERVED2
643 #define D3DFMT_INTERNAL_D32 71
644 #define D3DFMT_INTERNAL_S1D15 72
645 #define D3DFMT_INTERNAL_D15S1 73
646 #define D3DFMT_INTERNAL_S8D24 74
647 #define D3DFMT_INTERNAL_D24S8 75
648 #define D3DFMT_INTERNAL_X8D24 76
649 #define D3DFMT_INTERNAL_D24X8 77
650 #define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l
651 #define DDHAL_PLEASEALLOC_LINEARSIZE 0x00000003l
653 #define DDHAL_CB32_DESTROYDRIVER 0x00000001l
654 #define DDHAL_CB32_CREATESURFACE 0x00000002l
655 #define DDHAL_CB32_SETCOLORKEY 0x00000004l
656 #define DDHAL_CB32_SETMODE 0x00000008l
657 #define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l
658 #define DDHAL_CB32_CANCREATESURFACE 0x00000020l
659 #define DDHAL_CB32_CREATEPALETTE 0x00000040l
660 #define DDHAL_CB32_GETSCANLINE 0x00000080l
661 #define DDHAL_CB32_SETEXCLUSIVEMODE 0x00000100l
662 #define DDHAL_CB32_FLIPTOGDISURFACE 0x00000200l
663 #define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l
664 #define DDHAL_PALCB32_SETENTRIES 0x00000002l
665 #define DDHALINFO_ISPRIMARYDISPLAY 0x00000001
666 #define DDHALINFO_MODEXILLEGAL 0x00000002
667 #define DDHALINFO_GETDRIVERINFOSET 0x00000004
668 #define DDHALINFO_GETDRIVERINFO2 0x00000008
669 #define DDRAWI_VPORTSTART 0x0001
670 #define DDRAWI_VPORTSTOP 0x0002
671 #define DDRAWI_VPORTUPDATE 0x0003
672 #define DDRAWI_VPORTGETCOLOR 0x0001
673 #define DDRAWI_VPORTSETCOLOR 0x0002
674 #define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001
675 #define DDHAL_SURFCB32_FLIP 0x00000002
676 #define DDHAL_SURFCB32_SETCLIPLIST 0x00000004
677 #define DDHAL_SURFCB32_LOCK 0x00000008
678 #define DDHAL_SURFCB32_UNLOCK 0x00000010
679 #define DDHAL_SURFCB32_BLT 0x00000020
680 #define DDHAL_SURFCB32_SETCOLORKEY 0x00000040
681 #define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080
682 #define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100
683 #define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200
684 #define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400
685 #define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800
686 #define DDHAL_SURFCB32_RESERVED4 0x00001000
687 #define DDHAL_SURFCB32_SETPALETTE 0x00002000
688 #define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001
689 #define DDHAL_MISCCB32_UPDATENONLOCALHEAP 0x00000002
690 #define DDHAL_MISCCB32_GETHEAPALIGNMENT 0x00000004
691 #define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS 0x00000008
692 #define DDHAL_MISC2CB32_ALPHABLT 0x00000001
693 #define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002
694 #define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004
695 #define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008
696 #define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001l
697 #define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002l
698 #define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004l
699 #define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008l
700 #define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010l
701 #define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001
702 #define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002
703 #define DDHAL_VPORT32_FLIP 0x00000004
704 #define DDHAL_VPORT32_GETBANDWIDTH 0x00000008
705 #define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010
706 #define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020
707 #define DDHAL_VPORT32_GETFIELD 0x00000080
708 #define DDHAL_VPORT32_GETLINE 0x00000100
709 #define DDHAL_VPORT32_GETCONNECT 0x00000200
710 #define DDHAL_VPORT32_DESTROY 0x00000400
711 #define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800
712 #define DDHAL_VPORT32_UPDATE 0x00001000
713 #define DDHAL_VPORT32_WAITFORSYNC 0x00002000
714 #define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000
715 #define DDHAL_VPORT32_COLORCONTROL 0x00008000
716 #define DDHAL_COLOR_COLORCONTROL 0x00000001
717 #define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l
718 #define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l
719 #define DDHAL_MOCOMP32_GETGUIDS 0x00000001
720 #define DDHAL_MOCOMP32_GETFORMATS 0x00000002
721 #define DDHAL_MOCOMP32_CREATE 0x00000004
722 #define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008
723 #define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010
724 #define DDHAL_MOCOMP32_BEGINFRAME 0x00000020
725 #define DDHAL_MOCOMP32_ENDFRAME 0x00000040
726 #define DDHAL_MOCOMP32_RENDER 0x00000080
727 #define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100
728 #define DDHAL_MOCOMP32_DESTROY 0x00000200
730 /* where the high-level ddraw implementation stores the callbacks */
731 typedef struct _DDHAL_CALLBACKS
{
732 DDHAL_DDCALLBACKS cbDDCallbacks
;
733 DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks
;
734 DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks
;
735 DDHAL_DDCALLBACKS HALDD
;
736 DDHAL_DDSURFACECALLBACKS HALDDSurface
;
737 DDHAL_DDPALETTECALLBACKS HALDDPalette
;
738 DDHAL_DDCALLBACKS HELDD
;
739 DDHAL_DDSURFACECALLBACKS HELDDSurface
;
740 DDHAL_DDPALETTECALLBACKS HELDDPalette
;
741 DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks
;
742 DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf
;
743 DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf
;
744 DDHAL_DDVIDEOPORTCALLBACKS cbDDVideoPortCallbacks
;
745 DDHAL_DDVIDEOPORTCALLBACKS HALDDVideoPort
;
746 DDHAL_DDCOLORCONTROLCALLBACKS cbDDColorControlCallbacks
;
747 DDHAL_DDCOLORCONTROLCALLBACKS HALDDColorControl
;
748 DDHAL_DDMISCELLANEOUSCALLBACKS cbDDMiscellaneousCallbacks
;
749 DDHAL_DDMISCELLANEOUSCALLBACKS HALDDMiscellaneous
;
750 DDHAL_DDKERNELCALLBACKS cbDDKernelCallbacks
;
751 DDHAL_DDKERNELCALLBACKS HALDDKernel
;
752 DDHAL_DDMOTIONCOMPCALLBACKS cbDDMotionCompCallbacks
;
753 DDHAL_DDMOTIONCOMPCALLBACKS HALDDMotionComp
;
754 } DDHAL_CALLBACKS
, *LPDDHAL_CALLBACKS
;
756 /*****************************************************************************
757 * parameter structures
759 typedef struct _DDHAL_DESTROYDRIVERDATA
{
760 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
762 LPDDHAL_DESTROYDRIVER DestroyDriver
;
763 } DDHAL_DESTROYDRIVERDATA
;
765 typedef struct _DDHAL_SETMODEDATA
{
766 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
769 LPDDHAL_SETMODE SetMode
;
774 typedef struct _DDHAL_CREATESURFACEDATA
{
775 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
776 LPDDSURFACEDESC lpDDSurfaceDesc
;
777 LPDDRAWI_DDRAWSURFACE_LCL
*lplpSList
;
780 LPDDHAL_CREATESURFACE CreateSurface
;
781 } DDHAL_CREATESURFACEDATA
;
783 typedef struct _DDHAL_CANCREATESURFACEDATA
{
784 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
785 LPDDSURFACEDESC lpDDSurfaceDesc
;
786 DWORD bIsDifferentPixelFormat
;
788 LPDDHAL_CANCREATESURFACE CanCreateSurface
;
789 } DDHAL_CANCREATESURFACEDATA
;
791 typedef struct _DDHAL_CREATEPALETTEDATA
{
792 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
793 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
794 LPPALETTEENTRY lpColorTable
;
796 LPDDHAL_CREATEPALETTE CreatePalette
;
798 } DDHAL_CREATEPALETTEDATA
;
800 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA
{
801 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
805 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
806 } DDHAL_SETEXCLUSIVEMODEDATA
;
809 typedef struct _DDHAL_DESTROYSURFACEDATA
{
810 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
811 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
813 LPDDHALSURFCB_DESTROYSURFACE DestroySurface
;
814 } DDHAL_DESTROYSURFACEDATA
;
816 typedef struct _DDHAL_FLIPDATA
{
817 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
818 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr
;
819 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg
;
822 LPDDHALSURFCB_FLIP Flip
;
823 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft
;
824 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft
;
827 typedef struct _DDHAL_LOCKDATA
{
828 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
829 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
834 LPDDHALSURFCB_LOCK Lock
;
838 typedef struct _DDHAL_UNLOCKDATA
{
839 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
840 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
842 LPDDHALSURFCB_UNLOCK Unlock
;
845 typedef struct _DDHAL_BLTDATA
{
846 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
847 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
849 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
855 LPDDHALSURFCB_BLT Blt
;
863 typedef struct _DDHAL_SETPALETTEDATA
{
864 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
865 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
866 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
868 LPDDHALSURFCB_SETPALETTE SetPalette
;
870 } DDHAL_SETPALETTEDATA
;
873 typedef struct _DDHAL_DESTROYPALETTEDATA
{
874 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
875 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
877 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
878 } DDHAL_DESTROYPALETTEDATA
;
880 typedef struct _DDHAL_SETENTRIESDATA
{
881 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
882 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
885 LPPALETTEENTRY lpEntries
;
887 LPDDHALPALCB_SETENTRIES SetEntries
;
888 } DDHAL_SETENTRIESDATA
;
890 typedef struct _DDHAL_CANCREATEVPORTDATA
{
891 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
892 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
894 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort
;
895 } DDHAL_CANCREATEVPORTDATA
;
897 typedef struct _DDHAL_CREATEVPORTDATA
{
898 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
899 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
900 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
902 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort
;
903 } DDHAL_CREATEVPORTDATA
;
905 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA
{
906 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
907 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
908 LPDDPIXELFORMAT lpddpfFormat
;
912 LPDDVIDEOPORTBANDWIDTH lpBandwidth
;
914 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth
;
915 } DDHAL_GETVPORTBANDWIDTHDATA
;
917 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA
{
918 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
919 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
921 LPDDPIXELFORMAT lpddpfFormat
;
924 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats
;
925 } DDHAL_GETVPORTINPUTFORMATDATA
;
927 typedef struct _DDHAL_GETVPORTFIELDDATA
{
928 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
929 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
932 LPDDHALVPORTCB_GETFIELD GetVideoPortField
;
933 } DDHAL_GETVPORTFIELDDATA
;
935 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA
{
936 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
937 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
939 LPDDPIXELFORMAT lpddpfInputFormat
;
940 LPDDPIXELFORMAT lpddpfOutputFormats
;
943 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats
;
944 } DDHAL_GETVPORTOUTPUTFORMATDATA
;
946 typedef struct _DDHAL_GETVPORTLINEDATA
{
947 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
948 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
951 LPDDHALVPORTCB_GETLINE GetVideoPortLine
;
952 } DDHAL_GETVPORTLINEDATA
;
954 typedef struct _DDHAL_DESTROYVPORTDATA
{
955 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
956 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
958 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort
;
959 } DDHAL_DESTROYVPORTDATA
;
961 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA
{
962 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
965 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus
;
966 } DDHAL_GETVPORTFLIPSTATUSDATA
;
968 typedef struct _DDHAL_UPDATEVPORTDATA
{
969 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
970 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
971 LPDDRAWI_DDRAWSURFACE_INT
*lplpDDSurface
;
972 LPDDRAWI_DDRAWSURFACE_INT
*lplpDDVBISurface
;
973 LPDDVIDEOPORTINFO lpVideoInfo
;
976 DWORD dwNumVBIAutoflip
;
978 LPDDHALVPORTCB_UPDATE UpdateVideoPort
;
979 } DDHAL_UPDATEVPORTDATA
;
981 typedef struct _DDHAL_WAITFORVPORTSYNCDATA
{
982 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
983 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
988 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync
;
989 } DDHAL_WAITFORVPORTSYNCDATA
;
991 typedef struct _DDHAL_GETVPORTSIGNALDATA
{
992 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
993 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
996 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus
;
997 } DDHAL_GETVPORTSIGNALDATA
;
999 typedef struct _DDHAL_VPORTCOLORDATA
{
1000 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1001 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1003 LPDDCOLORCONTROL lpColorData
;
1005 LPDDHALVPORTCB_COLORCONTROL ColorControl
;
1006 } DDHAL_VPORTCOLORDATA
;
1008 typedef struct _DDHAL_FLIPVPORTDATA
{
1009 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1010 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1011 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr
;
1012 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg
;
1014 LPDDHALVPORTCB_FLIP FlipVideoPort
;
1015 } DDHAL_FLIPVPORTDATA
;
1017 typedef struct _DDHAL_GETVPORTCONNECTDATA
{
1018 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1020 LPDDVIDEOPORTCONNECT lpConnect
;
1023 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo
;
1024 } DDHAL_GETVPORTCONNECTDATA
;
1026 typedef struct _DDHAL_SYNCSURFACEDATA
{
1028 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1029 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1030 DWORD dwSurfaceOffset
;
1031 ULONG_PTR fpLockPtr
;
1033 DWORD dwOverlayOffset
;
1034 DWORD dwOverlaySrcWidth
;
1035 DWORD dwOverlaySrcHeight
;
1036 DWORD dwOverlayDestWidth
;
1037 DWORD dwOverlayDestHeight
;
1038 ULONG_PTR dwDriverReserved1
;
1039 ULONG_PTR dwDriverReserved2
;
1040 ULONG_PTR dwDriverReserved3
;
1042 } DDHAL_SYNCSURFACEDATA
;
1044 typedef struct _DDHAL_SYNCVIDEOPORTDATA
{
1046 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1047 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1048 DWORD dwOriginOffset
;
1051 ULONG_PTR dwDriverReserved1
;
1052 ULONG_PTR dwDriverReserved2
;
1053 ULONG_PTR dwDriverReserved3
;
1055 } DDHAL_SYNCVIDEOPORTDATA
;
1057 typedef struct _DDHAL_DESTROYDDLOCALDATA
{
1059 LPDDRAWI_DIRECTDRAW_LCL pDDLcl
;
1061 } DDHAL_DESTROYDDLOCALDATA
;
1063 typedef struct _DDHAL_CREATESURFACEEXDATA
{
1065 LPDDRAWI_DIRECTDRAW_LCL lpDDLcl
;
1066 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl
;
1068 } DDHAL_CREATESURFACEEXDATA
;
1070 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
{
1071 ULONG_PTR dwInstance
;
1074 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment
;
1075 HEAPALIGNMENT Alignment
;
1076 } DDHAL_GETHEAPALIGNMENTDATA
;
1078 typedef struct _DDMORESURFACECAPS
{
1080 DDSCAPSEX ddsCapsMore
;
1081 struct tagExtendedHeapRestrictions
{
1082 DDSCAPSEX ddsCapsEx
;
1083 DDSCAPSEX ddsCapsExAlt
;
1084 } ddsExtendedHeapRestrictions
[1];
1085 } DDMORESURFACECAPS
, *LPDDMORESURFACECAPS
;
1087 typedef struct _DDSTEREOMODE
{
1092 DWORD dwRefreshRate
;
1094 } DDSTEREOMODE
, *LPDDSTEREOMODE
;
1096 /*****************************************************************************
1097 * high-level ddraw implementation structures
1099 typedef struct _IUNKNOWN_LIST
{
1100 struct _IUNKNOWN_LIST
*lpLink
;
1103 IUnknown
*lpIUnknown
;
1106 #endif /* _NO_COM */
1107 } IUNKNOWN_LIST
, *LPIUNKNOWN_LIST
;
1109 typedef struct _PROCESS_LIST
{
1110 struct _PROCESS_LIST
*lpLink
;
1115 } PROCESS_LIST
, *LPPROCESS_LIST
;
1117 typedef struct _ATTACHLIST
{
1119 struct _ATTACHLIST
*lpLink
;
1120 LPDDRAWI_DDRAWSURFACE_LCL lpAttached
;
1121 LPDDRAWI_DDRAWSURFACE_INT lpIAttached
;
1122 } ATTACHLIST
, *LPATTACHLIST
;
1124 #define DDAL_IMPLICIT 0x00000001
1126 typedef struct _ACCESSRECTLIST
{
1127 struct _ACCESSRECTLIST
*lpLink
;
1129 LPDDRAWI_DIRECTDRAW_LCL lpOwner
;
1130 LPVOID lpSurfaceData
;
1132 LPHEAPALIASINFO lpHeapAliasInfo
;
1133 } ACCESSRECTLIST
, *LPACCESSRECTLIST
;
1135 #define ACCESSRECT_VRAMSTYLE 0x00000001
1136 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
1137 #define ACCESSRECT_BROKEN 0x00000004
1139 typedef struct _DBLNODE
{
1140 struct _DBLNODE
*next
;
1141 struct _DBLNODE
*prev
;
1142 LPDDRAWI_DDRAWSURFACE_LCL object
;
1143 LPDDRAWI_DDRAWSURFACE_INT object_int
;
1144 } DBLNODE
, *LPDBLNODE
;
1146 typedef struct _DDRAWI_DIRECTDRAW_INT
{
1148 LPDDRAWI_DIRECTDRAW_LCL lpLcl
;
1149 LPDDRAWI_DIRECTDRAW_INT lpLink
;
1151 } DDRAWI_DIRECTDRAW_INT
;
1153 typedef struct _DDRAWI_DIRECTDRAW_LCL
{
1155 LPDDRAWI_DIRECTDRAW_GBL lpGbl
;
1158 DWORD dwLocalRefCnt
;
1161 IUnknown
*pUnkOuter
;
1169 LPDDRAWI_DDRAWSURFACE_INT lpPrimary
;
1170 LPDDRAWI_DDRAWSURFACE_INT lpCB
;
1171 DWORD dwPreferredMode
;
1173 HINSTANCE hD3DInstance
;
1175 IUnknown
*pD3DIUnknown
;
1179 LPDDHAL_CALLBACKS lpDDCB
;
1182 DWORD dwAppHackFlags
;
1184 ULONG_PTR hFocusWnd
;
1185 DWORD dwHotTracking
;
1188 ULONG_PTR hWndPopup
;
1190 ULONG_PTR hGammaCalibrator
;
1191 LPDDGAMMACALIBRATORPROC lpGammaCalibrator
;
1192 } DDRAWI_DIRECTDRAW_LCL
;
1194 #define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001
1195 #define DDRAWILCL_ISFULLSCREEN 0x00000002
1196 #define DDRAWILCL_SETCOOPCALLED 0x00000004
1197 #define DDRAWILCL_ACTIVEYES 0x00000008
1198 #define DDRAWILCL_ACTIVENO 0x00000010
1199 #define DDRAWILCL_HOOKEDHWND 0x00000020
1200 #define DDRAWILCL_ALLOWMODEX 0x00000040
1201 #define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080
1202 #define DDRAWILCL_MODEHASBEENCHANGED 0x00000100
1203 #define DDRAWILCL_CREATEDWINDOW 0x00000200
1204 #define DDRAWILCL_DIRTYDC 0x00000400
1205 #define DDRAWILCL_DISABLEINACTIVATE 0x00000800
1206 #define DDRAWILCL_CURSORCLIPPED 0x00001000
1207 #define DDRAWILCL_EXPLICITMONITOR 0x00002000
1208 #define DDRAWILCL_MULTITHREADED 0x00004000
1209 #define DDRAWILCL_FPUSETUP 0x00008000
1210 #define DDRAWILCL_POWEREDDOWN 0x00010000
1211 #define DDRAWILCL_DIRECTDRAW7 0x00020000
1212 #define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000
1213 #define DDRAWILCL_FPUPRESERVE 0x00080000
1214 #define DDRAWILCL_DX8DRIVER 0x00100000
1215 #define DDRAWILCL_DIRECTDRAW8 0x00200000
1217 typedef struct _DDRAWI_DIRECTDRAW_GBL
{
1220 FLATPTR fpPrimaryOrig
;
1224 LPDDHAL_CALLBACKS lpDDCBtmp
;
1225 LPDDRAWI_DDRAWSURFACE_INT dsList
;
1226 LPDDRAWI_DDRAWPALETTE_INT palList
;
1227 LPDDRAWI_DDRAWCLIPPER_INT clipperList
;
1228 LPDDRAWI_DIRECTDRAW_GBL lp16DD
;
1229 DWORD dwMaxOverlays
;
1230 DWORD dwCurrOverlays
;
1231 DWORD dwMonitorFrequency
;
1232 DDCORECAPS ddHELCaps
;
1233 DWORD dwUnused2
[50];
1234 DDCOLORKEY ddckCKDestOverlay
;
1235 DDCOLORKEY ddckCKSrcOverlay
;
1237 LPVOID lpDriverHandle
;
1238 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner
;
1240 DWORD dwModeIndexOrig
;
1244 LPDDHALMODEINFO lpModeInfo
;
1245 PROCESS_LIST plProcessList
;
1246 DWORD dwSurfaceLockCount
;
1247 DWORD dwAliasedLockCnt
;
1248 ULONG_PTR dwReserved3
;
1253 DBLNODE dbnOverlayRoot
;
1254 volatile LPWORD lpwPDeviceFlags
;
1256 DWORD dwWin16LockCnt
;
1260 DWORD dwSaveNumModes
;
1262 ULONG_PTR lpD3DGlobalDriverData
;
1263 ULONG_PTR lpD3DHALCallbacks
;
1264 DDCORECAPS ddBothCaps
;
1266 LPDDVIDEOPORTCAPS lpDDVideoPortCaps
;
1267 LPDDRAWI_DDVIDEOPORT_INT dvpList
;
1268 ULONG_PTR lpD3DHALCallbacks2
;
1273 LPHEAPALIASINFO phaiHeapAliases
;
1274 ULONG_PTR hKernelHandle
;
1275 ULONG_PTR pfnNotifyProc
;
1276 LPDDKERNELCAPS lpDDKernelCaps
;
1277 LPDDNONLOCALVIDMEMCAPS lpddNLVCaps
;
1278 LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps
;
1279 LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps
;
1280 ULONG_PTR lpD3DExtendedCaps
;
1282 DWORD dwDOSBoxEvent
;
1284 char cDriverName
[MAX_DRIVER_NAME
];
1286 ULONG_PTR lpD3DHALCallbacks3
;
1287 DWORD dwNumZPixelFormats
;
1288 LPDDPIXELFORMAT lpZPixelFormats
;
1289 LPDDRAWI_DDMOTIONCOMP_INT mcList
;
1291 DDSCAPSEX ddsCapsMore
;
1292 } DDRAWI_DIRECTDRAW_GBL
;
1294 #define DDRAWI_xxxxxxxxx1 0x00000001
1295 #define DDRAWI_xxxxxxxxx2 0x00000002
1296 #define DDRAWI_VIRTUALDESKTOP 0x00000008
1297 #define DDRAWI_MODEX 0x00000010
1298 #define DDRAWI_DISPLAYDRV 0x00000020
1299 #define DDRAWI_FULLSCREEN 0x00000040
1300 #define DDRAWI_MODECHANGED 0x00000080
1301 #define DDRAWI_NOHARDWARE 0x00000100
1302 #define DDRAWI_PALETTEINIT 0x00000200
1303 #define DDRAWI_NOEMULATION 0x00000400
1304 #define DDRAWI_HASCKEYDESTOVERLAY 0x00000800
1305 #define DDRAWI_HASCKEYSRCOVERLAY 0x00001000
1306 #define DDRAWI_HASGDIPALETTE 0x00002000
1307 #define DDRAWI_EMULATIONINITIALIZED 0x00004000
1308 #define DDRAWI_HASGDIPALETTE_EXCLUSIVE 0x00008000
1309 #define DDRAWI_MODEXILLEGAL 0x00010000
1310 #define DDRAWI_FLIPPEDTOGDI 0x00020000
1311 #define DDRAWI_NEEDSWIN16FORVRAMLOCK 0x00040000
1312 #define DDRAWI_PDEVICEVRAMBITCLEARED 0x00080000
1313 #define DDRAWI_STANDARDVGA 0x00100000
1314 #define DDRAWI_EXTENDEDALIGNMENT 0x00200000
1315 #define DDRAWI_CHANGINGMODE 0x00400000
1316 #define DDRAWI_GDIDRV 0x00800000
1317 #define DDRAWI_ATTACHEDTODESKTOP 0x01000000
1318 #define DDRAWI_UMODELOADED 0x02000000
1319 #define DDRAWI_DDRAWDATANOTFETCHED 0x04000000
1320 #define DDRAWI_SECONDARYDRIVERLOADED 0x08000000
1321 #define DDRAWI_TESTINGMODES 0x10000000
1322 #define DDRAWI_DRIVERINFO2 0x20000000
1323 #define DDRAWI_BADPDEV 0x40000000
1326 typedef struct _DDRAWI_DDRAWSURFACE_INT
{
1328 LPDDRAWI_DDRAWSURFACE_LCL lpLcl
;
1329 LPDDRAWI_DDRAWSURFACE_INT lpLink
;
1331 } DDRAWI_DDRAWSURFACE_INT
;
1333 typedef struct _DDRAWI_DDRAWSURFACE_GBL
{
1335 DWORD dwGlobalFlags
;
1336 __GNU_EXTENSION
union {
1337 LPACCESSRECTLIST lpRectList
;
1341 __GNU_EXTENSION
union {
1342 LPVMEMHEAP lpVidMemHeap
;
1345 __GNU_EXTENSION
union {
1346 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1350 __GNU_EXTENSION
union {
1357 ULONG_PTR dwReserved1
;
1358 DDPIXELFORMAT ddpfSurface
;
1359 } DDRAWI_DDRAWSURFACE_GBL
;
1361 #define DDRAWISURFGBL_MEMFREE 0x00000001L
1362 #define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L
1363 #define DDRAWISURFGBL_ISGDISURFACE 0x00000004L
1364 #define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008L
1365 #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010L
1366 #define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020L
1367 #define DDRAWISURFGBL_LOCKBROKEN 0x00000040L
1368 #define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080L
1369 #define DDRAWISURFGBL_ISCLIENTMEM 0x00000100L
1370 #define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200L
1371 #define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400L
1372 #define DDRAWISURFGBL_HARDWAREOPSTARTED (DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST)
1373 #define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800L
1374 #define DDRAWISURFGBL_VPORTDATA 0x00001000L
1375 #define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000L
1376 #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000L
1377 #define DDRAWISURFGBL_FASTLOCKHELD 0x00008000L
1378 #define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000L
1379 #define DDRAWISURFGBL_DX8SURFACE 0x00080000L
1380 #define DDRAWISURFGBL_DDHELDONTFREE 0x00100000L
1381 #define DDRAWISURFGBL_NOTIFYWHENUNLOCKED 0x00200000L
1382 #define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag
1384 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE
{
1386 __GNU_EXTENSION
union {
1387 DWORD dwPhysicalPageTable
;
1388 FLATPTR fpPhysicalVidMem
;
1392 ULONG_PTR dwSavedDCContext
;
1393 FLATPTR fpAliasedVidMem
;
1394 ULONG_PTR dwDriverReserved
;
1395 ULONG_PTR dwHELReserved
;
1397 ULONG_PTR hKernelSurface
;
1398 DWORD dwKernelRefCnt
;
1399 LPDDCOLORCONTROL lpColorInfo
;
1401 DWORD dwContentsStamp
;
1402 LPVOID lpvUnswappedDriverReserved
;
1403 LPVOID lpDDRAWReserved2
;
1404 DWORD dwDDRAWReserved1
;
1405 DWORD dwDDRAWReserved2
;
1406 FLATPTR fpAliasOfVidMem
;
1407 } DDRAWI_DDRAWSURFACE_GBL_MORE
;
1409 /* the MS version of this macro was somewhat obfuscated and unreadable
1410 * (possibly because of mediocre MS coders)... so I simplified it...
1411 * (and so I commit no copyright violations either, hah) */
1412 #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
1413 (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
1415 #define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \
1416 ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem )
1418 typedef struct _DISPLAYMODEINFO
{
1422 BYTE wMonitorsAttachedToDesktop
;
1424 } DISPLAYMODEINFO
, *LPDISPLAYMODEINFO
;
1426 #define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO)))
1428 typedef struct _DDRAWI_DDRAWSURFACE_MORE
{
1430 IUNKNOWN_LIST
*lpIUnknowns
;
1431 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1432 DWORD dwPageLockCount
;
1433 DWORD dwBytesAllocated
;
1434 LPDDRAWI_DIRECTDRAW_INT lpDD_int
;
1435 DWORD dwMipMapCount
;
1436 LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper
;
1438 LPHEAPALIASINFO lpHeapAliasInfo
;
1439 DWORD dwOverlayFlags
;
1441 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1442 LPDDOVERLAYFX lpddOverlayFX
;
1443 DDSCAPSEX ddsCapsEx
;
1444 DWORD dwTextureStage
;
1445 LPVOID lpDDRAWReserved
;
1446 LPVOID lpDDRAWReserved2
;
1447 LPVOID lpDDrawReserved3
;
1448 DWORD dwDDrawReserved4
;
1449 LPVOID lpDDrawReserved5
;
1450 LPDWORD lpGammaRamp
;
1451 LPDWORD lpOriginalGammaRamp
;
1452 LPVOID lpDDrawReserved6
;
1454 DISPLAYMODEINFO dmiDDrawReserved7
;
1456 DWORD dwSurfaceHandle
;
1457 DWORD qwDDrawReserved8
[2];
1458 LPVOID lpDDrawReserved9
;
1460 LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2
;
1461 LPDDRAWI_DDRAWSURFACE_LCL
*slist
;
1464 } DDRAWI_DDRAWSURFACE_MORE
;
1466 typedef struct _DDRAWI_DDRAWSURFACE_LCL
{
1467 LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore
;
1468 LPDDRAWI_DDRAWSURFACE_GBL lpGbl
;
1469 ULONG_PTR hDDSurface
;
1470 LPATTACHLIST lpAttachList
;
1471 LPATTACHLIST lpAttachListFrom
;
1472 DWORD dwLocalRefCnt
;
1476 __GNU_EXTENSION
union {
1477 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette
;
1478 LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette
;
1480 __GNU_EXTENSION
union {
1481 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper
;
1482 LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper
;
1484 DWORD dwModeCreatedIn
;
1485 DWORD dwBackBufferCount
;
1486 DDCOLORKEY ddckCKDestBlt
;
1487 DDCOLORKEY ddckCKSrcBlt
;
1489 ULONG_PTR dwReserved1
;
1490 DDCOLORKEY ddckCKSrcOverlay
;
1491 DDCOLORKEY ddckCKDestOverlay
;
1492 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying
;
1493 DBLNODE dbnOverlayNode
;
1500 } DDRAWI_DDRAWSURFACE_LCL
;
1502 #define DDRAWISURF_ATTACHED 0x00000001L
1503 #define DDRAWISURF_IMPLICITCREATE 0x00000002L
1504 #define DDRAWISURF_ISFREE 0x00000004L
1505 #define DDRAWISURF_ATTACHED_FROM 0x00000008L
1506 #define DDRAWISURF_IMPLICITROOT 0x00000010L
1507 #define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L
1508 #define DDRAWISURF_DATAISALIASED 0x00000040L
1509 #define DDRAWISURF_HASDC 0x00000080L
1510 #define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L
1511 #define DDRAWISURF_HASCKEYDESTBLT 0x00000200L
1512 #define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L
1513 #define DDRAWISURF_HASCKEYSRCBLT 0x00000800L
1514 #define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000L
1515 #define DDRAWISURF_HASPIXELFORMAT 0x00002000L
1516 #define DDRAWISURF_HASOVERLAYDATA 0x00004000L
1517 #define DDRAWISURF_SETGAMMA 0x00008000L
1518 #define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L
1519 #define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L
1520 #define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L
1521 #define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L
1522 #define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L
1523 #define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L
1524 #define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L
1525 #define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L
1526 #define DDRAWISURF_INMASTERSPRITELIST 0x01000000L
1527 #define DDRAWISURF_HELCB 0x02000000L
1528 #define DDRAWISURF_FRONTBUFFER 0x04000000L
1529 #define DDRAWISURF_BACKBUFFER 0x08000000L
1530 #define DDRAWISURF_INVALID 0x10000000L
1531 #define DDRAWISURF_DCIBUSY 0x20000000L
1532 #define DDRAWISURF_GETDCNULL 0x40000000L
1533 #define DDRAWISURF_STEREOSURFACELEFT 0x20000000L
1534 #define DDRAWISURF_DRIVERMANAGED 0x40000000L
1535 #define DDRAWISURF_DCILOCK 0x80000000L
1538 typedef struct _DDRAWI_DDRAWPALETTE_INT
{
1540 LPDDRAWI_DDRAWPALETTE_LCL lpLcl
;
1541 LPDDRAWI_DDRAWPALETTE_INT lpLink
;
1543 } DDRAWI_DDRAWPALETTE_INT
;
1545 typedef struct _DDRAWI_DDRAWPALETTE_GBL
{
1548 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1550 LPPALETTEENTRY lpColorTable
;
1551 __GNU_EXTENSION
union {
1552 ULONG_PTR dwReserved1
;
1553 HPALETTE hHELGDIPalette
;
1555 DWORD dwDriverReserved
;
1556 DWORD dwContentsStamp
;
1559 } DDRAWI_DDRAWPALETTE_GBL
;
1561 #define DDRAWIPAL_256 0x00000001
1562 #define DDRAWIPAL_16 0x00000002
1563 #define DDRAWIPAL_GDI 0x00000004
1564 #define DDRAWIPAL_STORED_8 0x00000008
1565 #define DDRAWIPAL_STORED_16 0x00000010
1566 #define DDRAWIPAL_STORED_24 0x00000020
1567 #define DDRAWIPAL_EXCLUSIVE 0x00000040
1568 #define DDRAWIPAL_INHEL 0x00000080
1569 #define DDRAWIPAL_DIRTY 0x00000100
1570 #define DDRAWIPAL_ALLOW256 0x00000200
1571 #define DDRAWIPAL_4 0x00000400
1572 #define DDRAWIPAL_2 0x00000800
1573 #define DDRAWIPAL_STORED_8INDEX 0x00001000
1574 #define DDRAWIPAL_ALPHA 0x00002000
1576 #define D3DFORMAT_OP_TEXTURE 0x00000001L
1577 #define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L
1578 #define D3DFORMAT_OP_CUBETEXTURE 0x00000004L
1579 #define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L
1580 #define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L
1581 #define D3DFORMAT_OP_ZSTENCIL 0x00000040L
1582 #define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L
1583 #define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L
1584 #define D3DFORMAT_OP_DISPLAYMODE 0x00000400L
1585 #define D3DFORMAT_OP_3DACCELERATION 0x00000800L
1586 #define D3DFORMAT_OP_PIXELSIZE 0x00001000L
1587 #define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L
1588 #define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L
1589 #define D3DFORMAT_OP_SRGBREAD 0x00008000L
1590 #define D3DFORMAT_OP_BUMPMAP 0x00010000L
1591 #define D3DFORMAT_OP_NOFILTER 0x00040000L
1592 #define DDPF_D3DFORMAT 0x00200000l
1593 #define DDPF_NOVEL_TEXTURE_FORMAT 0x00100000l
1594 #define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L
1595 #define D3DFORMAT_OP_SRGBWRITE 0x00100000L
1596 #define D3DFORMAT_OP_NOALPHABLEND 0x00200000L
1597 #define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L
1598 #define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L
1599 #define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L
1600 #define DELETED_OK 0
1601 #define DELETED_LASTONE 1
1602 #define DELETED_NOTFOUND 2
1603 #define DDCALLBACKSSIZE_V1 (offsetof(DDHAL_DDCALLBACKS, SetExclusiveMode))
1604 #define DDCALLBACKSSIZE sizeof( DDHAL_DDCALLBACKS )
1605 #define DDRAWICLIP_WATCHWINDOW 0x00000001
1606 #define DDRAWICLIP_ISINITIALIZED 0x00000002
1607 #define DDRAWICLIP_INMASTERSPRITELIST 0x00000004
1608 #define PFINDEX_UNINITIALIZED (0UL)
1609 #define PFINDEX_UNSUPPORTED (~0UL)
1610 #define ROP_HAS_SOURCE 0x00000001l
1611 #define ROP_HAS_PATTERN 0x00000002l
1612 #define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN
1613 #define DDRAWIVPORT_ON 0x00000001
1614 #define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002
1615 #define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004
1616 #define DDRAWIVPORT_NOKERNELHANDLES 0x00000008
1617 #define DDRAWIVPORT_SOFTWARE_BOB 0x00000010
1618 #define DDRAWIVPORT_VBION 0x00000020
1619 #define DDRAWIVPORT_VIDEOON 0x00000040
1620 #define DDRAWI_GETCOLOR 0x0001
1621 #define DDRAWI_SETCOLOR 0x0002
1622 #define DDMCQUERY_READ 0x00000001
1623 #define DDWAITVB_I_TESTVB 0x80000006
1625 #define DDBLT_ANYALPHA \
1626 (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \
1627 DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE | \
1628 DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST)
1630 #define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \
1631 DDSCAPS_OVERLAY | DDSCAPS_TEXTURE | \
1632 DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP )
1634 #define DDHALINFOSIZE_V2 sizeof(DDHALINFO)
1636 #define DDOVER_ANYALPHA \
1637 (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \
1638 DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE | \
1639 DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST)
1641 typedef struct _DDRAWI_DDRAWPALETTE_LCL
{
1643 LPDDRAWI_DDRAWPALETTE_GBL lpGbl
;
1644 ULONG_PTR dwUnused0
;
1645 DWORD dwLocalRefCnt
;
1647 IUnknown
*pUnkOuter
;
1651 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1652 ULONG_PTR dwReserved1
;
1654 ULONG_PTR dwDDRAWReserved1
;
1655 ULONG_PTR dwDDRAWReserved2
;
1656 ULONG_PTR dwDDRAWReserved3
;
1657 } DDRAWI_DDRAWPALETTE_LCL
;
1659 typedef struct _DDMCCOMPBUFFERINFO
{
1661 DWORD dwNumCompBuffers
;
1662 DWORD dwWidthToCreate
;
1663 DWORD dwHeightToCreate
;
1664 DWORD dwBytesToAllocate
;
1665 DDSCAPS2 ddCompCaps
;
1666 DDPIXELFORMAT ddPixelFormat
;
1667 } DDMCCOMPBUFFERINFO
, *LPDDMCCOMPBUFFERINFO
;
1669 typedef struct _DDMCBUFFERINFO
{
1671 LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface
;
1675 } DDMCBUFFERINFO
, *LPDDMCBUFFERINFO
;
1677 typedef struct _DDHAL_GETDRIVERSTATEDATA
{
1679 __GNU_EXTENSION
union {
1680 ULONG_PTR dwhContext
;
1685 } DDHAL_GETDRIVERSTATEDATA
;
1687 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA
{
1688 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1689 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1690 LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached
;
1692 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface
;
1693 } DDHAL_ADDATTACHEDSURFACEDATA
;
1695 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA
{
1696 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1697 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1698 LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface
;
1699 DWORD dwInputDataSize
;
1701 DWORD dwOutputDataSize
;
1702 LPVOID lpOutputData
;
1704 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame
;
1705 } DDHAL_BEGINMOCOMPFRAMEDATA
;
1707 typedef struct _DDHAL_COLORCONTROLDATA
{
1708 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1709 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1710 LPDDCOLORCONTROL lpColorData
;
1713 LPDDHALCOLORCB_COLORCONTROL ColorControl
;
1714 } DDHAL_COLORCONTROLDATA
;
1716 typedef struct _DDHAL_CREATEMOCOMPDATA
{
1717 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1718 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1720 DWORD dwUncompWidth
;
1721 DWORD dwUncompHeight
;
1722 DDPIXELFORMAT ddUncompPixelFormat
;
1726 LPDDHALMOCOMPCB_CREATE CreateMoComp
;
1727 } DDHAL_CREATEMOCOMPDATA
;
1729 typedef struct _DDHAL_DESTROYMOCOMPDATA
{
1730 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1731 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1733 LPDDHALMOCOMPCB_DESTROY DestroyMoComp
;
1734 } DDHAL_DESTROYMOCOMPDATA
;
1736 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA
{
1737 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1738 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1740 DWORD dwInputDataSize
;
1742 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame
;
1743 } DDHAL_ENDMOCOMPFRAMEDATA
;
1745 typedef struct _DDHAL_FLIPTOGDISURFACEDATA
{
1746 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1750 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface
;
1751 } DDHAL_FLIPTOGDISURFACEDATA
;
1753 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
{
1754 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1759 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
1760 DDSCAPSEX ddsCapsEx
;
1761 } DDHAL_GETAVAILDRIVERMEMORYDATA
;
1763 typedef struct _DDHAL_GETBLTSTATUSDATA
{
1764 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1765 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1768 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus
;
1769 } DDHAL_GETBLTSTATUSDATA
;
1771 typedef struct _DDHAL_GETFLIPSTATUSDATA
{
1772 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1773 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1776 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus
;
1777 } DDHAL_GETFLIPSTATUSDATA
;
1779 typedef struct _DDHAL_GETINTERNALMOCOMPDATA
{
1780 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1784 DDPIXELFORMAT ddPixelFormat
;
1785 DWORD dwScratchMemAlloc
;
1787 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo
;
1788 } DDHAL_GETINTERNALMOCOMPDATA
;
1790 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA
{
1791 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1795 DDPIXELFORMAT ddPixelFormat
;
1796 DWORD dwNumTypesCompBuffs
;
1797 LPDDMCCOMPBUFFERINFO lpCompBuffInfo
;
1799 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo
;
1800 } DDHAL_GETMOCOMPCOMPBUFFDATA
;
1802 typedef struct _DDHAL_GETMOCOMPGUIDSDATA
{
1803 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1807 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids
;
1808 } DDHAL_GETMOCOMPGUIDSDATA
;
1810 typedef struct _DDHAL_GETMOCOMPFORMATSDATA
{
1811 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1814 LPDDPIXELFORMAT lpFormats
;
1816 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats
;
1817 } DDHAL_GETMOCOMPFORMATSDATA
;
1819 typedef struct _DDHAL_GETSCANLINEDATA
{
1820 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1823 LPDDHAL_GETSCANLINE GetScanLine
;
1824 } DDHAL_GETSCANLINEDATA
;
1826 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA
{
1827 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1828 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1829 LPDDRAWI_DDRAWSURFACE_LCL lpSurface
;
1832 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus
;
1833 } DDHAL_QUERYMOCOMPSTATUSDATA
;
1835 typedef struct _DDHAL_RENDERMOCOMPDATA
{
1836 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1837 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1839 LPDDMCBUFFERINFO lpBufferInfo
;
1842 DWORD dwInputDataSize
;
1843 LPVOID lpOutputData
;
1844 DWORD dwOutputDataSize
;
1846 LPDDHALMOCOMPCB_RENDER RenderMoComp
;
1847 } DDHAL_RENDERMOCOMPDATA
;
1849 typedef struct _DDHAL_SETCOLORKEYDATA
{
1850 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1851 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1855 LPDDHALSURFCB_SETCOLORKEY SetColorKey
;
1856 } DDHAL_SETCOLORKEYDATA
;
1858 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
{
1859 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1860 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
1861 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
1865 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition
;
1866 } DDHAL_SETOVERLAYPOSITIONDATA
;
1868 typedef struct _DDHAL_UPDATEOVERLAYDATA
{
1869 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1870 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
1872 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
1875 DDOVERLAYFX overlayFX
;
1877 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay
;
1878 } DDHAL_UPDATEOVERLAYDATA
;
1880 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA
{
1881 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1886 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank
;
1887 } DDHAL_WAITFORVERTICALBLANKDATA
;
1889 typedef struct _DDHAL_DRVSETCOLORKEYDATA
{
1890 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1894 LPDDHAL_SETCOLORKEY SetColorKey
;
1895 } DDHAL_DRVSETCOLORKEYDATA
;
1897 typedef struct _DDMONITORINFO
{
1901 GUID DeviceIdentifier
;
1910 } DDMONITORINFO
, FAR
*LPDDMONITORINFO
;
1912 typedef struct _DDRAWI_DDRAWCLIPPER_INT
{
1914 LPDDRAWI_DDRAWCLIPPER_LCL lpLcl
;
1915 LPDDRAWI_DDRAWCLIPPER_INT lpLink
;
1917 } DDRAWI_DDRAWCLIPPER_INT
;
1919 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
{
1920 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1924 ULONG_PTR ulPolicyMaxBytes
;
1926 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap
;
1927 } DDHAL_UPDATENONLOCALHEAPDATA
;
1929 typedef struct _DDHAL_SETCLIPLISTDATA
{
1930 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1931 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1933 LPDDHALSURFCB_SETCLIPLIST SetClipList
;
1934 } DDHAL_SETCLIPLISTDATA
;
1936 typedef struct _DDRAWI_DDMOTIONCOMP_LCL
{
1937 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1939 DWORD dwUncompWidth
;
1940 DWORD dwUncompHeight
;
1941 DDPIXELFORMAT ddUncompPixelFormat
;
1942 DWORD dwInternalFlags
;
1946 DWORD dwDriverReserved1
;
1947 DWORD dwDriverReserved2
;
1948 DWORD dwDriverReserved3
;
1949 LPVOID lpDriverReserved1
;
1950 LPVOID lpDriverReserved2
;
1951 LPVOID lpDriverReserved3
;
1952 } DDRAWI_DDMOTIONCOMP_LCL
;
1954 typedef struct _DDRAWI_DDMOTIONCOMP_INT
{
1956 LPDDRAWI_DDMOTIONCOMP_LCL lpLcl
;
1957 LPDDRAWI_DDMOTIONCOMP_INT lpLink
;
1959 } DDRAWI_DDMOTIONCOMP_INT
;
1961 typedef struct _DDRAWI_DDVIDEOPORT_LCL
{
1962 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1963 DDVIDEOPORTDESC ddvpDesc
;
1964 DDVIDEOPORTINFO ddvpInfo
;
1965 LPDDRAWI_DDRAWSURFACE_INT lpSurface
;
1966 LPDDRAWI_DDRAWSURFACE_INT lpVBISurface
;
1967 LPDDRAWI_DDRAWSURFACE_INT
*lpFlipInts
;
1968 DWORD dwNumAutoflip
;
1974 ULONG_PTR dwReserved1
;
1975 ULONG_PTR dwReserved2
;
1976 HANDLE hDDVideoPort
;
1977 DWORD dwNumVBIAutoflip
;
1978 LPDDVIDEOPORTDESC lpVBIDesc
;
1979 LPDDVIDEOPORTDESC lpVideoDesc
;
1980 LPDDVIDEOPORTINFO lpVBIInfo
;
1981 LPDDVIDEOPORTINFO lpVideoInfo
;
1982 DWORD dwVBIProcessID
;
1983 LPDDRAWI_DDVIDEOPORT_INT lpVPNotify
;
1984 } DDRAWI_DDVIDEOPORT_LCL
;
1986 typedef struct _DDRAWI_DDVIDEOPORT_INT
{
1988 LPDDRAWI_DDVIDEOPORT_LCL lpLcl
;
1989 LPDDRAWI_DDVIDEOPORT_INT lpLink
;
1992 } DDRAWI_DDVIDEOPORT_INT
;
1994 typedef struct _DDRAWI_DDRAWCLIPPER_LCL
{
1996 LPDDRAWI_DDRAWCLIPPER_GBL lpGbl
;
1997 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1998 DWORD dwLocalRefCnt
;
2000 IUnknown
*pUnkOuter
;
2004 LPDDRAWI_DIRECTDRAW_INT lpDD_int
;
2005 ULONG_PTR dwReserved1
;
2007 IUnknown
*pAddrefedThisOwner
;
2009 PVOID pAddrefedThisOwner
;
2011 } DDRAWI_DDRAWCLIPPER_LCL
;
2013 typedef struct _DDRAWI_DDRAWCLIPPER_GBL
{
2016 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2018 ULONG_PTR dwReserved1
;
2020 LPRGNDATA lpStaticClipList
;
2021 } DDRAWI_DDRAWCLIPPER_GBL
;
2023 typedef BOOL (PASCAL
*LPDDHEL_INIT
)(LPDDRAWI_DIRECTDRAW_GBL
,BOOL
);
2025 extern HRESULT DDAPI
2026 LateAllocateSurfaceMem(
2027 LPDIRECTDRAWSURFACE lpSurface
,
2028 DWORD dwPleaseAllocType
,
2029 DWORD dwWidthInBytesOrSize
,
2032 LPDIRECTDRAWSURFACE
GetNextMipMap(
2033 LPDIRECTDRAWSURFACE lpLevel
);
2035 typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS
;
2036 typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS
;
2037 typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS
;
2038 typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS
;
2039 typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS
;
2040 typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS
;
2041 typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS
;
2042 typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS
;
2043 typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS
;
2044 typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS
;
2045 typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS
;
2046 typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS
;
2047 typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS
;
2048 typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS
;
2049 typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS
;
2051 typedef DIRECTDRAWCLIPPERCALLBACKS
*LPDIRECTDRAWCLIPPERCALLBACKS
;
2052 typedef DIRECTDRAWPALETTECALLBACKS
*LPDIRECTDRAWPALETTECALLBACKS
;
2053 typedef DIRECTDRAWSURFACECALLBACKS
*LPDIRECTDRAWSURFACECALLBACKS
;
2054 typedef DIRECTDRAWCALLBACKS
*LPDIRECTDRAWCALLBACKS
;
2057 D3DParseUnknownCommand (
2059 LPVOID
*lplpvReturnedCommand
);
2065 #endif /* __DDRAWI_INCLUDED__ */