comparison fuhtark_test/include/winapi/ddrawi.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /*
2 * DirectDraw driver interface
3 * (DirectX 7 version)
4 *
5 * Copyright (C) 2001 Ove Kaaven
6 *
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.
11 *
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.
16 *
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 St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22 #ifndef __WINE_DDRAWI_H
23 #define __WINE_DDRAWI_H
24
25 #include <_mingw_dxhelper.h>
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31 #include <ddraw.h>
32 #include <dciddi.h> /* the DD HAL is layered onto DCI escapes */
33
34 typedef struct _DDVIDEOPORTCAPS *LPDDVIDEOPORTCAPS; /* should be in dvp.h */
35 typedef struct _DDKERNELCAPS *LPDDKERNELCAPS; /* should be in ddkernel.h */
36 typedef struct _VMEMHEAP *LPVMEMHEAP; /* should be in dmemmgr.h */
37
38 #define DDAPI WINAPI
39
40 /* the DirectDraw versions */
41 #define DD_VERSION 0x0200 /* compatibility version */
42 #define DD_RUNTIME_VERSION 0x0700 /* actual version */
43
44 /* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */
45 #define DD_HAL_VERSION 0x0100
46
47 /* more DCICOMMAND escapes */
48 #define DDCREATEDRIVEROBJECT 10
49 #define DDGET32BITDRIVERNAME 11
50 #define DDNEWCALLBACKFNS 12
51 #define DDVERSIONINFO 13
52
53 #define MAX_DRIVER_NAME CCHDEVICENAME
54
55 /*****************************************************************************
56 * Initialization stuff
57 */
58 typedef struct {
59 char szName[260];
60 char szEntryPoint[64];
61 DWORD dwContext;
62 } DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA;
63
64 typedef struct {
65 DWORD dwHALVersion;
66 ULONG_PTR dwReserved1;
67 ULONG_PTR dwReserved2;
68 } DDVERSIONDATA,*LPDDVERSIONDATA;
69
70 typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext);
71
72 /* pointer to video memory */
73 typedef ULONG_PTR FLATPTR;
74
75 /* predeclare some structures */
76 typedef struct _DDHALINFO *LPDDHALINFO;
77 typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT;
78 typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL;
79 typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL;
80 typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT;
81 typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL;
82 typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL;
83 typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE;
84 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE;
85 typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT;
86 typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL;
87 typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL;
88 typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT;
89 typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL;
90 typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL;
91 typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT;
92 typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL;
93 typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT;
94 typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL;
95
96 /* structure GUIDs for GetDriverInfo */
97 DEFINE_GUID( GUID_MiscellaneousCallbacks, 0xEFD60CC0,0x49E7,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A );
98 /* ...videport stuff here... */
99 DEFINE_GUID( GUID_D3DCallbacks2, 0x0BA584E1,0x70B6,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A );
100 DEFINE_GUID( GUID_D3DCallbacks3, 0xDDF41230,0xEC0A,0x11D0,0xA9,0xB6,0x00,0xAA,0x00,0xC0,0x99,0x3E );
101 DEFINE_GUID( GUID_NonLocalVidMemCaps, 0x86C4FA80,0x8D84,0x11D0,0x94,0xE8,0x00,0xC0,0x4F,0xC3,0x41,0x37 );
102 /* ...kernel stuff here... */
103 DEFINE_GUID( GUID_D3DExtendedCaps, 0x7DE41F80,0x9D93,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29 );
104 DEFINE_GUID( GUID_ZPixelFormats, 0x93869880,0x36CF,0x11D1,0x9B,0x1B,0x00,0xAA,0x00,0xBB,0xB8,0xAE );
105 DEFINE_GUID( GUID_DDMoreSurfaceCaps, 0x3B8A0466,0xF269,0x11D1,0x88,0x0B,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
106 DEFINE_GUID( GUID_DDStereoMode, 0xF828169C,0xA8E8,0x11D2,0xA1,0xF2,0x00,0xA0,0xC9,0x83,0xEA,0xF6 );
107 /* ...more stuff here... */
108 DEFINE_GUID(GUID_D3DParseUnknownCommandCallback,0x2E04FFA0,0x98E4,0x11D1,0x8C,0xE1,0x00,0xA0,0xC9,0x06,0x29,0xA8 );
109 /* ...motioncomp stuff here... */
110 DEFINE_GUID( GUID_Miscellaneous2Callbacks, 0x406B2F00,0x3E5A,0x11D1,0xB6,0x40,0x00,0xAA,0x00,0xA1,0xF9,0x6A );
111
112 /*****************************************************************************
113 * driver->ddraw callbacks
114 */
115 typedef BOOL (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset);
116 typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight);
117 typedef void (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem);
118
119 typedef struct {
120 DWORD dwSize;
121 LPDDHAL_SETINFO lpSetInfo;
122 LPDDHAL_VIDMEMALLOC lpVidMemAlloc;
123 LPDDHAL_VIDMEMFREE lpVidMemFree;
124 } DDHALDDRAWFNS,*LPDDHALDDRAWFNS;
125
126 /*****************************************************************************
127 * mode info structure
128 */
129 typedef struct _DDHALMODEINFO {
130 DWORD dwWidth;
131 DWORD dwHeight;
132 LONG lPitch;
133 DWORD dwBPP;
134 WORD wFlags;
135 WORD wRefreshRate;
136 DWORD dwRBitMask;
137 DWORD dwGBitMask;
138 DWORD dwBBitMask;
139 DWORD dwAlphaBitMask;
140 } DDHALMODEINFO,*LPDDHALMODEINFO;
141
142 #define DDMODEINFO_PALETTIZED 0x0001
143 #define DDMODEINFO_MODEX 0x0002
144 #define DDMODEINFO_UNSUPPORTED 0x0004
145 #define DDMODEINFO_STANDARDVGA 0x0008
146 #define DDMODEINFO_MAXREFRESH 0x0010
147 #define DDMODEINFO_STEREO 0x0020
148
149 /*****************************************************************************
150 * video memory info structure
151 */
152 typedef struct _VIDMEM {
153 DWORD dwFlags;
154 FLATPTR fpStart;
155 union {
156 FLATPTR fpEnd;
157 DWORD dwWidth;
158 } DUMMYUNIONNAME1;
159 DDSCAPS ddsCaps;
160 DDSCAPS ddsCapsAlt;
161 union {
162 LPVMEMHEAP lpHeap;
163 DWORD dwHeight;
164 } DUMMYUNIONNAME2;
165 } VIDMEM,*LPVIDMEM;
166
167 #define VIDMEM_ISLINEAR 0x00000001
168 #define VIDMEM_ISRECTANGULAR 0x00000002
169 #define VIDMEM_ISHEAP 0x00000004
170 #define VIDMEM_ISNONLOCAL 0x00000008
171 #define VIDMEM_ISWC 0x00000010
172 #define VIDMEM_ISDISABLED 0x00000020
173
174 typedef struct _VIDMEMINFO {
175 FLATPTR fpPrimary;
176 DWORD dwFlags;
177 DWORD dwDisplayWidth;
178 DWORD dwDisplayHeight;
179 LONG lDisplayPitch;
180 DDPIXELFORMAT ddpfDisplay;
181 DWORD dwOffscreenAlign;
182 DWORD dwOverlayAlign;
183 DWORD dwTextureAlign;
184 DWORD dwZBufferAlign;
185 DWORD dwAlphaAlign;
186 DWORD dwNumHeaps;
187 LPVIDMEM pvmList;
188 } VIDMEMINFO,*LPVIDMEMINFO;
189
190 typedef struct _HEAPALIAS {
191 FLATPTR fpVidMem;
192 LPVOID lpAlias;
193 DWORD dwAliasSize;
194 } HEAPALIAS,*LPHEAPALIAS;
195
196 typedef struct _HEAPALIASINFO {
197 DWORD dwRefCnt;
198 DWORD dwFlags;
199 DWORD dwNumHeaps;
200 LPHEAPALIAS lpAliases;
201 } HEAPALIASINFO,*LPHEAPALIASINFO;
202
203 #define HEAPALIASINFO_MAPPEDREAL 0x00000001
204 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
205
206 /*****************************************************************************
207 * capabilities structures
208 */
209 typedef struct _DDCORECAPS {
210 DWORD dwSize;
211 DWORD dwCaps;
212 DWORD dwCaps2;
213 DWORD dwCKeyCaps;
214 DWORD dwFXCaps;
215 DWORD dwFXAlphaCaps;
216 DWORD dwPalCaps;
217 DWORD dwSVCaps;
218 DWORD dwAlphaBltConstBitDepths;
219 DWORD dwAlphaBltPixelBitDepths;
220 DWORD dwAlphaBltSurfaceBitDepths;
221 DWORD dwAlphaOverlayConstBitDepths;
222 DWORD dwAlphaOverlayPixelBitDepths;
223 DWORD dwAlphaOverlaySurfaceBitDepths;
224 DWORD dwZBufferBitDepths;
225 DWORD dwVidMemTotal;
226 DWORD dwVidMemFree;
227 DWORD dwMaxVisibleOverlays;
228 DWORD dwCurrVisibleOverlays;
229 DWORD dwNumFourCCCodes;
230 DWORD dwAlignBoundarySrc;
231 DWORD dwAlignSizeSrc;
232 DWORD dwAlignBoundaryDest;
233 DWORD dwAlignSizeDest;
234 DWORD dwAlignStrideAlign;
235 DWORD dwRops[DD_ROP_SPACE];
236 DDSCAPS ddsCaps;
237 DWORD dwMinOverlayStretch;
238 DWORD dwMaxOverlayStretch;
239 DWORD dwMinLiveVideoStretch;
240 DWORD dwMaxLiveVideoStretch;
241 DWORD dwMinHwCodecStretch;
242 DWORD dwMaxHwCodecStretch;
243 DWORD dwReserved1;
244 DWORD dwReserved2;
245 DWORD dwReserved3;
246 DWORD dwSVBCaps;
247 DWORD dwSVBCKeyCaps;
248 DWORD dwSVBFXCaps;
249 DWORD dwSVBRops[DD_ROP_SPACE];
250 DWORD dwVSBCaps;
251 DWORD dwVSBCKeyCaps;
252 DWORD dwVSBFXCaps;
253 DWORD dwVSBRops[DD_ROP_SPACE];
254 DWORD dwSSBCaps;
255 DWORD dwSSBCKeyCaps;
256 DWORD dwSSBFXCaps;
257 DWORD dwSSBRops[DD_ROP_SPACE];
258 DWORD dwMaxVideoPorts;
259 DWORD dwCurrVideoPorts;
260 DWORD dwSVBCaps2;
261 } DDCORECAPS,*LPDDCORECAPS;
262
263 typedef struct _DDNONLOCALVIDMEMCAPS {
264 DWORD dwSize;
265 DWORD dwNLVBCaps;
266 DWORD dwNLVBCaps2;
267 DWORD dwNLVBCKeyCaps;
268 DWORD dwNLVBFXCaps;
269 DWORD dwNLVBRops[DD_ROP_SPACE];
270 } DDNONLOCALVIDMEMCAPS,*LPDDNONLOCALVIDMEMCAPS;
271
272 typedef struct _DDSCAPSEX {
273 DWORD dwCaps2;
274 DWORD dwCaps3;
275 DWORD dwCaps4;
276 } DDSCAPSEX,*LPDDSCAPSEX;
277
278 #define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2
279 #define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1
280 #define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
281
282 /*****************************************************************************
283 * ddraw->driver callbacks
284 */
285 #define DDHAL_DRIVER_NOTHANDLED 0
286 #define DDHAL_DRIVER_HANDLED 1
287 #define DDHAL_DRIVER_NOCKEYHW 2
288
289 typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA;
290 typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA;
291 typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA;
292 typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA;
293 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA;
294 typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA;
295 typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA;
296 typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA;
297 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA;
298 typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA;
299
300 typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA);
301 typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA);
302 typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA);
303 typedef DWORD (PASCAL *LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA);
304 typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA);
305 typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA );
306 typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA);
307 typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA);
308 typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA);
309 typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA);
310
311 typedef struct _DDHAL_DDCALLBACKS {
312 DWORD dwSize;
313 DWORD dwFlags;
314 LPDDHAL_DESTROYDRIVER DestroyDriver;
315 LPDDHAL_CREATESURFACE CreateSurface;
316 LPDDHAL_SETCOLORKEY SetColorKey;
317 LPDDHAL_SETMODE SetMode;
318 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank;
319 LPDDHAL_CANCREATESURFACE CanCreateSurface;
320 LPDDHAL_CREATEPALETTE CreatePalette;
321 LPDDHAL_GETSCANLINE GetScanLine;
322 /* DirectX 2 */
323 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
324 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface;
325 } DDHAL_DDCALLBACKS,*LPDDHAL_DDCALLBACKS;
326
327 typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA;
328 typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA;
329 typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA;
330 typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA;
331 typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA;
332 typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA;
333 typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA;
334 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA;
335 typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA;
336 typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA;
337 typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA;
338 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA;
339 typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA;
340
341 typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA);
342 typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA);
343 typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA);
344 typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA);
345 typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA);
346 typedef DWORD (PASCAL *LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA);
347 typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA);
348 typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA);
349 typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA);
350 typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA);
351 typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA);
352 typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA);
353 typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA);
354
355 typedef struct _DDHAL_DDSURFACECALLBACKS {
356 DWORD dwSize;
357 DWORD dwFlags;
358 LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
359 LPDDHALSURFCB_FLIP Flip;
360 LPDDHALSURFCB_SETCLIPLIST SetClipList;
361 LPDDHALSURFCB_LOCK Lock;
362 LPDDHALSURFCB_UNLOCK Unlock;
363 LPDDHALSURFCB_BLT Blt;
364 LPDDHALSURFCB_SETCOLORKEY SetColorKey;
365 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface;
366 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus;
367 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus;
368 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;
369 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;
370 LPVOID reserved4;
371 LPDDHALSURFCB_SETPALETTE SetPalette;
372 } DDHAL_DDSURFACECALLBACKS,*LPDDHAL_DDSURFACECALLBACKS;
373
374 typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA;
375 typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA;
376
377 typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE)(LPDDHAL_DESTROYPALETTEDATA);
378 typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA);
379
380 typedef struct _DDHAL_DDPALETTECALLBACKS {
381 DWORD dwSize;
382 DWORD dwFlags;
383 LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
384 LPDDHALPALCB_SETENTRIES SetEntries;
385 } DDHAL_DDPALETTECALLBACKS,*LPDDHAL_DDPALETTECALLBACKS;
386
387 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF)(LPDDHAL_CANCREATESURFACEDATA);
388 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA);
389 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA);
390 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA);
391 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA);
392
393 typedef struct _DDHAL_DDEXEBUFCALLBACKS {
394 DWORD dwSize;
395 DWORD dwFlags;
396 LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer;
397 LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer;
398 LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer;
399 LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer;
400 LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer;
401 } DDHAL_DDEXEBUFCALLBACKS,*LPDDHAL_DDEXEBUFCALLBACKS;
402
403 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA *LPDDHAL_GETAVAILDRIVERMEMORYDATA;
404 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA *LPDDHAL_UPDATENONLOCALHEAPDATA;
405 typedef struct _DDHAL_GETHEAPALIGNMENTDATA *LPDDHAL_GETHEAPALIGNMENTDATA;
406
407 typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA);
408 typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP) (LPDDHAL_UPDATENONLOCALHEAPDATA);
409 typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT) (LPDDHAL_GETHEAPALIGNMENTDATA);
410
411 typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS {
412 DWORD dwSize;
413 DWORD dwFlags;
414 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory;
415 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap;
416 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment;
417 LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus;
418 } DDHAL_DDMISCELLANEOUSCALLBACKS,*LPDDHAL_DDMISCELLANEOUSCALLBACKS;
419
420 typedef struct _DDHAL_CREATESURFACEEXDATA *LPDDHAL_CREATESURFACEEXDATA;
421 typedef struct _DDHAL_GETDRIVERSTATEDATA *LPDDHAL_GETDRIVERSTATEDATA;
422 typedef struct _DDHAL_DESTROYDDLOCALDATA *LPDDHAL_DESTROYDDLOCALDATA;
423
424 typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA);
425 typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA);
426 typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA);
427
428 typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS {
429 DWORD dwSize;
430 DWORD dwFlags;
431 LPVOID Reserved;
432 LPDDHAL_CREATESURFACEEX CreateSurfaceEx;
433 LPDDHAL_GETDRIVERSTATE GetDriverState;
434 LPDDHAL_DESTROYDDLOCAL DestroyDDLocal;
435 } DDHAL_DDMISCELLANEOUS2CALLBACKS,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS;
436
437 typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE);
438
439 /*****************************************************************************
440 * driver info structure
441 *
442 * The HAL is queried for additional callbacks via the GetDriverInfo callback.
443 */
444 typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA;
445 typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA);
446
447 typedef struct _DDHALINFO {
448 DWORD dwSize;
449 LPDDHAL_DDCALLBACKS lpDDCallbacks;
450 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks;
451 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks;
452 VIDMEMINFO vmiData;
453 DDCORECAPS ddCaps;
454 DWORD dwMonitorFrequency;
455 LPDDHAL_GETDRIVERINFO GetDriverInfo;
456 DWORD dwModeIndex;
457 LPDWORD lpdwFourCC;
458 DWORD dwNumModes;
459 LPDDHALMODEINFO lpModeInfo;
460 DWORD dwFlags;
461 LPVOID lpPDevice;
462 DWORD hInstance;
463 /* DirectX 2 */
464 ULONG_PTR lpD3DGlobalDriverData;
465 ULONG_PTR lpD3DHALCallbacks;
466 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks;
467 } DDHALINFO;
468
469 #define DDHALINFO_ISPRIMARYDISPLAY 0x00000001
470 #define DDHALINFO_MODEXILLEGAL 0x00000002
471 #define DDHALINFO_GETDRIVERINFOSET 0x00000004
472
473 /* where the high-level ddraw implementation stores the callbacks */
474 typedef struct _DDHAL_CALLBACKS {
475 DDHAL_DDCALLBACKS cbDDCallbacks;
476 DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks;
477 DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks;
478 DDHAL_DDCALLBACKS HALDD;
479 DDHAL_DDSURFACECALLBACKS HALDDSurface;
480 DDHAL_DDPALETTECALLBACKS HALDDPalette;
481 DDHAL_DDCALLBACKS HELDD;
482 DDHAL_DDSURFACECALLBACKS HELDDSurface;
483 DDHAL_DDPALETTECALLBACKS HELDDPalette;
484 DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks;
485 DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf;
486 DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf;
487 /* there's more... videoport, colorcontrol, misc, and motion compensation callbacks... */
488 } DDHAL_CALLBACKS,*LPDDHAL_CALLBACKS;
489
490 /*****************************************************************************
491 * parameter structures
492 */
493 typedef struct _DDHAL_DESTROYDRIVERDATA {
494 LPDDRAWI_DIRECTDRAW_GBL lpDD;
495 HRESULT ddRVal;
496 LPDDHAL_DESTROYDRIVER DestroyDriver;
497 } DDHAL_DESTROYDRIVERDATA;
498
499 typedef struct _DDHAL_SETMODEDATA {
500 LPDDRAWI_DIRECTDRAW_GBL lpDD;
501 DWORD dwModeIndex;
502 HRESULT ddRVal;
503 LPDDHAL_SETMODE SetMode;
504 BOOL inexcl;
505 BOOL useRefreshRate;
506 } DDHAL_SETMODEDATA;
507
508 typedef struct _DDHAL_CREATESURFACEDATA {
509 LPDDRAWI_DIRECTDRAW_GBL lpDD;
510 LPDDSURFACEDESC lpDDSurfaceDesc;
511 LPDDRAWI_DDRAWSURFACE_LCL * lplpSList;
512 DWORD dwSCnt;
513 HRESULT ddRVal;
514 LPDDHAL_CREATESURFACE CreateSurface;
515 } DDHAL_CREATESURFACEDATA;
516
517 typedef struct _DDHAL_CANCREATESURFACEDATA {
518 LPDDRAWI_DIRECTDRAW_GBL lpDD;
519 LPDDSURFACEDESC lpDDSurfaceDesc;
520 DWORD bIsDifferentPixelFormat;
521 HRESULT ddRVal;
522 LPDDHAL_CANCREATESURFACE CanCreateSurface;
523 } DDHAL_CANCREATESURFACEDATA;
524
525 typedef struct _DDHAL_CREATEPALETTEDATA {
526 LPDDRAWI_DIRECTDRAW_GBL lpDD;
527 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
528 LPPALETTEENTRY lpColorTable;
529 HRESULT ddRVal;
530 LPDDHAL_CREATEPALETTE CreatePalette;
531 BOOL is_excl;
532 } DDHAL_CREATEPALETTEDATA;
533
534 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA {
535 LPDDRAWI_DIRECTDRAW_GBL lpDD;
536 DWORD dwEnterExcl;
537 DWORD dwReserved;
538 HRESULT ddRVal;
539 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
540 } DDHAL_SETEXCLUSIVEMODEDATA;
541
542 /* surfaces */
543 typedef struct _DDHAL_DESTROYSURFACEDATA {
544 LPDDRAWI_DIRECTDRAW_GBL lpDD;
545 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
546 HRESULT ddRVal;
547 LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
548 } DDHAL_DESTROYSURFACEDATA;
549
550 typedef struct _DDHAL_FLIPDATA {
551 LPDDRAWI_DIRECTDRAW_GBL lpDD;
552 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr;
553 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg;
554 DWORD dwFlags;
555 HRESULT ddRVal;
556 LPDDHALSURFCB_FLIP Flip;
557 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft;
558 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft;
559 } DDHAL_FLIPDATA;
560
561 typedef struct _DDHAL_LOCKDATA {
562 LPDDRAWI_DIRECTDRAW_GBL lpDD;
563 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
564 DWORD bHasRect;
565 RECTL rArea;
566 LPVOID lpSurfData;
567 HRESULT ddRVal;
568 LPDDHALSURFCB_LOCK Lock;
569 DWORD dwFlags;
570 } DDHAL_LOCKDATA;
571
572 typedef struct _DDHAL_UNLOCKDATA {
573 LPDDRAWI_DIRECTDRAW_GBL lpDD;
574 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
575 HRESULT ddRVal;
576 LPDDHALSURFCB_UNLOCK Unlock;
577 } DDHAL_UNLOCKDATA;
578
579 typedef struct _DDHAL_BLTDATA {
580 LPDDRAWI_DIRECTDRAW_GBL lpDD;
581 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
582 RECTL rDest;
583 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
584 RECTL rSrc;
585 DWORD dwFlags;
586 DWORD dwROPFlags;
587 DDBLTFX bltFX;
588 HRESULT ddRVal;
589 LPDDHALSURFCB_BLT Blt;
590 BOOL IsClipped;
591 RECTL rOrigDest;
592 RECTL rOrigSrc;
593 DWORD dwRectCnt;
594 LPRECT prDestRects;
595 } DDHAL_BLTDATA;
596
597 typedef struct _DDHAL_SETPALETTEDATA {
598 LPDDRAWI_DIRECTDRAW_GBL lpDD;
599 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
600 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
601 HRESULT ddRVal;
602 LPDDHALSURFCB_SETPALETTE SetPalette;
603 BOOL Attach;
604 } DDHAL_SETPALETTEDATA;
605
606 /* palettes */
607 typedef struct _DDHAL_DESTROYPALETTEDATA {
608 LPDDRAWI_DIRECTDRAW_GBL lpDD;
609 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
610 HRESULT ddRVal;
611 LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
612 } DDHAL_DESTROYPALETTEDATA;
613
614 typedef struct _DDHAL_SETENTRIESDATA {
615 LPDDRAWI_DIRECTDRAW_GBL lpDD;
616 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
617 DWORD dwBase;
618 DWORD dwNumEntries;
619 LPPALETTEENTRY lpEntries;
620 HRESULT ddRVal;
621 LPDDHALPALCB_SETENTRIES SetEntries;
622 } DDHAL_SETENTRIESDATA;
623
624 typedef struct _DDHAL_GETDRIVERINFODATA {
625 DWORD dwSize;
626 DWORD dwFlags;
627 GUID guidInfo;
628 DWORD dwExpectedSize;
629 LPVOID lpvData;
630 DWORD dwActualSize;
631 HRESULT ddRVal;
632 ULONG_PTR dwContext;
633 } DDHAL_GETDRIVERINFODATA;
634
635 /*****************************************************************************
636 * high-level ddraw implementation structures
637 */
638 typedef struct _IUNKNOWN_LIST {
639 struct _IUNKNOWN_LIST * lpLink;
640 LPGUID lpGuid;
641 IUnknown * lpIUnknown;
642 } IUNKNOWN_LIST,*LPIUNKNOWN_LIST;
643
644 typedef struct _PROCESS_LIST {
645 struct _PROCESS_LIST * lpLink;
646 DWORD dwProcessId;
647 DWORD dwRefCnt;
648 DWORD dwAlphaDepth;
649 DWORD dwZDepth;
650 } PROCESS_LIST,*LPPROCESS_LIST;
651
652 typedef struct _ATTACHLIST {
653 DWORD dwFlags;
654 struct _ATTACHLIST * lpLink;
655 LPDDRAWI_DDRAWSURFACE_LCL lpAttached;
656 LPDDRAWI_DDRAWSURFACE_INT lpIAttached;
657 } ATTACHLIST,*LPATTACHLIST;
658
659 #define DDAL_IMPLICIT 0x00000001
660
661 typedef struct _ACCESSRECTLIST {
662 struct _ACCESSRECTLIST * lpLink;
663 RECT rDest;
664 LPDDRAWI_DIRECTDRAW_LCL lpOwner;
665 LPVOID lpSurfaceData;
666 DWORD dwFlags;
667 LPHEAPALIASINFO lpHeapAliasInfo;
668 } ACCESSRECTLIST,*LPACCESSRECTLIST;
669
670 #define ACCESSRECT_VRAMSTYLE 0x00000001
671 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
672 #define ACCESSRECT_BROKEN 0x00000004
673
674 typedef struct _DBLNODE {
675 struct _DBLNODE * next;
676 struct _DBLNODE * prev;
677 LPDDRAWI_DDRAWSURFACE_LCL object;
678 LPDDRAWI_DDRAWSURFACE_INT object_int;
679 } DBLNODE,*LPDBLNODE;
680
681 typedef struct _DDRAWI_DIRECTDRAW_INT {
682 LPVOID lpVtbl;
683 LPDDRAWI_DIRECTDRAW_LCL lpLcl;
684 LPDDRAWI_DIRECTDRAW_INT lpLink;
685 DWORD dwIntRefCnt;
686 } DDRAWI_DIRECTDRAW_INT;
687
688 typedef struct _DDRAWI_DIRECTDRAW_LCL {
689 DWORD lpDDMore;
690 LPDDRAWI_DIRECTDRAW_GBL lpGbl;
691 DWORD dwUnused0;
692 DWORD dwLocalFlags;
693 DWORD dwLocalRefCnt;
694 DWORD dwProcessId;
695 IUnknown * pUnkOuter;
696 DWORD dwObsolete1;
697 ULONG_PTR hWnd;
698 ULONG_PTR hDC;
699 DWORD dwErrorMode;
700 LPDDRAWI_DDRAWSURFACE_INT lpPrimary;
701 LPDDRAWI_DDRAWSURFACE_INT lpCB;
702 DWORD dwPreferredMode;
703 /* DirectX 2 */
704 HINSTANCE hD3DInstance;
705 IUnknown * pD3DIUnknown;
706 LPDDHAL_CALLBACKS lpDDCB;
707 ULONG_PTR hDDVxd;
708 /* DirectX 5.0 */
709 DWORD dwAppHackFlags;
710 /* DirectX 5.0A */
711 ULONG_PTR hFocusWnd;
712 DWORD dwHotTracking;
713 DWORD dwIMEState;
714 /* DirectX 6.0 */
715 ULONG_PTR hWndPopup;
716 ULONG_PTR hDD;
717 ULONG_PTR hGammaCalibrator;
718 LPDDGAMMACALIBRATORPROC lpGammaCalibrator;
719 } DDRAWI_DIRECTDRAW_LCL;
720
721 #define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001
722 #define DDRAWILCL_ISFULLSCREEN 0x00000002
723 #define DDRAWILCL_SETCOOPCALLED 0x00000004
724 #define DDRAWILCL_ACTIVEYES 0x00000008
725 #define DDRAWILCL_ACTIVENO 0x00000010
726 #define DDRAWILCL_HOOKEDHWND 0x00000020
727 #define DDRAWILCL_ALLOWMODEX 0x00000040
728 #define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080
729 #define DDRAWILCL_MODEHASBEENCHANGED 0x00000100
730 #define DDRAWILCL_CREATEDWINDOW 0x00000200
731 #define DDRAWILCL_DIRTYDC 0x00000400
732 #define DDRAWILCL_DISABLEINACTIVATE 0x00000800
733 #define DDRAWILCL_CURSORCLIPPED 0x00001000
734 #define DDRAWILCL_EXPLICITMONITOR 0x00002000
735 #define DDRAWILCL_MULTITHREADED 0x00004000
736 #define DDRAWILCL_FPUSETUP 0x00008000
737 #define DDRAWILCL_POWEREDDOWN 0x00010000
738 #define DDRAWILCL_DIRECTDRAW7 0x00020000
739 #define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000
740 #define DDRAWILCL_FPUPRESERVE 0x00080000
741
742 typedef struct _DDRAWI_DIRECTDRAW_GBL {
743 DWORD dwRefCnt;
744 DWORD dwFlags;
745 FLATPTR fpPrimaryOrig;
746 DDCORECAPS ddCaps;
747 DWORD dwInternal1;
748 DWORD dwUnused1[9];
749 LPDDHAL_CALLBACKS lpDDCBtmp;
750 LPDDRAWI_DDRAWSURFACE_INT dsList;
751 LPDDRAWI_DDRAWPALETTE_INT palList;
752 LPDDRAWI_DDRAWCLIPPER_INT clipperList;
753 LPDDRAWI_DIRECTDRAW_GBL lp16DD;
754 DWORD dwMaxOverlays;
755 DWORD dwCurrOverlays;
756 DWORD dwMonitorFrequency;
757 DDCORECAPS ddHELCaps;
758 DWORD dwUnused2[50];
759 DDCOLORKEY ddckCKDestOverlay;
760 DDCOLORKEY ddckCKSrcOverlay;
761 VIDMEMINFO vmiData;
762 LPVOID lpDriverHandle;
763 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner;
764 DWORD dwModeIndex;
765 DWORD dwModeIndexOrig;
766 DWORD dwNumFourCC;
767 LPDWORD lpdwFourCC;
768 DWORD dwNumModes;
769 LPDDHALMODEINFO lpModeInfo;
770 PROCESS_LIST plProcessList;
771 DWORD dwSurfaceLockCount;
772 DWORD dwAliasedLockCnt;
773 ULONG_PTR dwReserved3;
774 ULONG_PTR hDD;
775 char cObsolete[12];
776 DWORD dwReserved1;
777 DWORD dwReserved2;
778 DBLNODE dbnOverlayRoot;
779 volatile LPWORD lpwPDeviceFlags;
780 DWORD dwPDevice;
781 DWORD dwWin16LockCnt;
782 DWORD dwUnused3;
783 DWORD hInstance;
784 DWORD dwEvent16;
785 DWORD dwSaveNumModes;
786 /* DirectX 2 */
787 ULONG_PTR lpD3DGlobalDriverData;
788 ULONG_PTR lpD3DHALCallbacks;
789 DDCORECAPS ddBothCaps;
790 /* DirectX 5.0 */
791 LPDDVIDEOPORTCAPS lpDDVideoPortCaps;
792 LPDDRAWI_DDVIDEOPORT_INT dvpList;
793 ULONG_PTR lpD3DHALCallbacks2;
794 RECT rectDevice;
795 DWORD cMonitors;
796 LPVOID gpbmiSrc;
797 LPVOID gpbmiDest;
798 LPHEAPALIASINFO phaiHeapAliases;
799 ULONG_PTR hKernelHandle;
800 ULONG_PTR pfnNotifyProc;
801 LPDDKERNELCAPS lpDDKernelCaps;
802 LPDDNONLOCALVIDMEMCAPS lpddNLVCaps;
803 LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps;
804 LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps;
805 ULONG_PTR lpD3DExtendedCaps;
806 /* DirectX 5.0A */
807 DWORD dwDOSBoxEvent;
808 RECT rectDesktop;
809 char cDriverName[MAX_DRIVER_NAME];
810 /* DirectX 6.0 */
811 ULONG_PTR lpD3DHALCallbacks3;
812 DWORD dwNumZPixelFormats;
813 LPDDPIXELFORMAT lpZPixelFormats;
814 LPDDRAWI_DDMOTIONCOMP_INT mcList;
815 DWORD hDDVxd;
816 DDSCAPSEX ddsCapsMore;
817 } DDRAWI_DIRECTDRAW_GBL;
818
819 #define DDRAWI_VIRTUALDESKTOP 0x00000008
820 #define DDRAWI_MODEX 0x00000010
821 #define DDRAWI_DISPLAYDRV 0x00000020
822 #define DDRAWI_FULLSCREEN 0x00000040
823 #define DDRAWI_MODECHANGED 0x00000080
824 #define DDRAWI_NOHARDWARE 0x00000100
825 #define DDRAWI_PALETTEINIT 0x00000200
826 #define DDRAWI_NOEMULATION 0x00000400
827 /* more... */
828
829 /* surfaces */
830 typedef struct _DDRAWI_DDRAWSURFACE_INT {
831 LPVOID lpVtbl;
832 LPDDRAWI_DDRAWSURFACE_LCL lpLcl;
833 LPDDRAWI_DDRAWSURFACE_INT lpLink;
834 DWORD dwIntRefCnt;
835 } DDRAWI_DDRAWSURFACE_INT;
836
837 typedef struct _DDRAWI_DDRAWSURFACE_GBL {
838 DWORD dwRefCnt;
839 DWORD dwGlobalFlags;
840 union {
841 LPACCESSRECTLIST lpRectList;
842 DWORD dwBlockSizeY;
843 } DUMMYUNIONNAME1;
844 union {
845 LPVMEMHEAP lpVidMemHeap;
846 DWORD dwBlockSizeX;
847 } DUMMYUNIONNAME2;
848 union {
849 LPDDRAWI_DIRECTDRAW_GBL lpDD;
850 LPVOID lpDDHandle;
851 } DUMMYUNIONNAME3;
852 FLATPTR fpVidMem;
853 union {
854 LONG lPitch;
855 DWORD dwLinearSize;
856 } DUMMYUNIONNAME4;
857 WORD wHeight;
858 WORD wWidth;
859 DWORD dwUsageCount;
860 ULONG_PTR dwReserved1; /* for display driver use */
861 /* optional (defaults to primary surface pixelformat) */
862 DDPIXELFORMAT ddpfSurface;
863 } DDRAWI_DDRAWSURFACE_GBL;
864
865 #define DDRAWISURFGBL_MEMFREE 0x00000001
866 #define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002
867 #define DDRAWISURFGBL_ISGDISURFACE 0x00000004
868 #define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008
869 #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010
870 #define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020
871 #define DDRAWISURFGBL_LOCKBROKEN 0x00000040
872 #define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080
873 #define DDRAWISURFGBL_ISCLIENTMEM 0x00000100
874 #define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200
875 #define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400
876 #define DDRAWISURFGBL_HARDWAREOPSTARTED 0x00000600
877 #define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800
878 #define DDRAWISURFGBL_VPORTDATA 0x00001000
879 #define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000
880 #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000
881 #define DDRAWISURFGBL_FASTLOCKHELD 0x00008000
882 #define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000
883
884 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE {
885 DWORD dwSize;
886 union {
887 DWORD dwPhysicalPageTable;
888 FLATPTR fpPhysicalVidMem;
889 } DUMMYUNIONNAME1;
890 LPDWORD pPageTable;
891 DWORD cPages;
892 ULONG_PTR dwSavedDCContext;
893 FLATPTR fpAliasedVidMem;
894 ULONG_PTR dwDriverReserved;
895 ULONG_PTR dwHELReserved;
896 DWORD cPageUnlocks;
897 ULONG_PTR hKernelSurface;
898 DWORD dwKernelRefCnt;
899 LPDDCOLORCONTROL lpColorInfo;
900 FLATPTR fpNTAlias;
901 DWORD dwContentsStamp;
902 LPVOID lpvUnswappedDriverReserved;
903 LPVOID lpDDRAWReserved2;
904 DWORD dwDDRAWReserved1;
905 DWORD dwDDRAWReserved2;
906 FLATPTR fpAliasOfVidMem;
907 } DDRAWI_DDRAWSURFACE_GBL_MORE;
908
909 /* the MS version of this macro was somewhat obfuscated and unreadable
910 * (possibly because of mediocre MS coders)... so I simplified it...
911 * (and so I commit no copyright violations either, hah) */
912 #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
913 (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
914
915 typedef struct _DDRAWI_DDRAWSURFACE_MORE {
916 DWORD dwSize;
917 IUNKNOWN_LIST * lpIUnknowns;
918 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
919 DWORD dwPageLockCount;
920 DWORD dwBytesAllocated;
921 LPDDRAWI_DIRECTDRAW_INT lpDD_int;
922 DWORD dwMipMapCount;
923 LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper;
924 /* DirectX 5.0 */
925 LPHEAPALIASINFO lpHeapAliasInfo;
926 DWORD dwOverlayFlags;
927 VOID *rgjunc;
928 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
929 LPDDOVERLAYFX lpddOverlayFX;
930 DDSCAPSEX ddsCapsEx;
931 DWORD dwTextureStage;
932 LPVOID lpDDRAWReserved;
933 LPVOID lpDDRAWReserved2;
934 LPVOID lpDDrawReserved3;
935 DWORD dwDDrawReserved4;
936 LPVOID lpDDrawReserved5;
937 LPDWORD lpGammaRamp;
938 LPDWORD lpOriginalGammaRamp;
939 LPVOID lpDDrawReserved6;
940 DWORD dwSurfaceHandle;
941 DWORD qwDDrawReserved8[2];
942 LPVOID lpDDrawReserved9;
943 DWORD cSurfaces;
944 LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2;
945 LPDDRAWI_DDRAWSURFACE_LCL *slist;
946 DWORD dwFVF;
947 LPVOID lpVB;
948 } DDRAWI_DDRAWSURFACE_MORE;
949
950 typedef struct _DDRAWI_DDRAWSURFACE_LCL {
951 LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore;
952 LPDDRAWI_DDRAWSURFACE_GBL lpGbl;
953 ULONG_PTR hDDSurface;
954 LPATTACHLIST lpAttachList;
955 LPATTACHLIST lpAttachListFrom;
956 DWORD dwLocalRefCnt;
957 DWORD dwProcessId;
958 DWORD dwFlags;
959 DDSCAPS ddsCaps;
960 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette;
961 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper;
962 DWORD dwModeCreatedIn;
963 DWORD dwBackBufferCount;
964 DDCOLORKEY ddckCKDestBlt;
965 DDCOLORKEY ddckCKSrcBlt;
966 ULONG_PTR hDC;
967 ULONG_PTR dwReserved1; /* for display driver use */
968 /* overlays only */
969 DDCOLORKEY ddckCKSrcOverlay;
970 DDCOLORKEY ddckCKDestOverlay;
971 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying;
972 DBLNODE dbnOverlayNode;
973 RECT rcOverlaySrc;
974 RECT rcOverlayDest;
975 DWORD dwClrXparent;
976 DWORD dwAlpha;
977 LONG lOverlayX;
978 LONG lOverlayY;
979 } DDRAWI_DDRAWSURFACE_LCL;
980
981 #define DDRAWISURF_ATTACHED 0x00000001
982 #define DDRAWISURF_IMPLICITCREATE 0x00000002
983 #define DDRAWISURF_ISFREE 0x00000004
984 #define DDRAWISURF_ATTACHED_FROM 0x00000008
985 #define DDRAWISURF_IMPLICITROOT 0x00000010
986 #define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020
987 #define DDRAWISURF_DATAISALIASED 0x00000040
988 #define DDRAWISURF_HASDC 0x00000080
989 #define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100
990 #define DDRAWISURF_HASCKEYDESTBLT 0x00000200
991 #define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400
992 #define DDRAWISURF_HASCKEYSRCBLT 0x00000800
993 #define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000
994 #define DDRAWISURF_HASPIXELFORMAT 0x00002000
995 #define DDRAWISURF_HASOVERLAYDATA 0x00004000
996 #define DDRAWISURF_SETGAMMA 0x00008000
997 /* more... */
998 #define DDRAWISURF_INVALID 0x10000000
999
1000 /* palettes */
1001 typedef struct _DDRAWI_DDRAWPALETTE_INT {
1002 LPVOID lpVtbl;
1003 LPDDRAWI_DDRAWPALETTE_LCL lpLcl;
1004 LPDDRAWI_DDRAWPALETTE_INT lpLink;
1005 DWORD dwIntRefCnt;
1006 } DDRAWI_DDRAWPALETTE_INT;
1007
1008 typedef struct _DDRAWI_DDRAWPALETTE_GBL {
1009 DWORD dwRefCnt;
1010 DWORD dwFlags;
1011 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
1012 DWORD dwProcessId;
1013 LPPALETTEENTRY lpColorTable;
1014 union {
1015 ULONG_PTR dwReserved1; /* for display driver use */
1016 HPALETTE hHELGDIPalette;
1017 } DUMMYUNIONNAME1;
1018 /* DirectX 5.0 */
1019 DWORD dwDriverReserved;
1020 DWORD dwContentsStamp;
1021 /* DirectX 6.0 */
1022 DWORD dwSaveStamp;
1023 /* DirectX 7.0 */
1024 DWORD dwHandle;
1025 } DDRAWI_DDRAWPALETTE_GBL;
1026
1027 #define DDRAWIPAL_256 0x00000001
1028 #define DDRAWIPAL_16 0x00000002
1029 #define DDRAWIPAL_GDI 0x00000004
1030 #define DDRAWIPAL_STORED_8 0x00000008
1031 #define DDRAWIPAL_STORED_16 0x00000010
1032 #define DDRAWIPAL_STORED_24 0x00000020
1033 #define DDRAWIPAL_EXCLUSIVE 0x00000040
1034 #define DDRAWIPAL_INHEL 0x00000080
1035 #define DDRAWIPAL_DIRTY 0x00000100
1036 #define DDRAWIPAL_ALLOW256 0x00000200
1037 #define DDRAWIPAL_4 0x00000400
1038 #define DDRAWIPAL_2 0x00000800
1039 #define DDRAWIPAL_STORED_8INDEX 0x00001000
1040 #define DDRAWIPAL_ALPHA 0x00002000
1041
1042 typedef struct _DDRAWI_DDRAWPALETTE_LCL {
1043 DWORD lpPalMore;
1044 LPDDRAWI_DDRAWPALETTE_GBL lpGbl;
1045 ULONG_PTR dwUnused0;
1046 DWORD dwLocalRefCnt;
1047 IUnknown * pUnkOuter;
1048 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
1049 ULONG_PTR dwReserved1;
1050 /* DirectX 6.0 */
1051 ULONG_PTR dwDDRAWReserved1;
1052 ULONG_PTR dwDDRAWReserved2;
1053 ULONG_PTR dwDDRAWReserved3;
1054 } DDRAWI_DDRAWPALETTE_LCL;
1055
1056 #ifdef __cplusplus
1057 } /* extern "C" */
1058 #endif
1059
1060 #endif /* __WINE_DDRAWI_H */