1 /* DirectDraw driver interface */
2 /* (DirectX 7 version) */
4 #ifndef __WINE_DDRAWI_H
5 #define __WINE_DDRAWI_H
12 #include "dciddi.h" /* the DD HAL is layered onto DCI escapes */
14 typedef struct _DDVIDEOPORTCAPS
*LPDDVIDEOPORTCAPS
; /* should be in dvp.h */
15 typedef struct _DDKERNELCAPS
*LPDDKERNELCAPS
; /* should be in ddkernel.h */
16 typedef struct _VMEMHEAP
*LPVMEMHEAP
; /* should be in dmemmgr.h */
20 /* the DirectDraw versions */
21 #define DD_VERSION 0x0200 /* compatibility version */
22 #define DD_RUNTIME_VERSION 0x0700 /* actual version */
24 /* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */
25 #define DD_HAL_VERSION 0x0100
27 /* more DCICOMMAND escapes */
28 #define DDCREATEDRIVEROBJECT 10
29 #define DDGET32BITDRIVERNAME 11
30 #define DDNEWCALLBACKFNS 12
31 #define DDVERSIONINFO 13
33 #define MAX_DRIVER_NAME CCHDEVICENAME
35 /*****************************************************************************
36 * Initialization stuff
40 char szEntryPoint
[64];
42 } DD32BITDRIVERDATA
,*LPDD32BITDRIVERDATA
;
46 ULONG_PTR dwReserved1
;
47 ULONG_PTR dwReserved2
;
48 } DDVERSIONDATA
,*LPDDVERSIONDATA
;
50 typedef DWORD
PASCAL (*LPDD32BITDRIVERINIT
)(DWORD dwContext
);
52 /* pointer to video memory */
53 typedef ULONG_PTR FLATPTR
;
55 /* predeclare some structures */
56 typedef struct _DDHALINFO
*LPDDHALINFO
;
57 typedef struct _DDRAWI_DIRECTDRAW_INT
*LPDDRAWI_DIRECTDRAW_INT
;
58 typedef struct _DDRAWI_DIRECTDRAW_LCL
*LPDDRAWI_DIRECTDRAW_LCL
;
59 typedef struct _DDRAWI_DIRECTDRAW_GBL
*LPDDRAWI_DIRECTDRAW_GBL
;
60 typedef struct _DDRAWI_DDRAWSURFACE_INT
*LPDDRAWI_DDRAWSURFACE_INT
;
61 typedef struct _DDRAWI_DDRAWSURFACE_LCL
*LPDDRAWI_DDRAWSURFACE_LCL
;
62 typedef struct _DDRAWI_DDRAWSURFACE_GBL
*LPDDRAWI_DDRAWSURFACE_GBL
;
63 typedef struct _DDRAWI_DDRAWSURFACE_MORE
*LPDDRAWI_DDRAWSURFACE_MORE
;
64 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE
*LPDDRAWI_DDRAWSURFACE_GBL_MORE
;
65 typedef struct _DDRAWI_DDRAWPALETTE_INT
*LPDDRAWI_DDRAWPALETTE_INT
;
66 typedef struct _DDRAWI_DDRAWPALETTE_LCL
*LPDDRAWI_DDRAWPALETTE_LCL
;
67 typedef struct _DDRAWI_DDRAWPALETTE_GBL
*LPDDRAWI_DDRAWPALETTE_GBL
;
68 typedef struct _DDRAWI_DDRAWCLIPPER_INT
*LPDDRAWI_DDRAWCLIPPER_INT
;
69 typedef struct _DDRAWI_DDRAWCLIPPER_LCL
*LPDDRAWI_DDRAWCLIPPER_LCL
;
70 typedef struct _DDRAWI_DDRAWCLIPPER_GBL
*LPDDRAWI_DDRAWCLIPPER_GBL
;
71 typedef struct _DDRAWI_DDVIDEOPORT_INT
*LPDDRAWI_DDVIDEOPORT_INT
;
72 typedef struct _DDRAWI_DDVIDEOPORT_LCL
*LPDDRAWI_DDVIDEOPORT_LCL
;
73 typedef struct _DDRAWI_DDMOTIONCOMP_INT
*LPDDRAWI_DDMOTIONCOMP_INT
;
74 typedef struct _DDRAWI_DDMOTIONCOMP_LCL
*LPDDRAWI_DDMOTIONCOMP_LCL
;
76 /* structure GUIDs for GetDriverInfo */
77 DEFINE_GUID( GUID_MiscellaneousCallbacks
, 0xEFD60CC0,0x49E7,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A );
78 /* ...videport stuff here... */
79 DEFINE_GUID( GUID_D3DCallbacks2
, 0x0BA584E1,0x70B6,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A );
80 DEFINE_GUID( GUID_D3DCallbacks3
, 0xDDF41230,0xEC0A,0x11D0,0xA9,0xB6,0x00,0xAA,0x00,0xC0,0x99,0x3E );
81 DEFINE_GUID( GUID_NonLocalVidMemCaps
, 0x86C4FA80,0x8D84,0x11D0,0x94,0xE8,0x00,0xC0,0x4F,0xC3,0x41,0x37 );
82 /* ...kernel stuff here... */
83 DEFINE_GUID( GUID_D3DExtendedCaps
, 0x7DE41F80,0x9D93,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29 );
84 DEFINE_GUID( GUID_ZPixelFormats
, 0x93869880,0x36CF,0x11D1,0x9B,0x1B,0x00,0xAA,0x00,0xBB,0xB8,0xAE );
85 DEFINE_GUID( GUID_DDMoreSurfaceCaps
, 0x3B8A0466,0xF269,0x11D1,0x88,0x0B,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
86 DEFINE_GUID( GUID_DDStereoMode
, 0xF828169C,0xA8E8,0x11D2,0xA1,0xF2,0x00,0xA0,0xC9,0x83,0xEA,0xF6 );
87 /* ...more stuff here... */
88 DEFINE_GUID(GUID_D3DParseUnknownCommandCallback
,0x2E04FFA0,0x98E4,0x11D1,0x8C,0xE1,0x00,0xA0,0xC9,0x06,0x29,0xA8 );
89 /* ...motioncomp stuff here... */
90 DEFINE_GUID( GUID_Miscellaneous2Callbacks
, 0x406B2F00,0x3E5A,0x11D1,0xB6,0x40,0x00,0xAA,0x00,0xA1,0xF9,0x6A );
92 /*****************************************************************************
93 * driver->ddraw callbacks
95 typedef BOOL
DDAPI (*LPDDHAL_SETINFO
)(LPDDHALINFO lpDDHalInfo
, BOOL reset
);
96 typedef FLATPTR
DDAPI (*LPDDHAL_VIDMEMALLOC
)(LPDDRAWI_DIRECTDRAW_GBL lpDD
, int heap
, DWORD dwWidth
, DWORD dwHeight
);
97 typedef void DDAPI (*LPDDHAL_VIDMEMFREE
)(LPDDRAWI_DIRECTDRAW_GBL lpDD
, int heap
, FLATPTR fpMem
);
101 LPDDHAL_SETINFO lpSetInfo
;
102 LPDDHAL_VIDMEMALLOC lpVidMemAlloc
;
103 LPDDHAL_VIDMEMFREE lpVidMemFree
;
104 } DDHALDDRAWFNS
,*LPDDHALDDRAWFNS
;
106 /*****************************************************************************
107 * mode info structure
109 typedef struct _DDHALMODEINFO
{
119 DWORD dwAlphaBitMask
;
120 } DDHALMODEINFO
,*LPDDHALMODEINFO
;
122 #define DDMODEINFO_PALETTIZED 0x0001
123 #define DDMODEINFO_MODEX 0x0002
124 #define DDMODEINFO_UNSUPPORTED 0x0004
125 #define DDMODEINFO_STANDARDVGA 0x0008
126 #define DDMODEINFO_MAXREFRESH 0x0010
127 #define DDMODEINFO_STEREO 0x0020
129 /*****************************************************************************
130 * video memory info structure
132 typedef struct _VIDMEM
{
147 #define VIDMEM_ISLINEAR 0x00000001
148 #define VIDMEM_ISRECTANGULAR 0x00000002
149 #define VIDMEM_ISHEAP 0x00000004
150 #define VIDMEM_ISNONLOCAL 0x00000008
151 #define VIDMEM_ISWC 0x00000010
152 #define VIDMEM_ISDISABLED 0x00000020
154 typedef struct _VIDMEMINFO
{
157 DWORD dwDisplayWidth
;
158 DWORD dwDisplayHeight
;
160 DDPIXELFORMAT ddpfDisplay
;
161 DWORD dwOffscreenAlign
;
162 DWORD dwOverlayAlign
;
163 DWORD dwTextureAlign
;
164 DWORD dwZBufferAlign
;
168 } VIDMEMINFO
,*LPVIDMEMINFO
;
170 typedef struct _HEAPALIAS
{
174 } HEAPALIAS
,*LPHEAPALIAS
;
176 typedef struct _HEAPALIASINFO
{
180 LPHEAPALIAS lpAliases
;
181 } HEAPALIASINFO
,*LPHEAPALIASINFO
;
183 #define HEAPALIASINFO_MAPPEDREAL 0x00000001
184 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
186 /*****************************************************************************
187 * capabilities structures
189 typedef struct _DDCORECAPS
{
198 DWORD dwAlphaBltConstBitDepths
;
199 DWORD dwAlphaBltPixelBitDepths
;
200 DWORD dwAlphaBltSurfaceBitDepths
;
201 DWORD dwAlphaOverlayConstBitDepths
;
202 DWORD dwAlphaOverlayPixelBitDepths
;
203 DWORD dwAlphaOverlaySurfaceBitDepths
;
204 DWORD dwZBufferBitDepths
;
207 DWORD dwMaxVisibleOverlays
;
208 DWORD dwCurrVisibleOverlays
;
209 DWORD dwNumFourCCCodes
;
210 DWORD dwAlignBoundarySrc
;
211 DWORD dwAlignSizeSrc
;
212 DWORD dwAlignBoundaryDest
;
213 DWORD dwAlignSizeDest
;
214 DWORD dwAlignStrideAlign
;
215 DWORD dwRops
[DD_ROP_SPACE
];
217 DWORD dwMinOverlayStretch
;
218 DWORD dwMaxOverlayStretch
;
219 DWORD dwMinLiveVideoStretch
;
220 DWORD dwMaxLiveVideoStretch
;
221 DWORD dwMinHwCodecStretch
;
222 DWORD dwMaxHwCodecStretch
;
229 DWORD dwSVBRops
[DD_ROP_SPACE
];
233 DWORD dwVSBRops
[DD_ROP_SPACE
];
237 DWORD dwSSBRops
[DD_ROP_SPACE
];
238 DWORD dwMaxVideoPorts
;
239 DWORD dwCurrVideoPorts
;
241 } DDCORECAPS
,*LPDDCORECAPS
;
243 typedef struct _DDNONLOCALVIDMEMCAPS
{
247 DWORD dwNLVBCKeyCaps
;
249 DWORD dwNLVBRops
[DD_ROP_SPACE
];
250 } DDNONLOCALVIDMEMCAPS
,*LPDDNONLOCALVIDMEMCAPS
;
252 typedef struct _DDSCAPSEX
{
256 } DDSCAPSEX
,*LPDDSCAPSEX
;
258 #define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2
259 #define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1
260 #define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
262 /*****************************************************************************
263 * ddraw->driver callbacks
265 #define DDHAL_DRIVER_NOTHANDLED 0
266 #define DDHAL_DRIVER_HANDLED 1
267 #define DDHAL_DRIVER_NOCKEYHW 2
269 typedef struct _DDHAL_DESTROYDRIVERDATA
*LPDDHAL_DESTROYDRIVERDATA
;
270 typedef struct _DDHAL_CREATESURFACEDATA
*LPDDHAL_CREATESURFACEDATA
;
271 typedef struct _DDHAL_DRVSETCOLORKEYDATA
*LPDDHAL_DRVSETCOLORKEYDATA
;
272 typedef struct _DDHAL_SETMODEDATA
*LPDDHAL_SETMODEDATA
;
273 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA
*LPDDHAL_WAITFORVERTICALBLANKDATA
;
274 typedef struct _DDHAL_CANCREATESURFACEDATA
*LPDDHAL_CANCREATESURFACEDATA
;
275 typedef struct _DDHAL_CREATEPALETTEDATA
*LPDDHAL_CREATEPALETTEDATA
;
276 typedef struct _DDHAL_GETSCANLINEDATA
*LPDDHAL_GETSCANLINEDATA
;
277 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA
*LPDDHAL_SETEXCLUSIVEMODEDATA
;
278 typedef struct _DDHAL_FLIPTOGDISURFACEDATA
*LPDDHAL_FLIPTOGDISURFACEDATA
;
280 typedef DWORD
PASCAL (*LPDDHAL_DESTROYDRIVER
) (LPDDHAL_DESTROYDRIVERDATA
);
281 typedef DWORD
PASCAL (*LPDDHAL_CREATESURFACE
) (LPDDHAL_CREATESURFACEDATA
);
282 typedef DWORD
PASCAL (*LPDDHAL_SETCOLORKEY
) (LPDDHAL_DRVSETCOLORKEYDATA
);
283 typedef DWORD
PASCAL (*LPDDHAL_SETMODE
) (LPDDHAL_SETMODEDATA
);
284 typedef DWORD
PASCAL (*LPDDHAL_WAITFORVERTICALBLANK
)(LPDDHAL_WAITFORVERTICALBLANKDATA
);
285 typedef DWORD
PASCAL (*LPDDHAL_CANCREATESURFACE
) (LPDDHAL_CANCREATESURFACEDATA
);
286 typedef DWORD
PASCAL (*LPDDHAL_CREATEPALETTE
) (LPDDHAL_CREATEPALETTEDATA
);
287 typedef DWORD
PASCAL (*LPDDHAL_GETSCANLINE
) (LPDDHAL_GETSCANLINEDATA
);
288 typedef DWORD
PASCAL (*LPDDHAL_SETEXCLUSIVEMODE
) (LPDDHAL_SETEXCLUSIVEMODEDATA
);
289 typedef DWORD
PASCAL (*LPDDHAL_FLIPTOGDISURFACE
) (LPDDHAL_FLIPTOGDISURFACEDATA
);
291 typedef struct _DDHAL_DDCALLBACKS
{
294 LPDDHAL_DESTROYDRIVER DestroyDriver
;
295 LPDDHAL_CREATESURFACE CreateSurface
;
296 LPDDHAL_SETCOLORKEY SetColorKey
;
297 LPDDHAL_SETMODE SetMode
;
298 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank
;
299 LPDDHAL_CANCREATESURFACE CanCreateSurface
;
300 LPDDHAL_CREATEPALETTE CreatePalette
;
301 LPDDHAL_GETSCANLINE GetScanLine
;
303 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
304 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface
;
305 } DDHAL_DDCALLBACKS
,*LPDDHAL_DDCALLBACKS
;
307 typedef struct _DDHAL_DESTROYSURFACEDATA
*LPDDHAL_DESTROYSURFACEDATA
;
308 typedef struct _DDHAL_FLIPDATA
*LPDDHAL_FLIPDATA
;
309 typedef struct _DDHAL_SETCLIPLISTDATA
*LPDDHAL_SETCLIPLISTDATA
;
310 typedef struct _DDHAL_LOCKDATA
*LPDDHAL_LOCKDATA
;
311 typedef struct _DDHAL_UNLOCKDATA
*LPDDHAL_UNLOCKDATA
;
312 typedef struct _DDHAL_BLTDATA
*LPDDHAL_BLTDATA
;
313 typedef struct _DDHAL_SETCOLORKEYDATA
*LPDDHAL_SETCOLORKEYDATA
;
314 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA
*LPDDHAL_ADDATTACHEDSURFACEDATA
;
315 typedef struct _DDHAL_GETBLTSTATUSDATA
*LPDDHAL_GETBLTSTATUSDATA
;
316 typedef struct _DDHAL_GETFLIPSTATUSDATA
*LPDDHAL_GETFLIPSTATUSDATA
;
317 typedef struct _DDHAL_UPDATEOVERLAYDATA
*LPDDHAL_UPDATEOVERLAYDATA
;
318 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
*LPDDHAL_SETOVERLAYPOSITIONDATA
;
319 typedef struct _DDHAL_SETPALETTEDATA
*LPDDHAL_SETPALETTEDATA
;
321 typedef DWORD
PASCAL (*LPDDHALSURFCB_DESTROYSURFACE
) (LPDDHAL_DESTROYSURFACEDATA
);
322 typedef DWORD
PASCAL (*LPDDHALSURFCB_FLIP
) (LPDDHAL_FLIPDATA
);
323 typedef DWORD
PASCAL (*LPDDHALSURFCB_SETCLIPLIST
) (LPDDHAL_SETCLIPLISTDATA
);
324 typedef DWORD
PASCAL (*LPDDHALSURFCB_LOCK
) (LPDDHAL_LOCKDATA
);
325 typedef DWORD
PASCAL (*LPDDHALSURFCB_UNLOCK
) (LPDDHAL_UNLOCKDATA
);
326 typedef DWORD
PASCAL (*LPDDHALSURFCB_BLT
) (LPDDHAL_BLTDATA
);
327 typedef DWORD
PASCAL (*LPDDHALSURFCB_SETCOLORKEY
) (LPDDHAL_SETCOLORKEYDATA
);
328 typedef DWORD
PASCAL (*LPDDHALSURFCB_ADDATTACHEDSURFACE
)(LPDDHAL_ADDATTACHEDSURFACEDATA
);
329 typedef DWORD
PASCAL (*LPDDHALSURFCB_GETBLTSTATUS
) (LPDDHAL_GETBLTSTATUSDATA
);
330 typedef DWORD
PASCAL (*LPDDHALSURFCB_GETFLIPSTATUS
) (LPDDHAL_GETFLIPSTATUSDATA
);
331 typedef DWORD
PASCAL (*LPDDHALSURFCB_UPDATEOVERLAY
) (LPDDHAL_UPDATEOVERLAYDATA
);
332 typedef DWORD
PASCAL (*LPDDHALSURFCB_SETOVERLAYPOSITION
)(LPDDHAL_SETOVERLAYPOSITIONDATA
);
333 typedef DWORD
PASCAL (*LPDDHALSURFCB_SETPALETTE
) (LPDDHAL_SETPALETTEDATA
);
335 typedef struct _DDHAL_DDSURFACECALLBACKS
{
338 LPDDHALSURFCB_DESTROYSURFACE DestroySurface
;
339 LPDDHALSURFCB_FLIP Flip
;
340 LPDDHALSURFCB_SETCLIPLIST SetClipList
;
341 LPDDHALSURFCB_LOCK Lock
;
342 LPDDHALSURFCB_UNLOCK Unlock
;
343 LPDDHALSURFCB_BLT Blt
;
344 LPDDHALSURFCB_SETCOLORKEY SetColorKey
;
345 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface
;
346 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus
;
347 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus
;
348 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay
;
349 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition
;
351 LPDDHALSURFCB_SETPALETTE SetPalette
;
352 } DDHAL_DDSURFACECALLBACKS
,*LPDDHAL_DDSURFACECALLBACKS
;
354 typedef struct _DDHAL_DESTROYPALETTEDATA
*LPDDHAL_DESTROYPALETTEDATA
;
355 typedef struct _DDHAL_SETENTRIESDATA
*LPDDHAL_SETENTRIESDATA
;
357 typedef DWORD
PASCAL (*LPDDHALPALCB_DESTROYPALETTE
)(LPDDHAL_DESTROYPALETTEDATA
);
358 typedef DWORD
PASCAL (*LPDDHALPALCB_SETENTRIES
) (LPDDHAL_SETENTRIESDATA
);
360 typedef struct _DDHAL_DDPALETTECALLBACKS
{
363 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
364 LPDDHALPALCB_SETENTRIES SetEntries
;
365 } DDHAL_DDPALETTECALLBACKS
,*LPDDHAL_DDPALETTECALLBACKS
;
367 typedef DWORD
PASCAL (*LPDDHALEXEBUFCB_CANCREATEEXEBUF
)(LPDDHAL_CANCREATESURFACEDATA
);
368 typedef DWORD
PASCAL (*LPDDHALEXEBUFCB_CREATEEXEBUF
) (LPDDHAL_CREATESURFACEDATA
);
369 typedef DWORD
PASCAL (*LPDDHALEXEBUFCB_DESTROYEXEBUF
) (LPDDHAL_DESTROYSURFACEDATA
);
370 typedef DWORD
PASCAL (*LPDDHALEXEBUFCB_LOCKEXEBUF
) (LPDDHAL_LOCKDATA
);
371 typedef DWORD
PASCAL (*LPDDHALEXEBUFCB_UNLOCKEXEBUF
) (LPDDHAL_UNLOCKDATA
);
373 typedef struct _DDHAL_DDEXEBUFCALLBACKS
{
376 LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer
;
377 LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer
;
378 LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer
;
379 LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer
;
380 LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer
;
381 } DDHAL_DDEXEBUFCALLBACKS
,*LPDDHAL_DDEXEBUFCALLBACKS
;
383 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA
*LPDDHAL_GETAVAILDRIVERMEMORYDATA
;
384 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA
*LPDDHAL_UPDATENONLOCALHEAPDATA
;
385 typedef struct _DDHAL_GETHEAPALIGNMENTDATA
*LPDDHAL_GETHEAPALIGNMENTDATA
;
387 typedef DWORD
PASCAL (*LPDDHAL_GETAVAILDRIVERMEMORY
)(LPDDHAL_GETAVAILDRIVERMEMORYDATA
);
388 typedef DWORD
PASCAL (*LPDDHAL_UPDATENONLOCALHEAP
) (LPDDHAL_UPDATENONLOCALHEAPDATA
);
389 typedef DWORD
PASCAL (*LPDDHAL_GETHEAPALIGNMENT
) (LPDDHAL_GETHEAPALIGNMENTDATA
);
391 typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS
{
394 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
395 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap
;
396 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment
;
397 LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus
;
398 } DDHAL_DDMISCELLANEOUSCALLBACKS
,*LPDDHAL_DDMISCELLANEOUSCALLBACKS
;
400 typedef struct _DDHAL_CREATESURFACEEXDATA
*LPDDHAL_CREATESURFACEEXDATA
;
401 typedef struct _DDHAL_GETDRIVERSTATEDATA
*LPDDHAL_GETDRIVERSTATEDATA
;
402 typedef struct _DDHAL_DESTROYDDLOCALDATA
*LPDDHAL_DESTROYDDLOCALDATA
;
404 typedef DWORD
PASCAL (*LPDDHAL_CREATESURFACEEX
)(LPDDHAL_CREATESURFACEEXDATA
);
405 typedef DWORD
PASCAL (*LPDDHAL_GETDRIVERSTATE
) (LPDDHAL_GETDRIVERSTATEDATA
);
406 typedef DWORD
PASCAL (*LPDDHAL_DESTROYDDLOCAL
) (LPDDHAL_DESTROYDDLOCALDATA
);
408 typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS
{
412 LPDDHAL_CREATESURFACEEX CreateSurfaceEx
;
413 LPDDHAL_GETDRIVERSTATE GetDriverState
;
414 LPDDHAL_DESTROYDDLOCAL DestroyDDLocal
;
415 } DDHAL_DDMISCELLANEOUS2CALLBACKS
,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS
;
417 typedef HRESULT
WINAPI (*LPDDGAMMACALIBRATORPROC
)(LPDDGAMMARAMP
, LPBYTE
);
419 /*****************************************************************************
420 * driver info structure
422 * The HAL is queried for additional callbacks via the GetDriverInfo callback.
424 typedef struct _DDHAL_GETDRIVERINFODATA
*LPDDHAL_GETDRIVERINFODATA
;
425 typedef DWORD
PASCAL (*LPDDHAL_GETDRIVERINFO
)(LPDDHAL_GETDRIVERINFODATA
);
427 typedef struct _DDHALINFO
{
429 LPDDHAL_DDCALLBACKS lpDDCallbacks
;
430 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks
;
431 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks
;
434 DWORD dwMonitorFrequency
;
435 LPDDHAL_GETDRIVERINFO GetDriverInfo
;
439 LPDDHALMODEINFO lpModeInfo
;
444 ULONG_PTR lpD3DGlobalDriverData
;
445 ULONG_PTR lpD3DHALCallbacks
;
446 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks
;
449 #define DDHALINFO_ISPRIMARYDISPLAY 0x00000001
450 #define DDHALINFO_MODEXILLEGAL 0x00000002
451 #define DDHALINFO_GETDRIVERINFOSET 0x00000004
453 /* where the high-level ddraw implementation stores the callbacks */
454 typedef struct _DDHAL_CALLBACKS
{
455 DDHAL_DDCALLBACKS cbDDCallbacks
;
456 DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks
;
457 DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks
;
458 DDHAL_DDCALLBACKS HALDD
;
459 DDHAL_DDSURFACECALLBACKS HALDDSurface
;
460 DDHAL_DDPALETTECALLBACKS HALDDPalette
;
461 DDHAL_DDCALLBACKS HELDD
;
462 DDHAL_DDSURFACECALLBACKS HELDDSurface
;
463 DDHAL_DDPALETTECALLBACKS HELDDPalette
;
464 DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks
;
465 DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf
;
466 DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf
;
467 /* there's more... videoport, colorcontrol, misc, and motion compensation callbacks... */
468 } DDHAL_CALLBACKS
,*LPDDHAL_CALLBACKS
;
470 /*****************************************************************************
471 * parameter structures
473 typedef struct _DDHAL_DESTROYDRIVERDATA
{
474 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
476 LPDDHAL_DESTROYDRIVER DestroyDriver
;
477 } DDHAL_DESTROYDRIVERDATA
;
479 typedef struct _DDHAL_SETMODEDATA
{
480 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
483 LPDDHAL_SETMODE SetMode
;
488 typedef struct _DDHAL_CREATESURFACEDATA
{
489 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
490 LPDDSURFACEDESC lpDDSurfaceDesc
;
491 LPDDRAWI_DDRAWSURFACE_LCL
* lplpSList
;
494 LPDDHAL_CREATESURFACE CreateSurface
;
495 } DDHAL_CREATESURFACEDATA
;
497 typedef struct _DDHAL_CANCREATESURFACEDATA
{
498 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
499 LPDDSURFACEDESC lpDDSurfaceDesc
;
500 DWORD bIsDifferentPixelFormat
;
502 LPDDHAL_CANCREATESURFACE CanCreateSurface
;
503 } DDHAL_CANCREATESURFACEDATA
;
505 typedef struct _DDHAL_CREATEPALETTEDATA
{
506 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
507 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
508 LPPALETTEENTRY lpColorTable
;
510 LPDDHAL_CREATEPALETTE CreatePalette
;
512 } DDHAL_CREATEPALETTEDATA
;
514 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA
{
515 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
519 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode
;
520 } DDHAL_SETEXCLUSIVEMODEDATA
;
523 typedef struct _DDHAL_DESTROYSURFACEDATA
{
524 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
525 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
527 LPDDHALSURFCB_DESTROYSURFACE DestroySurface
;
528 } DDHAL_DESTROYSURFACEDATA
;
530 typedef struct _DDHAL_FLIPDATA
{
531 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
532 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr
;
533 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg
;
536 LPDDHALSURFCB_FLIP Flip
;
537 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft
;
538 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft
;
541 typedef struct _DDHAL_LOCKDATA
{
542 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
543 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
548 LPDDHALSURFCB_LOCK Lock
;
552 typedef struct _DDHAL_UNLOCKDATA
{
553 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
554 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
556 LPDDHALSURFCB_UNLOCK Unlock
;
559 typedef struct _DDHAL_BLTDATA
{
560 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
561 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface
;
563 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface
;
569 LPDDHALSURFCB_BLT Blt
;
577 typedef struct _DDHAL_SETPALETTEDATA
{
578 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
579 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface
;
580 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
582 LPDDHALSURFCB_SETPALETTE SetPalette
;
584 } DDHAL_SETPALETTEDATA
;
587 typedef struct _DDHAL_DESTROYPALETTEDATA
{
588 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
589 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
591 LPDDHALPALCB_DESTROYPALETTE DestroyPalette
;
592 } DDHAL_DESTROYPALETTEDATA
;
594 typedef struct _DDHAL_SETENTRIESDATA
{
595 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
596 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette
;
599 LPPALETTEENTRY lpEntries
;
601 LPDDHALPALCB_SETENTRIES SetEntries
;
602 } DDHAL_SETENTRIESDATA
;
604 typedef struct _DDHAL_GETDRIVERINFODATA
{
608 DWORD dwExpectedSize
;
613 } DDHAL_GETDRIVERINFODATA
;
615 /*****************************************************************************
616 * high-level ddraw implementation structures
618 typedef struct _IUNKNOWN_LIST
{
619 struct _IUNKNOWN_LIST
* lpLink
;
621 IUnknown
* lpIUnknown
;
622 } IUNKNOWN_LIST
,*LPIUNKNOWN_LIST
;
624 typedef struct _PROCESS_LIST
{
625 struct _PROCESS_LIST
* lpLink
;
630 } PROCESS_LIST
,*LPPROCESS_LIST
;
632 typedef struct _ATTACHLIST
{
634 struct _ATTACHLIST
* lpLink
;
635 LPDDRAWI_DDRAWSURFACE_LCL lpAttached
;
636 LPDDRAWI_DDRAWSURFACE_INT lpIAttached
;
637 } ATTACHLIST
,*LPATTACHLIST
;
639 #define DDAL_IMPLICIT 0x00000001
641 typedef struct _ACCESSRECTLIST
{
642 struct _ACCESSRECTLIST
* lpLink
;
644 LPDDRAWI_DIRECTDRAW_LCL lpOwner
;
645 LPVOID lpSurfaceData
;
647 LPHEAPALIASINFO lpHeapAliasInfo
;
648 } ACCESSRECTLIST
,*LPACCESSRECTLIST
;
650 #define ACCESSRECT_VRAMSTYLE 0x00000001
651 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
652 #define ACCESSRECT_BROKEN 0x00000004
654 typedef struct _DBLNODE
{
655 struct _DBLNODE
* next
;
656 struct _DBLNODE
* prev
;
657 LPDDRAWI_DDRAWSURFACE_LCL object
;
658 LPDDRAWI_DDRAWSURFACE_INT object_int
;
659 } DBLNODE
,*LPDBLNODE
;
661 typedef struct _DDRAWI_DIRECTDRAW_INT
{
663 LPDDRAWI_DIRECTDRAW_LCL lpLcl
;
664 LPDDRAWI_DIRECTDRAW_INT lpLink
;
666 } DDRAWI_DIRECTDRAW_INT
;
668 typedef struct _DDRAWI_DIRECTDRAW_LCL
{
670 LPDDRAWI_DIRECTDRAW_GBL lpGbl
;
675 IUnknown
* pUnkOuter
;
680 LPDDRAWI_DDRAWSURFACE_INT lpPrimary
;
681 LPDDRAWI_DDRAWSURFACE_INT lpCB
;
682 DWORD dwPreferredMode
;
684 HINSTANCE hD3DInstance
;
685 IUnknown
* pD3DIUnknown
;
686 LPDDHAL_CALLBACKS lpDDCB
;
689 DWORD dwAppHackFlags
;
697 ULONG_PTR hGammaCalibrator
;
698 LPDDGAMMACALIBRATORPROC lpGammaCalibrator
;
699 } DDRAWI_DIRECTDRAW_LCL
;
701 #define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001
702 #define DDRAWILCL_ISFULLSCREEN 0x00000002
703 #define DDRAWILCL_SETCOOPCALLED 0x00000004
704 #define DDRAWILCL_ACTIVEYES 0x00000008
705 #define DDRAWILCL_ACTIVENO 0x00000010
706 #define DDRAWILCL_HOOKEDHWND 0x00000020
707 #define DDRAWILCL_ALLOWMODEX 0x00000040
708 #define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080
709 #define DDRAWILCL_MODEHASBEENCHANGED 0x00000100
710 #define DDRAWILCL_CREATEDWINDOW 0x00000200
711 #define DDRAWILCL_DIRTYDC 0x00000400
712 #define DDRAWILCL_DISABLEINACTIVATE 0x00000800
713 #define DDRAWILCL_CURSORCLIPPED 0x00001000
714 #define DDRAWILCL_EXPLICITMONITOR 0x00002000
715 #define DDRAWILCL_MULTITHREADED 0x00004000
716 #define DDRAWILCL_FPUSETUP 0x00008000
717 #define DDRAWILCL_POWEREDDOWN 0x00010000
718 #define DDRAWILCL_DIRECTDRAW7 0x00020000
719 #define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000
720 #define DDRAWILCL_FPUPRESERVE 0x00080000
722 typedef struct _DDRAWI_DIRECTDRAW_GBL
{
725 FLATPTR fpPrimaryOrig
;
729 LPDDHAL_CALLBACKS lpDDCBtmp
;
730 LPDDRAWI_DDRAWSURFACE_INT dsList
;
731 LPDDRAWI_DDRAWPALETTE_INT palList
;
732 LPDDRAWI_DDRAWCLIPPER_INT clipperList
;
733 LPDDRAWI_DIRECTDRAW_GBL lp16DD
;
735 DWORD dwCurrOverlays
;
736 DWORD dwMonitorFrequency
;
737 DDCORECAPS ddHELCaps
;
739 DDCOLORKEY ddckCKDestOverlay
;
740 DDCOLORKEY ddckCKSrcOverlay
;
742 LPVOID lpDriverHandle
;
743 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner
;
745 DWORD dwModeIndexOrig
;
749 LPDDHALMODEINFO lpModeInfo
;
750 PROCESS_LIST plProcessList
;
751 DWORD dwSurfaceLockCount
;
752 DWORD dwAliasedLockCnt
;
753 ULONG_PTR dwReserved3
;
758 DBLNODE dbnOverlayRoot
;
759 volatile LPWORD lpwPDeviceFlags
;
761 DWORD dwWin16LockCnt
;
765 DWORD dwSaveNumModes
;
767 ULONG_PTR lpD3DGlobalDriverData
;
768 ULONG_PTR lpD3DHALCallbacks
;
769 DDCORECAPS ddBothCaps
;
771 LPDDVIDEOPORTCAPS lpDDVideoPortCaps
;
772 LPDDRAWI_DDVIDEOPORT_INT dvpList
;
773 ULONG_PTR lpD3DHALCallbacks2
;
778 LPHEAPALIASINFO phaiHeapAliases
;
779 ULONG_PTR hKernelHandle
;
780 ULONG_PTR pfnNotifyProc
;
781 LPDDKERNELCAPS lpDDKernelCaps
;
782 LPDDNONLOCALVIDMEMCAPS lpddNLVCaps
;
783 LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps
;
784 LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps
;
785 ULONG_PTR lpD3DExtendedCaps
;
789 char cDriverName
[MAX_DRIVER_NAME
];
791 ULONG_PTR lpD3DHALCallbacks3
;
792 DWORD dwNumZPixelFormats
;
793 LPDDPIXELFORMAT lpZPixelFormats
;
794 LPDDRAWI_DDMOTIONCOMP_INT mcList
;
796 DDSCAPSEX ddsCapsMore
;
797 } DDRAWI_DIRECTDRAW_GBL
;
799 #define DDRAWI_VIRTUALDESKTOP 0x00000008
800 #define DDRAWI_MODEX 0x00000010
801 #define DDRAWI_DISPLAYDRV 0x00000020
802 #define DDRAWI_FULLSCREEN 0x00000040
803 #define DDRAWI_MODECHANGED 0x00000080
804 #define DDRAWI_NOHARDWARE 0x00000100
805 #define DDRAWI_PALETTEINIT 0x00000200
806 #define DDRAWI_NOEMULATION 0x00000400
810 typedef struct _DDRAWI_DDRAWSURFACE_INT
{
812 LPDDRAWI_DDRAWSURFACE_LCL lpLcl
;
813 LPDDRAWI_DDRAWSURFACE_INT lpLink
;
815 } DDRAWI_DDRAWSURFACE_INT
;
817 typedef struct _DDRAWI_DDRAWSURFACE_GBL
{
821 LPACCESSRECTLIST lpRectList
;
825 LPVMEMHEAP lpVidMemHeap
;
829 LPDDRAWI_DIRECTDRAW_GBL lpDD
;
840 ULONG_PTR dwReserved1
; /* for display driver use */
841 /* optional (defaults to primary surface pixelformat) */
842 DDPIXELFORMAT ddpfSurface
;
843 } DDRAWI_DDRAWSURFACE_GBL
;
845 #define DDRAWISURFGBL_MEMFREE 0x00000001
846 #define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002
847 #define DDRAWISURFGBL_ISGDISURFACE 0x00000004
848 #define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008
849 #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010
850 #define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020
851 #define DDRAWISURFGBL_LOCKBROKEN 0x00000040
852 #define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080
853 #define DDRAWISURFGBL_ISCLIENTMEM 0x00000100
854 #define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200
855 #define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400
856 #define DDRAWISURFGBL_HARDWAREOPSTARTED 0x00000600
857 #define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800
858 #define DDRAWISURFGBL_VPORTDATA 0x00001000
859 #define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000
860 #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000
861 #define DDRAWISURFGBL_FASTLOCKHELD 0x00008000
862 #define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000
864 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE
{
867 DWORD dwPhysicalPageTable
;
868 FLATPTR fpPhysicalVidMem
;
872 ULONG_PTR dwSavedDCContext
;
873 FLATPTR fpAliasedVidMem
;
874 ULONG_PTR dwDriverReserved
;
875 ULONG_PTR dwHELReserved
;
877 ULONG_PTR hKernelSurface
;
878 DWORD dwKernelRefCnt
;
879 LPDDCOLORCONTROL lpColorInfo
;
881 DWORD dwContentsStamp
;
882 LPVOID lpvUnswappedDriverReserved
;
883 LPVOID lpDDRAWReserved2
;
884 DWORD dwDDRAWReserved1
;
885 DWORD dwDDRAWReserved2
;
886 FLATPTR fpAliasOfVidMem
;
887 } DDRAWI_DDRAWSURFACE_GBL_MORE
;
889 /* the MS version of this macro was somewhat obfuscated and unreadable
890 * (possibly because of mediocre MS coders)... so I simplified it...
891 * (and so I commit no copyright violations either, hah) */
892 #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
893 (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
895 typedef struct _DDRAWI_DDRAWSURFACE_MORE
{
897 IUNKNOWN_LIST
* lpIUnknowns
;
898 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
899 DWORD dwPageLockCount
;
900 DWORD dwBytesAllocated
;
901 LPDDRAWI_DIRECTDRAW_INT lpDD_int
;
903 LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper
;
905 LPHEAPALIASINFO lpHeapAliasInfo
;
906 DWORD dwOverlayFlags
;
908 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort
;
909 LPDDOVERLAYFX lpddOverlayFX
;
911 DWORD dwTextureStage
;
912 LPVOID lpDDRAWReserved
;
913 LPVOID lpDDRAWReserved2
;
914 LPVOID lpDDrawReserved3
;
915 DWORD dwDDrawReserved4
;
916 LPVOID lpDDrawReserved5
;
918 LPDWORD lpOriginalGammaRamp
;
919 LPVOID lpDDrawReserved6
;
920 DWORD dwSurfaceHandle
;
921 DWORD qwDDrawReserved8
[2];
922 LPVOID lpDDrawReserved9
;
924 LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2
;
925 LPDDRAWI_DDRAWSURFACE_LCL
*slist
;
928 } DDRAWI_DDRAWSURFACE_MORE
;
930 typedef struct _DDRAWI_DDRAWSURFACE_LCL
{
931 LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore
;
932 LPDDRAWI_DDRAWSURFACE_GBL lpGbl
;
933 ULONG_PTR hDDSurface
;
934 LPATTACHLIST lpAttachList
;
935 LPATTACHLIST lpAttachListFrom
;
940 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette
;
941 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper
;
942 DWORD dwModeCreatedIn
;
943 DWORD dwBackBufferCount
;
944 DDCOLORKEY ddckCKDestBlt
;
945 DDCOLORKEY ddckCKSrcBlt
;
947 ULONG_PTR dwReserved1
; /* for display driver use */
949 DDCOLORKEY ddckCKSrcOverlay
;
950 DDCOLORKEY ddckCKDestOverlay
;
951 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying
;
952 DBLNODE dbnOverlayNode
;
959 } DDRAWI_DDRAWSURFACE_LCL
;
961 #define DDRAWISURF_ATTACHED 0x00000001
962 #define DDRAWISURF_IMPLICITCREATE 0x00000002
963 #define DDRAWISURF_ISFREE 0x00000004
964 #define DDRAWISURF_ATTACHED_FROM 0x00000008
965 #define DDRAWISURF_IMPLICITROOT 0x00000010
966 #define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020
967 #define DDRAWISURF_DATAISALIASED 0x00000040
968 #define DDRAWISURF_HASDC 0x00000080
969 #define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100
970 #define DDRAWISURF_HASCKEYDESTBLT 0x00000200
971 #define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400
972 #define DDRAWISURF_HASCKEYSRCBLT 0x00000800
973 #define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000
974 #define DDRAWISURF_HASPIXELFORMAT 0x00002000
975 #define DDRAWISURF_HASOVERLAYDATA 0x00004000
976 #define DDRAWISURF_SETGAMMA 0x00008000
978 #define DDRAWISURF_INVALID 0x10000000
981 typedef struct _DDRAWI_DDRAWPALETTE_INT
{
983 LPDDRAWI_DDRAWPALETTE_LCL lpLcl
;
984 LPDDRAWI_DDRAWPALETTE_INT lpLink
;
986 } DDRAWI_DDRAWPALETTE_INT
;
988 typedef struct _DDRAWI_DDRAWPALETTE_GBL
{
991 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
993 LPPALETTEENTRY lpColorTable
;
995 ULONG_PTR dwReserved1
; /* for display driver use */
996 HPALETTE hHELGDIPalette
;
999 DWORD dwDriverReserved
;
1000 DWORD dwContentsStamp
;
1005 } DDRAWI_DDRAWPALETTE_GBL
;
1007 #define DDRAWIPAL_256 0x00000001
1008 #define DDRAWIPAL_16 0x00000002
1009 #define DDRAWIPAL_GDI 0x00000004
1010 #define DDRAWIPAL_STORED_8 0x00000008
1011 #define DDRAWIPAL_STORED_16 0x00000010
1012 #define DDRAWIPAL_STORED_24 0x00000020
1013 #define DDRAWIPAL_EXCLUSIVE 0x00000040
1014 #define DDRAWIPAL_INHEL 0x00000080
1015 #define DDRAWIPAL_DIRTY 0x00000100
1016 #define DDRAWIPAL_ALLOW256 0x00000200
1017 #define DDRAWIPAL_4 0x00000400
1018 #define DDRAWIPAL_2 0x00000800
1019 #define DDRAWIPAL_STORED_8INDEX 0x00001000
1020 #define DDRAWIPAL_ALPHA 0x00002000
1022 typedef struct _DDRAWI_DDRAWPALETTE_LCL
{
1024 LPDDRAWI_DDRAWPALETTE_GBL lpGbl
;
1025 ULONG_PTR dwUnused0
;
1026 DWORD dwLocalRefCnt
;
1027 IUnknown
* pUnkOuter
;
1028 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl
;
1029 ULONG_PTR dwReserved1
;
1031 ULONG_PTR dwDDRAWReserved1
;
1032 ULONG_PTR dwDDRAWReserved2
;
1033 ULONG_PTR dwDDRAWReserved3
;
1034 } DDRAWI_DDRAWPALETTE_LCL
;
1040 #endif /* __WINE_DDRAWI_H */