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