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
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
;
133 #ifndef DDRAWI_DIRECTDRAW_DEFINED
134 typedef struct _DDRAWI_DIRECTDRAW_LCL
*LPDDRAWI_DIRECTDRAW_LCL
;
135 typedef struct _DDRAWI_DIRECTDRAW_GBL
*LPDDRAWI_DIRECTDRAW_GBL
;
136 #define DDRAWI_DIRECTDRAW_DEFINED
139 typedef struct _DDRAWI_DDRAWSURFACE_INT
*LPDDRAWI_DDRAWSURFACE_INT
;
141 #ifndef DDRAWI_DDRAWSURFACE_DEFINED
142 typedef struct _DDRAWI_DDRAWSURFACE_LCL
*LPDDRAWI_DDRAWSURFACE_LCL
;
143 #define DDRAWI_DDRAWSURFACE_DEFINED
146 typedef struct _DDRAWI_DDRAWSURFACE_GBL
*LPDDRAWI_DDRAWSURFACE_GBL
;
147 typedef struct _DDRAWI_DDRAWSURFACE_MORE
*LPDDRAWI_DDRAWSURFACE_MORE
;
148 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE
*LPDDRAWI_DDRAWSURFACE_GBL_MORE
;
149 typedef struct _DDRAWI_DDRAWPALETTE_INT
*LPDDRAWI_DDRAWPALETTE_INT
;
150 typedef struct _DDRAWI_DDRAWPALETTE_LCL
*LPDDRAWI_DDRAWPALETTE_LCL
;
151 typedef struct _DDRAWI_DDRAWPALETTE_GBL
*LPDDRAWI_DDRAWPALETTE_GBL
;
152 typedef struct _DDRAWI_DDRAWCLIPPER_INT
*LPDDRAWI_DDRAWCLIPPER_INT
;
153 typedef struct _DDRAWI_DDRAWCLIPPER_LCL
*LPDDRAWI_DDRAWCLIPPER_LCL
;
154 typedef struct _DDRAWI_DDRAWCLIPPER_GBL
*LPDDRAWI_DDRAWCLIPPER_GBL
;
155 typedef struct _DDRAWI_DDVIDEOPORT_INT
*LPDDRAWI_DDVIDEOPORT_INT
;
156 typedef struct _DDRAWI_DDVIDEOPORT_LCL
*LPDDRAWI_DDVIDEOPORT_LCL
;
157 typedef struct _DDRAWI_DDMOTIONCOMP_INT
*LPDDRAWI_DDMOTIONCOMP_INT
;
158 typedef struct _DDRAWI_DDMOTIONCOMP_LCL
*LPDDRAWI_DDMOTIONCOMP_LCL
;
160 /*****************************************************************************
161 * driver->ddraw callbacks
163 typedef BOOL (DDAPI
*LPDDHAL_SETINFO
)(LPDDHALINFO lpDDHalInfo
, BOOL reset
);
164 typedef FLATPTR (DDAPI
*LPDDHAL_VIDMEMALLOC
)(LPDDRAWI_DIRECTDRAW_GBL lpDD
, int heap
, DWORD dwWidth
, DWORD dwHeight
);
165 typedef void (DDAPI
*LPDDHAL_VIDMEMFREE
)(LPDDRAWI_DIRECTDRAW_GBL lpDD
, int heap
, FLATPTR fpMem
);
169 LPDDHAL_SETINFO lpSetInfo
;
170 LPDDHAL_VIDMEMALLOC lpVidMemAlloc
;
171 LPDDHAL_VIDMEMFREE lpVidMemFree
;
172 } DDHALDDRAWFNS
,*LPDDHALDDRAWFNS
;
174 /*****************************************************************************
175 * mode info structure
177 typedef struct _DDHALMODEINFO
{
187 DWORD dwAlphaBitMask
;
188 } DDHALMODEINFO
,*LPDDHALMODEINFO
;
193 #define DDMODEINFO_PALETTIZED 0x0001
194 #define DDMODEINFO_MODEX 0x0002
195 #define DDMODEINFO_UNSUPPORTED 0x0004
196 #define DDMODEINFO_STANDARDVGA 0x0008
197 #define DDMODEINFO_MAXREFRESH 0x0010
198 #define DDMODEINFO_STEREO 0x0020
200 /*****************************************************************************
201 * video memory info structure
203 typedef struct _VIDMEM
{
219 #define VIDMEM_ISLINEAR 0x00000001l
220 #define VIDMEM_ISRECTANGULAR 0x00000002l
221 #define VIDMEM_ISHEAP 0x00000004l
222 #define VIDMEM_ISNONLOCAL 0x00000008l
223 #define VIDMEM_ISWC 0x00000010l
224 #define VIDMEM_HEAPDISABLED 0x00000020l
226 typedef struct _VIDMEMINFO
{
229 DWORD dwDisplayWidth
;
230 DWORD dwDisplayHeight
;
232 DDPIXELFORMAT ddpfDisplay
;
233 DWORD dwOffscreenAlign
;
234 DWORD dwOverlayAlign
;
235 DWORD dwTextureAlign
;
236 DWORD dwZBufferAlign
;
240 } VIDMEMINFO
,*LPVIDMEMINFO
;
244 typedef struct _HEAPALIAS
{
248 } HEAPALIAS
,*LPHEAPALIAS
;
250 typedef struct _HEAPALIASINFO
{
254 LPHEAPALIAS lpAliases
;
255 } HEAPALIASINFO
,*LPHEAPALIASINFO
;
257 #define HEAPALIASINFO_MAPPEDREAL 0x00000001
258 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
260 /*****************************************************************************
261 * capabilities structures
263 typedef struct _DDCORECAPS
{
272 DWORD dwAlphaBltConstBitDepths
;
273 DWORD dwAlphaBltPixelBitDepths
;
274 DWORD dwAlphaBltSurfaceBitDepths
;
275 DWORD dwAlphaOverlayConstBitDepths
;
276 DWORD dwAlphaOverlayPixelBitDepths
;
277 DWORD dwAlphaOverlaySurfaceBitDepths
;
278 DWORD dwZBufferBitDepths
;
281 DWORD dwMaxVisibleOverlays
;
282 DWORD dwCurrVisibleOverlays
;
283 DWORD dwNumFourCCCodes
;
284 DWORD dwAlignBoundarySrc
;
285 DWORD dwAlignSizeSrc
;
286 DWORD dwAlignBoundaryDest
;
287 DWORD dwAlignSizeDest
;
288 DWORD dwAlignStrideAlign
;
289 DWORD dwRops
[DD_ROP_SPACE
];
291 DWORD dwMinOverlayStretch
;
292 DWORD dwMaxOverlayStretch
;
293 DWORD dwMinLiveVideoStretch
;
294 DWORD dwMaxLiveVideoStretch
;
295 DWORD dwMinHwCodecStretch
;
296 DWORD dwMaxHwCodecStretch
;
303 DWORD dwSVBRops
[DD_ROP_SPACE
];
307 DWORD dwVSBRops
[DD_ROP_SPACE
];
311 DWORD dwSSBRops
[DD_ROP_SPACE
];
312 DWORD dwMaxVideoPorts
;
313 DWORD dwCurrVideoPorts
;
315 } DDCORECAPS
,*LPDDCORECAPS
;
317 typedef struct _DDNONLOCALVIDMEMCAPS
{
321 DWORD dwNLVBCKeyCaps
;
323 DWORD dwNLVBRops
[DD_ROP_SPACE
];
324 } DDNONLOCALVIDMEMCAPS
,*LPDDNONLOCALVIDMEMCAPS
;
328 #define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2
329 #define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1
330 #define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
335 /*****************************************************************************
336 * ddraw->driver callbacks
338 #define DDHAL_DRIVER_NOTHANDLED 0x00000000l
339 #define DDHAL_DRIVER_HANDLED 0x00000001l
340 #define DDHAL_DRIVER_NOCKEYHW 0x00000002l
342 typedef struct _DDHAL_DESTROYDRIVERDATA
*LPDDHAL_DESTROYDRIVERDATA
;
343 typedef struct _DDHAL_CREATESURFACEDATA
*LPDDHAL_CREATESURFACEDATA
;
344 typedef struct _DDHAL_DRVSETCOLORKEYDATA
*LPDDHAL_DRVSETCOLORKEYDATA
;
345 typedef struct _DDHAL_SETMODEDATA
*LPDDHAL_SETMODEDATA
;
346 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA
*LPDDHAL_WAITFORVERTICALBLANKDATA
;
347 typedef struct _DDHAL_CANCREATESURFACEDATA
*LPDDHAL_CANCREATESURFACEDATA
;
348 typedef struct _DDHAL_CREATEPALETTEDATA
*LPDDHAL_CREATEPALETTEDATA
;
349 typedef struct _DDHAL_GETSCANLINEDATA
*LPDDHAL_GETSCANLINEDATA
;
350 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA
*LPDDHAL_SETEXCLUSIVEMODEDATA
;
351 typedef struct _DDHAL_FLIPTOGDISURFACEDATA
*LPDDHAL_FLIPTOGDISURFACEDATA
;
353 typedef DWORD (PASCAL
*LPDDHAL_DESTROYDRIVER
) (LPDDHAL_DESTROYDRIVERDATA
);
354 typedef DWORD (PASCAL
*LPDDHAL_CREATESURFACE
) (LPDDHAL_CREATESURFACEDATA
);
355 typedef DWORD (PASCAL
*LPDDHAL_SETCOLORKEY
) (LPDDHAL_DRVSETCOLORKEYDATA
);
356 typedef DWORD (PASCAL
*LPDDHAL_SETMODE
) (LPDDHAL_SETMODEDATA
);
357 typedef DWORD (PASCAL
*LPDDHAL_WAITFORVERTICALBLANK
)(LPDDHAL_WAITFORVERTICALBLANKDATA
);
358 typedef DWORD (PASCAL
*LPDDHAL_CANCREATESURFACE
) (LPDDHAL_CANCREATESURFACEDATA
);
359 typedef DWORD (PASCAL
*LPDDHAL_CREATEPALETTE
) (LPDDHAL_CREATEPALETTEDATA
);
360 typedef DWORD (PASCAL
*LPDDHAL_GETSCANLINE
) (LPDDHAL_GETSCANLINEDATA
);
361 typedef DWORD (PASCAL
*LPDDHAL_SETEXCLUSIVEMODE
) (LPDDHAL_SETEXCLUSIVEMODEDATA
);
362 typedef DWORD (PASCAL
*LPDDHAL_FLIPTOGDISURFACE
) (LPDDHAL_FLIPTOGDISURFACEDATA
);
366 typedef struct _DDHAL_DDCALLBACKS
{
369 LPDDHAL_DESTROYDRIVER DestroyDriver
;
370 LPDDHAL_CREATESURFACE CreateSurface
;
371 LPDDHAL_SETCOLORKEY SetColorKey
;
372 LPDDHAL_SETMODE SetMode
;
373 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank
;
374 LPDDHAL_CANCREATESURFACE CanCreateSurface
;
375 LPDDHAL_CREATEPALETTE CreatePalette
;
376 LPDDHAL_GETSCANLINE GetScanLine
;
378 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
379 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface
;
380 } DDHAL_DDCALLBACKS
,*LPDDHAL_DDCALLBACKS
;
384 typedef struct _DDHAL_DESTROYSURFACEDATA
*LPDDHAL_DESTROYSURFACEDATA
;
385 typedef struct _DDHAL_FLIPDATA
*LPDDHAL_FLIPDATA
;
386 typedef struct _DDHAL_SETCLIPLISTDATA
*LPDDHAL_SETCLIPLISTDATA
;
387 typedef struct _DDHAL_LOCKDATA
*LPDDHAL_LOCKDATA
;
388 typedef struct _DDHAL_UNLOCKDATA
*LPDDHAL_UNLOCKDATA
;
389 typedef struct _DDHAL_BLTDATA
*LPDDHAL_BLTDATA
;
390 typedef struct _DDHAL_SETCOLORKEYDATA
*LPDDHAL_SETCOLORKEYDATA
;
391 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA
*LPDDHAL_ADDATTACHEDSURFACEDATA
;
392 typedef struct _DDHAL_GETBLTSTATUSDATA
*LPDDHAL_GETBLTSTATUSDATA
;
393 typedef struct _DDHAL_GETFLIPSTATUSDATA
*LPDDHAL_GETFLIPSTATUSDATA
;
394 typedef struct _DDHAL_UPDATEOVERLAYDATA
*LPDDHAL_UPDATEOVERLAYDATA
;
395 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
*LPDDHAL_SETOVERLAYPOSITIONDATA
;
396 typedef struct _DDHAL_SETPALETTEDATA
*LPDDHAL_SETPALETTEDATA
;
398 typedef DWORD (PASCAL
*LPDDHALSURFCB_DESTROYSURFACE
) (LPDDHAL_DESTROYSURFACEDATA
);
399 typedef DWORD (PASCAL
*LPDDHALSURFCB_FLIP
) (LPDDHAL_FLIPDATA
);
400 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETCLIPLIST
) (LPDDHAL_SETCLIPLISTDATA
);
401 typedef DWORD (PASCAL
*LPDDHALSURFCB_LOCK
) (LPDDHAL_LOCKDATA
);
402 typedef DWORD (PASCAL
*LPDDHALSURFCB_UNLOCK
) (LPDDHAL_UNLOCKDATA
);
403 typedef DWORD (PASCAL
*LPDDHALSURFCB_BLT
) (LPDDHAL_BLTDATA
);
404 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETCOLORKEY
) (LPDDHAL_SETCOLORKEYDATA
);
405 typedef DWORD (PASCAL
*LPDDHALSURFCB_ADDATTACHEDSURFACE
)(LPDDHAL_ADDATTACHEDSURFACEDATA
);
406 typedef DWORD (PASCAL
*LPDDHALSURFCB_GETBLTSTATUS
) (LPDDHAL_GETBLTSTATUSDATA
);
407 typedef DWORD (PASCAL
*LPDDHALSURFCB_GETFLIPSTATUS
) (LPDDHAL_GETFLIPSTATUSDATA
);
408 typedef DWORD (PASCAL
*LPDDHALSURFCB_UPDATEOVERLAY
) (LPDDHAL_UPDATEOVERLAYDATA
);
409 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETOVERLAYPOSITION
)(LPDDHAL_SETOVERLAYPOSITIONDATA
);
410 typedef DWORD (PASCAL
*LPDDHALSURFCB_SETPALETTE
) (LPDDHAL_SETPALETTEDATA
);
412 typedef struct _DDHAL_DDSURFACECALLBACKS
{
415 LPDDHALSURFCB_DESTROYSURFACE DestroySurface
;
416 LPDDHALSURFCB_FLIP Flip
;
417 LPDDHALSURFCB_SETCLIPLIST SetClipList
;
418 LPDDHALSURFCB_LOCK Lock
;
419 LPDDHALSURFCB_UNLOCK Unlock
;
420 LPDDHALSURFCB_BLT Blt
;
421 LPDDHALSURFCB_SETCOLORKEY SetColorKey
;
422 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface
;
423 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus
;
424 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus
;
425 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay
;
426 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition
;
428 LPDDHALSURFCB_SETPALETTE SetPalette
;
429 } DDHAL_DDSURFACECALLBACKS
,*LPDDHAL_DDSURFACECALLBACKS
;
433 typedef struct _DDHAL_DESTROYPALETTEDATA
*LPDDHAL_DESTROYPALETTEDATA
;
434 typedef struct _DDHAL_SETENTRIESDATA
*LPDDHAL_SETENTRIESDATA
;
436 typedef DWORD (PASCAL
*LPDDHALPALCB_DESTROYPALETTE
)(LPDDHAL_DESTROYPALETTEDATA
);
437 typedef DWORD (PASCAL
*LPDDHALPALCB_SETENTRIES
) (LPDDHAL_SETENTRIESDATA
);
439 typedef struct _DDHAL_DDPALETTECALLBACKS
{
442 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
443 LPDDHALPALCB_SETENTRIES SetEntries
;
444 } DDHAL_DDPALETTECALLBACKS
,*LPDDHAL_DDPALETTECALLBACKS
;
446 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_CANCREATEEXEBUF
)(LPDDHAL_CANCREATESURFACEDATA
);
447 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_CREATEEXEBUF
) (LPDDHAL_CREATESURFACEDATA
);
448 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_DESTROYEXEBUF
) (LPDDHAL_DESTROYSURFACEDATA
);
449 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_LOCKEXEBUF
) (LPDDHAL_LOCKDATA
);
450 typedef DWORD (PASCAL
*LPDDHALEXEBUFCB_UNLOCKEXEBUF
) (LPDDHAL_UNLOCKDATA
);
452 typedef struct _DDHAL_DDEXEBUFCALLBACKS
{
455 LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer
;
456 LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer
;
457 LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer
;
458 LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer
;
459 LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer
;
460 } DDHAL_DDEXEBUFCALLBACKS
,*LPDDHAL_DDEXEBUFCALLBACKS
;
462 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
*LPDDHAL_GETAVAILDRIVERMEMORYDATA
;
463 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
*LPDDHAL_UPDATENONLOCALHEAPDATA
;
464 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
*LPDDHAL_GETHEAPALIGNMENTDATA
;
466 typedef DWORD (PASCAL
*LPDDHAL_GETAVAILDRIVERMEMORY
)(LPDDHAL_GETAVAILDRIVERMEMORYDATA
);
467 typedef DWORD (PASCAL
*LPDDHAL_UPDATENONLOCALHEAP
) (LPDDHAL_UPDATENONLOCALHEAPDATA
);
468 typedef DWORD (PASCAL
*LPDDHAL_GETHEAPALIGNMENT
) (LPDDHAL_GETHEAPALIGNMENTDATA
);
470 typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS
{
473 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
474 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap
;
475 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment
;
476 LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus
;
477 } DDHAL_DDMISCELLANEOUSCALLBACKS
,*LPDDHAL_DDMISCELLANEOUSCALLBACKS
;
479 typedef struct _DDHAL_CREATESURFACEEXDATA
*LPDDHAL_CREATESURFACEEXDATA
;
480 typedef struct _DDHAL_GETDRIVERSTATEDATA
*LPDDHAL_GETDRIVERSTATEDATA
;
481 typedef struct _DDHAL_DESTROYDDLOCALDATA
*LPDDHAL_DESTROYDDLOCALDATA
;
483 typedef DWORD (PASCAL
*LPDDHAL_CREATESURFACEEX
)(LPDDHAL_CREATESURFACEEXDATA
);
484 typedef DWORD (PASCAL
*LPDDHAL_GETDRIVERSTATE
) (LPDDHAL_GETDRIVERSTATEDATA
);
485 typedef DWORD (PASCAL
*LPDDHAL_DESTROYDDLOCAL
) (LPDDHAL_DESTROYDDLOCALDATA
);
487 typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS
{
491 LPDDHAL_CREATESURFACEEX CreateSurfaceEx
;
492 LPDDHAL_GETDRIVERSTATE GetDriverState
;
493 LPDDHAL_DESTROYDDLOCAL DestroyDDLocal
;
494 } DDHAL_DDMISCELLANEOUS2CALLBACKS
,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS
;
497 typedef struct _DDHAL_CANCREATEVPORTDATA
*LPDDHAL_CANCREATEVPORTDATA
;
498 typedef struct _DDHAL_CREATEVPORTDATA
*LPDDHAL_CREATEVPORTDATA
;
499 typedef struct _DDHAL_FLIPVPORTDATA
*LPDDHAL_FLIPVPORTDATA
;
500 typedef struct _DDHAL_GETVPORTCONNECTDATA
*LPDDHAL_GETVPORTCONNECTDATA
;
501 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA
*LPDDHAL_GETVPORTBANDWIDTHDATA
;
502 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA
*LPDDHAL_GETVPORTINPUTFORMATDATA
;
503 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA
*LPDDHAL_GETVPORTOUTPUTFORMATDATA
;
504 typedef struct _DDHAL_GETVPORTFIELDDATA
*LPDDHAL_GETVPORTFIELDDATA
;
505 typedef struct _DDHAL_GETVPORTLINEDATA
*LPDDHAL_GETVPORTLINEDATA
;
506 typedef struct _DDHAL_DESTROYVPORTDATA
*LPDDHAL_DESTROYVPORTDATA
;
507 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA
*LPDDHAL_GETVPORTFLIPSTATUSDATA
;
508 typedef struct _DDHAL_UPDATEVPORTDATA
*LPDDHAL_UPDATEVPORTDATA
;
509 typedef struct _DDHAL_WAITFORVPORTSYNCDATA
*LPDDHAL_WAITFORVPORTSYNCDATA
;
510 typedef struct _DDHAL_GETVPORTSIGNALDATA
*LPDDHAL_GETVPORTSIGNALDATA
;
511 typedef struct _DDHAL_VPORTCOLORDATA
*LPDDHAL_VPORTCOLORDATA
;
513 typedef DWORD (PASCAL
*LPDDHALVPORTCB_CANCREATEVIDEOPORT
)(LPDDHAL_CANCREATEVPORTDATA
);
514 typedef DWORD (PASCAL
*LPDDHALVPORTCB_CREATEVIDEOPORT
)(LPDDHAL_CREATEVPORTDATA
);
515 typedef DWORD (PASCAL
*LPDDHALVPORTCB_FLIP
)(LPDDHAL_FLIPVPORTDATA
);
516 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETBANDWIDTH
)(LPDDHAL_GETVPORTBANDWIDTHDATA
);
517 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETINPUTFORMATS
)(LPDDHAL_GETVPORTINPUTFORMATDATA
);
518 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETOUTPUTFORMATS
)(LPDDHAL_GETVPORTOUTPUTFORMATDATA
);
519 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETFIELD
)(LPDDHAL_GETVPORTFIELDDATA
);
520 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETLINE
)(LPDDHAL_GETVPORTLINEDATA
);
521 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETVPORTCONNECT
)(LPDDHAL_GETVPORTCONNECTDATA
);
522 typedef DWORD (PASCAL
*LPDDHALVPORTCB_DESTROYVPORT
)(LPDDHAL_DESTROYVPORTDATA
);
523 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETFLIPSTATUS
)(LPDDHAL_GETVPORTFLIPSTATUSDATA
);
524 typedef DWORD (PASCAL
*LPDDHALVPORTCB_UPDATE
)(LPDDHAL_UPDATEVPORTDATA
);
525 typedef DWORD (PASCAL
*LPDDHALVPORTCB_WAITFORSYNC
)(LPDDHAL_WAITFORVPORTSYNCDATA
);
526 typedef DWORD (PASCAL
*LPDDHALVPORTCB_GETSIGNALSTATUS
)(LPDDHAL_GETVPORTSIGNALDATA
);
527 typedef DWORD (PASCAL
*LPDDHALVPORTCB_COLORCONTROL
)(LPDDHAL_VPORTCOLORDATA
);
529 typedef struct _DDHAL_DDVIDEOPORTCALLBACKS
533 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort
;
534 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort
;
535 LPDDHALVPORTCB_FLIP FlipVideoPort
;
536 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth
;
537 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats
;
538 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats
;
540 LPDDHALVPORTCB_GETFIELD GetVideoPortField
;
541 LPDDHALVPORTCB_GETLINE GetVideoPortLine
;
542 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo
;
543 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort
;
544 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus
;
545 LPDDHALVPORTCB_UPDATE UpdateVideoPort
;
546 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync
;
547 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus
;
548 LPDDHALVPORTCB_COLORCONTROL ColorControl
;
549 } DDHAL_DDVIDEOPORTCALLBACKS
;
552 typedef struct _DDHAL_COLORCONTROLDATA
*LPDDHAL_COLORCONTROLDATA
;
554 typedef DWORD (PASCAL
*LPDDHALCOLORCB_COLORCONTROL
)(LPDDHAL_COLORCONTROLDATA
);
557 typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS
561 LPDDHALCOLORCB_COLORCONTROL ColorControl
;
562 } DDHAL_DDCOLORCONTROLCALLBACKS
;
564 typedef struct _DDHAL_SYNCSURFACEDATA
*LPDDHAL_SYNCSURFACEDATA
;
565 typedef struct _DDHAL_SYNCVIDEOPORTDATA
*LPDDHAL_SYNCVIDEOPORTDATA
;
567 typedef DWORD (PASCAL
*LPDDHALKERNELCB_SYNCSURFACE
)(LPDDHAL_SYNCSURFACEDATA
);
568 typedef DWORD (PASCAL
*LPDDHALKERNELCB_SYNCVIDEOPORT
)(LPDDHAL_SYNCVIDEOPORTDATA
);
570 typedef struct _DDHAL_DDKERNELCALLBACKS
574 LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData
;
575 LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData
;
576 } DDHAL_DDKERNELCALLBACKS
, *LPDDHAL_DDKERNELCALLBACKS
;
578 typedef struct _DDHAL_GETMOCOMPGUIDSDATA
*LPDDHAL_GETMOCOMPGUIDSDATA
;
579 typedef struct _DDHAL_GETMOCOMPFORMATSDATA
*LPDDHAL_GETMOCOMPFORMATSDATA
;
580 typedef struct _DDHAL_CREATEMOCOMPDATA
*LPDDHAL_CREATEMOCOMPDATA
;
581 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA
*LPDDHAL_GETMOCOMPCOMPBUFFDATA
;
582 typedef struct _DDHAL_GETINTERNALMOCOMPDATA
*LPDDHAL_GETINTERNALMOCOMPDATA
;
583 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA
*LPDDHAL_BEGINMOCOMPFRAMEDATA
;
584 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA
*LPDDHAL_ENDMOCOMPFRAMEDATA
;
585 typedef struct _DDHAL_RENDERMOCOMPDATA
*LPDDHAL_RENDERMOCOMPDATA
;
586 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA
*LPDDHAL_QUERYMOCOMPSTATUSDATA
;
587 typedef struct _DDHAL_DESTROYMOCOMPDATA
*LPDDHAL_DESTROYMOCOMPDATA
;
589 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETGUIDS
)( LPDDHAL_GETMOCOMPGUIDSDATA
);
590 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETFORMATS
)( LPDDHAL_GETMOCOMPFORMATSDATA
);
591 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_CREATE
)( LPDDHAL_CREATEMOCOMPDATA
);
592 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETCOMPBUFFINFO
)( LPDDHAL_GETMOCOMPCOMPBUFFDATA
);
593 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_GETINTERNALINFO
)( LPDDHAL_GETINTERNALMOCOMPDATA
);
594 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_BEGINFRAME
)( LPDDHAL_BEGINMOCOMPFRAMEDATA
);
595 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_ENDFRAME
)( LPDDHAL_ENDMOCOMPFRAMEDATA
);
596 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_RENDER
)( LPDDHAL_RENDERMOCOMPDATA
);
597 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_QUERYSTATUS
)( LPDDHAL_QUERYMOCOMPSTATUSDATA
);
598 typedef DWORD (PASCAL
*LPDDHALMOCOMPCB_DESTROY
)( LPDDHAL_DESTROYMOCOMPDATA
);
600 typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS
604 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids
;
605 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats
;
606 LPDDHALMOCOMPCB_CREATE CreateMoComp
;
607 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo
;
608 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo
;
609 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame
;
610 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame
;
611 LPDDHALMOCOMPCB_RENDER RenderMoComp
;
612 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus
;
613 LPDDHALMOCOMPCB_DESTROY DestroyMoComp
;
614 } DDHAL_DDMOTIONCOMPCALLBACKS
, *LPDDHAL_DDMOTIONCOMPCALLBACKS
;
618 typedef HRESULT (WINAPI
*LPDDGAMMACALIBRATORPROC
)(LPDDGAMMARAMP
, LPBYTE
);
622 /*****************************************************************************
623 * driver info structure
625 * The HAL is queried for additional callbacks via the GetDriverInfo callback.
627 typedef struct _DDHAL_GETDRIVERINFODATA
*LPDDHAL_GETDRIVERINFODATA
;
628 typedef DWORD (PASCAL
*LPDDHAL_GETDRIVERINFO
)(LPDDHAL_GETDRIVERINFODATA
);
631 typedef struct _DDHAL_GETDRIVERINFODATA
{
635 DWORD dwExpectedSize
;
641 } DDHAL_GETDRIVERINFODATA
;
643 typedef struct _DDHALINFO
{
645 LPDDHAL_DDCALLBACKS lpDDCallbacks
;
646 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks
;
647 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks
;
650 DWORD dwMonitorFrequency
;
651 LPDDHAL_GETDRIVERINFO GetDriverInfo
;
655 LPDDHALMODEINFO lpModeInfo
;
660 ULONG_PTR lpD3DGlobalDriverData
;
661 ULONG_PTR lpD3DHALCallbacks
;
662 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks
;
667 #define DDPALETTECALLBACKSSIZE sizeof( DDHAL_DDPALETTECALLBACKS )
668 #define DDSURFACECALLBACKSSIZE sizeof( DDHAL_DDSURFACECALLBACKS )
669 #define DDMISCELLANEOUSCALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS)
670 #define DDMISCELLANEOUS2CALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS)
671 #define DDEXEBUFCALLBACKSSIZE sizeof( DDHAL_DDEXEBUFCALLBACKS )
672 #define DDVIDEOPORTCALLBACKSSIZE sizeof( DDHAL_DDVIDEOPORTCALLBACKS )
673 #define DDCOLORCONTROLCALLBACKSSIZE sizeof( DDHAL_DDCOLORCONTROLCALLBACKS )
674 #define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS)
675 #define DDMOTIONCOMPCALLBACKSSIZE sizeof( DDHAL_DDMOTIONCOMPCALLBACKS )
677 #define MAX_PALETTE_SIZE 256
679 #define MAX_AUTOFLIP_BUFFERS 10
680 #define DDSCAPS2_INDEXBUFFER DDSCAPS2_RESERVED3
681 #define DDSCAPS3_VIDEO DDSCAPS3_RESERVED2
682 #define D3DFMT_INTERNAL_D32 71
683 #define D3DFMT_INTERNAL_S1D15 72
684 #define D3DFMT_INTERNAL_D15S1 73
685 #define D3DFMT_INTERNAL_S8D24 74
686 #define D3DFMT_INTERNAL_D24S8 75
687 #define D3DFMT_INTERNAL_X8D24 76
688 #define D3DFMT_INTERNAL_D24X8 77
689 #define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l
690 #define DDHAL_PLEASEALLOC_LINEARSIZE 0x00000003l
692 #define DDHAL_CB32_DESTROYDRIVER 0x00000001l
693 #define DDHAL_CB32_CREATESURFACE 0x00000002l
694 #define DDHAL_CB32_SETCOLORKEY 0x00000004l
695 #define DDHAL_CB32_SETMODE 0x00000008l
696 #define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l
697 #define DDHAL_CB32_CANCREATESURFACE 0x00000020l
698 #define DDHAL_CB32_CREATEPALETTE 0x00000040l
699 #define DDHAL_CB32_GETSCANLINE 0x00000080l
700 #define DDHAL_CB32_SETEXCLUSIVEMODE 0x00000100l
701 #define DDHAL_CB32_FLIPTOGDISURFACE 0x00000200l
702 #define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l
703 #define DDHAL_PALCB32_SETENTRIES 0x00000002l
704 #define DDHALINFO_ISPRIMARYDISPLAY 0x00000001
705 #define DDHALINFO_MODEXILLEGAL 0x00000002
706 #define DDHALINFO_GETDRIVERINFOSET 0x00000004
707 #define DDHALINFO_GETDRIVERINFO2 0x00000008
708 #define DDRAWI_VPORTSTART 0x0001
709 #define DDRAWI_VPORTSTOP 0x0002
710 #define DDRAWI_VPORTUPDATE 0x0003
711 #define DDRAWI_VPORTGETCOLOR 0x0001
712 #define DDRAWI_VPORTSETCOLOR 0x0002
713 #define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001
714 #define DDHAL_SURFCB32_FLIP 0x00000002
715 #define DDHAL_SURFCB32_SETCLIPLIST 0x00000004
716 #define DDHAL_SURFCB32_LOCK 0x00000008
717 #define DDHAL_SURFCB32_UNLOCK 0x00000010
718 #define DDHAL_SURFCB32_BLT 0x00000020
719 #define DDHAL_SURFCB32_SETCOLORKEY 0x00000040
720 #define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080
721 #define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100
722 #define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200
723 #define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400
724 #define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800
725 #define DDHAL_SURFCB32_RESERVED4 0x00001000
726 #define DDHAL_SURFCB32_SETPALETTE 0x00002000
727 #define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001
728 #define DDHAL_MISCCB32_UPDATENONLOCALHEAP 0x00000002
729 #define DDHAL_MISCCB32_GETHEAPALIGNMENT 0x00000004
730 #define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS 0x00000008
731 #define DDHAL_MISC2CB32_ALPHABLT 0x00000001
732 #define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002
733 #define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004
734 #define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008
735 #define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001l
736 #define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002l
737 #define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004l
738 #define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008l
739 #define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010l
740 #define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001
741 #define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002
742 #define DDHAL_VPORT32_FLIP 0x00000004
743 #define DDHAL_VPORT32_GETBANDWIDTH 0x00000008
744 #define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010
745 #define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020
746 #define DDHAL_VPORT32_GETFIELD 0x00000080
747 #define DDHAL_VPORT32_GETLINE 0x00000100
748 #define DDHAL_VPORT32_GETCONNECT 0x00000200
749 #define DDHAL_VPORT32_DESTROY 0x00000400
750 #define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800
751 #define DDHAL_VPORT32_UPDATE 0x00001000
752 #define DDHAL_VPORT32_WAITFORSYNC 0x00002000
753 #define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000
754 #define DDHAL_VPORT32_COLORCONTROL 0x00008000
755 #define DDHAL_COLOR_COLORCONTROL 0x00000001
756 #define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l
757 #define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l
758 #define DDHAL_MOCOMP32_GETGUIDS 0x00000001
759 #define DDHAL_MOCOMP32_GETFORMATS 0x00000002
760 #define DDHAL_MOCOMP32_CREATE 0x00000004
761 #define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008
762 #define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010
763 #define DDHAL_MOCOMP32_BEGINFRAME 0x00000020
764 #define DDHAL_MOCOMP32_ENDFRAME 0x00000040
765 #define DDHAL_MOCOMP32_RENDER 0x00000080
766 #define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100
767 #define DDHAL_MOCOMP32_DESTROY 0x00000200
770 /* where the high-level ddraw implementation stores the callbacks */
771 typedef struct _DDHAL_CALLBACKS
{
772 DDHAL_DDCALLBACKS cbDDCallbacks
;
773 DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks
;
774 DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks
;
775 DDHAL_DDCALLBACKS HALDD
;
776 DDHAL_DDSURFACECALLBACKS HALDDSurface
;
777 DDHAL_DDPALETTECALLBACKS HALDDPalette
;
778 DDHAL_DDCALLBACKS HELDD
;
779 DDHAL_DDSURFACECALLBACKS HELDDSurface
;
780 DDHAL_DDPALETTECALLBACKS HELDDPalette
;
781 DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks
;
782 DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf
;
783 DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf
;
784 DDHAL_DDVIDEOPORTCALLBACKS cbDDVideoPortCallbacks
;
785 DDHAL_DDVIDEOPORTCALLBACKS HALDDVideoPort
;
786 DDHAL_DDCOLORCONTROLCALLBACKS cbDDColorControlCallbacks
;
787 DDHAL_DDCOLORCONTROLCALLBACKS HALDDColorControl
;
788 DDHAL_DDMISCELLANEOUSCALLBACKS cbDDMiscellaneousCallbacks
;
789 DDHAL_DDMISCELLANEOUSCALLBACKS HALDDMiscellaneous
;
790 DDHAL_DDKERNELCALLBACKS cbDDKernelCallbacks
;
791 DDHAL_DDKERNELCALLBACKS HALDDKernel
;
792 DDHAL_DDMOTIONCOMPCALLBACKS cbDDMotionCompCallbacks
;
793 DDHAL_DDMOTIONCOMPCALLBACKS HALDDMotionComp
;
794 } DDHAL_CALLBACKS
,*LPDDHAL_CALLBACKS
;
796 /*****************************************************************************
797 * parameter structures
799 typedef struct _DDHAL_DESTROYDRIVERDATA
{
800 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
802 LPDDHAL_DESTROYDRIVER DestroyDriver
;
803 } DDHAL_DESTROYDRIVERDATA
;
805 typedef struct _DDHAL_SETMODEDATA
{
806 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
809 LPDDHAL_SETMODE SetMode
;
814 typedef struct _DDHAL_CREATESURFACEDATA
{
815 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
816 LPDDSURFACEDESC lpDDSurfaceDesc
;
817 LPDDRAWI_DDRAWSURFACE_LCL
* lplpSList
;
820 LPDDHAL_CREATESURFACE CreateSurface
;
821 } DDHAL_CREATESURFACEDATA
;
823 typedef struct _DDHAL_CANCREATESURFACEDATA
{
824 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
825 LPDDSURFACEDESC lpDDSurfaceDesc
;
826 DWORD bIsDifferentPixelFormat
;
828 LPDDHAL_CANCREATESURFACE CanCreateSurface
;
829 } DDHAL_CANCREATESURFACEDATA
;
831 typedef struct _DDHAL_CREATEPALETTEDATA
{
832 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
833 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
834 LPPALETTEENTRY lpColorTable
;
836 LPDDHAL_CREATEPALETTE CreatePalette
;
838 } DDHAL_CREATEPALETTEDATA
;
840 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA
{
841 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
845 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
846 } DDHAL_SETEXCLUSIVEMODEDATA
;
849 typedef struct _DDHAL_DESTROYSURFACEDATA
{
850 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
851 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
853 LPDDHALSURFCB_DESTROYSURFACE DestroySurface
;
854 } DDHAL_DESTROYSURFACEDATA
;
856 typedef struct _DDHAL_FLIPDATA
{
857 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
858 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr
;
859 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg
;
862 LPDDHALSURFCB_FLIP Flip
;
863 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft
;
864 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft
;
867 typedef struct _DDHAL_LOCKDATA
{
868 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
869 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
874 LPDDHALSURFCB_LOCK Lock
;
878 typedef struct _DDHAL_UNLOCKDATA
{
879 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
880 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
882 LPDDHALSURFCB_UNLOCK Unlock
;
885 typedef struct _DDHAL_BLTDATA
{
886 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
887 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
889 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
895 LPDDHALSURFCB_BLT Blt
;
903 typedef struct _DDHAL_SETPALETTEDATA
{
904 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
905 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
906 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
908 LPDDHALSURFCB_SETPALETTE SetPalette
;
910 } DDHAL_SETPALETTEDATA
;
913 typedef struct _DDHAL_DESTROYPALETTEDATA
{
914 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
915 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
917 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
918 } DDHAL_DESTROYPALETTEDATA
;
920 typedef struct _DDHAL_SETENTRIESDATA
{
921 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
922 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
925 LPPALETTEENTRY lpEntries
;
927 LPDDHALPALCB_SETENTRIES SetEntries
;
928 } DDHAL_SETENTRIESDATA
;
931 typedef struct _DDHAL_CANCREATEVPORTDATA
933 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
934 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
936 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort
;
937 } DDHAL_CANCREATEVPORTDATA
;
939 typedef struct _DDHAL_CREATEVPORTDATA
941 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
942 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
943 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
945 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort
;
946 } DDHAL_CREATEVPORTDATA
;
948 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA
950 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
951 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
952 LPDDPIXELFORMAT lpddpfFormat
;
956 LPDDVIDEOPORTBANDWIDTH lpBandwidth
;
958 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth
;
959 } DDHAL_GETVPORTBANDWIDTHDATA
;
961 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA
963 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
964 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
966 LPDDPIXELFORMAT lpddpfFormat
;
969 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats
;
970 } DDHAL_GETVPORTINPUTFORMATDATA
;
972 typedef struct _DDHAL_GETVPORTFIELDDATA
974 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
975 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
978 LPDDHALVPORTCB_GETFIELD GetVideoPortField
;
979 } DDHAL_GETVPORTFIELDDATA
;
981 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA
983 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
984 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
986 LPDDPIXELFORMAT lpddpfInputFormat
;
987 LPDDPIXELFORMAT lpddpfOutputFormats
;
990 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats
;
991 } DDHAL_GETVPORTOUTPUTFORMATDATA
;
993 typedef struct _DDHAL_GETVPORTLINEDATA
995 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
996 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
999 LPDDHALVPORTCB_GETLINE GetVideoPortLine
;
1000 } DDHAL_GETVPORTLINEDATA
;
1002 typedef struct _DDHAL_DESTROYVPORTDATA
1004 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1005 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1007 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort
;
1008 } DDHAL_DESTROYVPORTDATA
;
1010 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA
1012 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1015 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus
;
1016 } DDHAL_GETVPORTFLIPSTATUSDATA
;
1018 typedef struct _DDHAL_UPDATEVPORTDATA
1020 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1021 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1022 LPDDRAWI_DDRAWSURFACE_INT
*lplpDDSurface
;
1023 LPDDRAWI_DDRAWSURFACE_INT
*lplpDDVBISurface
;
1024 LPDDVIDEOPORTINFO lpVideoInfo
;
1026 DWORD dwNumAutoflip
;
1027 DWORD dwNumVBIAutoflip
;
1029 LPDDHALVPORTCB_UPDATE UpdateVideoPort
;
1030 } DDHAL_UPDATEVPORTDATA
;
1032 typedef struct _DDHAL_WAITFORVPORTSYNCDATA
1034 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1035 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1040 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync
;
1041 } DDHAL_WAITFORVPORTSYNCDATA
;
1043 typedef struct _DDHAL_GETVPORTSIGNALDATA
1045 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1046 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1049 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus
;
1050 } DDHAL_GETVPORTSIGNALDATA
;
1052 typedef struct _DDHAL_VPORTCOLORDATA
1054 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1055 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1057 LPDDCOLORCONTROL lpColorData
;
1059 LPDDHALVPORTCB_COLORCONTROL ColorControl
;
1060 } DDHAL_VPORTCOLORDATA
;
1062 typedef struct _DDHAL_FLIPVPORTDATA
1064 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1065 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1066 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr
;
1067 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg
;
1069 LPDDHALVPORTCB_FLIP FlipVideoPort
;
1070 } DDHAL_FLIPVPORTDATA
;
1072 typedef struct _DDHAL_GETVPORTCONNECTDATA
1074 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1076 LPDDVIDEOPORTCONNECT lpConnect
;
1079 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo
;
1080 } DDHAL_GETVPORTCONNECTDATA
;
1082 typedef struct _DDHAL_SYNCSURFACEDATA
1085 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1086 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1087 DWORD dwSurfaceOffset
;
1088 ULONG_PTR fpLockPtr
;
1090 DWORD dwOverlayOffset
;
1091 DWORD dwOverlaySrcWidth
;
1092 DWORD dwOverlaySrcHeight
;
1093 DWORD dwOverlayDestWidth
;
1094 DWORD dwOverlayDestHeight
;
1095 ULONG_PTR dwDriverReserved1
;
1096 ULONG_PTR dwDriverReserved2
;
1097 ULONG_PTR dwDriverReserved3
;
1099 } DDHAL_SYNCSURFACEDATA
;
1101 typedef struct _DDHAL_SYNCVIDEOPORTDATA
1104 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1105 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1106 DWORD dwOriginOffset
;
1109 ULONG_PTR dwDriverReserved1
;
1110 ULONG_PTR dwDriverReserved2
;
1111 ULONG_PTR dwDriverReserved3
;
1113 } DDHAL_SYNCVIDEOPORTDATA
;
1115 typedef struct _DDHAL_DESTROYDDLOCALDATA
1118 LPDDRAWI_DIRECTDRAW_LCL pDDLcl
;
1120 } DDHAL_DESTROYDDLOCALDATA
;
1122 typedef struct _DDHAL_CREATESURFACEEXDATA
{
1124 LPDDRAWI_DIRECTDRAW_LCL lpDDLcl
;
1125 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl
;
1127 } DDHAL_CREATESURFACEEXDATA
;
1129 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
1131 ULONG_PTR dwInstance
;
1134 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment
;
1135 HEAPALIGNMENT Alignment
;
1136 } DDHAL_GETHEAPALIGNMENTDATA
;
1139 typedef struct _DDMORESURFACECAPS
1142 DDSCAPSEX ddsCapsMore
;
1143 struct tagExtendedHeapRestrictions
1145 DDSCAPSEX ddsCapsEx
;
1146 DDSCAPSEX ddsCapsExAlt
;
1147 } ddsExtendedHeapRestrictions
[1];
1148 } DDMORESURFACECAPS
, * LPDDMORESURFACECAPS
;
1150 typedef struct _DDSTEREOMODE
1156 DWORD dwRefreshRate
;
1159 } DDSTEREOMODE
, * LPDDSTEREOMODE
;
1161 /*****************************************************************************
1162 * high-level ddraw implementation structures
1164 typedef struct _IUNKNOWN_LIST
{
1165 struct _IUNKNOWN_LIST
* lpLink
;
1169 IUnknown
* lpIUnknown
;
1172 #endif /* _NO_COM */
1173 } IUNKNOWN_LIST
,*LPIUNKNOWN_LIST
;
1176 typedef struct _PROCESS_LIST
{
1177 struct _PROCESS_LIST
* lpLink
;
1182 } PROCESS_LIST
,*LPPROCESS_LIST
;
1184 typedef struct _ATTACHLIST
{
1186 struct _ATTACHLIST
* lpLink
;
1187 LPDDRAWI_DDRAWSURFACE_LCL lpAttached
;
1188 LPDDRAWI_DDRAWSURFACE_INT lpIAttached
;
1189 } ATTACHLIST
,*LPATTACHLIST
;
1191 #define DDAL_IMPLICIT 0x00000001
1193 typedef struct _ACCESSRECTLIST
{
1194 struct _ACCESSRECTLIST
* lpLink
;
1196 LPDDRAWI_DIRECTDRAW_LCL lpOwner
;
1197 LPVOID lpSurfaceData
;
1199 LPHEAPALIASINFO lpHeapAliasInfo
;
1200 } ACCESSRECTLIST
,*LPACCESSRECTLIST
;
1202 #define ACCESSRECT_VRAMSTYLE 0x00000001
1203 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
1204 #define ACCESSRECT_BROKEN 0x00000004
1206 typedef struct _DBLNODE
{
1207 struct _DBLNODE
* next
;
1208 struct _DBLNODE
* prev
;
1209 LPDDRAWI_DDRAWSURFACE_LCL object
;
1210 LPDDRAWI_DDRAWSURFACE_INT object_int
;
1211 } DBLNODE
,*LPDBLNODE
;
1213 typedef struct _DDRAWI_DIRECTDRAW_INT
{
1215 LPDDRAWI_DIRECTDRAW_LCL lpLcl
;
1216 LPDDRAWI_DIRECTDRAW_INT lpLink
;
1218 } DDRAWI_DIRECTDRAW_INT
;
1221 typedef struct _DDRAWI_DIRECTDRAW_LCL
{
1223 LPDDRAWI_DIRECTDRAW_GBL lpGbl
;
1226 DWORD dwLocalRefCnt
;
1229 IUnknown
* pUnkOuter
;
1237 LPDDRAWI_DDRAWSURFACE_INT lpPrimary
;
1238 LPDDRAWI_DDRAWSURFACE_INT lpCB
;
1239 DWORD dwPreferredMode
;
1241 HINSTANCE hD3DInstance
;
1243 IUnknown
* pD3DIUnknown
;
1247 LPDDHAL_CALLBACKS lpDDCB
;
1250 DWORD dwAppHackFlags
;
1252 ULONG_PTR hFocusWnd
;
1253 DWORD dwHotTracking
;
1256 ULONG_PTR hWndPopup
;
1258 ULONG_PTR hGammaCalibrator
;
1259 LPDDGAMMACALIBRATORPROC lpGammaCalibrator
;
1260 } DDRAWI_DIRECTDRAW_LCL
;
1263 #define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001
1264 #define DDRAWILCL_ISFULLSCREEN 0x00000002
1265 #define DDRAWILCL_SETCOOPCALLED 0x00000004
1266 #define DDRAWILCL_ACTIVEYES 0x00000008
1267 #define DDRAWILCL_ACTIVENO 0x00000010
1268 #define DDRAWILCL_HOOKEDHWND 0x00000020
1269 #define DDRAWILCL_ALLOWMODEX 0x00000040
1270 #define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080
1271 #define DDRAWILCL_MODEHASBEENCHANGED 0x00000100
1272 #define DDRAWILCL_CREATEDWINDOW 0x00000200
1273 #define DDRAWILCL_DIRTYDC 0x00000400
1274 #define DDRAWILCL_DISABLEINACTIVATE 0x00000800
1275 #define DDRAWILCL_CURSORCLIPPED 0x00001000
1276 #define DDRAWILCL_EXPLICITMONITOR 0x00002000
1277 #define DDRAWILCL_MULTITHREADED 0x00004000
1278 #define DDRAWILCL_FPUSETUP 0x00008000
1279 #define DDRAWILCL_POWEREDDOWN 0x00010000
1280 #define DDRAWILCL_DIRECTDRAW7 0x00020000
1281 #define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000
1282 #define DDRAWILCL_FPUPRESERVE 0x00080000
1283 #define DDRAWILCL_DX8DRIVER 0x00100000
1284 #define DDRAWILCL_DIRECTDRAW8 0x00200000
1287 typedef struct _DDRAWI_DIRECTDRAW_GBL
{
1290 FLATPTR fpPrimaryOrig
;
1294 LPDDHAL_CALLBACKS lpDDCBtmp
;
1295 LPDDRAWI_DDRAWSURFACE_INT dsList
;
1296 LPDDRAWI_DDRAWPALETTE_INT palList
;
1297 LPDDRAWI_DDRAWCLIPPER_INT clipperList
;
1298 LPDDRAWI_DIRECTDRAW_GBL lp16DD
;
1299 DWORD dwMaxOverlays
;
1300 DWORD dwCurrOverlays
;
1301 DWORD dwMonitorFrequency
;
1302 DDCORECAPS ddHELCaps
;
1303 DWORD dwUnused2
[50];
1304 DDCOLORKEY ddckCKDestOverlay
;
1305 DDCOLORKEY ddckCKSrcOverlay
;
1307 LPVOID lpDriverHandle
;
1308 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner
;
1310 DWORD dwModeIndexOrig
;
1314 LPDDHALMODEINFO lpModeInfo
;
1315 PROCESS_LIST plProcessList
;
1316 DWORD dwSurfaceLockCount
;
1317 DWORD dwAliasedLockCnt
;
1318 ULONG_PTR dwReserved3
;
1323 DBLNODE dbnOverlayRoot
;
1324 volatile LPWORD lpwPDeviceFlags
;
1326 DWORD dwWin16LockCnt
;
1330 DWORD dwSaveNumModes
;
1332 ULONG_PTR lpD3DGlobalDriverData
;
1333 ULONG_PTR lpD3DHALCallbacks
;
1334 DDCORECAPS ddBothCaps
;
1336 LPDDVIDEOPORTCAPS lpDDVideoPortCaps
;
1337 LPDDRAWI_DDVIDEOPORT_INT dvpList
;
1338 ULONG_PTR lpD3DHALCallbacks2
;
1343 LPHEAPALIASINFO phaiHeapAliases
;
1344 ULONG_PTR hKernelHandle
;
1345 ULONG_PTR pfnNotifyProc
;
1346 LPDDKERNELCAPS lpDDKernelCaps
;
1347 LPDDNONLOCALVIDMEMCAPS lpddNLVCaps
;
1348 LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps
;
1349 LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps
;
1350 ULONG_PTR lpD3DExtendedCaps
;
1352 DWORD dwDOSBoxEvent
;
1354 char cDriverName
[MAX_DRIVER_NAME
];
1356 ULONG_PTR lpD3DHALCallbacks3
;
1357 DWORD dwNumZPixelFormats
;
1358 LPDDPIXELFORMAT lpZPixelFormats
;
1359 LPDDRAWI_DDMOTIONCOMP_INT mcList
;
1361 DDSCAPSEX ddsCapsMore
;
1362 } DDRAWI_DIRECTDRAW_GBL
;
1364 #define DDRAWI_xxxxxxxxx1 0x00000001
1365 #define DDRAWI_xxxxxxxxx2 0x00000002
1366 #define DDRAWI_VIRTUALDESKTOP 0x00000008
1367 #define DDRAWI_MODEX 0x00000010
1368 #define DDRAWI_DISPLAYDRV 0x00000020
1369 #define DDRAWI_FULLSCREEN 0x00000040
1370 #define DDRAWI_MODECHANGED 0x00000080
1371 #define DDRAWI_NOHARDWARE 0x00000100
1372 #define DDRAWI_PALETTEINIT 0x00000200
1373 #define DDRAWI_NOEMULATION 0x00000400
1374 #define DDRAWI_HASCKEYDESTOVERLAY 0x00000800
1375 #define DDRAWI_HASCKEYSRCOVERLAY 0x00001000
1376 #define DDRAWI_HASGDIPALETTE 0x00002000
1377 #define DDRAWI_EMULATIONINITIALIZED 0x00004000
1378 #define DDRAWI_HASGDIPALETTE_EXCLUSIVE 0x00008000
1379 #define DDRAWI_MODEXILLEGAL 0x00010000
1380 #define DDRAWI_FLIPPEDTOGDI 0x00020000
1381 #define DDRAWI_NEEDSWIN16FORVRAMLOCK 0x00040000
1382 #define DDRAWI_PDEVICEVRAMBITCLEARED 0x00080000
1383 #define DDRAWI_STANDARDVGA 0x00100000
1384 #define DDRAWI_EXTENDEDALIGNMENT 0x00200000
1385 #define DDRAWI_CHANGINGMODE 0x00400000
1386 #define DDRAWI_GDIDRV 0x00800000
1387 #define DDRAWI_ATTACHEDTODESKTOP 0x01000000
1388 #define DDRAWI_UMODELOADED 0x02000000
1389 #define DDRAWI_DDRAWDATANOTFETCHED 0x04000000
1390 #define DDRAWI_SECONDARYDRIVERLOADED 0x08000000
1391 #define DDRAWI_TESTINGMODES 0x10000000
1392 #define DDRAWI_DRIVERINFO2 0x20000000
1393 #define DDRAWI_BADPDEV 0x40000000
1397 typedef struct _DDRAWI_DDRAWSURFACE_INT
{
1399 LPDDRAWI_DDRAWSURFACE_LCL lpLcl
;
1400 LPDDRAWI_DDRAWSURFACE_INT lpLink
;
1402 } DDRAWI_DDRAWSURFACE_INT
;
1404 typedef struct _DDRAWI_DDRAWSURFACE_GBL
{
1406 DWORD dwGlobalFlags
;
1408 LPACCESSRECTLIST lpRectList
;
1413 LPVMEMHEAP lpVidMemHeap
;
1417 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1428 ULONG_PTR dwReserved1
;
1429 DDPIXELFORMAT ddpfSurface
;
1430 } DDRAWI_DDRAWSURFACE_GBL
;
1432 #define DDRAWISURFGBL_MEMFREE 0x00000001L
1433 #define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L
1434 #define DDRAWISURFGBL_ISGDISURFACE 0x00000004L
1435 #define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008L
1436 #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010L
1437 #define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020L
1438 #define DDRAWISURFGBL_LOCKBROKEN 0x00000040L
1439 #define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080L
1440 #define DDRAWISURFGBL_ISCLIENTMEM 0x00000100L
1441 #define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200L
1442 #define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400L
1443 #define DDRAWISURFGBL_HARDWAREOPSTARTED (DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST)
1444 #define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800L
1445 #define DDRAWISURFGBL_VPORTDATA 0x00001000L
1446 #define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000L
1447 #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000L
1448 #define DDRAWISURFGBL_FASTLOCKHELD 0x00008000L
1449 #define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000L
1450 #define DDRAWISURFGBL_DX8SURFACE 0x00080000L
1451 #define DDRAWISURFGBL_DDHELDONTFREE 0x00100000L
1452 #define DDRAWISURFGBL_NOTIFYWHENUNLOCKED 0x00200000L
1453 #define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag
1455 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE
{
1458 DWORD dwPhysicalPageTable
;
1459 FLATPTR fpPhysicalVidMem
;
1463 ULONG_PTR dwSavedDCContext
;
1464 FLATPTR fpAliasedVidMem
;
1465 ULONG_PTR dwDriverReserved
;
1466 ULONG_PTR dwHELReserved
;
1468 ULONG_PTR hKernelSurface
;
1469 DWORD dwKernelRefCnt
;
1470 LPDDCOLORCONTROL lpColorInfo
;
1472 DWORD dwContentsStamp
;
1473 LPVOID lpvUnswappedDriverReserved
;
1474 LPVOID lpDDRAWReserved2
;
1475 DWORD dwDDRAWReserved1
;
1476 DWORD dwDDRAWReserved2
;
1477 FLATPTR fpAliasOfVidMem
;
1478 } DDRAWI_DDRAWSURFACE_GBL_MORE
;
1480 /* the MS version of this macro was somewhat obfuscated and unreadable
1481 * (possibly because of mediocre MS coders)... so I simplified it...
1482 * (and so I commit no copyright violations either, hah) */
1483 #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
1484 (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
1486 #define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \
1487 ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem )
1490 typedef struct _DISPLAYMODEINFO
1495 BYTE wMonitorsAttachedToDesktop
;
1497 } DISPLAYMODEINFO
, *LPDISPLAYMODEINFO
;
1499 #define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO)))
1504 typedef struct _DDRAWI_DDRAWSURFACE_MORE
{
1506 IUNKNOWN_LIST
* lpIUnknowns
;
1507 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1508 DWORD dwPageLockCount
;
1509 DWORD dwBytesAllocated
;
1510 LPDDRAWI_DIRECTDRAW_INT lpDD_int
;
1511 DWORD dwMipMapCount
;
1512 LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper
;
1514 LPHEAPALIASINFO lpHeapAliasInfo
;
1515 DWORD dwOverlayFlags
;
1517 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
1518 LPDDOVERLAYFX lpddOverlayFX
;
1519 DDSCAPSEX ddsCapsEx
;
1520 DWORD dwTextureStage
;
1521 LPVOID lpDDRAWReserved
;
1522 LPVOID lpDDRAWReserved2
;
1523 LPVOID lpDDrawReserved3
;
1524 DWORD dwDDrawReserved4
;
1525 LPVOID lpDDrawReserved5
;
1526 LPDWORD lpGammaRamp
;
1527 LPDWORD lpOriginalGammaRamp
;
1528 LPVOID lpDDrawReserved6
;
1530 DISPLAYMODEINFO dmiDDrawReserved7
;
1532 DWORD dwSurfaceHandle
;
1533 DWORD qwDDrawReserved8
[2];
1534 LPVOID lpDDrawReserved9
;
1536 LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2
;
1537 LPDDRAWI_DDRAWSURFACE_LCL
*slist
;
1540 } DDRAWI_DDRAWSURFACE_MORE
;
1544 typedef struct _DDRAWI_DDRAWSURFACE_LCL
{
1545 LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore
;
1546 LPDDRAWI_DDRAWSURFACE_GBL lpGbl
;
1547 ULONG_PTR hDDSurface
;
1548 LPATTACHLIST lpAttachList
;
1549 LPATTACHLIST lpAttachListFrom
;
1550 DWORD dwLocalRefCnt
;
1556 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette
;
1557 LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette
;
1561 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper
;
1562 LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper
;
1564 DWORD dwModeCreatedIn
;
1565 DWORD dwBackBufferCount
;
1566 DDCOLORKEY ddckCKDestBlt
;
1567 DDCOLORKEY ddckCKSrcBlt
;
1569 ULONG_PTR dwReserved1
;
1570 DDCOLORKEY ddckCKSrcOverlay
;
1571 DDCOLORKEY ddckCKDestOverlay
;
1572 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying
;
1573 DBLNODE dbnOverlayNode
;
1580 } DDRAWI_DDRAWSURFACE_LCL
;
1582 #define DDRAWISURF_ATTACHED 0x00000001L
1583 #define DDRAWISURF_IMPLICITCREATE 0x00000002L
1584 #define DDRAWISURF_ISFREE 0x00000004L
1585 #define DDRAWISURF_ATTACHED_FROM 0x00000008L
1586 #define DDRAWISURF_IMPLICITROOT 0x00000010L
1587 #define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L
1588 #define DDRAWISURF_DATAISALIASED 0x00000040L
1589 #define DDRAWISURF_HASDC 0x00000080L
1590 #define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L
1591 #define DDRAWISURF_HASCKEYDESTBLT 0x00000200L
1592 #define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L
1593 #define DDRAWISURF_HASCKEYSRCBLT 0x00000800L
1594 #define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000L
1595 #define DDRAWISURF_HASPIXELFORMAT 0x00002000L
1596 #define DDRAWISURF_HASOVERLAYDATA 0x00004000L
1597 #define DDRAWISURF_SETGAMMA 0x00008000L
1598 #define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L
1599 #define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L
1600 #define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L
1601 #define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L
1602 #define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L
1603 #define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L
1604 #define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L
1605 #define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L
1606 #define DDRAWISURF_INMASTERSPRITELIST 0x01000000L
1607 #define DDRAWISURF_HELCB 0x02000000L
1608 #define DDRAWISURF_FRONTBUFFER 0x04000000L
1609 #define DDRAWISURF_BACKBUFFER 0x08000000L
1610 #define DDRAWISURF_INVALID 0x10000000L
1611 #define DDRAWISURF_DCIBUSY 0x20000000L
1612 #define DDRAWISURF_GETDCNULL 0x40000000L
1613 #define DDRAWISURF_STEREOSURFACELEFT 0x20000000L
1614 #define DDRAWISURF_DRIVERMANAGED 0x40000000L
1615 #define DDRAWISURF_DCILOCK 0x80000000L
1618 typedef struct _DDRAWI_DDRAWPALETTE_INT
{
1620 LPDDRAWI_DDRAWPALETTE_LCL lpLcl
;
1621 LPDDRAWI_DDRAWPALETTE_INT lpLink
;
1623 } DDRAWI_DDRAWPALETTE_INT
;
1625 typedef struct _DDRAWI_DDRAWPALETTE_GBL
{
1628 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1630 LPPALETTEENTRY lpColorTable
;
1632 ULONG_PTR dwReserved1
;
1633 HPALETTE hHELGDIPalette
;
1635 DWORD dwDriverReserved
;
1636 DWORD dwContentsStamp
;
1639 } DDRAWI_DDRAWPALETTE_GBL
;
1641 #define DDRAWIPAL_256 0x00000001
1642 #define DDRAWIPAL_16 0x00000002
1643 #define DDRAWIPAL_GDI 0x00000004
1644 #define DDRAWIPAL_STORED_8 0x00000008
1645 #define DDRAWIPAL_STORED_16 0x00000010
1646 #define DDRAWIPAL_STORED_24 0x00000020
1647 #define DDRAWIPAL_EXCLUSIVE 0x00000040
1648 #define DDRAWIPAL_INHEL 0x00000080
1649 #define DDRAWIPAL_DIRTY 0x00000100
1650 #define DDRAWIPAL_ALLOW256 0x00000200
1651 #define DDRAWIPAL_4 0x00000400
1652 #define DDRAWIPAL_2 0x00000800
1653 #define DDRAWIPAL_STORED_8INDEX 0x00001000
1654 #define DDRAWIPAL_ALPHA 0x00002000
1656 #define D3DFORMAT_OP_TEXTURE 0x00000001L
1657 #define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L
1658 #define D3DFORMAT_OP_CUBETEXTURE 0x00000004L
1659 #define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L
1660 #define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L
1661 #define D3DFORMAT_OP_ZSTENCIL 0x00000040L
1662 #define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L
1663 #define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L
1664 #define D3DFORMAT_OP_DISPLAYMODE 0x00000400L
1665 #define D3DFORMAT_OP_3DACCELERATION 0x00000800L
1666 #define D3DFORMAT_OP_PIXELSIZE 0x00001000L
1667 #define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L
1668 #define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L
1669 #define D3DFORMAT_OP_SRGBREAD 0x00008000L
1670 #define D3DFORMAT_OP_BUMPMAP 0x00010000L
1671 #define D3DFORMAT_OP_NOFILTER 0x00040000L
1672 #define DDPF_D3DFORMAT 0x00200000l
1673 #define DDPF_NOVEL_TEXTURE_FORMAT 0x00100000l
1674 #define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L
1675 #define D3DFORMAT_OP_SRGBWRITE 0x00100000L
1676 #define D3DFORMAT_OP_NOALPHABLEND 0x00200000L
1677 #define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L
1678 #define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L
1679 #define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L
1680 #define DELETED_OK 0
1681 #define DELETED_LASTONE 1
1682 #define DELETED_NOTFOUND 2
1683 #define DDCALLBACKSSIZE_V1 ( offsetof( DDHAL_DDCALLBACKS, SetExclusiveMode ) )
1684 #define DDCALLBACKSSIZE sizeof( DDHAL_DDCALLBACKS )
1685 #define DDRAWICLIP_WATCHWINDOW 0x00000001
1686 #define DDRAWICLIP_ISINITIALIZED 0x00000002
1687 #define DDRAWICLIP_INMASTERSPRITELIST 0x00000004
1688 #define PFINDEX_UNINITIALIZED (0UL)
1689 #define PFINDEX_UNSUPPORTED (~0UL)
1690 #define ROP_HAS_SOURCE 0x00000001l
1691 #define ROP_HAS_PATTERN 0x00000002l
1692 #define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN
1693 #define DDRAWIVPORT_ON 0x00000001
1694 #define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002
1695 #define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004
1696 #define DDRAWIVPORT_NOKERNELHANDLES 0x00000008
1697 #define DDRAWIVPORT_SOFTWARE_BOB 0x00000010
1698 #define DDRAWIVPORT_VBION 0x00000020
1699 #define DDRAWIVPORT_VIDEOON 0x00000040
1700 #define DDRAWI_GETCOLOR 0x0001
1701 #define DDRAWI_SETCOLOR 0x0002
1702 #define DDMCQUERY_READ 0x00000001
1703 #define DDWAITVB_I_TESTVB 0x80000006
1706 #define DDBLT_ANYALPHA \
1707 (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \
1708 DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE | \
1709 DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST)
1711 #define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \
1712 DDSCAPS_OVERLAY | DDSCAPS_TEXTURE | \
1713 DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP )
1716 #define DDHALINFOSIZE_V2 sizeof(DDHALINFO)
1718 #define DDOVER_ANYALPHA \
1719 (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \
1720 DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE | \
1721 DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST)
1724 typedef struct _DDRAWI_DDRAWPALETTE_LCL
{
1726 LPDDRAWI_DDRAWPALETTE_GBL lpGbl
;
1727 ULONG_PTR dwUnused0
;
1728 DWORD dwLocalRefCnt
;
1730 IUnknown
* pUnkOuter
;
1734 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1735 ULONG_PTR dwReserved1
;
1737 ULONG_PTR dwDDRAWReserved1
;
1738 ULONG_PTR dwDDRAWReserved2
;
1739 ULONG_PTR dwDDRAWReserved3
;
1740 } DDRAWI_DDRAWPALETTE_LCL
;
1743 typedef struct _DDMCCOMPBUFFERINFO
1746 DWORD dwNumCompBuffers
;
1747 DWORD dwWidthToCreate
;
1748 DWORD dwHeightToCreate
;
1749 DWORD dwBytesToAllocate
;
1750 DDSCAPS2 ddCompCaps
;
1751 DDPIXELFORMAT ddPixelFormat
;
1752 } DDMCCOMPBUFFERINFO
, *LPDDMCCOMPBUFFERINFO
;
1754 typedef struct _DDMCBUFFERINFO
1757 LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface
;
1761 } DDMCBUFFERINFO
, *LPDDMCBUFFERINFO
;
1763 typedef struct _DDHAL_GETDRIVERSTATEDATA
{
1767 ULONG_PTR dwhContext
;
1772 } DDHAL_GETDRIVERSTATEDATA
;
1774 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA
1776 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1777 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1778 LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached
;
1780 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface
;
1781 } DDHAL_ADDATTACHEDSURFACEDATA
;
1785 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA
1787 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1788 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1789 LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface
;
1790 DWORD dwInputDataSize
;
1792 DWORD dwOutputDataSize
;
1793 LPVOID lpOutputData
;
1795 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame
;
1796 } DDHAL_BEGINMOCOMPFRAMEDATA
;
1798 typedef struct _DDHAL_COLORCONTROLDATA
1800 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1801 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1802 LPDDCOLORCONTROL lpColorData
;
1805 LPDDHALCOLORCB_COLORCONTROL ColorControl
;
1806 } DDHAL_COLORCONTROLDATA
;
1808 typedef struct _DDHAL_CREATEMOCOMPDATA
1810 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1811 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1813 DWORD dwUncompWidth
;
1814 DWORD dwUncompHeight
;
1815 DDPIXELFORMAT ddUncompPixelFormat
;
1819 LPDDHALMOCOMPCB_CREATE CreateMoComp
;
1820 } DDHAL_CREATEMOCOMPDATA
;
1822 typedef struct _DDHAL_DESTROYMOCOMPDATA
1824 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1825 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1827 LPDDHALMOCOMPCB_DESTROY DestroyMoComp
;
1828 } DDHAL_DESTROYMOCOMPDATA
;
1830 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA
1832 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1833 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1835 DWORD dwInputDataSize
;
1837 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame
;
1838 } DDHAL_ENDMOCOMPFRAMEDATA
;
1840 typedef struct _DDHAL_FLIPTOGDISURFACEDATA
1842 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1846 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface
;
1847 } DDHAL_FLIPTOGDISURFACEDATA
;
1849 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
1851 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1856 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
1857 DDSCAPSEX ddsCapsEx
;
1859 } DDHAL_GETAVAILDRIVERMEMORYDATA
;
1861 typedef struct _DDHAL_GETBLTSTATUSDATA
1863 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1864 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1867 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus
;
1868 } DDHAL_GETBLTSTATUSDATA
;
1870 typedef struct _DDHAL_GETFLIPSTATUSDATA
1872 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1873 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1876 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus
;
1877 } DDHAL_GETFLIPSTATUSDATA
;
1879 typedef struct _DDHAL_GETINTERNALMOCOMPDATA
1881 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1885 DDPIXELFORMAT ddPixelFormat
;
1886 DWORD dwScratchMemAlloc
;
1888 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo
;
1889 } DDHAL_GETINTERNALMOCOMPDATA
;
1891 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA
1893 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1897 DDPIXELFORMAT ddPixelFormat
;
1898 DWORD dwNumTypesCompBuffs
;
1899 LPDDMCCOMPBUFFERINFO lpCompBuffInfo
;
1901 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo
;
1902 } DDHAL_GETMOCOMPCOMPBUFFDATA
;
1904 typedef struct _DDHAL_GETMOCOMPGUIDSDATA
1906 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1910 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids
;
1911 } DDHAL_GETMOCOMPGUIDSDATA
;
1913 typedef struct _DDHAL_GETMOCOMPFORMATSDATA
1915 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1918 LPDDPIXELFORMAT lpFormats
;
1920 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats
;
1921 } DDHAL_GETMOCOMPFORMATSDATA
;
1923 typedef struct _DDHAL_GETSCANLINEDATA
1925 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1928 LPDDHAL_GETSCANLINE GetScanLine
;
1929 } DDHAL_GETSCANLINEDATA
;
1931 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA
1933 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1934 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1935 LPDDRAWI_DDRAWSURFACE_LCL lpSurface
;
1938 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus
;
1939 } DDHAL_QUERYMOCOMPSTATUSDATA
;
1941 typedef struct _DDHAL_RENDERMOCOMPDATA
1943 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
1944 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp
;
1946 LPDDMCBUFFERINFO lpBufferInfo
;
1949 DWORD dwInputDataSize
;
1950 LPVOID lpOutputData
;
1951 DWORD dwOutputDataSize
;
1953 LPDDHALMOCOMPCB_RENDER RenderMoComp
;
1954 } DDHAL_RENDERMOCOMPDATA
;
1956 typedef struct _DDHAL_SETCOLORKEYDATA
1958 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1959 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
1963 LPDDHALSURFCB_SETCOLORKEY SetColorKey
;
1964 } DDHAL_SETCOLORKEYDATA
;
1966 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
1968 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1969 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
1970 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
1974 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition
;
1975 } DDHAL_SETOVERLAYPOSITIONDATA
;
1977 typedef struct _DDHAL_UPDATEOVERLAYDATA
1979 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1980 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
1982 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
1985 DDOVERLAYFX overlayFX
;
1987 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay
;
1988 } DDHAL_UPDATEOVERLAYDATA
;
1990 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA
1992 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
1997 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank
;
1998 } DDHAL_WAITFORVERTICALBLANKDATA
;
2000 typedef struct _DDHAL_DRVSETCOLORKEYDATA
2002 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
2006 LPDDHAL_SETCOLORKEY SetColorKey
;
2007 } DDHAL_DRVSETCOLORKEYDATA
;
2009 typedef struct _DDMONITORINFO
2014 GUID DeviceIdentifier
;
2023 } DDMONITORINFO
, FAR
*LPDDMONITORINFO
;
2025 typedef struct _DDRAWI_DDRAWCLIPPER_INT
2028 LPDDRAWI_DDRAWCLIPPER_LCL lpLcl
;
2029 LPDDRAWI_DDRAWCLIPPER_INT lpLink
;
2031 } DDRAWI_DDRAWCLIPPER_INT
;
2033 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
2035 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2039 ULONG_PTR ulPolicyMaxBytes
;
2041 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap
;
2042 } DDHAL_UPDATENONLOCALHEAPDATA
;
2044 typedef struct _DDHAL_SETCLIPLISTDATA
2046 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2047 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
2049 LPDDHALSURFCB_SETCLIPLIST SetClipList
;
2050 } DDHAL_SETCLIPLISTDATA
;
2052 typedef struct _DDRAWI_DDMOTIONCOMP_LCL
2054 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
2056 DWORD dwUncompWidth
;
2057 DWORD dwUncompHeight
;
2058 DDPIXELFORMAT ddUncompPixelFormat
;
2059 DWORD dwInternalFlags
;
2063 DWORD dwDriverReserved1
;
2064 DWORD dwDriverReserved2
;
2065 DWORD dwDriverReserved3
;
2066 LPVOID lpDriverReserved1
;
2067 LPVOID lpDriverReserved2
;
2068 LPVOID lpDriverReserved3
;
2069 } DDRAWI_DDMOTIONCOMP_LCL
;
2071 typedef struct _DDRAWI_DDMOTIONCOMP_INT
2074 LPDDRAWI_DDMOTIONCOMP_LCL lpLcl
;
2075 LPDDRAWI_DDMOTIONCOMP_INT lpLink
;
2077 } DDRAWI_DDMOTIONCOMP_INT
;
2080 typedef struct _DDRAWI_DDVIDEOPORT_LCL
2082 LPDDRAWI_DIRECTDRAW_LCL lpDD
;
2083 DDVIDEOPORTDESC ddvpDesc
;
2084 DDVIDEOPORTINFO ddvpInfo
;
2085 LPDDRAWI_DDRAWSURFACE_INT lpSurface
;
2086 LPDDRAWI_DDRAWSURFACE_INT lpVBISurface
;
2087 LPDDRAWI_DDRAWSURFACE_INT
*lpFlipInts
;
2088 DWORD dwNumAutoflip
;
2094 ULONG_PTR dwReserved1
;
2095 ULONG_PTR dwReserved2
;
2096 HANDLE hDDVideoPort
;
2097 DWORD dwNumVBIAutoflip
;
2098 LPDDVIDEOPORTDESC lpVBIDesc
;
2099 LPDDVIDEOPORTDESC lpVideoDesc
;
2100 LPDDVIDEOPORTINFO lpVBIInfo
;
2101 LPDDVIDEOPORTINFO lpVideoInfo
;
2102 DWORD dwVBIProcessID
;
2103 LPDDRAWI_DDVIDEOPORT_INT lpVPNotify
;
2104 } DDRAWI_DDVIDEOPORT_LCL
;
2107 typedef struct _DDRAWI_DDVIDEOPORT_INT
2110 LPDDRAWI_DDVIDEOPORT_LCL lpLcl
;
2111 LPDDRAWI_DDVIDEOPORT_INT lpLink
;
2114 } DDRAWI_DDVIDEOPORT_INT
;
2117 typedef struct _DDRAWI_DDRAWCLIPPER_LCL
2120 LPDDRAWI_DDRAWCLIPPER_GBL lpGbl
;
2121 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
2122 DWORD dwLocalRefCnt
;
2124 IUnknown
*pUnkOuter
;
2128 LPDDRAWI_DIRECTDRAW_INT lpDD_int
;
2129 ULONG_PTR dwReserved1
;
2131 IUnknown
* pAddrefedThisOwner
;
2133 PVOID pAddrefedThisOwner
;
2135 } DDRAWI_DDRAWCLIPPER_LCL
;
2139 typedef struct _DDRAWI_DDRAWCLIPPER_GBL
2143 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
2145 ULONG_PTR dwReserved1
;
2147 LPRGNDATA lpStaticClipList
;
2148 } DDRAWI_DDRAWCLIPPER_GBL
;
2150 typedef BOOL (PASCAL
*LPDDHEL_INIT
)(LPDDRAWI_DIRECTDRAW_GBL
,BOOL
);
2152 extern HRESULT DDAPI
2153 LateAllocateSurfaceMem(
2154 LPDIRECTDRAWSURFACE lpSurface
,
2155 DWORD dwPleaseAllocType
,
2156 DWORD dwWidthInBytesOrSize
,
2159 LPDIRECTDRAWSURFACE
GetNextMipMap(
2160 LPDIRECTDRAWSURFACE lpLevel
);
2164 typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS
;
2165 typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS
;
2166 typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS
;
2167 typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS
;
2168 typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS
;
2169 typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS
;
2170 typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS
;
2171 typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS
;
2172 typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS
;
2173 typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS
;
2174 typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS
;
2175 typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS
;
2176 typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS
;
2177 typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS
;
2178 typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS
;
2181 typedef DIRECTDRAWCLIPPERCALLBACKS
*LPDIRECTDRAWCLIPPERCALLBACKS
;
2182 typedef DIRECTDRAWPALETTECALLBACKS
*LPDIRECTDRAWPALETTECALLBACKS
;
2183 typedef DIRECTDRAWSURFACECALLBACKS
*LPDIRECTDRAWSURFACECALLBACKS
;
2184 typedef DIRECTDRAWCALLBACKS
*LPDIRECTDRAWCALLBACKS
;
2188 D3DParseUnknownCommand (LPVOID lpvCommands
,
2189 LPVOID
*lplpvReturnedCommand
);
2195 #endif /* __DDRAWI_INCLUDED__ */