1 /*
2  * Direct3D 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_D3DHAL_H
23 #define __WINE_D3DHAL_H
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 #include <d3d.h>
30 
31 /*****************************************************************************
32  * device info structures
33  */
34 typedef struct _D3DDeviceDesc_V1 {
35   DWORD			dwSize;
36   DWORD			dwFlags;
37   D3DCOLORMODEL		dcmColorModel;
38   DWORD			dwDevCaps;
39   D3DTRANSFORMCAPS	dtcTransformCaps;
40   WINBOOL			bClipping;
41   D3DLIGHTINGCAPS	dlcLightingCaps;
42   D3DPRIMCAPS		dpcLineCaps;
43   D3DPRIMCAPS		dpcTriCaps;
44   DWORD			dwDeviceRenderBitDepth;
45   DWORD			dwDeviceZBufferBitDepth;
46   DWORD			dwMaxBufferSize;
47   DWORD			dwMaxVertexCount;
48 } D3DDEVICEDESC_V1,*LPD3DDEVICEDESC_V1;
49 
50 typedef struct _D3DDeviceDesc_V2
51 {
52   DWORD dwSize;
53   DWORD dwFlags;
54   D3DCOLORMODEL dcmColorModel;
55   DWORD dwDevCaps;
56   D3DTRANSFORMCAPS dtcTransformCaps;
57   WINBOOL bClipping;
58   D3DLIGHTINGCAPS dlcLightingCaps;
59   D3DPRIMCAPS dpcLineCaps;
60   D3DPRIMCAPS dpcTriCaps;
61   DWORD dwDeviceRenderBitDepth;
62   DWORD dwDeviceZBufferBitDepth;
63   DWORD dwMaxBufferSize;
64   DWORD dwMaxVertexCount;
65 
66   /* DirectX 5 */
67   DWORD dwMinTextureWidth;
68   DWORD dwMinTextureHeight;
69   DWORD dwMaxTextureWidth;
70   DWORD dwMaxTextureHeight;
71   DWORD dwMinStippleWidth;
72   DWORD dwMaxStippleWidth;
73   DWORD dwMinStippleHeight;
74   DWORD dwMaxStippleHeight;
75 } D3DDEVICEDESC_V2, *LPD3DDEVICEDESC_V2;
76 
77 typedef struct _D3DDeviceDesc_V3
78 {
79   DWORD dwSize;
80   DWORD dwFlags;
81   D3DCOLORMODEL dcmColorModel;
82   DWORD dwDevCaps;
83   D3DTRANSFORMCAPS dtcTransformCaps;
84   WINBOOL bClipping;
85   D3DLIGHTINGCAPS dlcLightingCaps;
86   D3DPRIMCAPS dpcLineCaps;
87   D3DPRIMCAPS dpcTriCaps;
88   DWORD dwDeviceRenderBitDepth;
89   DWORD dwDeviceZBufferBitDepth;
90   DWORD dwMaxBufferSize;
91   DWORD dwMaxVertexCount;
92 
93   /* DirectX 5 */
94   DWORD dwMinTextureWidth;
95   DWORD dwMinTextureHeight;
96   DWORD dwMaxTextureWidth;
97   DWORD dwMaxTextureHeight;
98   DWORD dwMinStippleWidth;
99   DWORD dwMaxStippleWidth;
100   DWORD dwMinStippleHeight;
101   DWORD dwMaxStippleHeight;
102 
103   /* DirectX 6 */
104   DWORD dwMaxTextureRepeat;
105   DWORD dwMaxTextureAspectRatio;
106   DWORD dwMaxAnisotropy;
107   D3DVALUE dvGuardBandLeft;
108   D3DVALUE dvGuardBandTop;
109   D3DVALUE dvGuardBandRight;
110   D3DVALUE dvGuardBandBottom;
111   D3DVALUE dvExtentsAdjust;
112   DWORD dwStencilCaps;
113   DWORD dwFVFCaps;
114   DWORD dwTextureOpCaps;
115   WORD wMaxTextureBlendStages;
116   WORD wMaxSimultaneousTextures;
117 } D3DDEVICEDESC_V3, *LPD3DDEVICEDESC_V3;
118 
119 typedef struct _D3DHAL_GLOBALDRIVERDATA {
120   DWORD			dwSize;
121   D3DDEVICEDESC_V1	hwCaps;
122   DWORD			dwNumVertices;
123   DWORD			dwNumClipVertices;
124   DWORD			dwNumTextureFormats;
125   LPDDSURFACEDESC	lpTextureFormats;
126 } D3DHAL_GLOBALDRIVERDATA,*LPD3DHAL_GLOBALDRIVERDATA;
127 
128 typedef struct _D3DHAL_D3DEXTENDEDCAPS {
129   DWORD			dwSize;
130   /* DirectX 5 */
131   DWORD			dwMinTextureWidth, dwMaxTextureWidth;
132   DWORD			dwMinTextureHeight, dwMaxTextureHeight;
133   DWORD			dwMinStippleWidth, dwMaxStippleWidth;
134   DWORD			dwMinStippleHeight, dwMaxStippleHeight;
135   /* DirectX 6 */
136   DWORD			dwMaxTextureRepeat;
137   DWORD			dwMaxTextureAspectRatio;
138   DWORD			dwMaxAnisotropy;
139   D3DVALUE		dvGuardBandLeft;
140   D3DVALUE		dvGuardBandTop;
141   D3DVALUE		dvGuardBandRight;
142   D3DVALUE		dvGuardBandBottom;
143   D3DVALUE		dvExtentsAdjust;
144   DWORD			dwStencilCaps;
145   DWORD			dwFVFCaps;
146   DWORD			dwTextureOpCaps;
147   WORD			wMaxTextureBlendStages;
148   WORD			wMaxSimultaneousTextures;
149   /* DirectX 7 */
150   DWORD			dwMaxActiveLights;
151   D3DVALUE		dvMaxVertexW;
152   WORD			wMaxUserClipPlanes;
153   WORD			wMaxVertexBlendMatrices;
154   DWORD			dwVertexProcessingCaps;
155   DWORD			dwReserved1;
156   DWORD			dwReserved2;
157   DWORD			dwReserved3;
158   DWORD			dwReserved4;
159 } D3DHAL_D3DEXTENDEDCAPS,*LPD3DHAL_D3DEXTENDEDCAPS;
160 
161 /*****************************************************************************
162  * d3d->driver callbacks
163  */
164 typedef struct _D3DHAL_CONTEXTCREATEDATA	*LPD3DHAL_CONTEXTCREATEDATA;
165 typedef struct _D3DHAL_CONTEXTDESTROYDATA	*LPD3DHAL_CONTEXTDESTROYDATA;
166 typedef struct _D3DHAL_CONTEXTDESTROYALLDATA	*LPD3DHAL_CONTEXTDESTROYALLDATA;
167 typedef struct _D3DHAL_SCENECAPTUREDATA		*LPD3DHAL_SCENECAPTUREDATA;
168 typedef struct _D3DHAL_RENDERSTATEDATA		*LPD3DHAL_RENDERSTATEDATA;
169 typedef struct _D3DHAL_RENDERPRIMITIVEDATA	*LPD3DHAL_RENDERPRIMITIVEDATA;
170 typedef struct _D3DHAL_TEXTURECREATEDATA	*LPD3DHAL_TEXTURECREATEDATA;
171 typedef struct _D3DHAL_TEXTUREDESTROYDATA	*LPD3DHAL_TEXTUREDESTROYDATA;
172 typedef struct _D3DHAL_TEXTURESWAPDATA		*LPD3DHAL_TEXTURESWAPDATA;
173 typedef struct _D3DHAL_TEXTUREGETSURFDATA	*LPD3DHAL_TEXTUREGETSURFDATA;
174 typedef struct _D3DHAL_GETSTATEDATA		*LPD3DHAL_GETSTATEDATA;
175 
176 typedef DWORD (PASCAL *LPD3DHAL_CONTEXTCREATECB)    (LPD3DHAL_CONTEXTCREATEDATA);
177 typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYCB)   (LPD3DHAL_CONTEXTDESTROYDATA);
178 typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYALLCB)(LPD3DHAL_CONTEXTDESTROYALLDATA);
179 typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB)	    (LPD3DHAL_SCENECAPTUREDATA);
180 typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB)	    (LPD3DHAL_RENDERSTATEDATA);
181 typedef DWORD (PASCAL *LPD3DHAL_RENDERPRIMITIVECB)  (LPD3DHAL_RENDERPRIMITIVEDATA);
182 typedef DWORD (PASCAL *LPD3DHAL_TEXTURECREATECB)    (LPD3DHAL_TEXTURECREATEDATA);
183 typedef DWORD (PASCAL *LPD3DHAL_TEXTUREDESTROYCB)   (LPD3DHAL_TEXTUREDESTROYDATA);
184 typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB)	    (LPD3DHAL_TEXTURESWAPDATA);
185 typedef DWORD (PASCAL *LPD3DHAL_TEXTUREGETSURFCB)   (LPD3DHAL_TEXTUREGETSURFDATA);
186 typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB)	    (LPD3DHAL_GETSTATEDATA);
187 
188 typedef struct _D3DHAL_CALLBACKS {
189   DWORD				dwSize;
190   LPD3DHAL_CONTEXTCREATECB	ContextCreate;
191   LPD3DHAL_CONTEXTDESTROYCB	ContextDestroy;
192   LPD3DHAL_CONTEXTDESTROYALLCB	ContextDestroyAll;
193   LPD3DHAL_SCENECAPTURECB	SceneCapture;
194   LPVOID			lpReserved10;
195   LPVOID			lpReserved11;
196   LPD3DHAL_RENDERSTATECB	RenderState;
197   LPD3DHAL_RENDERPRIMITIVECB	RenderPrimitive;
198   DWORD				dwReserved;
199   LPD3DHAL_TEXTURECREATECB	TextureCreate;
200   LPD3DHAL_TEXTUREDESTROYCB	TextureDestroy;
201   LPD3DHAL_TEXTURESWAPCB	TextureSwap;
202   LPD3DHAL_TEXTUREGETSURFCB	TextureGetSurf;
203   /* now why did MS create CALLBACKS2 and CALLBACKS3 structures if
204    * all these reserved fields were available? we may never know */
205   LPVOID			lpReserved12;
206   LPVOID			lpReserved13;
207   LPVOID			lpReserved14;
208   LPVOID			lpReserved15;
209   LPVOID			lpReserved16;
210   LPVOID			lpReserved17;
211   LPVOID			lpReserved18;
212   LPVOID			lpReserved19;
213   LPVOID			lpReserved20;
214   LPVOID			lpReserved21;
215   LPD3DHAL_GETSTATECB		GetState;
216   DWORD				dwReserved0;
217   DWORD				dwReserved1;
218   DWORD				dwReserved2;
219   DWORD				dwReserved3;
220   DWORD				dwReserved4;
221   DWORD				dwReserved5;
222   DWORD				dwReserved6;
223   DWORD				dwReserved7;
224   DWORD				dwReserved8;
225   DWORD				dwReserved9;
226 } D3DHAL_CALLBACKS,*LPD3DHAL_CALLBACKS;
227 
228 typedef struct _D3DHAL_SETRENDERTARGETDATA		*LPD3DHAL_SETRENDERTARGETDATA;
229 typedef struct _D3DHAL_CLEARDATA			*LPD3DHAL_CLEARDATA;
230 typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA		*LPD3DHAL_DRAWONEPRIMITIVEDATA;
231 typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA	*LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA;
232 typedef struct _D3DHAL_DRAWPRIMITIVESDATA		*LPD3DHAL_DRAWPRIMITIVESDATA;
233 
234 typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB)	  (LPD3DHAL_SETRENDERTARGETDATA);
235 typedef DWORD (PASCAL *LPD3DHAL_CLEARCB)		  (LPD3DHAL_CLEARDATA);
236 typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB)	  (LPD3DHAL_DRAWONEPRIMITIVEDATA);
237 typedef DWORD (PASCAL *LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA);
238 typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB)	  (LPD3DHAL_DRAWPRIMITIVESDATA);
239 
240 typedef struct _D3DHAL_CALLBACKS2 {
241   DWORD					dwSize;
242   DWORD					dwFlags;
243   LPD3DHAL_SETRENDERTARGETCB		SetRenderTarget;
244   LPD3DHAL_CLEARCB			Clear;
245   LPD3DHAL_DRAWONEPRIMITIVECB		DrawOnePrimitive;
246   LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB	DrawOneIndexedPrimitive;
247   LPD3DHAL_DRAWPRIMITIVESCB		DrawPrimitives;
248 } D3DHAL_CALLBACKS2,*LPD3DHAL_CALLBACKS2;
249 
250 typedef struct _D3DHAL_CLEAR2DATA			*LPD3DHAL_CLEAR2DATA;
251 typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA	*LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA;
252 typedef struct _D3DHAL_DRAWPRIMITIVES2DATA		*LPD3DHAL_DRAWPRIMITIVES2DATA;
253 
254 typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB)		  (LPD3DHAL_CLEAR2DATA);
255 typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA);
256 typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB)	  (LPD3DHAL_DRAWPRIMITIVES2DATA);
257 
258 typedef struct _D3DHAL_CALLBACKS3 {
259   DWORD					dwSize;
260   DWORD					dwFlags;
261   LPD3DHAL_CLEAR2CB			Clear2;
262   LPVOID				lpvReserved;
263   LPD3DHAL_VALIDATETEXTURESTAGESTATECB	ValidateTextureStageState;
264   LPD3DHAL_DRAWPRIMITIVES2CB		DrawPrimitives2;
265 } D3DHAL_CALLBACKS3,*LPD3DHAL_CALLBACKS3;
266 
267 /*****************************************************************************
268  * parameter structures
269  */
270 typedef struct _D3DHAL_CONTEXTCREATEDATA {
271   union {
272     LPDDRAWI_DIRECTDRAW_GBL	lpDDGbl; /* pre-DirectX 7 */
273     LPDDRAWI_DIRECTDRAW_LCL	lpDDLcl; /* DirectX 7 */
274   } DUMMYUNIONNAME1;
275   union {
276     LPDIRECTDRAWSURFACE		lpDDS;
277     LPDDRAWI_DDRAWSURFACE_LCL	lpDDSLcl; /* DirectX 7 */
278   } DUMMYUNIONNAME2;
279   union {
280     LPDIRECTDRAWSURFACE		lpDDSZ;
281     LPDDRAWI_DDRAWSURFACE_LCL	lpDDSZLcl; /* DirectX 7 */
282   } DUMMYUNIONNAME3;
283   union {
284     DWORD			dwPID;
285     ULONG_PTR			dwrstates;
286   } DUMMYUNIONNAME4;
287   ULONG_PTR			dwhContext;
288   HRESULT			ddrval;
289 } D3DHAL_CONTEXTCREATEDATA;
290 
291 typedef struct _D3DHAL_CONTEXTDESTROYDATA {
292   ULONG_PTR			dwhContext;
293   HRESULT			ddrval;
294 } D3DHAL_CONTEXTDESTROYDATA;
295 
296 typedef struct _D3DHAL_CONTEXTDESTROYALLDATA {
297   DWORD				dwPID;
298   HRESULT			ddrval;
299 } D3DHAL_CONTEXTDESTROYALLDATA;
300 
301 typedef struct _D3DHAL_SCENECAPTUREDATA {
302   ULONG_PTR			dwhContext;
303   DWORD				dwFlag;
304   HRESULT			ddrval;
305 } D3DHAL_SCENECAPTUREDATA;
306 
307 #define D3DHAL_SCENE_CAPTURE_START	0x00000000
308 #define D3DHAL_SCENE_CAPTURE_END	0x00000001
309 
310 typedef struct _D3DHAL_SETRENDERTARGETDATA {
311   ULONG_PTR			dwhContext;
312   union {
313     LPDIRECTDRAWSURFACE		lpDDS;
314     LPDDRAWI_DDRAWSURFACE_LCL	lpDDSLcl;
315   } DUMMYUNIONNAME1;
316   union {
317     LPDIRECTDRAWSURFACE		lpDDSZ;
318     LPDDRAWI_DDRAWSURFACE_LCL	lpDDSZLcl;
319   } DUMMYUNIONNAME2;
320   HRESULT			ddrval;
321 } D3DHAL_SETRENDERTARGETDATA;
322 
323 typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
324   ULONG_PTR			dwhContext;
325   DWORD				dwFlags;
326   DWORD				dwVertexType;
327   LPDDRAWI_DDRAWSURFACE_LCL	lpDDCommands;
328   DWORD				dwCommandOffset;
329   DWORD				dwCommandLength;
330   union {
331     LPDDRAWI_DDRAWSURFACE_LCL	lpDDVertex;
332     LPVOID			lpVertices;
333   } DUMMYUNIONNAME1;
334   DWORD				dwVertexOffset;
335   DWORD				dwVertexLength;
336   DWORD				dwReqVertexBufSize;
337   DWORD				dwReqCommandBufSize;
338   LPDWORD			lpdwRStates;
339   union {
340     DWORD			dwVertexSize;
341     HRESULT			ddrval;
342   } DUMMYUNIONNAME2;
343   DWORD				dwErrorOffset;
344 } D3DHAL_DRAWPRIMITIVES2DATA;
345 
346 #define D3DHALDP2_USERMEMVERTICES	0x00000001
347 #define D3DHALDP2_EXECUTEBUFFER		0x00000002
348 #define D3DHALDP2_SWAPVERTEXBUFFER	0x00000004
349 #define D3DHALDP2_SWAPCOMMANDBUFFER	0x00000008
350 #define D3DHALDP2_REQVERTEXBUFSIZE	0x00000010
351 #define D3DHALDP2_REQCOMMANDBUFSIZE	0x00000020
352 #define D3DHALDP2_VIDMEMVERTEXBUF	0x00000040
353 #define D3DHALDP2_VIDMEMCOMMANDBUF	0x00000080
354 
355 /*****************************************************************************
356  * DrawPrimitives2 command structures
357  */
358 typedef struct _D3DHAL_DP2COMMAND {
359   BYTE bCommand;
360   BYTE bReserved;
361   union {
362     WORD wPrimitiveCount;
363     WORD wStateCount;
364   } DUMMYUNIONNAME;
365 } D3DHAL_DP2COMMAND,*LPD3DHAL_DP2COMMAND;
366 
367 typedef enum _D3DHAL_DP2OPERATION {
368   D3DDP2OP_POINTS		= 1,
369   D3DDP2OP_INDEXEDLINELIST	= 2,
370   D3DDP2OP_INDEXEDTRIANGLELIST	= 3,
371   D3DDP2OP_RENDERSTATE		= 8,
372   D3DDP2OP_LINELIST		= 15,
373   D3DDP2OP_LINESTRIP		= 16,
374   D3DDP2OP_INDEXEDLINESTRIP	= 17,
375   D3DDP2OP_TRIANGLELIST		= 18,
376   D3DDP2OP_TRIANGLESTRIP	= 19,
377   D3DDP2OP_INDEXEDTRIANGLESTRIP	= 20,
378   D3DDP2OP_TRIANGLEFAN		= 21,
379   D3DDP2OP_INDEXEDTRIANGLEFAN	= 22,
380   D3DDP2OP_TRIANGLEFAN_IMM	= 23,
381   D3DDP2OP_LINELIST_IMM		= 24,
382   D3DDP2OP_TEXTURESTAGESTATE	= 25,
383   D3DDP2OP_INDEXEDTRIANGLELIST2	= 26,
384   D3DDP2OP_INDEXEDLINELIST2	= 27,
385   D3DDP2OP_VIEWPORTINFO		= 28,
386   D3DDP2OP_WINFO		= 29,
387   /* pre-DirectX 7 interfaces */
388   D3DDP2OP_SETPALETTE		= 30,
389   D3DDP2OP_UPDATEPALETTE	= 31,
390   /* DirectX 7 interfaces */
391   D3DDP2OP_ZRANGE		= 32,
392   D3DDP2OP_SETMATERIAL		= 33,
393   D3DDP2OP_SETLIGHT		= 34,
394   D3DDP2OP_CREATELIGHT		= 35,
395   D3DDP2OP_SETTRANSFORM		= 36,
396   D3DDP2OP_TEXBLT		= 38,
397   D3DDP2OP_STATESET		= 39,
398   D3DDP2OP_SETPRIORITY		= 40,
399   /* all interfaces */
400   D3DDP2OP_SETRENDERTARGET	= 41,
401   D3DDP2OP_CLEAR		= 42,
402   /* DirectX 7 interfaces */
403   D3DDP2OP_SETTEXLOD		= 43,
404   D3DPP2OP_SETCLIPPLANE		= 44
405 } D3DHAL_DP2OPERATION;
406 
407 /* point primitives */
408 
409 typedef struct _D3DHAL_POINTS {
410   WORD wCount;
411   WORD wVStart;
412 } D3DHAL_DP2POINTS,*LPD3DHAL_DP2POINTS;
413 
414 /* line primitives */
415 
416 typedef struct _D3DHAL_DP2STARTVERTEX {
417   WORD wVStart;
418 } D3DHAL_DP2STARTVERTEX,*LPD3DHAL_DP2STARTVERTEX;
419 
420 typedef struct _D3DHAL_DP2LINELIST {
421   WORD wVStart;
422 } D3DHAL_DP2LINELIST,*LPD3DHAL_DP2LINELIST;
423 
424 typedef struct _D3DHAL_DP2INDEXEDLINELIST {
425   WORD wV1;
426   WORD wV2;
427 } D3DHAL_DP2INDEXEDLINELIST,*LPD3DHAL_DP2INDEXEDLINELIST;
428 
429 typedef struct _D3DHAL_DP2LINESTRIP {
430   WORD wVStart;
431 } D3DHAL_DP2LINESTRIP,*LPD3DHAL_DP2LINESTRIP;
432 
433 typedef struct _D3DHAL_DP2INDEXEDLINESTRIP {
434   WORD wV[2];
435 } D3DHAL_DP2INDEXEDLINESTRIP,*LPD3DHAL_DP2INDEXEDLINESTRIP;
436 
437 /* triangle primitives */
438 
439 typedef struct _D3DHAL_DP2TRIANGLELIST {
440   WORD wVStart;
441 } D3DHAL_DP2TRIANGLELIST,*LPD3DHAL_DP2TRIANGLELIST;
442 
443 typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST {
444   WORD wV1;
445   WORD wV2;
446   WORD wV3;
447   WORD wFlags;
448 } D3DHAL_DP2INDEXEDTRIANGLELIST,*LPD3DHAL_DP2INDEXEDTRIANGLELIST;
449 
450 typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2 {
451   WORD wV1;
452   WORD wV2;
453   WORD wV3;
454 } D3DHAL_DP2INDEXEDTRIANGLELIST2,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2;
455 
456 typedef struct _D3DHAL_DP2TRIANGLESTRIP {
457   WORD wVStart;
458 } D3DHAL_DP2TRIANGLESTRIP,*LPD3DHAL_DP2TRIANGLESTRIP;
459 
460 typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP {
461   WORD wV[3];
462 } D3DHAL_DP2INDEXEDTRIANGLESTRIP,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP;
463 
464 typedef struct _D3DHAL_DP2TRIANGLEFAN {
465   WORD wVStart;
466 } D3DHAL_DP2TRIANGLEFAN,*LPD3DHAL_DP2TRIANGLEFAN;
467 
468 typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN {
469   WORD wV[3];
470 } D3DHAL_DP2INDEXEDTRIANGLEFAN,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN;
471 
472 typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM {
473   DWORD dwEdgeFlags;
474 } D3DHAL_DP2TRIANGLEFAN_IMM,*LPD3DHAL_DP2TRIANGLEFAN_IMM;
475 
476 /* render states */
477 typedef struct _D3DHAL_DP2RENDERSTATE {
478   D3DRENDERSTATETYPE	RenderState;
479   union {
480     D3DVALUE dvState;
481     DWORD dwState;
482   } DUMMYUNIONNAME;
483 } D3DHAL_DP2RENDERSTATE,*LPD3DHAL_DP2RENDERSTATE;
484 
485 typedef struct _D3DHAL_DP2TEXTURESTAGESTATE {
486   WORD	wStage;
487   WORD	TSState;
488   DWORD dwValue;
489 } D3DHAL_DP2TEXTURESTAGESTATE,*LPD3DHAL_DP2TEXTURESTAGESTATE;
490 
491 #define D3DTSS_TEXTUREMAP 0
492 
493 typedef struct _D3DHAL_DP2VIEWPORTINFO {
494   DWORD dwX;
495   DWORD dwY;
496   DWORD dwWidth;
497   DWORD dwHeight;
498 } D3DHAL_DP2VIEWPORTINFO,*LPD3DHAL_DP2VIEWPORTINFO;
499 
500 typedef struct _D3DHAL_DP2WINFO {
501   D3DVALUE dwWNear;
502   D3DVALUE dwWFar;
503 } D3DHAL_DP2WINFO,*LPD3DHAL_DP2WINFO;
504 
505 typedef struct _D3DHAL_DP2SETPALETTE {
506   DWORD dwPaletteHandle;
507   DWORD dwPaletteFlags;
508   DWORD dwSurfaceHandle;
509 } D3DHAL_DP2SETPALETTE,*LPD3DHAL_DP2SETPALETTE;
510 
511 typedef struct _D3DHAL_DP2UPDATEPALETTE {
512   DWORD dwPaletteHandle;
513   WORD	wStartIndex;
514   WORD	wNumEntries;
515 } D3DHAL_DP2UPDATEPALETTE,*LPD3DHAL_DP2UPDATEPALETTE;
516 
517 typedef struct _D3DHAL_DP2ZRANGE {
518   D3DVALUE dvMinZ;
519   D3DVALUE dvMaxZ;
520 } D3DHAL_DP2ZRANGE,*LPD3DHAL_DP2ZRANGE;
521 
522 typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL,*LPD3DHAL_DP2SETMATERIAL;
523 
524 typedef struct _D3DHAL_DP2SETLIGHT {
525   DWORD dwIndex;
526   DWORD dwDataType;
527 } D3DHAL_DP2SETLIGHT,*LPD3DHAL_DP2SETLIGHT;
528 
529 #define D3DHAL_SETLIGHT_ENABLE	0
530 #define D3DHAL_SETLIGHT_DISABLE	1
531 #define D3DHAL_SETLIGHT_DATA	2
532 
533 typedef struct _D3DHAL_DP2CREATELIGHT {
534   DWORD dwIndex;
535 } D3DHAL_DP2CREATELIGHT,*LPD3DHAL_DP2CREATELIGHT;
536 
537 typedef struct _D3DHAL_DP2SETTRANSFORM {
538   D3DTRANSFORMSTATETYPE	xfrmType;
539   D3DMATRIX		matrix;
540 } D3DHAL_DP2SETTRANSFORM,*LPD3DHAL_DP2SETTRANSFORM;
541 
542 typedef struct _D3DHAL_DP2TEXBLT {
543   DWORD dwDDDestSurface;
544   DWORD dwDDSrcSurface;
545   POINT pDest;
546   RECTL rSrc;
547   DWORD dwFlags;
548 } D3DHAL_DP2TEXBLT,*LPD3DHAL_DP2TEXBLT;
549 
550 typedef struct _D3DHAL_DP2STATESET {
551   DWORD               dwOperation;
552   DWORD               dwParam;
553   D3DSTATEBLOCKTYPE   sbType;
554 } D3DHAL_DP2STATESET,*LPD3DHAL_DP2STATESET;
555 
556 #define D3DHAL_STATESETBEGIN	0
557 #define D3DHAL_STATESETEND	1
558 #define D3DHAL_STATESETDELETE	2
559 #define D3DHAL_STATESETEXECUTE	3
560 #define D3DHAL_STATESETCAPTURE	4
561 
562 typedef struct _D3DHAL_DP2SETPRIORITY {
563   DWORD dwDDSurface;
564   DWORD dwPriority;
565 } D3DHAL_DP2SETPRIORITY,*LPD3DHAL_DP2SETPRIORITY;
566 
567 typedef struct _D3DHAL_DP2SETRENDERTARGET {
568   DWORD hRenderTarget;
569   DWORD hZBuffer;
570 } D3DHAL_DP2SETRENDERTARGET,*LPD3DHAL_DP2SETRENDERTARGET;
571 
572 typedef struct _D3DHAL_DP2CLEAR {
573   DWORD		dwFlags;
574   DWORD		dwFillColor;
575   D3DVALUE	dvFillDepth;
576   DWORD		dwFillStencil;
577   RECT		Rects[1];
578 } D3DHAL_DP2CLEAR,*LPD3DHAL_DP2CLEAR;
579 
580 typedef struct _D3DHAL_DP2SETTEXLOD {
581   DWORD dwDDSurface;
582   DWORD dwLOD;
583 } D3DHAL_DP2SETTEXLOD,*LPD3DHAL_DP2SETTEXLOD;
584 
585 #ifdef __cplusplus
586 } /* extern "C" */
587 #endif
588 
589 #endif /* __WINE_D3DHAL_H */
590