master
  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
 26extern "C" {
 27#endif
 28
 29#include <d3d.h>
 30
 31/*****************************************************************************
 32 * device info structures
 33 */
 34typedef 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
 50typedef 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
 77typedef 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
119typedef 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
128typedef 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 */
164typedef struct _D3DHAL_CONTEXTCREATEDATA	*LPD3DHAL_CONTEXTCREATEDATA;
165typedef struct _D3DHAL_CONTEXTDESTROYDATA	*LPD3DHAL_CONTEXTDESTROYDATA;
166typedef struct _D3DHAL_CONTEXTDESTROYALLDATA	*LPD3DHAL_CONTEXTDESTROYALLDATA;
167typedef struct _D3DHAL_SCENECAPTUREDATA		*LPD3DHAL_SCENECAPTUREDATA;
168typedef struct _D3DHAL_RENDERSTATEDATA		*LPD3DHAL_RENDERSTATEDATA;
169typedef struct _D3DHAL_RENDERPRIMITIVEDATA	*LPD3DHAL_RENDERPRIMITIVEDATA;
170typedef struct _D3DHAL_TEXTURECREATEDATA	*LPD3DHAL_TEXTURECREATEDATA;
171typedef struct _D3DHAL_TEXTUREDESTROYDATA	*LPD3DHAL_TEXTUREDESTROYDATA;
172typedef struct _D3DHAL_TEXTURESWAPDATA		*LPD3DHAL_TEXTURESWAPDATA;
173typedef struct _D3DHAL_TEXTUREGETSURFDATA	*LPD3DHAL_TEXTUREGETSURFDATA;
174typedef struct _D3DHAL_GETSTATEDATA		*LPD3DHAL_GETSTATEDATA;
175
176typedef DWORD (PASCAL *LPD3DHAL_CONTEXTCREATECB)    (LPD3DHAL_CONTEXTCREATEDATA);
177typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYCB)   (LPD3DHAL_CONTEXTDESTROYDATA);
178typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYALLCB)(LPD3DHAL_CONTEXTDESTROYALLDATA);
179typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB)	    (LPD3DHAL_SCENECAPTUREDATA);
180typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB)	    (LPD3DHAL_RENDERSTATEDATA);
181typedef DWORD (PASCAL *LPD3DHAL_RENDERPRIMITIVECB)  (LPD3DHAL_RENDERPRIMITIVEDATA);
182typedef DWORD (PASCAL *LPD3DHAL_TEXTURECREATECB)    (LPD3DHAL_TEXTURECREATEDATA);
183typedef DWORD (PASCAL *LPD3DHAL_TEXTUREDESTROYCB)   (LPD3DHAL_TEXTUREDESTROYDATA);
184typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB)	    (LPD3DHAL_TEXTURESWAPDATA);
185typedef DWORD (PASCAL *LPD3DHAL_TEXTUREGETSURFCB)   (LPD3DHAL_TEXTUREGETSURFDATA);
186typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB)	    (LPD3DHAL_GETSTATEDATA);
187
188typedef 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
228typedef struct _D3DHAL_SETRENDERTARGETDATA		*LPD3DHAL_SETRENDERTARGETDATA;
229typedef struct _D3DHAL_CLEARDATA			*LPD3DHAL_CLEARDATA;
230typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA		*LPD3DHAL_DRAWONEPRIMITIVEDATA;
231typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA	*LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA;
232typedef struct _D3DHAL_DRAWPRIMITIVESDATA		*LPD3DHAL_DRAWPRIMITIVESDATA;
233
234typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB)	  (LPD3DHAL_SETRENDERTARGETDATA);
235typedef DWORD (PASCAL *LPD3DHAL_CLEARCB)		  (LPD3DHAL_CLEARDATA);
236typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB)	  (LPD3DHAL_DRAWONEPRIMITIVEDATA);
237typedef DWORD (PASCAL *LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA);
238typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB)	  (LPD3DHAL_DRAWPRIMITIVESDATA);
239
240typedef 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
250typedef struct _D3DHAL_CLEAR2DATA			*LPD3DHAL_CLEAR2DATA;
251typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA	*LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA;
252typedef struct _D3DHAL_DRAWPRIMITIVES2DATA		*LPD3DHAL_DRAWPRIMITIVES2DATA;
253
254typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB)		  (LPD3DHAL_CLEAR2DATA);
255typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA);
256typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB)	  (LPD3DHAL_DRAWPRIMITIVES2DATA);
257
258typedef 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 */
270typedef 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
291typedef struct _D3DHAL_CONTEXTDESTROYDATA {
292  ULONG_PTR			dwhContext;
293  HRESULT			ddrval;
294} D3DHAL_CONTEXTDESTROYDATA;
295
296typedef struct _D3DHAL_CONTEXTDESTROYALLDATA {
297  DWORD				dwPID;
298  HRESULT			ddrval;
299} D3DHAL_CONTEXTDESTROYALLDATA;
300
301typedef 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
310typedef 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
323typedef 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 */
358typedef 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
367typedef 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
409typedef struct _D3DHAL_POINTS {
410  WORD wCount;
411  WORD wVStart;
412} D3DHAL_DP2POINTS,*LPD3DHAL_DP2POINTS;
413
414/* line primitives */
415
416typedef struct _D3DHAL_DP2STARTVERTEX {
417  WORD wVStart;
418} D3DHAL_DP2STARTVERTEX,*LPD3DHAL_DP2STARTVERTEX;
419
420typedef struct _D3DHAL_DP2LINELIST {
421  WORD wVStart;
422} D3DHAL_DP2LINELIST,*LPD3DHAL_DP2LINELIST;
423
424typedef struct _D3DHAL_DP2INDEXEDLINELIST {
425  WORD wV1;
426  WORD wV2;
427} D3DHAL_DP2INDEXEDLINELIST,*LPD3DHAL_DP2INDEXEDLINELIST;
428
429typedef struct _D3DHAL_DP2LINESTRIP {
430  WORD wVStart;
431} D3DHAL_DP2LINESTRIP,*LPD3DHAL_DP2LINESTRIP;
432
433typedef struct _D3DHAL_DP2INDEXEDLINESTRIP {
434  WORD wV[2];
435} D3DHAL_DP2INDEXEDLINESTRIP,*LPD3DHAL_DP2INDEXEDLINESTRIP;
436
437/* triangle primitives */
438
439typedef struct _D3DHAL_DP2TRIANGLELIST {
440  WORD wVStart;
441} D3DHAL_DP2TRIANGLELIST,*LPD3DHAL_DP2TRIANGLELIST;
442
443typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST {
444  WORD wV1;
445  WORD wV2;
446  WORD wV3;
447  WORD wFlags;
448} D3DHAL_DP2INDEXEDTRIANGLELIST,*LPD3DHAL_DP2INDEXEDTRIANGLELIST;
449
450typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2 {
451  WORD wV1;
452  WORD wV2;
453  WORD wV3;
454} D3DHAL_DP2INDEXEDTRIANGLELIST2,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2;
455
456typedef struct _D3DHAL_DP2TRIANGLESTRIP {
457  WORD wVStart;
458} D3DHAL_DP2TRIANGLESTRIP,*LPD3DHAL_DP2TRIANGLESTRIP;
459
460typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP {
461  WORD wV[3];
462} D3DHAL_DP2INDEXEDTRIANGLESTRIP,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP;
463
464typedef struct _D3DHAL_DP2TRIANGLEFAN {
465  WORD wVStart;
466} D3DHAL_DP2TRIANGLEFAN,*LPD3DHAL_DP2TRIANGLEFAN;
467
468typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN {
469  WORD wV[3];
470} D3DHAL_DP2INDEXEDTRIANGLEFAN,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN;
471
472typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM {
473  DWORD dwEdgeFlags;
474} D3DHAL_DP2TRIANGLEFAN_IMM,*LPD3DHAL_DP2TRIANGLEFAN_IMM;
475
476/* render states */
477typedef struct _D3DHAL_DP2RENDERSTATE {
478  D3DRENDERSTATETYPE	RenderState;
479  union {
480    D3DVALUE dvState;
481    DWORD dwState;
482  } DUMMYUNIONNAME;
483} D3DHAL_DP2RENDERSTATE,*LPD3DHAL_DP2RENDERSTATE;
484
485typedef struct _D3DHAL_DP2TEXTURESTAGESTATE {
486  WORD	wStage;
487  WORD	TSState;
488  DWORD dwValue;
489} D3DHAL_DP2TEXTURESTAGESTATE,*LPD3DHAL_DP2TEXTURESTAGESTATE;
490
491#define D3DTSS_TEXTUREMAP 0
492
493typedef struct _D3DHAL_DP2VIEWPORTINFO {
494  DWORD dwX;
495  DWORD dwY;
496  DWORD dwWidth;
497  DWORD dwHeight;
498} D3DHAL_DP2VIEWPORTINFO,*LPD3DHAL_DP2VIEWPORTINFO;
499
500typedef struct _D3DHAL_DP2WINFO {
501  D3DVALUE dwWNear;
502  D3DVALUE dwWFar;
503} D3DHAL_DP2WINFO,*LPD3DHAL_DP2WINFO;
504
505typedef struct _D3DHAL_DP2SETPALETTE {
506  DWORD dwPaletteHandle;
507  DWORD dwPaletteFlags;
508  DWORD dwSurfaceHandle;
509} D3DHAL_DP2SETPALETTE,*LPD3DHAL_DP2SETPALETTE;
510
511typedef struct _D3DHAL_DP2UPDATEPALETTE {
512  DWORD dwPaletteHandle;
513  WORD	wStartIndex;
514  WORD	wNumEntries;
515} D3DHAL_DP2UPDATEPALETTE,*LPD3DHAL_DP2UPDATEPALETTE;
516
517typedef struct _D3DHAL_DP2ZRANGE {
518  D3DVALUE dvMinZ;
519  D3DVALUE dvMaxZ;
520} D3DHAL_DP2ZRANGE,*LPD3DHAL_DP2ZRANGE;
521
522typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL,*LPD3DHAL_DP2SETMATERIAL;
523
524typedef 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
533typedef struct _D3DHAL_DP2CREATELIGHT {
534  DWORD dwIndex;
535} D3DHAL_DP2CREATELIGHT,*LPD3DHAL_DP2CREATELIGHT;
536
537typedef struct _D3DHAL_DP2SETTRANSFORM {
538  D3DTRANSFORMSTATETYPE	xfrmType;
539  D3DMATRIX		matrix;
540} D3DHAL_DP2SETTRANSFORM,*LPD3DHAL_DP2SETTRANSFORM;
541
542typedef struct _D3DHAL_DP2TEXBLT {
543  DWORD dwDDDestSurface;
544  DWORD dwDDSrcSurface;
545  POINT pDest;
546  RECTL rSrc;
547  DWORD dwFlags;
548} D3DHAL_DP2TEXBLT,*LPD3DHAL_DP2TEXBLT;
549
550typedef 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
562typedef struct _D3DHAL_DP2SETPRIORITY {
563  DWORD dwDDSurface;
564  DWORD dwPriority;
565} D3DHAL_DP2SETPRIORITY,*LPD3DHAL_DP2SETPRIORITY;
566
567typedef struct _D3DHAL_DP2SETRENDERTARGET {
568  DWORD hRenderTarget;
569  DWORD hZBuffer;
570} D3DHAL_DP2SETRENDERTARGET,*LPD3DHAL_DP2SETRENDERTARGET;
571
572typedef 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
580typedef 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 */