wined3d: Pass a WINED3DCOLORVALUE structure to IWineD3DDeviceImpl_ClearRendertargetVi...
[wine] / include / wine / wined3d.idl
1 /*
2  * Copyright 2002-2003 The wine-d3d team
3  * Copyright 2002-2003 Jason Edmeades
4  * Copyright 2002-2003 Raphael Junqueira
5  * Copyright 2005 Oliver Stieber
6  * Copyright 2006 Stefan Dösinger
7  * Copyright 2006 Stefan Dösinger for CodeWeavers
8  * Copyright 2007 Henri Verbeet
9  * Copyright 2008 Henri Verbeet for CodeWeavers
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation; either
14  * version 2.1 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  * Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public
22  * License along with this library; if not, write to the Free Software
23  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24  */
25
26 import "unknwn.idl";
27
28 cpp_quote("#if 0")
29 typedef HANDLE HMONITOR;
30
31 typedef struct _RGNDATAHEADER
32 {
33     DWORD dwSize;
34     DWORD iType;
35     DWORD nCount;
36     DWORD nRgnSize;
37     RECT rcBound;
38 } RGNDATAHEADER;
39
40 typedef struct _RGNDATA
41 {
42     RGNDATAHEADER rdh;
43     char Buffer[1];
44 } RGNDATA;
45
46 typedef struct _LUID
47 {
48     DWORD LowPart;
49     LONG HighPart;
50 } LUID, *PLUID;
51 cpp_quote("#endif")
52
53 cpp_quote("#define WINED3D_OK                                  S_OK")
54
55 const UINT _FACWINED3D = 0x876;
56 cpp_quote("#define MAKE_WINED3DSTATUS(code)                    MAKE_HRESULT(0, _FACWINED3D, code)")
57 cpp_quote("#define WINED3DOK_NOAUTOGEN                         MAKE_WINED3DSTATUS(2159)")
58
59 cpp_quote("#define MAKE_WINED3DHRESULT(code)                   MAKE_HRESULT(1, _FACWINED3D, code)")
60 cpp_quote("#define WINED3DERR_WRONGTEXTUREFORMAT               MAKE_WINED3DHRESULT(2072)")
61 cpp_quote("#define WINED3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_WINED3DHRESULT(2073)")
62 cpp_quote("#define WINED3DERR_UNSUPPORTEDCOLORARG              MAKE_WINED3DHRESULT(2074)")
63 cpp_quote("#define WINED3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_WINED3DHRESULT(2075)")
64 cpp_quote("#define WINED3DERR_UNSUPPORTEDALPHAARG              MAKE_WINED3DHRESULT(2076)")
65 cpp_quote("#define WINED3DERR_TOOMANYOPERATIONS                MAKE_WINED3DHRESULT(2077)")
66 cpp_quote("#define WINED3DERR_CONFLICTINGTEXTUREFILTER         MAKE_WINED3DHRESULT(2078)")
67 cpp_quote("#define WINED3DERR_UNSUPPORTEDFACTORVALUE           MAKE_WINED3DHRESULT(2079)")
68 cpp_quote("#define WINED3DERR_CONFLICTINGRENDERSTATE           MAKE_WINED3DHRESULT(2081)")
69 cpp_quote("#define WINED3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_WINED3DHRESULT(2082)")
70 cpp_quote("#define WINED3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_WINED3DHRESULT(2086)")
71 cpp_quote("#define WINED3DERR_DRIVERINTERNALERROR              MAKE_WINED3DHRESULT(2087)")
72 cpp_quote("#define WINED3DERR_NOTFOUND                         MAKE_WINED3DHRESULT(2150)")
73 cpp_quote("#define WINED3DERR_MOREDATA                         MAKE_WINED3DHRESULT(2151)")
74 cpp_quote("#define WINED3DERR_DEVICELOST                       MAKE_WINED3DHRESULT(2152)")
75 cpp_quote("#define WINED3DERR_DEVICENOTRESET                   MAKE_WINED3DHRESULT(2153)")
76 cpp_quote("#define WINED3DERR_NOTAVAILABLE                     MAKE_WINED3DHRESULT(2154)")
77 cpp_quote("#define WINED3DERR_OUTOFVIDEOMEMORY                 MAKE_WINED3DHRESULT(380)")
78 cpp_quote("#define WINED3DERR_INVALIDDEVICE                    MAKE_WINED3DHRESULT(2155)")
79 cpp_quote("#define WINED3DERR_INVALIDCALL                      MAKE_WINED3DHRESULT(2156)")
80 cpp_quote("#define WINED3DERR_DRIVERINVALIDCALL                MAKE_WINED3DHRESULT(2157)")
81 cpp_quote("#define WINED3DERR_WASSTILLDRAWING                  MAKE_WINED3DHRESULT(540)")
82 cpp_quote("#define WINEDDERR_NOTAOVERLAYSURFACE                MAKE_WINED3DHRESULT(580)")
83 cpp_quote("#define WINEDDERR_NOTLOCKED                         MAKE_WINED3DHRESULT(584)")
84 cpp_quote("#define WINEDDERR_NODC                              MAKE_WINED3DHRESULT(586)")
85 cpp_quote("#define WINEDDERR_DCALREADYCREATED                  MAKE_WINED3DHRESULT(620)")
86 cpp_quote("#define WINEDDERR_NOTFLIPPABLE                      MAKE_WINED3DHRESULT(582)")
87 cpp_quote("#define WINEDDERR_SURFACEBUSY                       MAKE_WINED3DHRESULT(430)")
88 cpp_quote("#define WINEDDERR_INVALIDRECT                       MAKE_WINED3DHRESULT(150)")
89 cpp_quote("#define WINEDDERR_NOCLIPLIST                        MAKE_WINED3DHRESULT(205)")
90 cpp_quote("#define WINEDDERR_OVERLAYNOTVISIBLE                 MAKE_WINED3DHRESULT(577)")
91
92 typedef DWORD WINED3DCOLOR;
93
94 typedef enum _WINED3DLIGHTTYPE
95 {
96     WINED3DLIGHT_POINT                      = 1,
97     WINED3DLIGHT_SPOT                       = 2,
98     WINED3DLIGHT_DIRECTIONAL                = 3,
99     WINED3DLIGHT_PARALLELPOINT              = 4, /* D3D7 */
100     WINED3DLIGHT_GLSPOT                     = 5, /* D3D7 */
101     WINED3DLIGHT_FORCE_DWORD                = 0x7fffffff
102 } WINED3DLIGHTTYPE;
103
104 typedef enum _WINED3DPRIMITIVETYPE
105 {
106     WINED3DPT_UNDEFINED                     = 0,
107     WINED3DPT_POINTLIST                     = 1,
108     WINED3DPT_LINELIST                      = 2,
109     WINED3DPT_LINESTRIP                     = 3,
110     WINED3DPT_TRIANGLELIST                  = 4,
111     WINED3DPT_TRIANGLESTRIP                 = 5,
112     WINED3DPT_TRIANGLEFAN                   = 6,
113     WINED3DPT_LINELIST_ADJ                  = 10,
114     WINED3DPT_LINESTRIP_ADJ                 = 11,
115     WINED3DPT_TRIANGLELIST_ADJ              = 12,
116     WINED3DPT_TRIANGLESTRIP_ADJ             = 13,
117     WINED3DPT_FORCE_DWORD                   = 0x7fffffff
118 } WINED3DPRIMITIVETYPE;
119
120 typedef enum _WINED3DDEVTYPE
121 {
122     WINED3DDEVTYPE_HAL                      = 1,
123     WINED3DDEVTYPE_REF                      = 2,
124     WINED3DDEVTYPE_SW                       = 3,
125     WINED3DDEVTYPE_NULLREF                  = 4,
126     WINED3DDEVTYPE_FORCE_DWORD              = 0xffffffff
127 } WINED3DDEVTYPE;
128
129 typedef enum _WINED3DDEGREETYPE
130 {
131     WINED3DDEGREE_LINEAR                    = 1,
132     WINED3DDEGREE_QUADRATIC                 = 2,
133     WINED3DDEGREE_CUBIC                     = 3,
134     WINED3DDEGREE_QUINTIC                   = 5,
135     WINED3DDEGREE_FORCE_DWORD               = 0x7fffffff
136 } WINED3DDEGREETYPE;
137
138 #define WINEMAKEFOURCC(ch0, ch1, ch2, ch3) \
139         ((unsigned long)(unsigned char)(ch0) | ((unsigned long)(unsigned char)(ch1) << 8) | \
140         ((unsigned long)(unsigned char)(ch2) << 16) | ((unsigned long)(unsigned char)(ch3) << 24))
141
142 typedef enum _WINED3DFORMAT
143 {
144     WINED3DFMT_UNKNOWN,
145     WINED3DFMT_B8G8R8_UNORM,
146     WINED3DFMT_B5G5R5X1_UNORM,
147     WINED3DFMT_B4G4R4A4_UNORM,
148     WINED3DFMT_B2G3R3_UNORM,
149     WINED3DFMT_B2G3R3A8_UNORM,
150     WINED3DFMT_B4G4R4X4_UNORM,
151     WINED3DFMT_R8G8B8X8_UNORM,
152     WINED3DFMT_B10G10R10A2_UNORM,
153     WINED3DFMT_P8_UINT_A8_UNORM,
154     WINED3DFMT_P8_UINT,
155     WINED3DFMT_L8_UNORM,
156     WINED3DFMT_L8A8_UNORM,
157     WINED3DFMT_L4A4_UNORM,
158     WINED3DFMT_R5G5_SNORM_L6_UNORM,
159     WINED3DFMT_R8G8_SNORM_L8X8_UNORM,
160     WINED3DFMT_R10G11B11_SNORM,
161     WINED3DFMT_R10G10B10_SNORM_A2_UNORM,
162     WINED3DFMT_D16_LOCKABLE,
163     WINED3DFMT_D32_UNORM,
164     WINED3DFMT_S1_UINT_D15_UNORM,
165     WINED3DFMT_X8D24_UNORM,
166     WINED3DFMT_S4X4_UINT_D24_UNORM,
167     WINED3DFMT_L16_UNORM,
168     WINED3DFMT_S8_UINT_D24_FLOAT,
169     WINED3DFMT_VERTEXDATA,
170     WINED3DFMT_R8G8_SNORM_Cx,
171     WINED3DFMT_R32G32B32A32_TYPELESS,
172     WINED3DFMT_R32G32B32A32_FLOAT,
173     WINED3DFMT_R32G32B32A32_UINT,
174     WINED3DFMT_R32G32B32A32_SINT,
175     WINED3DFMT_R32G32B32_TYPELESS,
176     WINED3DFMT_R32G32B32_FLOAT,
177     WINED3DFMT_R32G32B32_UINT,
178     WINED3DFMT_R32G32B32_SINT,
179     WINED3DFMT_R16G16B16A16_TYPELESS,
180     WINED3DFMT_R16G16B16A16_FLOAT,
181     WINED3DFMT_R16G16B16A16_UNORM,
182     WINED3DFMT_R16G16B16A16_UINT,
183     WINED3DFMT_R16G16B16A16_SNORM,
184     WINED3DFMT_R16G16B16A16_SINT,
185     WINED3DFMT_R32G32_TYPELESS,
186     WINED3DFMT_R32G32_FLOAT,
187     WINED3DFMT_R32G32_UINT,
188     WINED3DFMT_R32G32_SINT,
189     WINED3DFMT_R32G8X24_TYPELESS,
190     WINED3DFMT_D32_FLOAT_S8X24_UINT,
191     WINED3DFMT_R32_FLOAT_X8X24_TYPELESS,
192     WINED3DFMT_X32_TYPELESS_G8X24_UINT,
193     WINED3DFMT_R10G10B10A2_TYPELESS,
194     WINED3DFMT_R10G10B10A2_UNORM,
195     WINED3DFMT_R10G10B10A2_UINT,
196     WINED3DFMT_R10G10B10A2_SNORM,
197     WINED3DFMT_R11G11B10_FLOAT,
198     WINED3DFMT_R8G8B8A8_TYPELESS,
199     WINED3DFMT_R8G8B8A8_UNORM,
200     WINED3DFMT_R8G8B8A8_UNORM_SRGB,
201     WINED3DFMT_R8G8B8A8_UINT,
202     WINED3DFMT_R8G8B8A8_SNORM,
203     WINED3DFMT_R8G8B8A8_SINT,
204     WINED3DFMT_R16G16_TYPELESS,
205     WINED3DFMT_R16G16_FLOAT,
206     WINED3DFMT_R16G16_UNORM,
207     WINED3DFMT_R16G16_UINT,
208     WINED3DFMT_R16G16_SNORM,
209     WINED3DFMT_R16G16_SINT,
210     WINED3DFMT_R32_TYPELESS,
211     WINED3DFMT_D32_FLOAT,
212     WINED3DFMT_R32_FLOAT,
213     WINED3DFMT_R32_UINT,
214     WINED3DFMT_R32_SINT,
215     WINED3DFMT_R24G8_TYPELESS,
216     WINED3DFMT_D24_UNORM_S8_UINT,
217     WINED3DFMT_R24_UNORM_X8_TYPELESS,
218     WINED3DFMT_X24_TYPELESS_G8_UINT,
219     WINED3DFMT_R8G8_TYPELESS,
220     WINED3DFMT_R8G8_UNORM,
221     WINED3DFMT_R8G8_UINT,
222     WINED3DFMT_R8G8_SNORM,
223     WINED3DFMT_R8G8_SINT,
224     WINED3DFMT_R16_TYPELESS,
225     WINED3DFMT_R16_FLOAT,
226     WINED3DFMT_D16_UNORM,
227     WINED3DFMT_R16_UNORM,
228     WINED3DFMT_R16_UINT,
229     WINED3DFMT_R16_SNORM,
230     WINED3DFMT_R16_SINT,
231     WINED3DFMT_R8_TYPELESS,
232     WINED3DFMT_R8_UNORM,
233     WINED3DFMT_R8_UINT,
234     WINED3DFMT_R8_SNORM,
235     WINED3DFMT_R8_SINT,
236     WINED3DFMT_A8_UNORM,
237     WINED3DFMT_R1_UNORM,
238     WINED3DFMT_R9G9B9E5_SHAREDEXP,
239     WINED3DFMT_R8G8_B8G8_UNORM,
240     WINED3DFMT_G8R8_G8B8_UNORM,
241     WINED3DFMT_BC1_TYPELESS,
242     WINED3DFMT_BC1_UNORM,
243     WINED3DFMT_BC1_UNORM_SRGB,
244     WINED3DFMT_BC2_TYPELESS,
245     WINED3DFMT_BC2_UNORM,
246     WINED3DFMT_BC2_UNORM_SRGB,
247     WINED3DFMT_BC3_TYPELESS,
248     WINED3DFMT_BC3_UNORM,
249     WINED3DFMT_BC3_UNORM_SRGB,
250     WINED3DFMT_BC4_TYPELESS,
251     WINED3DFMT_BC4_UNORM,
252     WINED3DFMT_BC4_SNORM,
253     WINED3DFMT_BC5_TYPELESS,
254     WINED3DFMT_BC5_UNORM,
255     WINED3DFMT_BC5_SNORM,
256     WINED3DFMT_B5G6R5_UNORM,
257     WINED3DFMT_B5G5R5A1_UNORM,
258     WINED3DFMT_B8G8R8A8_UNORM,
259     WINED3DFMT_B8G8R8X8_UNORM,
260     /* FOURCC formats. */
261     WINED3DFMT_UYVY                         = WINEMAKEFOURCC('U','Y','V','Y'),
262     WINED3DFMT_YUY2                         = WINEMAKEFOURCC('Y','U','Y','2'),
263     WINED3DFMT_YV12                         = WINEMAKEFOURCC('Y','V','1','2'),
264     WINED3DFMT_DXT1                         = WINEMAKEFOURCC('D','X','T','1'),
265     WINED3DFMT_DXT2                         = WINEMAKEFOURCC('D','X','T','2'),
266     WINED3DFMT_DXT3                         = WINEMAKEFOURCC('D','X','T','3'),
267     WINED3DFMT_DXT4                         = WINEMAKEFOURCC('D','X','T','4'),
268     WINED3DFMT_DXT5                         = WINEMAKEFOURCC('D','X','T','5'),
269     WINED3DFMT_MULTI2_ARGB8                 = WINEMAKEFOURCC('M','E','T','1'),
270     WINED3DFMT_G8R8_G8B8                    = WINEMAKEFOURCC('G','R','G','B'),
271     WINED3DFMT_R8G8_B8G8                    = WINEMAKEFOURCC('R','G','B','G'),
272     WINED3DFMT_ATI2N                        = WINEMAKEFOURCC('A','T','I','2'),
273     WINED3DFMT_INST                         = WINEMAKEFOURCC('I','N','S','T'),
274     WINED3DFMT_NVHU                         = WINEMAKEFOURCC('N','V','H','U'),
275     WINED3DFMT_NVHS                         = WINEMAKEFOURCC('N','V','H','S'),
276
277     WINED3DFMT_FORCE_DWORD = 0xffffffff
278 } WINED3DFORMAT;
279
280 typedef enum _WINED3DRENDERSTATETYPE
281 {
282     WINED3DRS_ANTIALIAS                     = 2, /* d3d7 */
283     WINED3DRS_TEXTUREPERSPECTIVE            = 4, /* d3d7 */
284     WINED3DRS_WRAPU                         = 5, /* d3d7 */
285     WINED3DRS_WRAPV                         = 6, /* d3d7 */
286     WINED3DRS_ZENABLE                       = 7,
287     WINED3DRS_FILLMODE                      = 8,
288     WINED3DRS_SHADEMODE                     = 9,
289     WINED3DRS_LINEPATTERN                   = 10, /* d3d7, d3d8 */
290     WINED3DRS_MONOENABLE                    = 11, /* d3d7 */
291     WINED3DRS_ROP2                          = 12, /* d3d7 */
292     WINED3DRS_PLANEMASK                     = 13, /* d3d7 */
293     WINED3DRS_ZWRITEENABLE                  = 14,
294     WINED3DRS_ALPHATESTENABLE               = 15,
295     WINED3DRS_LASTPIXEL                     = 16,
296     WINED3DRS_SRCBLEND                      = 19,
297     WINED3DRS_DESTBLEND                     = 20,
298     WINED3DRS_CULLMODE                      = 22,
299     WINED3DRS_ZFUNC                         = 23,
300     WINED3DRS_ALPHAREF                      = 24,
301     WINED3DRS_ALPHAFUNC                     = 25,
302     WINED3DRS_DITHERENABLE                  = 26,
303     WINED3DRS_ALPHABLENDENABLE              = 27,
304     WINED3DRS_FOGENABLE                     = 28,
305     WINED3DRS_SPECULARENABLE                = 29,
306     WINED3DRS_ZVISIBLE                      = 30, /* d3d7, d3d8 */
307     WINED3DRS_SUBPIXEL                      = 31, /* d3d7 */
308     WINED3DRS_SUBPIXELX                     = 32, /* d3d7 */
309     WINED3DRS_STIPPLEDALPHA                 = 33, /* d3d7 */
310     WINED3DRS_FOGCOLOR                      = 34,
311     WINED3DRS_FOGTABLEMODE                  = 35,
312     WINED3DRS_FOGSTART                      = 36,
313     WINED3DRS_FOGEND                        = 37,
314     WINED3DRS_FOGDENSITY                    = 38,
315     WINED3DRS_STIPPLEENABLE                 = 39, /* d3d7 */
316     WINED3DRS_EDGEANTIALIAS                 = 40, /* d3d7, d3d8 */
317     WINED3DRS_COLORKEYENABLE                = 41, /* d3d7 */
318     WINED3DRS_MIPMAPLODBIAS                 = 46, /* d3d7 */
319     WINED3DRS_ZBIAS                         = 47, /* d3d7, d3d8 */
320     WINED3DRS_RANGEFOGENABLE                = 48,
321     WINED3DRS_ANISOTROPY                    = 49, /* d3d7 */
322     WINED3DRS_FLUSHBATCH                    = 50, /* d3d7 */
323     WINED3DRS_TRANSLUCENTSORTINDEPENDENT    = 51, /* d3d7 */
324     WINED3DRS_STENCILENABLE                 = 52,
325     WINED3DRS_STENCILFAIL                   = 53,
326     WINED3DRS_STENCILZFAIL                  = 54,
327     WINED3DRS_STENCILPASS                   = 55,
328     WINED3DRS_STENCILFUNC                   = 56,
329     WINED3DRS_STENCILREF                    = 57,
330     WINED3DRS_STENCILMASK                   = 58,
331     WINED3DRS_STENCILWRITEMASK              = 59,
332     WINED3DRS_TEXTUREFACTOR                 = 60,
333     WINED3DRS_WRAP0                         = 128,
334     WINED3DRS_WRAP1                         = 129,
335     WINED3DRS_WRAP2                         = 130,
336     WINED3DRS_WRAP3                         = 131,
337     WINED3DRS_WRAP4                         = 132,
338     WINED3DRS_WRAP5                         = 133,
339     WINED3DRS_WRAP6                         = 134,
340     WINED3DRS_WRAP7                         = 135,
341     WINED3DRS_CLIPPING                      = 136,
342     WINED3DRS_LIGHTING                      = 137,
343     WINED3DRS_EXTENTS                       = 138, /* d3d7 */
344     WINED3DRS_AMBIENT                       = 139,
345     WINED3DRS_FOGVERTEXMODE                 = 140,
346     WINED3DRS_COLORVERTEX                   = 141,
347     WINED3DRS_LOCALVIEWER                   = 142,
348     WINED3DRS_NORMALIZENORMALS              = 143,
349     WINED3DRS_COLORKEYBLENDENABLE           = 144, /* d3d7 */
350     WINED3DRS_DIFFUSEMATERIALSOURCE         = 145,
351     WINED3DRS_SPECULARMATERIALSOURCE        = 146,
352     WINED3DRS_AMBIENTMATERIALSOURCE         = 147,
353     WINED3DRS_EMISSIVEMATERIALSOURCE        = 148,
354     WINED3DRS_VERTEXBLEND                   = 151,
355     WINED3DRS_CLIPPLANEENABLE               = 152,
356     WINED3DRS_SOFTWAREVERTEXPROCESSING      = 153, /* d3d8 */
357     WINED3DRS_POINTSIZE                     = 154,
358     WINED3DRS_POINTSIZE_MIN                 = 155,
359     WINED3DRS_POINTSPRITEENABLE             = 156,
360     WINED3DRS_POINTSCALEENABLE              = 157,
361     WINED3DRS_POINTSCALE_A                  = 158,
362     WINED3DRS_POINTSCALE_B                  = 159,
363     WINED3DRS_POINTSCALE_C                  = 160,
364     WINED3DRS_MULTISAMPLEANTIALIAS          = 161,
365     WINED3DRS_MULTISAMPLEMASK               = 162,
366     WINED3DRS_PATCHEDGESTYLE                = 163,
367     WINED3DRS_PATCHSEGMENTS                 = 164, /* d3d8 */
368     WINED3DRS_DEBUGMONITORTOKEN             = 165,
369     WINED3DRS_POINTSIZE_MAX                 = 166,
370     WINED3DRS_INDEXEDVERTEXBLENDENABLE      = 167,
371     WINED3DRS_COLORWRITEENABLE              = 168,
372     WINED3DRS_TWEENFACTOR                   = 170,
373     WINED3DRS_BLENDOP                       = 171,
374     WINED3DRS_POSITIONDEGREE                = 172,
375     WINED3DRS_NORMALDEGREE                  = 173,
376     WINED3DRS_SCISSORTESTENABLE             = 174,
377     WINED3DRS_SLOPESCALEDEPTHBIAS           = 175,
378     WINED3DRS_ANTIALIASEDLINEENABLE         = 176,
379     WINED3DRS_MINTESSELLATIONLEVEL          = 178,
380     WINED3DRS_MAXTESSELLATIONLEVEL          = 179,
381     WINED3DRS_ADAPTIVETESS_X                = 180,
382     WINED3DRS_ADAPTIVETESS_Y                = 181,
383     WINED3DRS_ADAPTIVETESS_Z                = 182,
384     WINED3DRS_ADAPTIVETESS_W                = 183,
385     WINED3DRS_ENABLEADAPTIVETESSELLATION    = 184,
386     WINED3DRS_TWOSIDEDSTENCILMODE           = 185,
387     WINED3DRS_CCW_STENCILFAIL               = 186,
388     WINED3DRS_CCW_STENCILZFAIL              = 187,
389     WINED3DRS_CCW_STENCILPASS               = 188,
390     WINED3DRS_CCW_STENCILFUNC               = 189,
391     WINED3DRS_COLORWRITEENABLE1             = 190,
392     WINED3DRS_COLORWRITEENABLE2             = 191,
393     WINED3DRS_COLORWRITEENABLE3             = 192,
394     WINED3DRS_BLENDFACTOR                   = 193,
395     WINED3DRS_SRGBWRITEENABLE               = 194,
396     WINED3DRS_DEPTHBIAS                     = 195,
397     WINED3DRS_WRAP8                         = 198,
398     WINED3DRS_WRAP9                         = 199,
399     WINED3DRS_WRAP10                        = 200,
400     WINED3DRS_WRAP11                        = 201,
401     WINED3DRS_WRAP12                        = 202,
402     WINED3DRS_WRAP13                        = 203,
403     WINED3DRS_WRAP14                        = 204,
404     WINED3DRS_WRAP15                        = 205,
405     WINED3DRS_SEPARATEALPHABLENDENABLE      = 206,
406     WINED3DRS_SRCBLENDALPHA                 = 207,
407     WINED3DRS_DESTBLENDALPHA                = 208,
408     WINED3DRS_BLENDOPALPHA                  = 209,
409     WINED3DRS_FORCE_DWORD                   = 0x7fffffff
410 } WINED3DRENDERSTATETYPE;
411 const UINT WINEHIGHEST_RENDER_STATE         = WINED3DRS_BLENDOPALPHA;
412
413 typedef enum _WINED3DBLEND
414 {
415     WINED3DBLEND_ZERO                       =  1,
416     WINED3DBLEND_ONE                        =  2,
417     WINED3DBLEND_SRCCOLOR                   =  3,
418     WINED3DBLEND_INVSRCCOLOR                =  4,
419     WINED3DBLEND_SRCALPHA                   =  5,
420     WINED3DBLEND_INVSRCALPHA                =  6,
421     WINED3DBLEND_DESTALPHA                  =  7,
422     WINED3DBLEND_INVDESTALPHA               =  8,
423     WINED3DBLEND_DESTCOLOR                  =  9,
424     WINED3DBLEND_INVDESTCOLOR               = 10,
425     WINED3DBLEND_SRCALPHASAT                = 11,
426     WINED3DBLEND_BOTHSRCALPHA               = 12,
427     WINED3DBLEND_BOTHINVSRCALPHA            = 13,
428     WINED3DBLEND_BLENDFACTOR                = 14,
429     WINED3DBLEND_INVBLENDFACTOR             = 15,
430     WINED3DBLEND_FORCE_DWORD                = 0x7fffffff
431 } WINED3DBLEND;
432
433 typedef enum _WINED3DBLENDOP
434 {
435     WINED3DBLENDOP_ADD                      = 1,
436     WINED3DBLENDOP_SUBTRACT                 = 2,
437     WINED3DBLENDOP_REVSUBTRACT              = 3,
438     WINED3DBLENDOP_MIN                      = 4,
439     WINED3DBLENDOP_MAX                      = 5,
440     WINED3DBLENDOP_FORCE_DWORD              = 0x7fffffff
441 } WINED3DBLENDOP;
442
443 typedef enum _WINED3DVERTEXBLENDFLAGS
444 {
445     WINED3DVBF_DISABLE                      = 0,
446     WINED3DVBF_1WEIGHTS                     = 1,
447     WINED3DVBF_2WEIGHTS                     = 2,
448     WINED3DVBF_3WEIGHTS                     = 3,
449     WINED3DVBF_TWEENING                     = 255,
450     WINED3DVBF_0WEIGHTS                     = 256
451 } WINED3DVERTEXBLENDFLAGS;
452
453 typedef enum _WINED3DCMPFUNC
454 {
455     WINED3DCMP_NEVER                        = 1,
456     WINED3DCMP_LESS                         = 2,
457     WINED3DCMP_EQUAL                        = 3,
458     WINED3DCMP_LESSEQUAL                    = 4,
459     WINED3DCMP_GREATER                      = 5,
460     WINED3DCMP_NOTEQUAL                     = 6,
461     WINED3DCMP_GREATEREQUAL                 = 7,
462     WINED3DCMP_ALWAYS                       = 8,
463     WINED3DCMP_FORCE_DWORD                  = 0x7fffffff
464 } WINED3DCMPFUNC;
465
466 typedef enum _WINED3DZBUFFERTYPE
467 {
468     WINED3DZB_FALSE                         = 0,
469     WINED3DZB_TRUE                          = 1,
470     WINED3DZB_USEW                          = 2,
471     WINED3DZB_FORCE_DWORD                   = 0x7fffffff
472 } WINED3DZBUFFERTYPE;
473
474 typedef enum _WINED3DFOGMODE
475 {
476     WINED3DFOG_NONE                         = 0,
477     WINED3DFOG_EXP                          = 1,
478     WINED3DFOG_EXP2                         = 2,
479     WINED3DFOG_LINEAR                       = 3,
480     WINED3DFOG_FORCE_DWORD                  = 0x7fffffff
481 } WINED3DFOGMODE;
482
483 typedef enum _WINED3DSHADEMODE
484 {
485     WINED3DSHADE_FLAT                       = 1,
486     WINED3DSHADE_GOURAUD                    = 2,
487     WINED3DSHADE_PHONG                      = 3,
488     WINED3DSHADE_FORCE_DWORD                = 0x7fffffff
489 } WINED3DSHADEMODE;
490
491 typedef enum _WINED3DFILLMODE
492 {
493     WINED3DFILL_POINT                       = 1,
494     WINED3DFILL_WIREFRAME                   = 2,
495     WINED3DFILL_SOLID                       = 3,
496     WINED3DFILL_FORCE_DWORD                 = 0x7fffffff
497 } WINED3DFILLMODE;
498
499 typedef enum _WINED3DCULL
500 {
501     WINED3DCULL_NONE                        = 1,
502     WINED3DCULL_CW                          = 2,
503     WINED3DCULL_CCW                         = 3,
504     WINED3DCULL_FORCE_DWORD                 = 0x7fffffff
505 } WINED3DCULL;
506
507 typedef enum _WINED3DSTENCILOP
508 {
509     WINED3DSTENCILOP_KEEP                   = 1,
510     WINED3DSTENCILOP_ZERO                   = 2,
511     WINED3DSTENCILOP_REPLACE                = 3,
512     WINED3DSTENCILOP_INCRSAT                = 4,
513     WINED3DSTENCILOP_DECRSAT                = 5,
514     WINED3DSTENCILOP_INVERT                 = 6,
515     WINED3DSTENCILOP_INCR                   = 7,
516     WINED3DSTENCILOP_DECR                   = 8,
517     WINED3DSTENCILOP_FORCE_DWORD            = 0x7fffffff
518 } WINED3DSTENCILOP;
519
520 typedef enum _WINED3DMATERIALCOLORSOURCE
521 {
522     WINED3DMCS_MATERIAL                     = 0,
523     WINED3DMCS_COLOR1                       = 1,
524     WINED3DMCS_COLOR2                       = 2,
525     WINED3DMCS_FORCE_DWORD                  = 0x7fffffff
526 } WINED3DMATERIALCOLORSOURCE;
527
528 typedef enum _WINED3DPATCHEDGESTYLE
529 {
530     WINED3DPATCHEDGE_DISCRETE               = 0,
531     WINED3DPATCHEDGE_CONTINUOUS             = 1,
532     WINED3DPATCHEDGE_FORCE_DWORD            = 0x7fffffff
533 } WINED3DPATCHEDGESTYLE;
534
535 typedef enum _WINED3DBACKBUFFER_TYPE
536 {
537     WINED3DBACKBUFFER_TYPE_MONO             = 0,
538     WINED3DBACKBUFFER_TYPE_LEFT             = 1,
539     WINED3DBACKBUFFER_TYPE_RIGHT            = 2,
540     WINED3DBACKBUFFER_TYPE_FORCE_DWORD      = 0x7fffffff
541 } WINED3DBACKBUFFER_TYPE;
542
543 typedef enum _WINED3DSWAPEFFECT
544 {
545     WINED3DSWAPEFFECT_DISCARD               = 1,
546     WINED3DSWAPEFFECT_FLIP                  = 2,
547     WINED3DSWAPEFFECT_COPY                  = 3,
548     WINED3DSWAPEFFECT_COPY_VSYNC            = 4,
549     WINED3DSWAPEFFECT_FORCE_DWORD           = 0xffffffff
550 } WINED3DSWAPEFFECT;
551
552 typedef enum _WINED3DSAMPLERSTATETYPE
553 {
554     WINED3DSAMP_ADDRESSU                    = 1,
555     WINED3DSAMP_ADDRESSV                    = 2,
556     WINED3DSAMP_ADDRESSW                    = 3,
557     WINED3DSAMP_BORDERCOLOR                 = 4,
558     WINED3DSAMP_MAGFILTER                   = 5,
559     WINED3DSAMP_MINFILTER                   = 6,
560     WINED3DSAMP_MIPFILTER                   = 7,
561     WINED3DSAMP_MIPMAPLODBIAS               = 8,
562     WINED3DSAMP_MAXMIPLEVEL                 = 9,
563     WINED3DSAMP_MAXANISOTROPY               = 10,
564     WINED3DSAMP_SRGBTEXTURE                 = 11,
565     WINED3DSAMP_ELEMENTINDEX                = 12,
566     WINED3DSAMP_DMAPOFFSET                  = 13,
567     WINED3DSAMP_FORCE_DWORD                 = 0x7fffffff,
568 } WINED3DSAMPLERSTATETYPE;
569 const UINT WINED3D_HIGHEST_SAMPLER_STATE    = WINED3DSAMP_DMAPOFFSET;
570
571 typedef enum _WINED3DMULTISAMPLE_TYPE
572 {
573     WINED3DMULTISAMPLE_NONE                 = 0,
574     WINED3DMULTISAMPLE_NONMASKABLE          = 1,
575     WINED3DMULTISAMPLE_2_SAMPLES            = 2,
576     WINED3DMULTISAMPLE_3_SAMPLES            = 3,
577     WINED3DMULTISAMPLE_4_SAMPLES            = 4,
578     WINED3DMULTISAMPLE_5_SAMPLES            = 5,
579     WINED3DMULTISAMPLE_6_SAMPLES            = 6,
580     WINED3DMULTISAMPLE_7_SAMPLES            = 7,
581     WINED3DMULTISAMPLE_8_SAMPLES            = 8,
582     WINED3DMULTISAMPLE_9_SAMPLES            = 9,
583     WINED3DMULTISAMPLE_10_SAMPLES           = 10,
584     WINED3DMULTISAMPLE_11_SAMPLES           = 11,
585     WINED3DMULTISAMPLE_12_SAMPLES           = 12,
586     WINED3DMULTISAMPLE_13_SAMPLES           = 13,
587     WINED3DMULTISAMPLE_14_SAMPLES           = 14,
588     WINED3DMULTISAMPLE_15_SAMPLES           = 15,
589     WINED3DMULTISAMPLE_16_SAMPLES           = 16,
590     WINED3DMULTISAMPLE_FORCE_DWORD          = 0xffffffff
591 } WINED3DMULTISAMPLE_TYPE;
592
593 typedef enum _WINED3DTEXTURESTAGESTATETYPE
594 {
595     WINED3DTSS_COLOROP                      = 0,
596     WINED3DTSS_COLORARG1                    = 1,
597     WINED3DTSS_COLORARG2                    = 2,
598     WINED3DTSS_ALPHAOP                      = 3,
599     WINED3DTSS_ALPHAARG1                    = 4,
600     WINED3DTSS_ALPHAARG2                    = 5,
601     WINED3DTSS_BUMPENVMAT00                 = 6,
602     WINED3DTSS_BUMPENVMAT01                 = 7,
603     WINED3DTSS_BUMPENVMAT10                 = 8,
604     WINED3DTSS_BUMPENVMAT11                 = 9,
605     WINED3DTSS_TEXCOORDINDEX                = 10,
606     WINED3DTSS_BUMPENVLSCALE                = 11,
607     WINED3DTSS_BUMPENVLOFFSET               = 12,
608     WINED3DTSS_TEXTURETRANSFORMFLAGS        = 13,
609     WINED3DTSS_COLORARG0                    = 14,
610     WINED3DTSS_ALPHAARG0                    = 15,
611     WINED3DTSS_RESULTARG                    = 16,
612     WINED3DTSS_CONSTANT                     = 17,
613     WINED3DTSS_FORCE_DWORD                  = 0x7fffffff
614 } WINED3DTEXTURESTAGESTATETYPE;
615 const UINT WINED3D_HIGHEST_TEXTURE_STATE    = WINED3DTSS_CONSTANT;
616
617 typedef enum _WINED3DTEXTURETRANSFORMFLAGS
618 {
619     WINED3DTTFF_DISABLE                     = 0,
620     WINED3DTTFF_COUNT1                      = 1,
621     WINED3DTTFF_COUNT2                      = 2,
622     WINED3DTTFF_COUNT3                      = 3,
623     WINED3DTTFF_COUNT4                      = 4,
624     WINED3DTTFF_PROJECTED                   = 256,
625     WINED3DTTFF_FORCE_DWORD                 = 0x7fffffff
626 } WINED3DTEXTURETRANSFORMFLAGS;
627
628 typedef enum _WINED3DTEXTUREOP
629 {
630     WINED3DTOP_DISABLE                      = 1,
631     WINED3DTOP_SELECTARG1                   = 2,
632     WINED3DTOP_SELECTARG2                   = 3,
633     WINED3DTOP_MODULATE                     = 4,
634     WINED3DTOP_MODULATE2X                   = 5,
635     WINED3DTOP_MODULATE4X                   = 6,
636     WINED3DTOP_ADD                          = 7,
637     WINED3DTOP_ADDSIGNED                    = 8,
638     WINED3DTOP_ADDSIGNED2X                  = 9,
639     WINED3DTOP_SUBTRACT                     = 10,
640     WINED3DTOP_ADDSMOOTH                    = 11,
641     WINED3DTOP_BLENDDIFFUSEALPHA            = 12,
642     WINED3DTOP_BLENDTEXTUREALPHA            = 13,
643     WINED3DTOP_BLENDFACTORALPHA             = 14,
644     WINED3DTOP_BLENDTEXTUREALPHAPM          = 15,
645     WINED3DTOP_BLENDCURRENTALPHA            = 16,
646     WINED3DTOP_PREMODULATE                  = 17,
647     WINED3DTOP_MODULATEALPHA_ADDCOLOR       = 18,
648     WINED3DTOP_MODULATECOLOR_ADDALPHA       = 19,
649     WINED3DTOP_MODULATEINVALPHA_ADDCOLOR    = 20,
650     WINED3DTOP_MODULATEINVCOLOR_ADDALPHA    = 21,
651     WINED3DTOP_BUMPENVMAP                   = 22,
652     WINED3DTOP_BUMPENVMAPLUMINANCE          = 23,
653     WINED3DTOP_DOTPRODUCT3                  = 24,
654     WINED3DTOP_MULTIPLYADD                  = 25,
655     WINED3DTOP_LERP                         = 26,
656     WINED3DTOP_FORCE_DWORD                  = 0x7fffffff,
657 } WINED3DTEXTUREOP;
658
659 typedef enum _WINED3DTEXTUREADDRESS
660 {
661     WINED3DTADDRESS_WRAP                    = 1,
662     WINED3DTADDRESS_MIRROR                  = 2,
663     WINED3DTADDRESS_CLAMP                   = 3,
664     WINED3DTADDRESS_BORDER                  = 4,
665     WINED3DTADDRESS_MIRRORONCE              = 5,
666     WINED3DTADDRESS_FORCE_DWORD             = 0x7fffffff
667 } WINED3DTEXTUREADDRESS;
668
669 typedef enum _WINED3DTRANSFORMSTATETYPE
670 {
671     WINED3DTS_VIEW                          = 2,
672     WINED3DTS_PROJECTION                    = 3,
673     WINED3DTS_TEXTURE0                      = 16,
674     WINED3DTS_TEXTURE1                      = 17,
675     WINED3DTS_TEXTURE2                      = 18,
676     WINED3DTS_TEXTURE3                      = 19,
677     WINED3DTS_TEXTURE4                      = 20,
678     WINED3DTS_TEXTURE5                      = 21,
679     WINED3DTS_TEXTURE6                      = 22,
680     WINED3DTS_TEXTURE7                      = 23,
681     WINED3DTS_WORLD                         = 256, /*WINED3DTS_WORLDMATRIX(0)*/
682     WINED3DTS_WORLD1                        = 257,
683     WINED3DTS_WORLD2                        = 258,
684     WINED3DTS_WORLD3                        = 259,
685     WINED3DTS_FORCE_DWORD                   = 0x7fffffff
686 } WINED3DTRANSFORMSTATETYPE;
687 cpp_quote("#define WINED3DTS_WORLDMATRIX(index) (WINED3DTRANSFORMSTATETYPE)(index + 256)")
688
689 typedef enum _WINED3DBASISTYPE
690 {
691     WINED3DBASIS_BEZIER                     = 0,
692     WINED3DBASIS_BSPLINE                    = 1,
693     WINED3DBASIS_INTERPOLATE                = 2,
694     WINED3DBASIS_FORCE_DWORD                = 0x7fffffff
695 } WINED3DBASISTYPE;
696
697 typedef enum _WINED3DCUBEMAP_FACES
698 {
699     WINED3DCUBEMAP_FACE_POSITIVE_X          = 0,
700     WINED3DCUBEMAP_FACE_NEGATIVE_X          = 1,
701     WINED3DCUBEMAP_FACE_POSITIVE_Y          = 2,
702     WINED3DCUBEMAP_FACE_NEGATIVE_Y          = 3,
703     WINED3DCUBEMAP_FACE_POSITIVE_Z          = 4,
704     WINED3DCUBEMAP_FACE_NEGATIVE_Z          = 5,
705     WINED3DCUBEMAP_FACE_FORCE_DWORD         = 0xffffffff
706 } WINED3DCUBEMAP_FACES;
707
708 typedef enum _WINED3DTEXTUREFILTERTYPE
709 {
710     WINED3DTEXF_NONE                        = 0,
711     WINED3DTEXF_POINT                       = 1,
712     WINED3DTEXF_LINEAR                      = 2,
713     WINED3DTEXF_ANISOTROPIC                 = 3,
714     WINED3DTEXF_FLATCUBIC                   = 4,
715     WINED3DTEXF_GAUSSIANCUBIC               = 5,
716     WINED3DTEXF_PYRAMIDALQUAD               = 6,
717     WINED3DTEXF_GAUSSIANQUAD                = 7,
718     WINED3DTEXF_FORCE_DWORD                 = 0x7fffffff
719 } WINED3DTEXTUREFILTERTYPE;
720
721 typedef enum _WINED3DRESOURCETYPE
722 {
723     WINED3DRTYPE_SURFACE                    = 1,
724     WINED3DRTYPE_VOLUME                     = 2,
725     WINED3DRTYPE_TEXTURE                    = 3,
726     WINED3DRTYPE_VOLUMETEXTURE              = 4,
727     WINED3DRTYPE_CUBETEXTURE                = 5,
728     WINED3DRTYPE_BUFFER                     = 6,
729     WINED3DRTYPE_FORCE_DWORD                = 0x7fffffff
730 } WINED3DRESOURCETYPE;
731 const UINT WINED3DRTYPECOUNT                = WINED3DRTYPE_BUFFER + 1;
732
733 typedef enum _WINED3DPOOL
734 {
735     WINED3DPOOL_DEFAULT                     = 0,
736     WINED3DPOOL_MANAGED                     = 1,
737     WINED3DPOOL_SYSTEMMEM                   = 2,
738     WINED3DPOOL_SCRATCH                     = 3,
739     WINED3DPOOL_FORCE_DWORD                 = 0x7fffffff
740 } WINED3DPOOL;
741
742 typedef enum _WINED3DQUERYTYPE
743 {
744     WINED3DQUERYTYPE_VCACHE                 = 4,
745     WINED3DQUERYTYPE_RESOURCEMANAGER        = 5,
746     WINED3DQUERYTYPE_VERTEXSTATS            = 6,
747     WINED3DQUERYTYPE_EVENT                  = 8,
748     WINED3DQUERYTYPE_OCCLUSION              = 9,
749     WINED3DQUERYTYPE_TIMESTAMP              = 10,
750     WINED3DQUERYTYPE_TIMESTAMPDISJOINT      = 11,
751     WINED3DQUERYTYPE_TIMESTAMPFREQ          = 12,
752     WINED3DQUERYTYPE_PIPELINETIMINGS        = 13,
753     WINED3DQUERYTYPE_INTERFACETIMINGS       = 14,
754     WINED3DQUERYTYPE_VERTEXTIMINGS          = 15,
755     WINED3DQUERYTYPE_PIXELTIMINGS           = 16,
756     WINED3DQUERYTYPE_BANDWIDTHTIMINGS       = 17,
757     WINED3DQUERYTYPE_CACHEUTILIZATION       = 18
758 } WINED3DQUERYTYPE;
759
760 const UINT WINED3DISSUE_BEGIN               = (1 << 1);
761 const UINT WINED3DISSUE_END                 = (1 << 0);
762 const UINT WINED3DGETDATA_FLUSH             = (1 << 0);
763
764 typedef enum _WINED3DSTATEBLOCKTYPE
765 {
766     WINED3DSBT_INIT                         = 0,
767     WINED3DSBT_ALL                          = 1,
768     WINED3DSBT_PIXELSTATE                   = 2,
769     WINED3DSBT_VERTEXSTATE                  = 3,
770     WINED3DSBT_RECORDED                     = 4, /* WineD3D private */
771     WINED3DSBT_FORCE_DWORD                  = 0xffffffff
772 } WINED3DSTATEBLOCKTYPE;
773
774 typedef enum _WINED3DDECLMETHOD
775 {
776     WINED3DDECLMETHOD_DEFAULT               = 0,
777     WINED3DDECLMETHOD_PARTIALU              = 1,
778     WINED3DDECLMETHOD_PARTIALV              = 2,
779     WINED3DDECLMETHOD_CROSSUV               = 3,
780     WINED3DDECLMETHOD_UV                    = 4,
781     WINED3DDECLMETHOD_LOOKUP                = 5,
782     WINED3DDECLMETHOD_LOOKUPPRESAMPLED      = 6
783 } WINED3DDECLMETHOD;
784
785 typedef enum _WINED3DDECLUSAGE
786 {
787     WINED3DDECLUSAGE_POSITION               = 0,
788     WINED3DDECLUSAGE_BLENDWEIGHT            = 1,
789     WINED3DDECLUSAGE_BLENDINDICES           = 2,
790     WINED3DDECLUSAGE_NORMAL                 = 3,
791     WINED3DDECLUSAGE_PSIZE                  = 4,
792     WINED3DDECLUSAGE_TEXCOORD               = 5,
793     WINED3DDECLUSAGE_TANGENT                = 6,
794     WINED3DDECLUSAGE_BINORMAL               = 7,
795     WINED3DDECLUSAGE_TESSFACTOR             = 8,
796     WINED3DDECLUSAGE_POSITIONT              = 9,
797     WINED3DDECLUSAGE_COLOR                  = 10,
798     WINED3DDECLUSAGE_FOG                    = 11,
799     WINED3DDECLUSAGE_DEPTH                  = 12,
800     WINED3DDECLUSAGE_SAMPLE                 = 13
801 } WINED3DDECLUSAGE;
802
803 typedef enum _WINED3DSURFTYPE
804 {
805     SURFACE_UNKNOWN                         = 0,    /* Default / Unknown surface type */
806     SURFACE_OPENGL,                                 /* OpenGL surface: Renders using libGL, needed for 3D */
807     SURFACE_GDI,                                    /* User surface. No 3D, DirectDraw rendering with GDI */
808 } WINED3DSURFTYPE;
809
810 enum wined3d_sysval_semantic
811 {
812     WINED3D_SV_DEPTH = 0xffffffff,
813     WINED3D_SV_TARGET0 = 0,
814     WINED3D_SV_TARGET1 = 1,
815     WINED3D_SV_TARGET2 = 2,
816     WINED3D_SV_TARGET3 = 3,
817     WINED3D_SV_TARGET4 = 4,
818     WINED3D_SV_TARGET5 = 5,
819     WINED3D_SV_TARGET6 = 6,
820     WINED3D_SV_TARGET7 = 7,
821 };
822
823 const UINT WINED3DCOLORWRITEENABLE_RED                          = (1<<0);
824 const UINT WINED3DCOLORWRITEENABLE_GREEN                        = (1<<1);
825 const UINT WINED3DCOLORWRITEENABLE_BLUE                         = (1<<2);
826 const UINT WINED3DCOLORWRITEENABLE_ALPHA                        = (1<<3);
827
828 const UINT WINED3DADAPTER_DEFAULT                               = 0;
829 const UINT WINED3DENUM_NO_WHQL_LEVEL                            = 2;
830 const UINT WINED3DPRESENT_BACK_BUFFER_MAX                       = 3;
831
832 const UINT WINED3DTSS_TCI_PASSTHRU                              = 0x00000;
833 const UINT WINED3DTSS_TCI_CAMERASPACENORMAL                     = 0x10000;
834 const UINT WINED3DTSS_TCI_CAMERASPACEPOSITION                   = 0x20000;
835 const UINT WINED3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR           = 0x30000;
836 const UINT WINED3DTSS_TCI_SPHEREMAP                             = 0x40000;
837
838 const UINT WINED3DTA_SELECTMASK                                 = 0x0000000f;
839 const UINT WINED3DTA_DIFFUSE                                    = 0x00000000;
840 const UINT WINED3DTA_CURRENT                                    = 0x00000001;
841 const UINT WINED3DTA_TEXTURE                                    = 0x00000002;
842 const UINT WINED3DTA_TFACTOR                                    = 0x00000003;
843 const UINT WINED3DTA_SPECULAR                                   = 0x00000004;
844 const UINT WINED3DTA_TEMP                                       = 0x00000005;
845 const UINT WINED3DTA_CONSTANT                                   = 0x00000006;
846 const UINT WINED3DTA_COMPLEMENT                                 = 0x00000010;
847 const UINT WINED3DTA_ALPHAREPLICATE                             = 0x00000020;
848
849 const UINT WINED3DPRESENTFLAG_LOCKABLE_BACKBUFFER               = 0x00000001;
850 const UINT WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL              = 0x00000002;
851 const UINT WINED3DPRESENTFLAG_DEVICECLIP                        = 0x00000004;
852 const UINT WINED3DPRESENTFLAG_VIDEO                             = 0x00000010;
853 const UINT WINED3DPRESENTFLAG_NOAUTOROTATE                      = 0x00000020;
854 const UINT WINED3DPRESENTFLAG_UNPRUNEDMODE                      = 0x00000040;
855
856 const UINT WINED3DDP_MAXTEXCOORD                                = 8;
857
858 const UINT WINED3DUSAGE_RENDERTARGET                            = 0x00000001;
859 const UINT WINED3DUSAGE_DEPTHSTENCIL                            = 0x00000002;
860 const UINT WINED3DUSAGE_WRITEONLY                               = 0x00000008;
861 const UINT WINED3DUSAGE_SOFTWAREPROCESSING                      = 0x00000010;
862 const UINT WINED3DUSAGE_DONOTCLIP                               = 0x00000020;
863 const UINT WINED3DUSAGE_POINTS                                  = 0x00000040;
864 const UINT WINED3DUSAGE_RTPATCHES                               = 0x00000080;
865 const UINT WINED3DUSAGE_NPATCHES                                = 0x00000100;
866 const UINT WINED3DUSAGE_DYNAMIC                                 = 0x00000200;
867 const UINT WINED3DUSAGE_AUTOGENMIPMAP                           = 0x00000400;
868 const UINT WINED3DUSAGE_DMAP                                    = 0x00004000;
869 const UINT WINED3DUSAGE_MASK                                    = 0x00004fff;
870 const UINT WINED3DUSAGE_STATICDECL                              = 0x40000000;
871 const UINT WINED3DUSAGE_OVERLAY                                 = 0x80000000;
872
873 const UINT WINED3DUSAGE_QUERY_LEGACYBUMPMAP                     = 0x00008000;
874 const UINT WINED3DUSAGE_QUERY_FILTER                            = 0x00020000;
875 const UINT WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING          = 0x00080000;
876 const UINT WINED3DUSAGE_QUERY_SRGBREAD                          = 0x00010000;
877 const UINT WINED3DUSAGE_QUERY_SRGBWRITE                         = 0x00040000;
878 const UINT WINED3DUSAGE_QUERY_VERTEXTEXTURE                     = 0x00100000;
879 const UINT WINED3DUSAGE_QUERY_WRAPANDMIP                        = 0x00200000;
880 const UINT WINED3DUSAGE_QUERY_MASK                              = 0x003f8000;
881
882 const UINT WINED3DLOCK_READONLY                                 = 0x0010;
883 const UINT WINED3DLOCK_NOSYSLOCK                                = 0x0800;
884 const UINT WINED3DLOCK_NOOVERWRITE                              = 0x1000;
885 const UINT WINED3DLOCK_DISCARD                                  = 0x2000;
886 const UINT WINED3DLOCK_DONOTWAIT                                = 0x4000;
887 const UINT WINED3DLOCK_NO_DIRTY_UPDATE                          = 0x8000;
888
889 const UINT WINED3DPRESENT_RATE_DEFAULT                          = 0x000000000;
890
891 const UINT WINED3DPRESENT_INTERVAL_DEFAULT                      = 0x00000000;
892 const UINT WINED3DPRESENT_INTERVAL_ONE                          = 0x00000001;
893 const UINT WINED3DPRESENT_INTERVAL_TWO                          = 0x00000002;
894 const UINT WINED3DPRESENT_INTERVAL_THREE                        = 0x00000004;
895 const UINT WINED3DPRESENT_INTERVAL_FOUR                         = 0x00000008;
896 const UINT WINED3DPRESENT_INTERVAL_IMMEDIATE                    = 0x80000000;
897
898 const UINT WINED3DMAXUSERCLIPPLANES                             = 32;
899 const UINT WINED3DCLIPPLANE0                                    = (1 << 0);
900 const UINT WINED3DCLIPPLANE1                                    = (1 << 1);
901 const UINT WINED3DCLIPPLANE2                                    = (1 << 2);
902 const UINT WINED3DCLIPPLANE3                                    = (1 << 3);
903 const UINT WINED3DCLIPPLANE4                                    = (1 << 4);
904 const UINT WINED3DCLIPPLANE5                                    = (1 << 5);
905
906 /* FVF (Flexible Vertex Format) codes */
907 const UINT WINED3DFVF_RESERVED0                                 = 0x0001;
908 const UINT WINED3DFVF_POSITION_MASK                             = 0x400e;
909 const UINT WINED3DFVF_XYZ                                       = 0x0002;
910 const UINT WINED3DFVF_XYZRHW                                    = 0x0004;
911 const UINT WINED3DFVF_XYZB1                                     = 0x0006;
912 const UINT WINED3DFVF_XYZB2                                     = 0x0008;
913 const UINT WINED3DFVF_XYZB3                                     = 0x000a;
914 const UINT WINED3DFVF_XYZB4                                     = 0x000c;
915 const UINT WINED3DFVF_XYZB5                                     = 0x000e;
916 const UINT WINED3DFVF_XYZW                                      = 0x4002;
917 const UINT WINED3DFVF_NORMAL                                    = 0x0010;
918 const UINT WINED3DFVF_PSIZE                                     = 0x0020;
919 const UINT WINED3DFVF_DIFFUSE                                   = 0x0040;
920 const UINT WINED3DFVF_SPECULAR                                  = 0x0080;
921 const UINT WINED3DFVF_TEXCOUNT_MASK                             = 0x0f00;
922 const UINT WINED3DFVF_TEXCOUNT_SHIFT                            = 8;
923 const UINT WINED3DFVF_TEX0                                      = 0x0000;
924 const UINT WINED3DFVF_TEX1                                      = 0x0100;
925 const UINT WINED3DFVF_TEX2                                      = 0x0200;
926 const UINT WINED3DFVF_TEX3                                      = 0x0300;
927 const UINT WINED3DFVF_TEX4                                      = 0x0400;
928 const UINT WINED3DFVF_TEX5                                      = 0x0500;
929 const UINT WINED3DFVF_TEX6                                      = 0x0600;
930 const UINT WINED3DFVF_TEX7                                      = 0x0700;
931 const UINT WINED3DFVF_TEX8                                      = 0x0800;
932 const UINT WINED3DFVF_LASTBETA_UBYTE4                           = 0x1000;
933 const UINT WINED3DFVF_LASTBETA_D3DCOLOR                         = 0x8000;
934 const UINT WINED3DFVF_RESERVED2                                 = 0x6000;
935
936 const UINT WINED3DFVF_TEXTUREFORMAT1                            = 3;
937 const UINT WINED3DFVF_TEXTUREFORMAT2                            = 0;
938 const UINT WINED3DFVF_TEXTUREFORMAT3                            = 1;
939 const UINT WINED3DFVF_TEXTUREFORMAT4                            = 2;
940 cpp_quote("#define WINED3DFVF_TEXCOORDSIZE1(CoordIndex) (WINED3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))")
941 cpp_quote("#define WINED3DFVF_TEXCOORDSIZE2(CoordIndex) (WINED3DFVF_TEXTUREFORMAT2)")
942 cpp_quote("#define WINED3DFVF_TEXCOORDSIZE3(CoordIndex) (WINED3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))")
943 cpp_quote("#define WINED3DFVF_TEXCOORDSIZE4(CoordIndex) (WINED3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))")
944
945 /* Clear flags */
946 const UINT WINED3DCLEAR_TARGET                                  = 0x00000001;
947 const UINT WINED3DCLEAR_ZBUFFER                                 = 0x00000002;
948 const UINT WINED3DCLEAR_STENCIL                                 = 0x00000004;
949
950 /* Stream source flags */
951 const UINT WINED3DSTREAMSOURCE_INDEXEDDATA                      = (1 << 30);
952 const UINT WINED3DSTREAMSOURCE_INSTANCEDATA                     = (2 << 30);
953
954 /* SetPrivateData flags */
955 const UINT WINED3DSPD_IUNKNOWN                                  = 0x00000001;
956
957 /* IWineD3D::CreateDevice behaviour flags */
958 const UINT WINED3DCREATE_FPU_PRESERVE                           = 0x00000002;
959 const UINT WINED3DCREATE_PUREDEVICE                             = 0x00000010;
960 const UINT WINED3DCREATE_SOFTWARE_VERTEXPROCESSING              = 0x00000020;
961 const UINT WINED3DCREATE_HARDWARE_VERTEXPROCESSING              = 0x00000040;
962 const UINT WINED3DCREATE_MIXED_VERTEXPROCESSING                 = 0x00000080;
963 const UINT WINED3DCREATE_DISABLE_DRIVER_MANAGEMENT              = 0x00000100;
964 const UINT WINED3DCREATE_ADAPTERGROUP_DEVICE                    = 0x00000200;
965
966 /* VTF defines */
967 const UINT WINED3DDMAPSAMPLER                                   = 0x100;
968 const UINT WINED3DVERTEXTEXTURESAMPLER0                         = (WINED3DDMAPSAMPLER + 1);
969 const UINT WINED3DVERTEXTEXTURESAMPLER1                         = (WINED3DDMAPSAMPLER + 2);
970 const UINT WINED3DVERTEXTEXTURESAMPLER2                         = (WINED3DDMAPSAMPLER + 3);
971 const UINT WINED3DVERTEXTEXTURESAMPLER3                         = (WINED3DDMAPSAMPLER + 4);
972
973 const UINT WINED3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD        = 0x00000020;
974 const UINT WINED3DCAPS3_LINEAR_TO_SRGB_PRESENTATION             = 0x00000080;
975 const UINT WINED3DCAPS3_COPY_TO_VIDMEM                          = 0x00000100;
976 const UINT WINED3DCAPS3_COPY_TO_SYSTEMMEM                       = 0x00000200;
977 const UINT WINED3DCAPS3_RESERVED                                = 0x8000001f;
978
979 const UINT WINED3DDEVCAPS2_STREAMOFFSET                         = 0x00000001;
980 const UINT WINED3DDEVCAPS2_DMAPNPATCH                           = 0x00000002;
981 const UINT WINED3DDEVCAPS2_ADAPTIVETESSRTPATCH                  = 0x00000004;
982 const UINT WINED3DDEVCAPS2_ADAPTIVETESSNPATCH                   = 0x00000008;
983 const UINT WINED3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES        = 0x00000010;
984 const UINT WINED3DDEVCAPS2_PRESAMPLEDDMAPNPATCH                 = 0x00000020;
985 const UINT WINED3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET   = 0x00000040;
986
987 const UINT WINED3DDTCAPS_UBYTE4                                 = 0x00000001;
988 const UINT WINED3DDTCAPS_UBYTE4N                                = 0x00000002;
989 const UINT WINED3DDTCAPS_SHORT2N                                = 0x00000004;
990 const UINT WINED3DDTCAPS_SHORT4N                                = 0x00000008;
991 const UINT WINED3DDTCAPS_USHORT2N                               = 0x00000010;
992 const UINT WINED3DDTCAPS_USHORT4N                               = 0x00000020;
993 const UINT WINED3DDTCAPS_UDEC3                                  = 0x00000040;
994 const UINT WINED3DDTCAPS_DEC3N                                  = 0x00000080;
995 const UINT WINED3DDTCAPS_FLOAT16_2                              = 0x00000100;
996 const UINT WINED3DDTCAPS_FLOAT16_4                              = 0x00000200;
997
998 const UINT WINED3DFVFCAPS_TEXCOORDCOUNTMASK                     = 0x0000ffff;
999 const UINT WINED3DFVFCAPS_DONOTSTRIPELEMENTS                    = 0x00080000;
1000 const UINT WINED3DFVFCAPS_PSIZE                                 = 0x00100000;
1001
1002 const UINT WINED3DLINECAPS_TEXTURE                              = 0x00000001;
1003 const UINT WINED3DLINECAPS_ZTEST                                = 0x00000002;
1004 const UINT WINED3DLINECAPS_BLEND                                = 0x00000004;
1005 const UINT WINED3DLINECAPS_ALPHACMP                             = 0x00000008;
1006 const UINT WINED3DLINECAPS_FOG                                  = 0x00000010;
1007 const UINT WINED3DLINECAPS_ANTIALIAS                            = 0x00000020;
1008
1009 const UINT WINED3DMAX30SHADERINSTRUCTIONS                       = 32768;
1010 const UINT WINED3DMIN30SHADERINSTRUCTIONS                       = 512;
1011
1012 const UINT WINED3DPBLENDCAPS_ZERO                               = 0x00000001;
1013 const UINT WINED3DPBLENDCAPS_ONE                                = 0x00000002;
1014 const UINT WINED3DPBLENDCAPS_SRCCOLOR                           = 0x00000004;
1015 const UINT WINED3DPBLENDCAPS_INVSRCCOLOR                        = 0x00000008;
1016 const UINT WINED3DPBLENDCAPS_SRCALPHA                           = 0x00000010;
1017 const UINT WINED3DPBLENDCAPS_INVSRCALPHA                        = 0x00000020;
1018 const UINT WINED3DPBLENDCAPS_DESTALPHA                          = 0x00000040;
1019 const UINT WINED3DPBLENDCAPS_INVDESTALPHA                       = 0x00000080;
1020 const UINT WINED3DPBLENDCAPS_DESTCOLOR                          = 0x00000100;
1021 const UINT WINED3DPBLENDCAPS_INVDESTCOLOR                       = 0x00000200;
1022 const UINT WINED3DPBLENDCAPS_SRCALPHASAT                        = 0x00000400;
1023 const UINT WINED3DPBLENDCAPS_BOTHSRCALPHA                       = 0x00000800;
1024 const UINT WINED3DPBLENDCAPS_BOTHINVSRCALPHA                    = 0x00001000;
1025 const UINT WINED3DPBLENDCAPS_BLENDFACTOR                        = 0x00002000;
1026
1027 const UINT WINED3DPCMPCAPS_NEVER                                = 0x00000001;
1028 const UINT WINED3DPCMPCAPS_LESS                                 = 0x00000002;
1029 const UINT WINED3DPCMPCAPS_EQUAL                                = 0x00000004;
1030 const UINT WINED3DPCMPCAPS_LESSEQUAL                            = 0x00000008;
1031 const UINT WINED3DPCMPCAPS_GREATER                              = 0x00000010;
1032 const UINT WINED3DPCMPCAPS_NOTEQUAL                             = 0x00000020;
1033 const UINT WINED3DPCMPCAPS_GREATEREQUAL                         = 0x00000040;
1034 const UINT WINED3DPCMPCAPS_ALWAYS                               = 0x00000080;
1035
1036 const UINT WINED3DPMISCCAPS_MASKZ                               = 0x00000002;
1037 const UINT WINED3DPMISCCAPS_LINEPATTERNREP                      = 0x00000004;
1038 const UINT WINED3DPMISCCAPS_CULLNONE                            = 0x00000010;
1039 const UINT WINED3DPMISCCAPS_CULLCW                              = 0x00000020;
1040 const UINT WINED3DPMISCCAPS_CULLCCW                             = 0x00000040;
1041 const UINT WINED3DPMISCCAPS_COLORWRITEENABLE                    = 0x00000080;
1042 const UINT WINED3DPMISCCAPS_CLIPPLANESCALEDPOINTS               = 0x00000100;
1043 const UINT WINED3DPMISCCAPS_CLIPTLVERTS                         = 0x00000200;
1044 const UINT WINED3DPMISCCAPS_TSSARGTEMP                          = 0x00000400;
1045 const UINT WINED3DPMISCCAPS_BLENDOP                             = 0x00000800;
1046 const UINT WINED3DPMISCCAPS_NULLREFERENCE                       = 0x00001000;
1047 const UINT WINED3DPMISCCAPS_INDEPENDENTWRITEMASKS               = 0x00004000;
1048 const UINT WINED3DPMISCCAPS_PERSTAGECONSTANT                    = 0x00008000;
1049 const UINT WINED3DPMISCCAPS_FOGANDSPECULARALPHA                 = 0x00010000;
1050 const UINT WINED3DPMISCCAPS_SEPARATEALPHABLEND                  = 0x00020000;
1051 const UINT WINED3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS             = 0x00040000;
1052 const UINT WINED3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING          = 0x00080000;
1053 const UINT WINED3DPMISCCAPS_FOGVERTEXCLAMPED                    = 0x00100000;
1054
1055 const UINT WINED3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH              = 24;
1056 const UINT WINED3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH              = 0;
1057 const UINT WINED3DPS20_MAX_NUMTEMPS                             = 32;
1058 const UINT WINED3DPS20_MIN_NUMTEMPS                             = 12;
1059 const UINT WINED3DPS20_MAX_STATICFLOWCONTROLDEPTH               = 4;
1060 const UINT WINED3DPS20_MIN_STATICFLOWCONTROLDEPTH               = 0;
1061 const UINT WINED3DPS20_MAX_NUMINSTRUCTIONSLOTS                  = 512;
1062 const UINT WINED3DPS20_MIN_NUMINSTRUCTIONSLOTS                  = 96;
1063
1064 const UINT WINED3DPS20CAPS_ARBITRARYSWIZZLE                     = 0x00000001;
1065 const UINT WINED3DPS20CAPS_GRADIENTINSTRUCTIONS                 = 0x00000002;
1066 const UINT WINED3DPS20CAPS_PREDICATION                          = 0x00000004;
1067 const UINT WINED3DPS20CAPS_NODEPENDENTREADLIMIT                 = 0x00000008;
1068 const UINT WINED3DPS20CAPS_NOTEXINSTRUCTIONLIMIT                = 0x00000010;
1069
1070 const UINT WINED3DPTADDRESSCAPS_WRAP                            = 0x00000001;
1071 const UINT WINED3DPTADDRESSCAPS_MIRROR                          = 0x00000002;
1072 const UINT WINED3DPTADDRESSCAPS_CLAMP                           = 0x00000004;
1073 const UINT WINED3DPTADDRESSCAPS_BORDER                          = 0x00000008;
1074 const UINT WINED3DPTADDRESSCAPS_INDEPENDENTUV                   = 0x00000010;
1075 const UINT WINED3DPTADDRESSCAPS_MIRRORONCE                      = 0x00000020;
1076
1077 const UINT WINED3DSTENCILCAPS_KEEP                              = 0x00000001;
1078 const UINT WINED3DSTENCILCAPS_ZERO                              = 0x00000002;
1079 const UINT WINED3DSTENCILCAPS_REPLACE                           = 0x00000004;
1080 const UINT WINED3DSTENCILCAPS_INCRSAT                           = 0x00000008;
1081 const UINT WINED3DSTENCILCAPS_DECRSAT                           = 0x00000010;
1082 const UINT WINED3DSTENCILCAPS_INVERT                            = 0x00000020;
1083 const UINT WINED3DSTENCILCAPS_INCR                              = 0x00000040;
1084 const UINT WINED3DSTENCILCAPS_DECR                              = 0x00000080;
1085 const UINT WINED3DSTENCILCAPS_TWOSIDED                          = 0x00000100;
1086
1087 const UINT WINED3DTEXOPCAPS_DISABLE                             = 0x00000001;
1088 const UINT WINED3DTEXOPCAPS_SELECTARG1                          = 0x00000002;
1089 const UINT WINED3DTEXOPCAPS_SELECTARG2                          = 0x00000004;
1090 const UINT WINED3DTEXOPCAPS_MODULATE                            = 0x00000008;
1091 const UINT WINED3DTEXOPCAPS_MODULATE2X                          = 0x00000010;
1092 const UINT WINED3DTEXOPCAPS_MODULATE4X                          = 0x00000020;
1093 const UINT WINED3DTEXOPCAPS_ADD                                 = 0x00000040;
1094 const UINT WINED3DTEXOPCAPS_ADDSIGNED                           = 0x00000080;
1095 const UINT WINED3DTEXOPCAPS_ADDSIGNED2X                         = 0x00000100;
1096 const UINT WINED3DTEXOPCAPS_SUBTRACT                            = 0x00000200;
1097 const UINT WINED3DTEXOPCAPS_ADDSMOOTH                           = 0x00000400;
1098 const UINT WINED3DTEXOPCAPS_BLENDDIFFUSEALPHA                   = 0x00000800;
1099 const UINT WINED3DTEXOPCAPS_BLENDTEXTUREALPHA                   = 0x00001000;
1100 const UINT WINED3DTEXOPCAPS_BLENDFACTORALPHA                    = 0x00002000;
1101 const UINT WINED3DTEXOPCAPS_BLENDTEXTUREALPHAPM                 = 0x00004000;
1102 const UINT WINED3DTEXOPCAPS_BLENDCURRENTALPHA                   = 0x00008000;
1103 const UINT WINED3DTEXOPCAPS_PREMODULATE                         = 0x00010000;
1104 const UINT WINED3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR              = 0x00020000;
1105 const UINT WINED3DTEXOPCAPS_MODULATECOLOR_ADDALPHA              = 0x00040000;
1106 const UINT WINED3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR           = 0x00080000;
1107 const UINT WINED3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA           = 0x00100000;
1108 const UINT WINED3DTEXOPCAPS_BUMPENVMAP                          = 0x00200000;
1109 const UINT WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE                 = 0x00400000;
1110 const UINT WINED3DTEXOPCAPS_DOTPRODUCT3                         = 0x00800000;
1111 const UINT WINED3DTEXOPCAPS_MULTIPLYADD                         = 0x01000000;
1112 const UINT WINED3DTEXOPCAPS_LERP                                = 0x02000000;
1113
1114 const UINT WINED3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH              = 24;
1115 const UINT WINED3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH              = 0;
1116 const UINT WINED3DVS20_MAX_NUMTEMPS                             = 32;
1117 const UINT WINED3DVS20_MIN_NUMTEMPS                             = 12;
1118 const UINT WINED3DVS20_MAX_STATICFLOWCONTROLDEPTH               = 4;
1119 const UINT WINED3DVS20_MIN_STATICFLOWCONTROLDEPTH               = 1;
1120
1121 const UINT WINED3DVS20CAPS_PREDICATION                          = 0x00000001;
1122
1123 const UINT WINED3DCAPS2_NO2DDURING3DSCENE                       = 0x00000002;
1124 const UINT WINED3DCAPS2_FULLSCREENGAMMA                         = 0x00020000;
1125 const UINT WINED3DCAPS2_CANRENDERWINDOWED                       = 0x00080000;
1126 const UINT WINED3DCAPS2_CANCALIBRATEGAMMA                       = 0x00100000;
1127 const UINT WINED3DCAPS2_RESERVED                                = 0x02000000;
1128 const UINT WINED3DCAPS2_CANMANAGERESOURCE                       = 0x10000000;
1129 const UINT WINED3DCAPS2_DYNAMICTEXTURES                         = 0x20000000;
1130 const UINT WINED3DCAPS2_CANAUTOGENMIPMAP                        = 0x40000000;
1131
1132 const UINT WINED3DPRASTERCAPS_DITHER                            = 0x00000001;
1133 const UINT WINED3DPRASTERCAPS_ROP2                              = 0x00000002;
1134 const UINT WINED3DPRASTERCAPS_XOR                               = 0x00000004;
1135 const UINT WINED3DPRASTERCAPS_PAT                               = 0x00000008;
1136 const UINT WINED3DPRASTERCAPS_ZTEST                             = 0x00000010;
1137 const UINT WINED3DPRASTERCAPS_SUBPIXEL                          = 0x00000020;
1138 const UINT WINED3DPRASTERCAPS_SUBPIXELX                         = 0x00000040;
1139 const UINT WINED3DPRASTERCAPS_FOGVERTEX                         = 0x00000080;
1140 const UINT WINED3DPRASTERCAPS_FOGTABLE                          = 0x00000100;
1141 const UINT WINED3DPRASTERCAPS_STIPPLE                           = 0x00000200;
1142 const UINT WINED3DPRASTERCAPS_ANTIALIASSORTDEPENDENT            = 0x00000400;
1143 const UINT WINED3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT          = 0x00000800;
1144 const UINT WINED3DPRASTERCAPS_ANTIALIASEDGES                    = 0x00001000;
1145 const UINT WINED3DPRASTERCAPS_MIPMAPLODBIAS                     = 0x00002000;
1146 const UINT WINED3DPRASTERCAPS_ZBIAS                             = 0x00004000;
1147 const UINT WINED3DPRASTERCAPS_ZBUFFERLESSHSR                    = 0x00008000;
1148 const UINT WINED3DPRASTERCAPS_FOGRANGE                          = 0x00010000;
1149 const UINT WINED3DPRASTERCAPS_ANISOTROPY                        = 0x00020000;
1150 const UINT WINED3DPRASTERCAPS_WBUFFER                           = 0x00040000;
1151 const UINT WINED3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT        = 0x00080000;
1152 const UINT WINED3DPRASTERCAPS_WFOG                              = 0x00100000;
1153 const UINT WINED3DPRASTERCAPS_ZFOG                              = 0x00200000;
1154 const UINT WINED3DPRASTERCAPS_COLORPERSPECTIVE                  = 0x00400000;
1155 const UINT WINED3DPRASTERCAPS_SCISSORTEST                       = 0x01000000;
1156 const UINT WINED3DPRASTERCAPS_SLOPESCALEDEPTHBIAS               = 0x02000000;
1157 const UINT WINED3DPRASTERCAPS_DEPTHBIAS                         = 0x04000000;
1158 const UINT WINED3DPRASTERCAPS_MULTISAMPLE_TOGGLE                = 0x08000000;
1159
1160 const UINT WINED3DPSHADECAPS_COLORFLATMONO                      = 0x00000001;
1161 const UINT WINED3DPSHADECAPS_COLORFLATRGB                       = 0x00000002;
1162 const UINT WINED3DPSHADECAPS_COLORGOURAUDMONO                   = 0x00000004;
1163 const UINT WINED3DPSHADECAPS_COLORGOURAUDRGB                    = 0x00000008;
1164 const UINT WINED3DPSHADECAPS_COLORPHONGMONO                     = 0x00000010;
1165 const UINT WINED3DPSHADECAPS_COLORPHONGRGB                      = 0x00000020;
1166 const UINT WINED3DPSHADECAPS_SPECULARFLATMONO                   = 0x00000040;
1167 const UINT WINED3DPSHADECAPS_SPECULARFLATRGB                    = 0x00000080;
1168 const UINT WINED3DPSHADECAPS_SPECULARGOURAUDMONO                = 0x00000100;
1169 const UINT WINED3DPSHADECAPS_SPECULARGOURAUDRGB                 = 0x00000200;
1170 const UINT WINED3DPSHADECAPS_SPECULARPHONGMONO                  = 0x00000400;
1171 const UINT WINED3DPSHADECAPS_SPECULARPHONGRGB                   = 0x00000800;
1172 const UINT WINED3DPSHADECAPS_ALPHAFLATBLEND                     = 0x00001000;
1173 const UINT WINED3DPSHADECAPS_ALPHAFLATSTIPPLED                  = 0x00002000;
1174 const UINT WINED3DPSHADECAPS_ALPHAGOURAUDBLEND                  = 0x00004000;
1175 const UINT WINED3DPSHADECAPS_ALPHAGOURAUDSTIPPLED               = 0x00008000;
1176 const UINT WINED3DPSHADECAPS_ALPHAPHONGBLEND                    = 0x00010000;
1177 const UINT WINED3DPSHADECAPS_ALPHAPHONGSTIPPLED                 = 0x00020000;
1178 const UINT WINED3DPSHADECAPS_FOGFLAT                            = 0x00040000;
1179 const UINT WINED3DPSHADECAPS_FOGGOURAUD                         = 0x00080000;
1180 const UINT WINED3DPSHADECAPS_FOGPHONG                           = 0x00100000;
1181
1182 const UINT WINED3DPTEXTURECAPS_PERSPECTIVE                      = 0x00000001;
1183 const UINT WINED3DPTEXTURECAPS_POW2                             = 0x00000002;
1184 const UINT WINED3DPTEXTURECAPS_ALPHA                            = 0x00000004;
1185 const UINT WINED3DPTEXTURECAPS_TRANSPARENCY                     = 0x00000008;
1186 const UINT WINED3DPTEXTURECAPS_BORDER                           = 0x00000010;
1187 const UINT WINED3DPTEXTURECAPS_SQUAREONLY                       = 0x00000020;
1188 const UINT WINED3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE         = 0x00000040;
1189 const UINT WINED3DPTEXTURECAPS_ALPHAPALETTE                     = 0x00000080;
1190 const UINT WINED3DPTEXTURECAPS_NONPOW2CONDITIONAL               = 0x00000100;
1191 const UINT WINED3DPTEXTURECAPS_PROJECTED                        = 0x00000400;
1192 const UINT WINED3DPTEXTURECAPS_CUBEMAP                          = 0x00000800;
1193 const UINT WINED3DPTEXTURECAPS_COLORKEYBLEND                    = 0x00001000;
1194 const UINT WINED3DPTEXTURECAPS_VOLUMEMAP                        = 0x00002000;
1195 const UINT WINED3DPTEXTURECAPS_MIPMAP                           = 0x00004000;
1196 const UINT WINED3DPTEXTURECAPS_MIPVOLUMEMAP                     = 0x00008000;
1197 const UINT WINED3DPTEXTURECAPS_MIPCUBEMAP                       = 0x00010000;
1198 const UINT WINED3DPTEXTURECAPS_CUBEMAP_POW2                     = 0x00020000;
1199 const UINT WINED3DPTEXTURECAPS_VOLUMEMAP_POW2                   = 0x00040000;
1200 const UINT WINED3DPTEXTURECAPS_NOPROJECTEDBUMPENV               = 0x00200000;
1201
1202 const UINT WINED3DPTFILTERCAPS_NEAREST                          = 0x00000001;
1203 const UINT WINED3DPTFILTERCAPS_LINEAR                           = 0x00000002;
1204 const UINT WINED3DPTFILTERCAPS_MIPNEAREST                       = 0x00000004;
1205 const UINT WINED3DPTFILTERCAPS_MIPLINEAR                        = 0x00000008;
1206 const UINT WINED3DPTFILTERCAPS_LINEARMIPNEAREST                 = 0x00000010;
1207 const UINT WINED3DPTFILTERCAPS_LINEARMIPLINEAR                  = 0x00000020;
1208 const UINT WINED3DPTFILTERCAPS_MINFPOINT                        = 0x00000100;
1209 const UINT WINED3DPTFILTERCAPS_MINFLINEAR                       = 0x00000200;
1210 const UINT WINED3DPTFILTERCAPS_MINFANISOTROPIC                  = 0x00000400;
1211 const UINT WINED3DPTFILTERCAPS_MIPFPOINT                        = 0x00010000;
1212 const UINT WINED3DPTFILTERCAPS_MIPFLINEAR                       = 0x00020000;
1213 const UINT WINED3DPTFILTERCAPS_MAGFPOINT                        = 0x01000000;
1214 const UINT WINED3DPTFILTERCAPS_MAGFLINEAR                       = 0x02000000;
1215 const UINT WINED3DPTFILTERCAPS_MAGFANISOTROPIC                  = 0x04000000;
1216 const UINT WINED3DPTFILTERCAPS_MAGFPYRAMIDALQUAD                = 0x08000000;
1217 const UINT WINED3DPTFILTERCAPS_MAGFGAUSSIANQUAD                 = 0x10000000;
1218
1219 const UINT WINED3DVTXPCAPS_TEXGEN                               = 0x00000001;
1220 const UINT WINED3DVTXPCAPS_MATERIALSOURCE7                      = 0x00000002;
1221 const UINT WINED3DVTXPCAPS_VERTEXFOG                            = 0x00000004;
1222 const UINT WINED3DVTXPCAPS_DIRECTIONALLIGHTS                    = 0x00000008;
1223 const UINT WINED3DVTXPCAPS_POSITIONALLIGHTS                     = 0x00000010;
1224 const UINT WINED3DVTXPCAPS_LOCALVIEWER                          = 0x00000020;
1225 const UINT WINED3DVTXPCAPS_TWEENING                             = 0x00000040;
1226 const UINT WINED3DVTXPCAPS_TEXGEN_SPHEREMAP                     = 0x00000100;
1227 const UINT WINED3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER             = 0x00000200;
1228
1229 const UINT WINED3DCURSORCAPS_COLOR                              = 0x00000001;
1230 const UINT WINED3DCURSORCAPS_LOWRES                             = 0x00000002;
1231
1232 const UINT WINED3DDEVCAPS_FLOATTLVERTEX                         = 0x00000001;
1233 const UINT WINED3DDEVCAPS_SORTINCREASINGZ                       = 0x00000002;
1234 const UINT WINED3DDEVCAPS_SORTDECREASINGZ                       = 0X00000004;
1235 const UINT WINED3DDEVCAPS_SORTEXACT                             = 0x00000008;
1236 const UINT WINED3DDEVCAPS_EXECUTESYSTEMMEMORY                   = 0x00000010;
1237 const UINT WINED3DDEVCAPS_EXECUTEVIDEOMEMORY                    = 0x00000020;
1238 const UINT WINED3DDEVCAPS_TLVERTEXSYSTEMMEMORY                  = 0x00000040;
1239 const UINT WINED3DDEVCAPS_TLVERTEXVIDEOMEMORY                   = 0x00000080;
1240 const UINT WINED3DDEVCAPS_TEXTURESYSTEMMEMORY                   = 0x00000100;
1241 const UINT WINED3DDEVCAPS_TEXTUREVIDEOMEMORY                    = 0x00000200;
1242 const UINT WINED3DDEVCAPS_DRAWPRIMTLVERTEX                      = 0x00000400;
1243 const UINT WINED3DDEVCAPS_CANRENDERAFTERFLIP                    = 0x00000800;
1244 const UINT WINED3DDEVCAPS_TEXTURENONLOCALVIDMEM                 = 0x00001000;
1245 const UINT WINED3DDEVCAPS_DRAWPRIMITIVES2                       = 0x00002000;
1246 const UINT WINED3DDEVCAPS_SEPARATETEXTUREMEMORIES               = 0x00004000;
1247 const UINT WINED3DDEVCAPS_DRAWPRIMITIVES2EX                     = 0x00008000;
1248 const UINT WINED3DDEVCAPS_HWTRANSFORMANDLIGHT                   = 0x00010000;
1249 const UINT WINED3DDEVCAPS_CANBLTSYSTONONLOCAL                   = 0x00020000;
1250 const UINT WINED3DDEVCAPS_HWRASTERIZATION                       = 0x00080000;
1251 const UINT WINED3DDEVCAPS_PUREDEVICE                            = 0x00100000;
1252 const UINT WINED3DDEVCAPS_QUINTICRTPATCHES                      = 0x00200000;
1253 const UINT WINED3DDEVCAPS_RTPATCHES                             = 0x00400000;
1254 const UINT WINED3DDEVCAPS_RTPATCHHANDLEZERO                     = 0x00800000;
1255 const UINT WINED3DDEVCAPS_NPATCHES                              = 0x01000000;
1256
1257 /* dwDDFX */
1258 /* arithmetic stretching along y axis */
1259 const UINT WINEDDBLTFX_ARITHSTRETCHY                            = 0x00000001;
1260 /* mirror on y axis */
1261 const UINT WINEDDBLTFX_MIRRORLEFTRIGHT                          = 0x00000002;
1262 /* mirror on x axis */
1263 const UINT WINEDDBLTFX_MIRRORUPDOWN                             = 0x00000004;
1264 /* do not tear */
1265 const UINT WINEDDBLTFX_NOTEARING                                = 0x00000008;
1266 /* 180 degrees clockwise rotation */
1267 const UINT WINEDDBLTFX_ROTATE180                                = 0x00000010;
1268 /* 270 degrees clockwise rotation */
1269 const UINT WINEDDBLTFX_ROTATE270                                = 0x00000020;
1270 /* 90 degrees clockwise rotation */
1271 const UINT WINEDDBLTFX_ROTATE90                                 = 0x00000040;
1272 /* dwZBufferLow and dwZBufferHigh specify limits to the copied Z values */
1273 const UINT WINEDDBLTFX_ZBUFFERRANGE                             = 0x00000080;
1274 /* add dwZBufferBaseDest to every source z value before compare */
1275 const UINT WINEDDBLTFX_ZBUFFERBASEDEST                          = 0x00000100;
1276
1277 /* dwFlags for Blt* */
1278 const UINT WINEDDBLT_ALPHADEST                                  = 0x00000001;
1279 const UINT WINEDDBLT_ALPHADESTCONSTOVERRIDE                     = 0x00000002;
1280 const UINT WINEDDBLT_ALPHADESTNEG                               = 0x00000004;
1281 const UINT WINEDDBLT_ALPHADESTSURFACEOVERRIDE                   = 0x00000008;
1282 const UINT WINEDDBLT_ALPHAEDGEBLEND                             = 0x00000010;
1283 const UINT WINEDDBLT_ALPHASRC                                   = 0x00000020;
1284 const UINT WINEDDBLT_ALPHASRCCONSTOVERRIDE                      = 0x00000040;
1285 const UINT WINEDDBLT_ALPHASRCNEG                                = 0x00000080;
1286 const UINT WINEDDBLT_ALPHASRCSURFACEOVERRIDE                    = 0x00000100;
1287 const UINT WINEDDBLT_ASYNC                                      = 0x00000200;
1288 const UINT WINEDDBLT_COLORFILL                                  = 0x00000400;
1289 const UINT WINEDDBLT_DDFX                                       = 0x00000800;
1290 const UINT WINEDDBLT_DDROPS                                     = 0x00001000;
1291 const UINT WINEDDBLT_KEYDEST                                    = 0x00002000;
1292 const UINT WINEDDBLT_KEYDESTOVERRIDE                            = 0x00004000;
1293 const UINT WINEDDBLT_KEYSRC                                     = 0x00008000;
1294 const UINT WINEDDBLT_KEYSRCOVERRIDE                             = 0x00010000;
1295 const UINT WINEDDBLT_ROP                                        = 0x00020000;
1296 const UINT WINEDDBLT_ROTATIONANGLE                              = 0x00040000;
1297 const UINT WINEDDBLT_ZBUFFER                                    = 0x00080000;
1298 const UINT WINEDDBLT_ZBUFFERDESTCONSTOVERRIDE                   = 0x00100000;
1299 const UINT WINEDDBLT_ZBUFFERDESTOVERRIDE                        = 0x00200000;
1300 const UINT WINEDDBLT_ZBUFFERSRCCONSTOVERRIDE                    = 0x00400000;
1301 const UINT WINEDDBLT_ZBUFFERSRCOVERRIDE                         = 0x00800000;
1302 const UINT WINEDDBLT_WAIT                                       = 0x01000000;
1303 const UINT WINEDDBLT_DEPTHFILL                                  = 0x02000000;
1304 const UINT WINEDDBLT_DONOTWAIT                                  = 0x08000000;
1305
1306 /* dwTrans for BltFast */
1307 const UINT WINEDDBLTFAST_NOCOLORKEY                             = 0x00000000;
1308 const UINT WINEDDBLTFAST_SRCCOLORKEY                            = 0x00000001;
1309 const UINT WINEDDBLTFAST_DESTCOLORKEY                           = 0x00000002;
1310 const UINT WINEDDBLTFAST_WAIT                                   = 0x00000010;
1311 const UINT WINEDDBLTFAST_DONOTWAIT                              = 0x00000020;
1312
1313 /* DDSURFACEDESC.dwFlags */
1314 const UINT WINEDDSD_CAPS                                        = 0x00000001;
1315 const UINT WINEDDSD_HEIGHT                                      = 0x00000002;
1316 const UINT WINEDDSD_WIDTH                                       = 0x00000004;
1317 const UINT WINEDDSD_PITCH                                       = 0x00000008;
1318 const UINT WINEDDSD_BACKBUFFERCOUNT                             = 0x00000020;
1319 const UINT WINEDDSD_ZBUFFERBITDEPTH                             = 0x00000040;
1320 const UINT WINEDDSD_ALPHABITDEPTH                               = 0x00000080;
1321 const UINT WINEDDSD_LPSURFACE                                   = 0x00000800;
1322 const UINT WINEDDSD_PIXELFORMAT                                 = 0x00001000;
1323 const UINT WINEDDSD_CKDESTOVERLAY                               = 0x00002000;
1324 const UINT WINEDDSD_CKDESTBLT                                   = 0x00004000;
1325 const UINT WINEDDSD_CKSRCOVERLAY                                = 0x00008000;
1326 const UINT WINEDDSD_CKSRCBLT                                    = 0x00010000;
1327 const UINT WINEDDSD_MIPMAPCOUNT                                 = 0x00020000;
1328 const UINT WINEDDSD_REFRESHRATE                                 = 0x00040000;
1329 const UINT WINEDDSD_LINEARSIZE                                  = 0x00080000;
1330 const UINT WINEDDSD_TEXTURESTAGE                                = 0x00100000;
1331 const UINT WINEDDSD_FVF                                         = 0x00200000;
1332 const UINT WINEDDSD_SRCVBHANDLE                                 = 0x00400000;
1333 const UINT WINEDDSD_ALL                                         = 0x007ff9ee;
1334
1335 /* Set/Get Colour Key Flags */
1336 const UINT WINEDDCKEY_COLORSPACE                                = 0x00000001; /* Struct is single colour space */
1337 const UINT WINEDDCKEY_DESTBLT                                   = 0x00000002; /* To be used as dest for blt */
1338 const UINT WINEDDCKEY_DESTOVERLAY                               = 0x00000004; /* To be used as dest for CK overlays */
1339 const UINT WINEDDCKEY_SRCBLT                                    = 0x00000008; /* To be used as src for blt */
1340 const UINT WINEDDCKEY_SRCOVERLAY                                = 0x00000010; /* To be used as src for CK overlays */
1341
1342 /* dwFlags for GetBltStatus */
1343 const UINT WINEDDGBS_CANBLT                                     = 0x00000001;
1344 const UINT WINEDDGBS_ISBLTDONE                                  = 0x00000002;
1345
1346 /* dwFlags for GetFlipStatus */
1347 const UINT WINEDDGFS_CANFLIP                                    = 0x00000001;
1348 const UINT WINEDDGFS_ISFLIPDONE                                 = 0x00000002;
1349
1350 /* dwFlags for Flip */
1351 const UINT WINEDDFLIP_WAIT                                      = 0x00000001;
1352 const UINT WINEDDFLIP_EVEN                                      = 0x00000002; /* only valid for overlay */
1353 const UINT WINEDDFLIP_ODD                                       = 0x00000004; /* only valid for overlay */
1354 const UINT WINEDDFLIP_NOVSYNC                                   = 0x00000008;
1355 const UINT WINEDDFLIP_STEREO                                    = 0x00000010;
1356 const UINT WINEDDFLIP_DONOTWAIT                                 = 0x00000020;
1357 const UINT WINEDDFLIP_INTERVAL2                                 = 0x02000000;
1358 const UINT WINEDDFLIP_INTERVAL3                                 = 0x03000000;
1359 const UINT WINEDDFLIP_INTERVAL4                                 = 0x04000000;
1360
1361 const UINT WINEDDOVER_ALPHADEST                                 = 0x00000001;
1362 const UINT WINEDDOVER_ALPHADESTCONSTOVERRIDE                    = 0x00000002;
1363 const UINT WINEDDOVER_ALPHADESTNEG                              = 0x00000004;
1364 const UINT WINEDDOVER_ALPHADESTSURFACEOVERRIDE                  = 0x00000008;
1365 const UINT WINEDDOVER_ALPHAEDGEBLEND                            = 0x00000010;
1366 const UINT WINEDDOVER_ALPHASRC                                  = 0x00000020;
1367 const UINT WINEDDOVER_ALPHASRCCONSTOVERRIDE                     = 0x00000040;
1368 const UINT WINEDDOVER_ALPHASRCNEG                               = 0x00000080;
1369 const UINT WINEDDOVER_ALPHASRCSURFACEOVERRIDE                   = 0x00000100;
1370 const UINT WINEDDOVER_HIDE                                      = 0x00000200;
1371 const UINT WINEDDOVER_KEYDEST                                   = 0x00000400;
1372 const UINT WINEDDOVER_KEYDESTOVERRIDE                           = 0x00000800;
1373 const UINT WINEDDOVER_KEYSRC                                    = 0x00001000;
1374 const UINT WINEDDOVER_KEYSRCOVERRIDE                            = 0x00002000;
1375 const UINT WINEDDOVER_SHOW                                      = 0x00004000;
1376 const UINT WINEDDOVER_ADDDIRTYRECT                              = 0x00008000;
1377 const UINT WINEDDOVER_REFRESHDIRTYRECTS                         = 0x00010000;
1378 const UINT WINEDDOVER_REFRESHALL                                = 0x00020000;
1379 const UINT WINEDDOVER_DDFX                                      = 0x00080000;
1380 const UINT WINEDDOVER_AUTOFLIP                                  = 0x00100000;
1381 const UINT WINEDDOVER_BOB                                       = 0x00200000;
1382 const UINT WINEDDOVER_OVERRIDEBOBWEAVE                          = 0x00400000;
1383 const UINT WINEDDOVER_INTERLEAVED                               = 0x00800000;
1384
1385 /* DirectDraw Caps */
1386 const UINT WINEDDSCAPS_RESERVED1                                = 0x00000001;
1387 const UINT WINEDDSCAPS_ALPHA                                    = 0x00000002;
1388 const UINT WINEDDSCAPS_BACKBUFFER                               = 0x00000004;
1389 const UINT WINEDDSCAPS_COMPLEX                                  = 0x00000008;
1390 const UINT WINEDDSCAPS_FLIP                                     = 0x00000010;
1391 const UINT WINEDDSCAPS_FRONTBUFFER                              = 0x00000020;
1392 const UINT WINEDDSCAPS_OFFSCREENPLAIN                           = 0x00000040;
1393 const UINT WINEDDSCAPS_OVERLAY                                  = 0x00000080;
1394 const UINT WINEDDSCAPS_PALETTE                                  = 0x00000100;
1395 const UINT WINEDDSCAPS_PRIMARYSURFACE                           = 0x00000200;
1396 const UINT WINEDDSCAPS_PRIMARYSURFACELEFT                       = 0x00000400;
1397 const UINT WINEDDSCAPS_SYSTEMMEMORY                             = 0x00000800;
1398 const UINT WINEDDSCAPS_TEXTURE                                  = 0x00001000;
1399 const UINT WINEDDSCAPS_3DDEVICE                                 = 0x00002000;
1400 const UINT WINEDDSCAPS_VIDEOMEMORY                              = 0x00004000;
1401 const UINT WINEDDSCAPS_VISIBLE                                  = 0x00008000;
1402 const UINT WINEDDSCAPS_WRITEONLY                                = 0x00010000;
1403 const UINT WINEDDSCAPS_ZBUFFER                                  = 0x00020000;
1404 const UINT WINEDDSCAPS_OWNDC                                    = 0x00040000;
1405 const UINT WINEDDSCAPS_LIVEVIDEO                                = 0x00080000;
1406 const UINT WINEDDSCAPS_HWCODEC                                  = 0x00100000;
1407 const UINT WINEDDSCAPS_MODEX                                    = 0x00200000;
1408 const UINT WINEDDSCAPS_MIPMAP                                   = 0x00400000;
1409 const UINT WINEDDSCAPS_RESERVED2                                = 0x00800000;
1410 const UINT WINEDDSCAPS_ALLOCONLOAD                              = 0x04000000;
1411 const UINT WINEDDSCAPS_VIDEOPORT                                = 0x08000000;
1412 const UINT WINEDDSCAPS_LOCALVIDMEM                              = 0x10000000;
1413 const UINT WINEDDSCAPS_NONLOCALVIDMEM                           = 0x20000000;
1414 const UINT WINEDDSCAPS_STANDARDVGAMODE                          = 0x40000000;
1415 const UINT WINEDDSCAPS_OPTIMIZED                                = 0x80000000;
1416
1417 const UINT WINEDDCKEYCAPS_DESTBLT                               = 0x00000001;
1418 const UINT WINEDDCKEYCAPS_DESTBLTCLRSPACE                       = 0x00000002;
1419 const UINT WINEDDCKEYCAPS_DESTBLTCLRSPACEYUV                    = 0x00000004;
1420 const UINT WINEDDCKEYCAPS_DESTBLTYUV                            = 0x00000008;
1421 const UINT WINEDDCKEYCAPS_DESTOVERLAY                           = 0x00000010;
1422 const UINT WINEDDCKEYCAPS_DESTOVERLAYCLRSPACE                   = 0x00000020;
1423 const UINT WINEDDCKEYCAPS_DESTOVERLAYCLRSPACEYUV                = 0x00000040;
1424 const UINT WINEDDCKEYCAPS_DESTOVERLAYONEACTIVE                  = 0x00000080;
1425 const UINT WINEDDCKEYCAPS_DESTOVERLAYYUV                        = 0x00000100;
1426 const UINT WINEDDCKEYCAPS_SRCBLT                                = 0x00000200;
1427 const UINT WINEDDCKEYCAPS_SRCBLTCLRSPACE                        = 0x00000400;
1428 const UINT WINEDDCKEYCAPS_SRCBLTCLRSPACEYUV                     = 0x00000800;
1429 const UINT WINEDDCKEYCAPS_SRCBLTYUV                             = 0x00001000;
1430 const UINT WINEDDCKEYCAPS_SRCOVERLAY                            = 0x00002000;
1431 const UINT WINEDDCKEYCAPS_SRCOVERLAYCLRSPACE                    = 0x00004000;
1432 const UINT WINEDDCKEYCAPS_SRCOVERLAYCLRSPACEYUV                 = 0x00008000;
1433 const UINT WINEDDCKEYCAPS_SRCOVERLAYONEACTIVE                   = 0x00010000;
1434 const UINT WINEDDCKEYCAPS_SRCOVERLAYYUV                         = 0x00020000;
1435 const UINT WINEDDCKEYCAPS_NOCOSTOVERLAY                         = 0x00040000;
1436
1437 const UINT WINEDDFXCAPS_BLTALPHA                                = 0x00000001;
1438 const UINT WINEDDFXCAPS_OVERLAYALPHA                            = 0x00000004;
1439 const UINT WINEDDFXCAPS_BLTARITHSTRETCHYN                       = 0x00000010;
1440 const UINT WINEDDFXCAPS_BLTARITHSTRETCHY                        = 0x00000020;
1441 const UINT WINEDDFXCAPS_BLTMIRRORLEFTRIGHT                      = 0x00000040;
1442 const UINT WINEDDFXCAPS_BLTMIRRORUPDOWN                         = 0x00000080;
1443 const UINT WINEDDFXCAPS_BLTROTATION                             = 0x00000100;
1444 const UINT WINEDDFXCAPS_BLTROTATION90                           = 0x00000200;
1445 const UINT WINEDDFXCAPS_BLTSHRINKX                              = 0x00000400;
1446 const UINT WINEDDFXCAPS_BLTSHRINKXN                             = 0x00000800;
1447 const UINT WINEDDFXCAPS_BLTSHRINKY                              = 0x00001000;
1448 const UINT WINEDDFXCAPS_BLTSHRINKYN                             = 0x00002000;
1449 const UINT WINEDDFXCAPS_BLTSTRETCHX                             = 0x00004000;
1450 const UINT WINEDDFXCAPS_BLTSTRETCHXN                            = 0x00008000;
1451 const UINT WINEDDFXCAPS_BLTSTRETCHY                             = 0x00010000;
1452 const UINT WINEDDFXCAPS_BLTSTRETCHYN                            = 0x00020000;
1453 const UINT WINEDDFXCAPS_OVERLAYARITHSTRETCHY                    = 0x00040000;
1454 const UINT WINEDDFXCAPS_OVERLAYARITHSTRETCHYN                   = 0x00000008;
1455 const UINT WINEDDFXCAPS_OVERLAYSHRINKX                          = 0x00080000;
1456 const UINT WINEDDFXCAPS_OVERLAYSHRINKXN                         = 0x00100000;
1457 const UINT WINEDDFXCAPS_OVERLAYSHRINKY                          = 0x00200000;
1458 const UINT WINEDDFXCAPS_OVERLAYSHRINKYN                         = 0x00400000;
1459 const UINT WINEDDFXCAPS_OVERLAYSTRETCHX                         = 0x00800000;
1460 const UINT WINEDDFXCAPS_OVERLAYSTRETCHXN                        = 0x01000000;
1461 const UINT WINEDDFXCAPS_OVERLAYSTRETCHY                         = 0x02000000;
1462 const UINT WINEDDFXCAPS_OVERLAYSTRETCHYN                        = 0x04000000;
1463 const UINT WINEDDFXCAPS_OVERLAYMIRRORLEFTRIGHT                  = 0x08000000;
1464 const UINT WINEDDFXCAPS_OVERLAYMIRRORUPDOWN                     = 0x10000000;
1465
1466 const UINT WINEDDCAPS_3D                                        = 0x00000001;
1467 const UINT WINEDDCAPS_ALIGNBOUNDARYDEST                         = 0x00000002;
1468 const UINT WINEDDCAPS_ALIGNSIZEDEST                             = 0x00000004;
1469 const UINT WINEDDCAPS_ALIGNBOUNDARYSRC                          = 0x00000008;
1470 const UINT WINEDDCAPS_ALIGNSIZESRC                              = 0x00000010;
1471 const UINT WINEDDCAPS_ALIGNSTRIDE                               = 0x00000020;
1472 const UINT WINEDDCAPS_BLT                                       = 0x00000040;
1473 const UINT WINEDDCAPS_BLTQUEUE                                  = 0x00000080;
1474 const UINT WINEDDCAPS_BLTFOURCC                                 = 0x00000100;
1475 const UINT WINEDDCAPS_BLTSTRETCH                                = 0x00000200;
1476 const UINT WINEDDCAPS_GDI                                       = 0x00000400;
1477 const UINT WINEDDCAPS_OVERLAY                                   = 0x00000800;
1478 const UINT WINEDDCAPS_OVERLAYCANTCLIP                           = 0x00001000;
1479 const UINT WINEDDCAPS_OVERLAYFOURCC                             = 0x00002000;
1480 const UINT WINEDDCAPS_OVERLAYSTRETCH                            = 0x00004000;
1481 const UINT WINEDDCAPS_PALETTE                                   = 0x00008000;
1482 const UINT WINEDDCAPS_PALETTEVSYNC                              = 0x00010000;
1483 const UINT WINEDDCAPS_READSCANLINE                              = 0x00020000;
1484 const UINT WINEDDCAPS_STEREOVIEW                                = 0x00040000;
1485 const UINT WINEDDCAPS_VBI                                       = 0x00080000;
1486 const UINT WINEDDCAPS_ZBLTS                                     = 0x00100000;
1487 const UINT WINEDDCAPS_ZOVERLAYS                                 = 0x00200000;
1488 const UINT WINEDDCAPS_COLORKEY                                  = 0x00400000;
1489 const UINT WINEDDCAPS_ALPHA                                     = 0x00800000;
1490 const UINT WINEDDCAPS_COLORKEYHWASSIST                          = 0x01000000;
1491 const UINT WINEDDCAPS_NOHARDWARE                                = 0x02000000;
1492 const UINT WINEDDCAPS_BLTCOLORFILL                              = 0x04000000;
1493 const UINT WINEDDCAPS_BANKSWITCHED                              = 0x08000000;
1494 const UINT WINEDDCAPS_BLTDEPTHFILL                              = 0x10000000;
1495 const UINT WINEDDCAPS_CANCLIP                                   = 0x20000000;
1496 const UINT WINEDDCAPS_CANCLIPSTRETCHED                          = 0x40000000;
1497 const UINT WINEDDCAPS_CANBLTSYSMEM                              = 0x80000000;
1498
1499 const UINT WINEDDCAPS2_CERTIFIED                                = 0x00000001;
1500 const UINT WINEDDCAPS2_NO2DDURING3DSCENE                        = 0x00000002;
1501 const UINT WINEDDCAPS2_VIDEOPORT                                = 0x00000004;
1502 const UINT WINEDDCAPS2_AUTOFLIPOVERLAY                          = 0x00000008;
1503 const UINT WINEDDCAPS2_CANBOBINTERLEAVED                        = 0x00000010;
1504 const UINT WINEDDCAPS2_CANBOBNONINTERLEAVED                     = 0x00000020;
1505 const UINT WINEDDCAPS2_COLORCONTROLOVERLAY                      = 0x00000040;
1506 const UINT WINEDDCAPS2_COLORCONTROLPRIMARY                      = 0x00000080;
1507 const UINT WINEDDCAPS2_CANDROPZ16BIT                            = 0x00000100;
1508 const UINT WINEDDCAPS2_NONLOCALVIDMEM                           = 0x00000200;
1509 const UINT WINEDDCAPS2_NONLOCALVIDMEMCAPS                       = 0x00000400;
1510 const UINT WINEDDCAPS2_NOPAGELOCKREQUIRED                       = 0x00000800;
1511 const UINT WINEDDCAPS2_WIDESURFACES                             = 0x00001000;
1512 const UINT WINEDDCAPS2_CANFLIPODDEVEN                           = 0x00002000;
1513 const UINT WINEDDCAPS2_CANBOBHARDWARE                           = 0x00004000;
1514 const UINT WINEDDCAPS2_COPYFOURCC                               = 0x00008000;
1515 const UINT WINEDDCAPS2_PRIMARYGAMMA                             = 0x00020000;
1516 const UINT WINEDDCAPS2_CANRENDERWINDOWED                        = 0x00080000;
1517 const UINT WINEDDCAPS2_CANCALIBRATEGAMMA                        = 0x00100000;
1518 const UINT WINEDDCAPS2_FLIPINTERVAL                             = 0x00200000;
1519 const UINT WINEDDCAPS2_FLIPNOVSYNC                              = 0x00400000;
1520 const UINT WINEDDCAPS2_CANMANAGETEXTURE                         = 0x00800000;
1521 const UINT WINEDDCAPS2_TEXMANINNONLOCALVIDMEM                   = 0x01000000;
1522 const UINT WINEDDCAPS2_STEREO                                   = 0x02000000;
1523 const UINT WINEDDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL              = 0x04000000;
1524
1525 /* DDCAPS.d */
1526 const UINT WINEDDPCAPS_4BIT                                     = 0x00000001;
1527 const UINT WINEDDPCAPS_8BITENTRIES                              = 0x00000002;
1528 const UINT WINEDDPCAPS_8BIT                                     = 0x00000004;
1529 const UINT WINEDDPCAPS_INITIALIZE                               = 0x00000008;
1530 const UINT WINEDDPCAPS_PRIMARYSURFACE                           = 0x00000010;
1531 const UINT WINEDDPCAPS_PRIMARYSURFACELEFT                       = 0x00000020;
1532 const UINT WINEDDPCAPS_ALLOW256                                 = 0x00000040;
1533 const UINT WINEDDPCAPS_VSYNC                                    = 0x00000080;
1534 const UINT WINEDDPCAPS_1BIT                                     = 0x00000100;
1535 const UINT WINEDDPCAPS_2BIT                                     = 0x00000200;
1536 const UINT WINEDDPCAPS_ALPHA                                    = 0x00000400;
1537
1538 typedef struct _WINED3DDISPLAYMODE
1539 {
1540     UINT Width;
1541     UINT Height;
1542     UINT RefreshRate;
1543     WINED3DFORMAT Format;
1544 } WINED3DDISPLAYMODE;
1545
1546 typedef struct _WINED3DCOLORVALUE
1547 {
1548     float r;
1549     float g;
1550     float b;
1551     float a;
1552 } WINED3DCOLORVALUE;
1553
1554 typedef struct _WINED3DVECTOR
1555 {
1556     float x;
1557     float y;
1558     float z;
1559 } WINED3DVECTOR;
1560
1561 typedef struct _WINED3DMATRIX
1562 {
1563     union
1564     {
1565         struct
1566         {
1567             float _11, _12, _13, _14;
1568             float _21, _22, _23, _24;
1569             float _31, _32, _33, _34;
1570             float _41, _42, _43, _44;
1571         } DUMMYSTRUCTNAME;
1572         float m[4][4];
1573     } DUMMYUNIONNAME;
1574 } WINED3DMATRIX;
1575
1576 typedef struct _WINED3DRECT
1577 {
1578     LONG x1;
1579     LONG y1;
1580     LONG x2;
1581     LONG y2;
1582 } WINED3DRECT;
1583
1584 typedef struct _WINED3DLIGHT
1585 {
1586     WINED3DLIGHTTYPE Type;
1587     WINED3DCOLORVALUE Diffuse;
1588     WINED3DCOLORVALUE Specular;
1589     WINED3DCOLORVALUE Ambient;
1590     WINED3DVECTOR Position;
1591     WINED3DVECTOR Direction;
1592     float Range;
1593     float Falloff;
1594     float Attenuation0;
1595     float Attenuation1;
1596     float Attenuation2;
1597     float Theta;
1598     float Phi;
1599 } WINED3DLIGHT;
1600
1601 typedef struct _WINED3DMATERIAL
1602 {
1603     WINED3DCOLORVALUE Diffuse;
1604     WINED3DCOLORVALUE Ambient;
1605     WINED3DCOLORVALUE Specular;
1606     WINED3DCOLORVALUE Emissive;
1607     float Power;
1608 } WINED3DMATERIAL;
1609
1610 typedef struct _WINED3DVIEWPORT
1611 {
1612     DWORD X;
1613     DWORD Y;
1614     DWORD Width;
1615     DWORD Height;
1616     float MinZ;
1617     float MaxZ;
1618 } WINED3DVIEWPORT;
1619
1620 typedef struct _WINED3DGAMMARAMP
1621 {
1622     WORD red[256];
1623     WORD green[256];
1624     WORD blue[256];
1625 } WINED3DGAMMARAMP;
1626
1627 typedef struct _WINED3DLINEPATTERN
1628 {
1629     WORD wRepeatFactor;
1630     WORD wLinePattern;
1631 } WINED3DLINEPATTERN;
1632
1633 typedef struct _WINEDD3DRECTPATCH_INFO
1634 {
1635     UINT StartVertexOffsetWidth;
1636     UINT StartVertexOffsetHeight;
1637     UINT Width;
1638     UINT Height;
1639     UINT Stride;
1640     WINED3DBASISTYPE Basis;
1641     WINED3DDEGREETYPE Degree;
1642 } WINED3DRECTPATCH_INFO;
1643
1644 typedef struct _WINED3DTRIPATCH_INFO
1645 {
1646     UINT StartVertexOffset;
1647     UINT NumVertices;
1648     WINED3DBASISTYPE Basis;
1649     WINED3DDEGREETYPE Degree;
1650 } WINED3DTRIPATCH_INFO;
1651
1652 typedef struct _WINED3DADAPTER_IDENTIFIER
1653 {
1654     char *driver;
1655     UINT driver_size;
1656     char *description;
1657     UINT description_size;
1658     char *device_name;
1659     UINT device_name_size;
1660     LARGE_INTEGER driver_version;
1661     DWORD vendor_id;
1662     DWORD device_id;
1663     DWORD subsystem_id;
1664     DWORD revision;
1665     GUID device_identifier;
1666     DWORD whql_level;
1667     LUID adapter_luid;
1668     SIZE_T video_memory;
1669 } WINED3DADAPTER_IDENTIFIER;
1670
1671 typedef struct _WINED3DPRESENT_PARAMETERS
1672 {
1673     UINT BackBufferWidth;
1674     UINT BackBufferHeight;
1675     WINED3DFORMAT BackBufferFormat;
1676     UINT BackBufferCount;
1677     WINED3DMULTISAMPLE_TYPE MultiSampleType;
1678     DWORD MultiSampleQuality;
1679     WINED3DSWAPEFFECT SwapEffect;
1680     HWND hDeviceWindow;
1681     BOOL Windowed;
1682     BOOL EnableAutoDepthStencil;
1683     WINED3DFORMAT AutoDepthStencilFormat;
1684     DWORD Flags;
1685     UINT FullScreen_RefreshRateInHz;
1686     UINT PresentationInterval;
1687     BOOL AutoRestoreDisplayMode;
1688 } WINED3DPRESENT_PARAMETERS;
1689
1690 typedef struct _WINED3DSURFACE_DESC
1691 {
1692     WINED3DFORMAT format;
1693     WINED3DRESOURCETYPE resource_type;
1694     DWORD usage;
1695     WINED3DPOOL pool;
1696     UINT size;
1697     WINED3DMULTISAMPLE_TYPE multisample_type;
1698     DWORD multisample_quality;
1699     UINT width;
1700     UINT height;
1701 } WINED3DSURFACE_DESC;
1702
1703 typedef struct _WINED3DVOLUME_DESC
1704 {
1705     WINED3DFORMAT Format;
1706     WINED3DRESOURCETYPE Type;
1707     DWORD Usage;
1708     WINED3DPOOL Pool;
1709     UINT Size;
1710     UINT Width;
1711     UINT Height;
1712     UINT Depth;
1713 } WINED3DVOLUME_DESC;
1714
1715 typedef struct _WINED3DCLIPSTATUS
1716 {
1717    DWORD ClipUnion;
1718    DWORD ClipIntersection;
1719 } WINED3DCLIPSTATUS;
1720
1721 typedef struct _WINED3DVERTEXELEMENT
1722 {
1723     WINED3DFORMAT format;
1724     WORD input_slot;
1725     WORD offset;
1726     UINT output_slot; /* D3D 8 & 10 */
1727     BYTE method;
1728     BYTE usage;
1729     BYTE usage_idx;
1730 } WINED3DVERTEXELEMENT;
1731
1732 typedef struct _WINED3DDEVICE_CREATION_PARAMETERS
1733 {
1734     UINT AdapterOrdinal;
1735     WINED3DDEVTYPE DeviceType;
1736     HWND hFocusWindow;
1737     DWORD BehaviorFlags;
1738 } WINED3DDEVICE_CREATION_PARAMETERS;
1739
1740 typedef struct _WINED3DDEVINFO_BANDWIDTHTIMINGS
1741 {
1742     float MaxBandwidthUtilized;
1743     float FrontEndUploadMemoryUtilizedPercent;
1744     float VertexRateUtilizedPercent;
1745     float TriangleSetupRateUtilizedPercent;
1746     float FillRateUtilizedPercent;
1747 } WINED3DDEVINFO_BANDWIDTHTIMINGS;
1748
1749 typedef struct _WINED3DDEVINFO_CACHEUTILIZATION
1750 {
1751     float TextureCacheHitRate;
1752     float PostTransformVertexCacheHitRate;
1753 } WINED3DDEVINFO_CACHEUTILIZATION;
1754
1755 typedef struct _WINED3DDEVINFO_INTERFACETIMINGS
1756 {
1757     float WaitingForGPUToUseApplicationResourceTimePercent;
1758     float WaitingForGPUToAcceptMoreCommandsTimePercent;
1759     float WaitingForGPUToStayWithinLatencyTimePercent;
1760     float WaitingForGPUExclusiveResourceTimePercent;
1761     float WaitingForGPUOtherTimePercent;
1762 } WINED3DDEVINFO_INTERFACETIMINGS;
1763
1764 typedef struct _WINED3DDEVINFO_PIPELINETIMINGS
1765 {
1766     float VertexProcessingTimePercent;
1767     float PixelProcessingTimePercent;
1768     float OtherGPUProcessingTimePercent;
1769     float GPUIdleTimePercent;
1770 } WINED3DDEVINFO_PIPELINETIMINGS;
1771
1772 typedef struct _WINED3DDEVINFO_STAGETIMINGS
1773 {
1774     float MemoryProcessingPercent;
1775     float ComputationProcessingPercent;
1776 } WINED3DDEVINFO_STAGETIMINGS;
1777
1778 typedef struct _WINED3DRASTER_STATUS
1779 {
1780     BOOL InVBlank;
1781     UINT ScanLine;
1782 } WINED3DRASTER_STATUS;
1783
1784 typedef struct WINED3DRESOURCESTATS
1785 {
1786     BOOL bThrashing;
1787     DWORD ApproxBytesDownloaded;
1788     DWORD NumEvicts;
1789     DWORD NumVidCreates;
1790     DWORD LastPri;
1791     DWORD NumUsed;
1792     DWORD NumUsedInVidMem;
1793     DWORD WorkingSet;
1794     DWORD WorkingSetBytes;
1795     DWORD TotalManaged;
1796     DWORD TotalBytes;
1797 } WINED3DRESOURCESTATS;
1798
1799 typedef struct _WINED3DDEVINFO_RESOURCEMANAGER
1800 {
1801     WINED3DRESOURCESTATS stats[WINED3DRTYPECOUNT];
1802 } WINED3DDEVINFO_RESOURCEMANAGER;
1803
1804 typedef struct _WINED3DDEVINFO_VERTEXSTATS
1805 {
1806     DWORD NumRenderedTriangles;
1807     DWORD NumExtraClippingTriangles;
1808 } WINED3DDEVINFO_VERTEXSTATS;
1809
1810 typedef struct _WINED3DLOCKED_RECT
1811 {
1812     INT Pitch;
1813     void *pBits;
1814 } WINED3DLOCKED_RECT;
1815
1816 typedef struct _WINED3DLOCKED_BOX
1817 {
1818     INT RowPitch;
1819     INT SlicePitch;
1820     void *pBits;
1821 } WINED3DLOCKED_BOX;
1822
1823 typedef struct _WINED3DBOX
1824 {
1825     UINT Left;
1826     UINT Top;
1827     UINT Right;
1828     UINT Bottom;
1829     UINT Front;
1830     UINT Back;
1831 } WINED3DBOX;
1832
1833 /*Vertex cache optimization hints.*/
1834 typedef struct WINED3DDEVINFO_VCACHE
1835 {
1836     DWORD Pattern;      /* Must be a 4 char code FOURCC (e.g. CACH) */
1837     DWORD OptMethod;    /* 0 to get the longest  strips, 1 vertex cache */
1838     DWORD CacheSize;    /* Cache size to use (only valid if OptMethod==1) */
1839     DWORD MagicNumber;  /* Internal for deciding when to restart strips,
1840                            non user modifiable (only valid if OptMethod==1) */
1841 } WINED3DDEVINFO_VCACHE;
1842
1843 typedef struct _WINED3DBUFFER_DESC
1844 {
1845     WINED3DRESOURCETYPE Type;
1846     DWORD Usage;
1847     WINED3DPOOL Pool;
1848     UINT Size;
1849 } WINED3DBUFFER_DESC;
1850
1851 typedef struct WineDirect3DStridedData
1852 {
1853     WINED3DFORMAT format;   /* Format of the data */
1854     const BYTE *lpData;     /* Pointer to start of data */
1855     DWORD dwStride;         /* Stride between occurrences of this data */
1856 } WineDirect3DStridedData;
1857
1858 typedef struct WineDirect3DVertexStridedData
1859 {
1860     WineDirect3DStridedData position;
1861     WineDirect3DStridedData normal;
1862     WineDirect3DStridedData diffuse;
1863     WineDirect3DStridedData specular;
1864     WineDirect3DStridedData texCoords[WINED3DDP_MAXTEXCOORD];
1865     BOOL position_transformed;
1866 } WineDirect3DVertexStridedData;
1867
1868 typedef struct _WINED3DVSHADERCAPS2_0
1869 {
1870     DWORD Caps;
1871     INT DynamicFlowControlDepth;
1872     INT NumTemps;
1873     INT StaticFlowControlDepth;
1874 } WINED3DVSHADERCAPS2_0;
1875
1876 typedef struct _WINED3DPSHADERCAPS2_0
1877 {
1878     DWORD Caps;
1879     INT DynamicFlowControlDepth;
1880     INT NumTemps;
1881     INT StaticFlowControlDepth;
1882     INT NumInstructionSlots;
1883 } WINED3DPSHADERCAPS2_0;
1884
1885 typedef struct _WINEDDCAPS
1886 {
1887     DWORD Caps;
1888     DWORD Caps2;
1889     DWORD CKeyCaps;
1890     DWORD FXCaps;
1891     DWORD FXAlphaCaps;
1892     DWORD PalCaps;
1893     DWORD SVCaps;
1894     DWORD SVBCaps;
1895     DWORD SVBCKeyCaps;
1896     DWORD SVBFXCaps;
1897     DWORD VSBCaps;
1898     DWORD VSBCKeyCaps;
1899     DWORD VSBFXCaps;
1900     DWORD SSBCaps;
1901     DWORD SSBCKeyCaps;
1902     DWORD SSBFXCaps;
1903     DWORD ddsCaps;
1904     DWORD StrideAlign;
1905 } WINEDDCAPS;
1906
1907 typedef struct _WINED3DCAPS
1908 {
1909     WINED3DDEVTYPE DeviceType;
1910     UINT AdapterOrdinal;
1911
1912     DWORD Caps;
1913     DWORD Caps2;
1914     DWORD Caps3;
1915     DWORD PresentationIntervals;
1916
1917     DWORD CursorCaps;
1918     DWORD DevCaps;
1919     DWORD PrimitiveMiscCaps;
1920     DWORD RasterCaps;
1921     DWORD ZCmpCaps;
1922     DWORD SrcBlendCaps;
1923     DWORD DestBlendCaps;
1924     DWORD AlphaCmpCaps;
1925     DWORD ShadeCaps;
1926     DWORD TextureCaps;
1927     DWORD TextureFilterCaps;
1928     DWORD CubeTextureFilterCaps;
1929     DWORD VolumeTextureFilterCaps;
1930     DWORD TextureAddressCaps;
1931     DWORD VolumeTextureAddressCaps;
1932     DWORD LineCaps;
1933
1934     DWORD MaxTextureWidth;
1935     DWORD MaxTextureHeight;
1936     DWORD MaxVolumeExtent;
1937     DWORD MaxTextureRepeat;
1938     DWORD MaxTextureAspectRatio;
1939     DWORD MaxAnisotropy;
1940     float MaxVertexW;
1941
1942     float GuardBandLeft;
1943     float GuardBandTop;
1944     float GuardBandRight;
1945     float GuardBandBottom;
1946
1947     float ExtentsAdjust;
1948     DWORD StencilCaps;
1949
1950     DWORD FVFCaps;
1951     DWORD TextureOpCaps;
1952     DWORD MaxTextureBlendStages;
1953     DWORD MaxSimultaneousTextures;
1954
1955     DWORD VertexProcessingCaps;
1956     DWORD MaxActiveLights;
1957     DWORD MaxUserClipPlanes;
1958     DWORD MaxVertexBlendMatrices;
1959     DWORD MaxVertexBlendMatrixIndex;
1960
1961     float MaxPointSize;
1962
1963     DWORD MaxPrimitiveCount;
1964     DWORD MaxVertexIndex;
1965     DWORD MaxStreams;
1966     DWORD MaxStreamStride;
1967
1968     DWORD VertexShaderVersion;
1969     DWORD MaxVertexShaderConst;
1970
1971     DWORD PixelShaderVersion;
1972     float PixelShader1xMaxValue;
1973
1974     /* DX 9 */
1975     DWORD DevCaps2;
1976
1977     float MaxNpatchTessellationLevel;
1978     DWORD Reserved5; /* undocumented */
1979
1980     UINT MasterAdapterOrdinal;
1981     UINT AdapterOrdinalInGroup;
1982     UINT NumberOfAdaptersInGroup;
1983     DWORD DeclTypes;
1984     DWORD NumSimultaneousRTs;
1985     DWORD StretchRectFilterCaps;
1986     WINED3DVSHADERCAPS2_0 VS20Caps;
1987     WINED3DPSHADERCAPS2_0 PS20Caps;
1988     DWORD VertexTextureFilterCaps;
1989     DWORD MaxVShaderInstructionsExecuted;
1990     DWORD MaxPShaderInstructionsExecuted;
1991     DWORD MaxVertexShader30InstructionSlots;
1992     DWORD MaxPixelShader30InstructionSlots;
1993     DWORD Reserved2; /* Not in the microsoft headers but documented */
1994     DWORD Reserved3;
1995
1996     WINEDDCAPS DirectDrawCaps;
1997 } WINED3DCAPS;
1998
1999 /* DirectDraw types */
2000
2001 typedef struct _WINEDDCOLORKEY
2002 {
2003     DWORD dwColorSpaceLowValue;     /* low boundary of color space that is to
2004                                      * be treated as Color Key, inclusive */
2005     DWORD dwColorSpaceHighValue;    /* high boundary of color space that is
2006                                      * to be treated as Color Key, inclusive */
2007 } WINEDDCOLORKEY,*LPWINEDDCOLORKEY;
2008
2009 typedef struct _WINEDDBLTFX
2010 {
2011     DWORD dwSize;                                   /* size of structure */
2012     DWORD dwDDFX;                                   /* FX operations */
2013     DWORD dwROP;                                    /* Win32 raster operations */
2014     DWORD dwDDROP;                                  /* Raster operations new for DirectDraw */
2015     DWORD dwRotationAngle;                          /* Rotation angle for blt */
2016     DWORD dwZBufferOpCode;                          /* ZBuffer compares */
2017     DWORD dwZBufferLow;                             /* Low limit of Z buffer */
2018     DWORD dwZBufferHigh;                            /* High limit of Z buffer */
2019     DWORD dwZBufferBaseDest;                        /* Destination base value */
2020     DWORD dwZDestConstBitDepth;                     /* Bit depth used to specify Z constant for destination */
2021     union
2022     {
2023         DWORD dwZDestConst;                         /* Constant to use as Z buffer for dest */
2024         struct IWineD3DSurface *lpDDSZBufferDest;   /* Surface to use as Z buffer for dest */
2025     } DUMMYUNIONNAME1;
2026     DWORD dwZSrcConstBitDepth;                      /* Bit depth used to specify Z constant for source */
2027     union
2028     {
2029         DWORD dwZSrcConst;                          /* Constant to use as Z buffer for src */
2030         struct IWineD3DSurface *lpDDSZBufferSrc;    /* Surface to use as Z buffer for src */
2031     } DUMMYUNIONNAME2;
2032     DWORD dwAlphaEdgeBlendBitDepth;                 /* Bit depth used to specify constant for alpha edge blend */
2033     DWORD dwAlphaEdgeBlend;                         /* Alpha for edge blending */
2034     DWORD dwReserved;
2035     DWORD dwAlphaDestConstBitDepth;                 /* Bit depth used to specify alpha constant for destination */
2036     union
2037     {
2038         DWORD dwAlphaDestConst;                     /* Constant to use as Alpha Channel */
2039         struct IWineD3DSurface *lpDDSAlphaDest;     /* Surface to use as Alpha Channel */
2040     } DUMMYUNIONNAME3;
2041     DWORD dwAlphaSrcConstBitDepth;                  /* Bit depth used to specify alpha constant for source */
2042     union
2043     {
2044         DWORD dwAlphaSrcConst;                      /* Constant to use as Alpha Channel */
2045         struct IWineD3DSurface *lpDDSAlphaSrc;      /* Surface to use as Alpha Channel */
2046     } DUMMYUNIONNAME4;
2047     union
2048     {
2049         DWORD dwFillColor;                          /* color in RGB or Palettized */
2050         DWORD dwFillDepth;                          /* depth value for z-buffer */
2051         DWORD dwFillPixel;                          /* pixel val for RGBA or RGBZ */
2052         struct IWineD3DSurface *lpDDSPattern;       /* Surface to use as pattern */
2053     } DUMMYUNIONNAME5;
2054     WINEDDCOLORKEY ddckDestColorkey;                /* DestColorkey override */
2055     WINEDDCOLORKEY ddckSrcColorkey;                 /* SrcColorkey override */
2056 } WINEDDBLTFX,*LPWINEDDBLTFX;
2057
2058 typedef struct _WINEDDOVERLAYFX
2059 {
2060     DWORD dwSize;                                   /* size of structure */
2061     DWORD dwAlphaEdgeBlendBitDepth;                 /* Bit depth used to specify constant for alpha edge blend */
2062     DWORD dwAlphaEdgeBlend;                         /* Constant to use as alpha for edge blend */
2063     DWORD dwReserved;
2064     DWORD dwAlphaDestConstBitDepth;                 /* Bit depth used to specify alpha constant for destination */
2065     union
2066     {
2067         DWORD dwAlphaDestConst;                     /* Constant to use as alpha channel for dest */
2068         struct IWineD3DSurface *lpDDSAlphaDest;     /* Surface to use as alpha channel for dest */
2069     } DUMMYUNIONNAME1;
2070     DWORD dwAlphaSrcConstBitDepth;                  /* Bit depth used to specify alpha constant for source */
2071     union
2072     {
2073         DWORD dwAlphaSrcConst;                      /* Constant to use as alpha channel for src */
2074         struct IWineD3DSurface *lpDDSAlphaSrc;      /* Surface to use as alpha channel for src */
2075     } DUMMYUNIONNAME2;
2076     WINEDDCOLORKEY dckDestColorkey;                 /* DestColorkey override */
2077     WINEDDCOLORKEY dckSrcColorkey;                  /* SrcColorkey override */
2078     DWORD dwDDFX;                                   /* Overlay FX */
2079     DWORD dwFlags;                                  /* flags */
2080 } WINEDDOVERLAYFX;
2081
2082 struct wined3d_buffer_desc
2083 {
2084     UINT byte_width;
2085     DWORD usage;
2086     UINT bind_flags;
2087     UINT cpu_access_flags;
2088     UINT misc_flags;
2089 };
2090
2091 struct wined3d_shader_signature_element
2092 {
2093     const char *semantic_name;
2094     UINT semantic_idx;
2095     enum wined3d_sysval_semantic sysval_semantic;
2096     DWORD component_type;
2097     UINT register_idx;
2098     DWORD mask;
2099 };
2100
2101 struct wined3d_shader_signature
2102 {
2103     UINT element_count;
2104     struct wined3d_shader_signature_element *elements;
2105     char *string_data;
2106 };
2107
2108 struct wined3d_parent_ops
2109 {
2110     void (*wined3d_object_destroyed)(void *parent);
2111 };
2112
2113 interface IWineD3DResource;
2114 interface IWineD3DSurface;
2115 interface IWineD3DVolume;
2116 interface IWineD3DSwapChain;
2117 interface IWineD3DDevice;
2118
2119 [
2120     object,
2121     local,
2122     uuid(aeb62dfc-bdcb-4f02-9519-1eeea00c15cd)
2123 ]
2124 interface IWineD3DDeviceParent : IUnknown
2125 {
2126     void WineD3DDeviceCreated(
2127         [in] IWineD3DDevice *device
2128     );
2129
2130     HRESULT CreateSurface(
2131         [in] IUnknown *superior,
2132         [in] UINT width,
2133         [in] UINT height,
2134         [in] WINED3DFORMAT format,
2135         [in] DWORD usage,
2136         [in] WINED3DPOOL pool,
2137         [in] UINT level,
2138         [in] WINED3DCUBEMAP_FACES face,
2139         [out] IWineD3DSurface **surface
2140     );
2141
2142     HRESULT CreateRenderTarget(
2143         [in] IUnknown *superior,
2144         [in] UINT width,
2145         [in] UINT height,
2146         [in] WINED3DFORMAT format,
2147         [in] WINED3DMULTISAMPLE_TYPE multisample_type,
2148         [in] DWORD multisample_quality,
2149         [in] BOOL lockable,
2150         [out] IWineD3DSurface **surface
2151     );
2152
2153     HRESULT CreateDepthStencilSurface(
2154         [in] IUnknown *superior,
2155         [in] UINT width,
2156         [in] UINT height,
2157         [in] WINED3DFORMAT format,
2158         [in] WINED3DMULTISAMPLE_TYPE multisample_type,
2159         [in] DWORD multisample_quality,
2160         [in] BOOL discard,
2161         [out] IWineD3DSurface **surface
2162     );
2163
2164     HRESULT CreateVolume(
2165         [in] IUnknown *superior,
2166         [in] UINT width,
2167         [in] UINT height,
2168         [in] UINT depth,
2169         [in] WINED3DFORMAT format,
2170         [in] WINED3DPOOL pool,
2171         [in] DWORD usage,
2172         [out] IWineD3DVolume **volume
2173     );
2174
2175     HRESULT CreateSwapChain(
2176         [in, out] WINED3DPRESENT_PARAMETERS *present_parameters,
2177         [out] IWineD3DSwapChain **swapchain
2178     );
2179 }
2180 typedef ULONG (*D3DCB_DESTROYSWAPCHAINFN)(IWineD3DSwapChain *pSwapChain);
2181 typedef HRESULT (*D3DCB_ENUMRESOURCES)(IWineD3DResource *resource, void *pData);
2182
2183 [
2184     object,
2185     local,
2186     uuid(46799311-8e0e-40ce-b2ec-ddb99f18fcb4)
2187 ]
2188 interface IWineD3DBase : IUnknown
2189 {
2190     HRESULT GetParent(
2191         [out] IUnknown **parent
2192     );
2193 }
2194
2195 [
2196     object,
2197     local,
2198     uuid(108f9c44-6f30-11d9-c687-00046142c14f)
2199 ]
2200 interface IWineD3D : IWineD3DBase
2201 {
2202     UINT GetAdapterCount(
2203     );
2204     HRESULT RegisterSoftwareDevice(
2205         [in] void *pInitializeFunction
2206     );
2207     HMONITOR GetAdapterMonitor(
2208         [in] UINT adapter_idx
2209     );
2210     UINT GetAdapterModeCount(
2211         [in] UINT adapter_idx,
2212         [in] WINED3DFORMAT format
2213     );
2214     HRESULT EnumAdapterModes(
2215         [in] UINT adapter_idx,
2216         [in] WINED3DFORMAT format,
2217         [in] UINT mode_idx,
2218         [out] WINED3DDISPLAYMODE *mode
2219     );
2220     HRESULT GetAdapterDisplayMode(
2221         [in] UINT adapter_idx,
2222         [out] WINED3DDISPLAYMODE *mode
2223     );
2224     HRESULT GetAdapterIdentifier(
2225         [in] UINT adapter_idx,
2226         [in] DWORD flags,
2227         [out] WINED3DADAPTER_IDENTIFIER *identifier
2228     );
2229     HRESULT CheckDeviceMultiSampleType(
2230         [in] UINT adapter_idx,
2231         [in] WINED3DDEVTYPE device_type,
2232         [in] WINED3DFORMAT surface_format,
2233         [in] BOOL windowed,
2234         [in] WINED3DMULTISAMPLE_TYPE multisample_type,
2235         [out] DWORD *quality_levels
2236     );
2237     HRESULT CheckDepthStencilMatch(
2238         [in] UINT adapter_idx,
2239         [in] WINED3DDEVTYPE device_type,
2240         [in] WINED3DFORMAT adapter_format,
2241         [in] WINED3DFORMAT render_target_format,
2242         [in] WINED3DFORMAT depth_stencil_format
2243     );
2244     HRESULT CheckDeviceType(
2245         [in] UINT adapter_idx,
2246         [in] WINED3DDEVTYPE device_type,
2247         [in] WINED3DFORMAT display_format,
2248         [in] WINED3DFORMAT backbuffer_format,
2249         [in] BOOL windowed
2250     );
2251     HRESULT CheckDeviceFormat(
2252         [in] UINT adaper_idx,
2253         [in] WINED3DDEVTYPE device_type,
2254         [in] WINED3DFORMAT adapter_format,
2255         [in] DWORD usage,
2256         [in] WINED3DRESOURCETYPE resource_type,
2257         [in] WINED3DFORMAT check_format,
2258         [in] WINED3DSURFTYPE surface_type
2259     );
2260     HRESULT CheckDeviceFormatConversion(
2261         [in] UINT adapter_idx,
2262         [in] WINED3DDEVTYPE device_type,
2263         [in] WINED3DFORMAT source_format,
2264         [in] WINED3DFORMAT target_format
2265     );
2266     HRESULT GetDeviceCaps(
2267         [in] UINT adapter_idx,
2268         [in] WINED3DDEVTYPE device_type,
2269         [out] WINED3DCAPS *caps
2270     );
2271     HRESULT CreateDevice(
2272         [in] UINT adapter_idx,
2273         [in] WINED3DDEVTYPE device_type,
2274         [in] HWND focus_window,
2275         [in] DWORD behaviour_flags,
2276         [in] IUnknown *parent,
2277         [in] IWineD3DDeviceParent *device_parent,
2278         [out] IWineD3DDevice **device
2279     );
2280 }
2281
2282 [
2283     object,
2284     local,
2285     uuid(1f3bfb34-6f30-11d9-c687-00046142c14f)
2286 ]
2287 interface IWineD3DResource : IWineD3DBase
2288 {
2289     HRESULT SetPrivateData(
2290         [in] REFGUID guid,
2291         [in] const void *data,
2292         [in] DWORD data_size,
2293         [in] DWORD flags
2294     );
2295     HRESULT GetPrivateData(
2296         [in] REFGUID guid,
2297         [out] void *data,
2298         [in, out] DWORD *data_size
2299     );
2300     HRESULT FreePrivateData(
2301         [in] REFGUID guid
2302     );
2303     DWORD SetPriority(
2304         [in] DWORD new_priority
2305     );
2306     DWORD GetPriority(
2307     );
2308     void PreLoad(
2309     );
2310     void UnLoad(
2311     );
2312     WINED3DRESOURCETYPE GetType(
2313     );
2314 }
2315
2316 [
2317     object,
2318     local,
2319     uuid(f7d8abf4-fb93-43e4-9c96-4618cf9b3cbc)
2320 ]
2321 interface IWineD3DRendertargetView : IWineD3DBase
2322 {
2323     HRESULT GetResource(
2324         [out] IWineD3DResource **resource
2325     );
2326 }
2327
2328 [
2329     object,
2330     local,
2331     uuid(f756720c-32b9-4439-b5a3-1d6c97037d9e)
2332 ]
2333 interface IWineD3DPalette : IWineD3DBase
2334 {
2335     HRESULT GetEntries(
2336         [in] DWORD flags,
2337         [in] DWORD start,
2338         [in] DWORD count,
2339         [out] PALETTEENTRY *entries
2340     );
2341     HRESULT GetCaps(
2342         [out] DWORD *caps
2343     );
2344     HRESULT SetEntries(
2345         [in] DWORD flags,
2346         [in] DWORD start,
2347         [in] DWORD count,
2348         [in] const PALETTEENTRY *entries
2349     );
2350 }
2351
2352 [
2353     object,
2354     local,
2355     uuid(8f2bceb1-d338-488c-ab7f-0ec980bf5d2d)
2356 ]
2357 interface IWineD3DClipper : IWineD3DBase
2358 {
2359     HRESULT GetClipList(
2360         [in] const RECT *rect,
2361         [out] RGNDATA *clip_list,
2362         [in, out] DWORD *clip_list_size
2363     );
2364     HRESULT GetHWnd(
2365         [out] HWND *hwnd
2366     );
2367     HRESULT IsClipListChanged(
2368         [out] BOOL *changed
2369     );
2370     HRESULT SetClipList(
2371         [in] const RGNDATA *clip_list,
2372         [in] DWORD flags
2373     );
2374     HRESULT SetHWnd(
2375         [in] DWORD flags,
2376         [in] HWND hwnd
2377     );
2378 }
2379
2380 [
2381     object,
2382     local,
2383     uuid(37cd5526-6f30-11d9-c687-00046142c14f)
2384 ]
2385 interface IWineD3DSurface : IWineD3DResource
2386 {
2387     HRESULT GetContainer(
2388         [in] REFIID riid,
2389         [out] void **container
2390     );
2391     HRESULT GetDesc(
2392         [out] WINED3DSURFACE_DESC *desc
2393     );
2394     HRESULT LockRect(
2395         [out] WINED3DLOCKED_RECT *locked_rect,
2396         [in] const RECT *rect,
2397         [in] DWORD flags
2398     );
2399     HRESULT UnlockRect(
2400     );
2401     HRESULT GetDC(
2402         [out] HDC *dc
2403     );
2404     HRESULT ReleaseDC(
2405         [in] HDC dc
2406     );
2407     HRESULT Flip(
2408         [in] IWineD3DSurface *override,
2409         [in] DWORD flags
2410     );
2411     HRESULT Blt(
2412         [in] const RECT *dst_rect,
2413         [in] IWineD3DSurface *src_surface,
2414         [in] const RECT *src_rect,
2415         [in] DWORD flags,
2416         [in] const WINEDDBLTFX *blt_fx,
2417         [in] WINED3DTEXTUREFILTERTYPE filter
2418     );
2419     HRESULT GetBltStatus(
2420         [in] DWORD flags
2421     );
2422     HRESULT GetFlipStatus(
2423         [in] DWORD flags
2424     );
2425     HRESULT IsLost(
2426     );
2427     HRESULT Restore(
2428     );
2429     HRESULT BltFast(
2430         [in] DWORD dst_x,
2431         [in] DWORD dst_y,
2432         [in] IWineD3DSurface *src_surface,
2433         [in] const RECT *src_rect,
2434         [in] DWORD trans
2435     );
2436     HRESULT GetPalette(
2437         [out] IWineD3DPalette **palette
2438     );
2439     HRESULT SetPalette(
2440         [in] IWineD3DPalette *palette
2441     );
2442     HRESULT RealizePalette(
2443     );
2444     HRESULT SetColorKey(
2445         [in] DWORD flags,
2446         [in] const WINEDDCOLORKEY *color_key
2447     );
2448     DWORD GetPitch(
2449     );
2450     HRESULT SetMem(
2451         [in] void *mem
2452     );
2453     HRESULT SetOverlayPosition(
2454         [in] LONG x,
2455         [in] LONG y
2456     );
2457     HRESULT GetOverlayPosition(
2458         [out] LONG *x,
2459         [out] LONG *y
2460     );
2461     HRESULT UpdateOverlayZOrder(
2462         [in] DWORD flags,
2463         [in] IWineD3DSurface *ref
2464     );
2465     HRESULT UpdateOverlay(
2466         [in] const RECT *src_rect,
2467         [in] IWineD3DSurface *dst_surface,
2468         [in] const RECT *dst_rect,
2469         [in] DWORD flags,
2470         [in] const WINEDDOVERLAYFX *fx
2471     );
2472     HRESULT SetClipper(
2473         [in] IWineD3DClipper *clipper
2474     );
2475     HRESULT GetClipper(
2476         [out] IWineD3DClipper **clipper
2477     );
2478     HRESULT LoadTexture(
2479         [in] BOOL srgb_mode
2480     );
2481     void BindTexture(
2482         [in] BOOL srgb
2483     );
2484     const void *GetData(
2485     );
2486     HRESULT SetFormat(
2487         [in] WINED3DFORMAT format
2488     );
2489     HRESULT PrivateSetup(
2490     );
2491     WINED3DSURFTYPE GetImplType(
2492     );
2493     HRESULT DrawOverlay(
2494     );
2495 }
2496
2497 [
2498     object,
2499     local,
2500     uuid(24769ed8-6f30-11d9-c687-00046142c14f)
2501 ]
2502 interface IWineD3DVolume : IWineD3DResource
2503 {
2504     HRESULT GetContainer(
2505         [in] REFIID riid,
2506         [out] void **container
2507     );
2508     HRESULT GetDesc(
2509         [out] WINED3DVOLUME_DESC *desc
2510     );
2511     HRESULT LockBox(
2512         [out] WINED3DLOCKED_BOX *locked_box,
2513         [in] const WINED3DBOX *box,
2514         [in] DWORD flags
2515     );
2516     HRESULT UnlockBox(
2517     );
2518     HRESULT LoadTexture(
2519         [in] int gl_level,
2520         [in] BOOL srgb_mode
2521     );
2522 }
2523
2524 [
2525     object,
2526     local,
2527     uuid(3c2aebf6-6f30-11d9-c687-00046142c14f)
2528 ]
2529 interface IWineD3DBaseTexture : IWineD3DResource
2530 {
2531     DWORD SetLOD(
2532         [in] DWORD new_lod
2533     );
2534     DWORD GetLOD(
2535     );
2536     DWORD GetLevelCount(
2537     );
2538     HRESULT SetAutoGenFilterType(
2539         WINED3DTEXTUREFILTERTYPE filter_type
2540     );
2541     WINED3DTEXTUREFILTERTYPE GetAutoGenFilterType(
2542     );
2543     void GenerateMipSubLevels(
2544     );
2545     BOOL SetDirty(
2546         BOOL dirty
2547     );
2548     BOOL GetDirty(
2549     );
2550     HRESULT BindTexture(
2551         [in] BOOL srgb
2552     );
2553     UINT GetTextureDimensions(
2554     );
2555     BOOL IsCondNP2(
2556     );
2557 }
2558
2559 [
2560     object,
2561     local,
2562     uuid(3e72cc1c-6f30-11d9-c687-00046142c14f)
2563 ]
2564 interface IWineD3DTexture : IWineD3DBaseTexture
2565 {
2566     HRESULT GetLevelDesc(
2567         [in] UINT level,
2568         [out] WINED3DSURFACE_DESC *desc
2569     );
2570     HRESULT GetSurfaceLevel(
2571         [in] UINT level,
2572         [out] IWineD3DSurface **surface
2573     );
2574     HRESULT LockRect(
2575         [in] UINT level,
2576         [out] WINED3DLOCKED_RECT *locked_rect,
2577         [in] const RECT *rect,
2578         [in] DWORD flags
2579     );
2580     HRESULT UnlockRect(
2581         [in] UINT level
2582     );
2583     HRESULT AddDirtyRect(
2584         [in] const RECT *dirty_rect
2585     );
2586 }
2587
2588 [
2589     object,
2590     local,
2591     uuid(41752900-6f30-11d9-c687-00046142c14f)
2592 ]
2593 interface IWineD3DCubeTexture : IWineD3DBaseTexture
2594 {
2595     HRESULT GetLevelDesc(
2596         [in] UINT level,
2597         [out] WINED3DSURFACE_DESC *desc
2598     );
2599     HRESULT GetCubeMapSurface(
2600         [in] WINED3DCUBEMAP_FACES face,
2601         [in] UINT level,
2602         [out] IWineD3DSurface **surface
2603     );
2604     HRESULT LockRect(
2605         [in] WINED3DCUBEMAP_FACES face,
2606         [in] UINT level,
2607         [out] WINED3DLOCKED_RECT *locked_rect,
2608         [in] const RECT *rect,
2609         [in] DWORD flags
2610     );
2611     HRESULT UnlockRect(
2612         [in] WINED3DCUBEMAP_FACES face,
2613         [in] UINT level
2614     );
2615     HRESULT AddDirtyRect(
2616         [in] WINED3DCUBEMAP_FACES face,
2617         [in] const RECT *dirty_rect
2618     );
2619 }
2620
2621 [
2622     object,
2623     local,
2624     uuid(7b39470c-6f30-11d9-c687-00046142c14f)
2625 ]
2626 interface IWineD3DVolumeTexture : IWineD3DBaseTexture
2627 {
2628     HRESULT GetLevelDesc(
2629         [in] UINT level,
2630         [out] WINED3DVOLUME_DESC *desc
2631     );
2632     HRESULT GetVolumeLevel(
2633         [in] UINT level,
2634         [out] IWineD3DVolume **volume
2635     );
2636     HRESULT LockBox(
2637         [in] UINT level,
2638         [out] WINED3DLOCKED_BOX *locked_box,
2639         [in] const WINED3DBOX *box,
2640         [in] DWORD flags
2641     );
2642     HRESULT UnlockBox(
2643         [in] UINT level
2644     );
2645     HRESULT AddDirtyBox(
2646         [in] const WINED3DBOX *dirty_box
2647     );
2648 }
2649
2650 [
2651     object,
2652     local,
2653     uuid(7cd55be6-6f30-11d9-c687-00046142c14f)
2654 ]
2655 interface IWineD3DVertexDeclaration : IWineD3DBase
2656 {
2657 }
2658
2659 [
2660     object,
2661     local,
2662     uuid(83b073ce-6f30-11d9-c687-00046142c14f)
2663 ]
2664 interface IWineD3DStateBlock : IUnknown
2665 {
2666     HRESULT Capture(
2667     );
2668     HRESULT Apply(
2669     );
2670     HRESULT InitStartupStateBlock(
2671     );
2672 }
2673
2674 [
2675     object,
2676     local,
2677     uuid(905ddbac-6f30-11d9-c687-00046142c14f)
2678 ]
2679 interface IWineD3DQuery : IWineD3DBase
2680 {
2681     HRESULT GetData(
2682         [out] void *data,
2683         [in] DWORD data_size,
2684         [in] DWORD flags
2685     );
2686     DWORD GetDataSize(
2687     );
2688     WINED3DQUERYTYPE GetType(
2689     );
2690     HRESULT Issue(
2691         DWORD flags
2692     );
2693 }
2694
2695 [
2696     object,
2697     local,
2698     uuid(34d01b10-6f30-11d9-c687-00046142c14f)
2699 ]
2700 interface IWineD3DSwapChain : IWineD3DBase
2701 {
2702     void Destroy(
2703     );
2704     HRESULT GetDevice(
2705         [out] IWineD3DDevice **device
2706     );
2707     HRESULT Present(
2708         [in] const RECT *src_rect,
2709         [in] const RECT *dst_rect,
2710         [in] HWND dst_window_override,
2711         [in] const RGNDATA *dirty_region,
2712         [in] DWORD flags
2713     );
2714     HRESULT SetDestWindowOverride(
2715         [in] HWND window
2716     );
2717     HRESULT GetFrontBufferData(
2718         [in] IWineD3DSurface *dst_surface
2719     );
2720     HRESULT GetBackBuffer(
2721         [in] UINT backbuffer_idx,
2722         [in] WINED3DBACKBUFFER_TYPE backbuffer_type,
2723         [out] IWineD3DSurface **backbuffer
2724     );
2725     HRESULT GetRasterStatus(
2726         [out] WINED3DRASTER_STATUS *raster_status
2727     );
2728     HRESULT GetDisplayMode(
2729         [out] WINED3DDISPLAYMODE *mode
2730     );
2731     HRESULT GetPresentParameters(
2732         [out] WINED3DPRESENT_PARAMETERS *present_parameters
2733     );
2734     HRESULT SetGammaRamp(
2735         [in] DWORD flags,
2736         [in] const WINED3DGAMMARAMP *ramp
2737     );
2738     HRESULT GetGammaRamp(
2739         [out] WINED3DGAMMARAMP *ramp
2740     );
2741 }
2742
2743 [
2744     object,
2745     local,
2746     uuid(b3f028e8-1a40-4ab3-9292-5bf6cfd80209)
2747 ]
2748 interface IWineD3DBuffer : IWineD3DResource
2749 {
2750     HRESULT Map(
2751         [in] UINT offset,
2752         [in] UINT size,
2753         [out] BYTE **data,
2754         [in] DWORD flags
2755     );
2756     HRESULT Unmap(
2757     );
2758     HRESULT GetDesc(
2759         [out] WINED3DBUFFER_DESC *desc
2760     );
2761 }
2762
2763 [
2764     object,
2765     local,
2766     uuid(eac93065-a4df-446f-86a1-9ef2bca40a3c)
2767 ]
2768 interface IWineD3DBaseShader : IWineD3DBase
2769 {
2770     HRESULT GetFunction(
2771         [out] void *data,
2772         [in, out] UINT *data_size
2773     );
2774 }
2775
2776 [
2777     object,
2778     local,
2779     uuid(7f7a2b60-6f30-11d9-c687-00046142c14f)
2780 ]
2781 interface IWineD3DVertexShader : IWineD3DBaseShader
2782 {
2783     HRESULT SetLocalConstantsF(
2784         [in] UINT start_idx,
2785         [in] const float *src_data,
2786         [in] UINT vector4f_count
2787     );
2788 }
2789
2790 [
2791     object,
2792     local,
2793     uuid(8276c113-388b-49d1-ad8b-c9dd8bcbabcd)
2794 ]
2795 interface IWineD3DGeometryShader : IWineD3DBaseShader
2796 {
2797 }
2798
2799 [
2800     object,
2801     local,
2802     uuid(818503da-6f30-11d9-c687-00046142c14f)
2803 ]
2804 interface IWineD3DPixelShader : IWineD3DBaseShader
2805 {
2806 }
2807
2808 [
2809     object,
2810     local,
2811     uuid(6d10a2ce-09d0-4a53-a427-11388f9f8ca5)
2812 ]
2813 interface IWineD3DDevice : IWineD3DBase
2814 {
2815     HRESULT CreateBuffer(
2816         [in] struct wined3d_buffer_desc *desc,
2817         [in] const void *data,
2818         [in] IUnknown *parent,
2819         [in] const struct wined3d_parent_ops *parent_ops,
2820         [out] IWineD3DBuffer **buffer
2821     );
2822     HRESULT CreateVertexBuffer(
2823         [in] UINT length,
2824         [in] DWORD usage,
2825         [in] WINED3DPOOL pool,
2826         [out] IWineD3DBuffer **vertex_buffer,
2827         [in] IUnknown *parent,
2828         [in] const struct wined3d_parent_ops *parent_ops
2829     );
2830     HRESULT CreateIndexBuffer(
2831         [in] UINT length,
2832         [in] DWORD usage,
2833         [in] WINED3DPOOL pool,
2834         [out] IWineD3DBuffer **index_buffer,
2835         [in] IUnknown *parent,
2836         [in] const struct wined3d_parent_ops *parent_ops
2837     );
2838     HRESULT CreateStateBlock(
2839         [in] WINED3DSTATEBLOCKTYPE type,
2840         [out] IWineD3DStateBlock **stateblock
2841     );
2842     HRESULT CreateSurface(
2843         [in] UINT width,
2844         [in] UINT height,
2845         [in] WINED3DFORMAT format,
2846         [in] BOOL lockable,
2847         [in] BOOL discard,
2848         [in] UINT level,
2849         [out] IWineD3DSurface **surface,
2850         [in] DWORD usage,
2851         [in] WINED3DPOOL pool,
2852         [in] WINED3DMULTISAMPLE_TYPE multisample_type,
2853         [in] DWORD multisample_quality,
2854         [in] WINED3DSURFTYPE surface_type,
2855         [in] IUnknown *parent,
2856         [in] const struct wined3d_parent_ops *parent_ops
2857     );
2858     HRESULT CreateRendertargetView(
2859         [in] IWineD3DResource *resource,
2860         [in] IUnknown *parent,
2861         [out] IWineD3DRendertargetView **rendertarget_view
2862     );
2863     HRESULT CreateTexture(
2864         [in] UINT width,
2865         [in] UINT height,
2866         [in] UINT levels,
2867         [in] DWORD usage,
2868         [in] WINED3DFORMAT format,
2869         [in] WINED3DPOOL pool,
2870         [out] IWineD3DTexture **texture,
2871         [in] IUnknown *parent,
2872         [in] const struct wined3d_parent_ops *parent_ops
2873     );
2874     HRESULT CreateVolumeTexture(
2875         [in] UINT width,
2876         [in] UINT height,
2877         [in] UINT depth,
2878         [in] UINT levels,
2879         [in] DWORD usage,
2880         [in] WINED3DFORMAT format,
2881         [in] WINED3DPOOL pool,
2882         [out] IWineD3DVolumeTexture **texture,
2883         [in] IUnknown *parent,
2884         [in] const struct wined3d_parent_ops *parent_ops
2885     );
2886     HRESULT CreateVolume(
2887         [in] UINT width,
2888         [in] UINT height,
2889         [in] UINT depth,
2890         [in] DWORD usage,
2891         [in] WINED3DFORMAT format,
2892         [in] WINED3DPOOL pool,
2893         [out] IWineD3DVolume **volume,
2894         [in] IUnknown *parent,
2895         [in] const struct wined3d_parent_ops *parent_ops
2896     );
2897     HRESULT CreateCubeTexture(
2898         [in] UINT edge_length,
2899         [in] UINT levels,
2900         [in] DWORD usage,
2901         [in] WINED3DFORMAT format,
2902         [in] WINED3DPOOL pool,
2903         [out] IWineD3DCubeTexture **texture,
2904         [in] IUnknown *parent,
2905         [in] const struct wined3d_parent_ops *parent_ops
2906     );
2907     HRESULT CreateQuery(
2908         [in] WINED3DQUERYTYPE type,
2909         [out] IWineD3DQuery **query,
2910         [in] IUnknown *parent
2911     );
2912     HRESULT CreateSwapChain(
2913         [in] WINED3DPRESENT_PARAMETERS *present_parameters,
2914         [out] IWineD3DSwapChain **swapchain,
2915         [in] IUnknown *parent,
2916         [in] WINED3DSURFTYPE surface_type
2917     );
2918     HRESULT CreateVertexDeclaration(
2919         [out] IWineD3DVertexDeclaration **declaration,
2920         [in] IUnknown *parent,
2921         [in] const struct wined3d_parent_ops *parent_ops,
2922         [in] const WINED3DVERTEXELEMENT *elements,
2923         [in] UINT element_count
2924     );
2925     HRESULT CreateVertexDeclarationFromFVF(
2926         [out] IWineD3DVertexDeclaration **declaration,
2927         [in] IUnknown *parent,
2928         [in] const struct wined3d_parent_ops *parent_ops,
2929         [in] DWORD fvf
2930     );
2931     HRESULT CreateVertexShader(
2932         [in] const DWORD *function,
2933         [in] const struct wined3d_shader_signature *output_signature,
2934         [out] IWineD3DVertexShader **shader,
2935         [in] IUnknown *parent,
2936         [in] const struct wined3d_parent_ops *parent_ops
2937     );
2938     HRESULT CreateGeometryShader(
2939         [in] const DWORD *byte_code,
2940         [in] const struct wined3d_shader_signature *output_signature,
2941         [out] IWineD3DGeometryShader **shader,
2942         [in] IUnknown *parent,
2943         [in] const struct wined3d_parent_ops *parent_ops
2944     );
2945     HRESULT CreatePixelShader(
2946         [in] const DWORD *function,
2947         [in] const struct wined3d_shader_signature *output_signature,
2948         [out] IWineD3DPixelShader **shader,
2949         [in] IUnknown *parent,
2950         [in] const struct wined3d_parent_ops *parent_ops
2951     );
2952     HRESULT CreatePalette(
2953         [in] DWORD flags,
2954         [in] const PALETTEENTRY *palette_entry,
2955         [out] IWineD3DPalette **palette,
2956         [in] IUnknown *parent
2957     );
2958     HRESULT Init3D(
2959         [in] WINED3DPRESENT_PARAMETERS *present_parameters
2960     );
2961     HRESULT InitGDI(
2962         [in] WINED3DPRESENT_PARAMETERS *present_parameters
2963     );
2964     HRESULT Uninit3D(
2965         [in] D3DCB_DESTROYSWAPCHAINFN destroy_swapchain_callback
2966     );
2967     HRESULT UninitGDI(
2968         [in] D3DCB_DESTROYSWAPCHAINFN destroy_swapchain_callback
2969     );
2970     void SetMultithreaded(
2971     );
2972     HRESULT EvictManagedResources(
2973     );
2974     UINT GetAvailableTextureMem(
2975     );
2976     HRESULT GetBackBuffer(
2977         [in] UINT swapchain_idx,
2978         [in] UINT backbuffer_idx,
2979         [in] WINED3DBACKBUFFER_TYPE backbuffer_type,
2980         [out] IWineD3DSurface **backbuffer
2981     );
2982     HRESULT GetCreationParameters(
2983         [out] WINED3DDEVICE_CREATION_PARAMETERS *creation_parameters
2984     );
2985     HRESULT GetDeviceCaps(
2986         [out] WINED3DCAPS *caps
2987     );
2988     HRESULT GetDirect3D(
2989         [out] IWineD3D** d3d
2990     );
2991     HRESULT GetDisplayMode(
2992         [in] UINT swapchain_idx,
2993         [out] WINED3DDISPLAYMODE *mode
2994     );
2995     HRESULT SetDisplayMode(
2996         [in] UINT swapchain_idx,
2997         [in] const WINED3DDISPLAYMODE *mode
2998     );
2999     UINT GetNumberOfSwapChains(
3000     );
3001     HRESULT GetRasterStatus(
3002         [in] UINT swapchain_idx,
3003         [out] WINED3DRASTER_STATUS *raster_status
3004     );
3005     HRESULT GetSwapChain(
3006         [in] UINT swapchain_idx,
3007         [out] IWineD3DSwapChain **swapchain
3008     );
3009     HRESULT Reset(
3010         [in] WINED3DPRESENT_PARAMETERS *present_parameters
3011     );
3012     HRESULT SetDialogBoxMode(
3013         [in] BOOL enable_dialogs
3014     );
3015     HRESULT SetCursorProperties(
3016         [in] UINT x_hotspot,
3017         [in] UINT y_hotspot,
3018         [in] IWineD3DSurface *cursor_surface
3019     );
3020     void SetCursorPosition(
3021         [in] int x_screen_space,
3022         [in] int y_screen_space,
3023         [in] DWORD flags
3024     );
3025     BOOL ShowCursor(
3026         [in] BOOL show
3027     );
3028     HRESULT SetClipPlane(
3029         [in] DWORD plane_idx,
3030         [in] const float *plane
3031     );
3032     HRESULT GetClipPlane(
3033         [in] DWORD plane_idx,
3034         [out] float *plane
3035     );
3036     HRESULT SetClipStatus(
3037         [in] const WINED3DCLIPSTATUS *clip_status
3038     );
3039     HRESULT GetClipStatus(
3040         [out] WINED3DCLIPSTATUS *clip_status
3041     );
3042     HRESULT SetCurrentTexturePalette(
3043         [in] UINT palette_number
3044     );
3045     HRESULT GetCurrentTexturePalette(
3046         [out] UINT *palette_number
3047     );
3048     HRESULT SetDepthStencilSurface(
3049         [in] IWineD3DSurface *depth_stencil
3050     );
3051     HRESULT GetDepthStencilSurface(
3052         [out] IWineD3DSurface **depth_stencil
3053     );
3054     void SetGammaRamp(
3055         [in] UINT swapchain_idx,
3056         [in] DWORD flags,
3057         [in] const WINED3DGAMMARAMP *ramp
3058     );
3059     void GetGammaRamp(
3060         [in] UINT swapchain_idx,
3061         [out] WINED3DGAMMARAMP *ramp
3062     );
3063     HRESULT SetIndexBuffer(
3064         [in] IWineD3DBuffer *index_buffer,
3065         [in] WINED3DFORMAT format
3066     );
3067     HRESULT GetIndexBuffer(
3068         [out] IWineD3DBuffer **index_buffer
3069     );
3070     HRESULT SetBaseVertexIndex(
3071         [in] INT base_index
3072     );
3073     HRESULT GetBaseVertexIndex(
3074         [out] INT *base_index
3075     );
3076     HRESULT SetLight(
3077         [in] DWORD light_idx,
3078         [in] const WINED3DLIGHT *light
3079     );
3080     HRESULT GetLight(
3081         [in] DWORD light_idx,
3082         [out] WINED3DLIGHT *light
3083     );
3084     HRESULT SetLightEnable(
3085         [in] DWORD light_idx,
3086         [in] BOOL enable
3087     );
3088     HRESULT GetLightEnable(
3089         [in] DWORD light_idx,
3090         [out] BOOL *enable
3091     );
3092     HRESULT SetMaterial(
3093         [in] const WINED3DMATERIAL *material
3094     );
3095     HRESULT GetMaterial(
3096         [out] WINED3DMATERIAL *material
3097     );
3098     HRESULT SetNPatchMode(
3099         [in] float segments
3100     );
3101     float GetNPatchMode(
3102     );
3103     HRESULT SetPaletteEntries(
3104         [in] UINT palette_number,
3105         [in] const PALETTEENTRY *entries
3106     );
3107     HRESULT GetPaletteEntries(
3108         [in] UINT palette_number,
3109         [out] PALETTEENTRY *entries
3110     );
3111     HRESULT SetPixelShader(
3112         [in] IWineD3DPixelShader *shader
3113     );
3114     HRESULT GetPixelShader(
3115         [out] IWineD3DPixelShader **shader
3116     );
3117     HRESULT SetPixelShaderConstantB(
3118         [in] UINT start_register,
3119         [in] const BOOL *constants,
3120         [in] UINT bool_count
3121     );
3122     HRESULT GetPixelShaderConstantB(
3123         [in] UINT start_register,
3124         [out] BOOL *constants,
3125         [in] UINT bool_count
3126     );
3127     HRESULT SetPixelShaderConstantI(
3128         [in] UINT start_register,
3129         [in] const int *constants,
3130         [in] UINT vector4i_count
3131     );
3132     HRESULT GetPixelShaderConstantI(
3133         [in] UINT start_register,
3134         [out] int *constants,
3135         [in] UINT vector4i_count
3136     );
3137     HRESULT SetPixelShaderConstantF(
3138         [in] UINT start_register,
3139         [in] const float *constants,
3140         [in] UINT vector4f_count
3141     );
3142     HRESULT GetPixelShaderConstantF(
3143         [in] UINT start_register,
3144         [out] float *constants,
3145         [in] UINT vector4f_count
3146     );
3147     HRESULT SetRenderState(
3148         [in] WINED3DRENDERSTATETYPE state,
3149         [in] DWORD value
3150     );
3151     HRESULT GetRenderState(
3152         [in] WINED3DRENDERSTATETYPE state,
3153         [out] DWORD *value
3154     );
3155     HRESULT SetRenderTarget(
3156         [in] DWORD render_target_idx,
3157         [in] IWineD3DSurface *render_target,
3158         [in] BOOL set_viewport
3159     );
3160     HRESULT GetRenderTarget(
3161         [in] DWORD render_target_idx,
3162         [out] IWineD3DSurface **render_target
3163     );
3164     HRESULT SetFrontBackBuffers(
3165         [in] IWineD3DSurface *front,
3166         [in] IWineD3DSurface *back
3167     );
3168     HRESULT SetSamplerState(
3169         [in] DWORD sampler_idx,
3170         [in] WINED3DSAMPLERSTATETYPE state,
3171         [in] DWORD value
3172     );
3173     HRESULT GetSamplerState(
3174         [in] DWORD sampler_idx,
3175         [in] WINED3DSAMPLERSTATETYPE state,
3176         [out] DWORD *value
3177     );
3178     HRESULT SetScissorRect(
3179         [in] const RECT *rect
3180     );
3181     HRESULT GetScissorRect(
3182         [out] RECT *rect
3183     );
3184     HRESULT SetSoftwareVertexProcessing(
3185         [in] BOOL software
3186     );
3187     BOOL GetSoftwareVertexProcessing(
3188     );
3189     HRESULT SetStreamSource(
3190         [in] UINT stream_idx,
3191         [in] IWineD3DBuffer *buffer,
3192         [in] UINT offset,
3193         [in] UINT stride
3194     );
3195     HRESULT GetStreamSource(
3196         [in] UINT stream_idx,
3197         [out] IWineD3DBuffer **buffer,
3198         [out] UINT *offset,
3199         [out] UINT *stride
3200     );
3201     HRESULT SetStreamSourceFreq(
3202         [in] UINT stream_idx,
3203         [in] UINT divider
3204     );
3205     HRESULT GetStreamSourceFreq(
3206         [in] UINT stream_idx,
3207         [out] UINT *divider
3208     );
3209     HRESULT SetTexture(
3210         [in] DWORD stage,
3211         [in] IWineD3DBaseTexture *texture
3212     );
3213     HRESULT GetTexture(
3214         [in] DWORD stage,
3215         [out] IWineD3DBaseTexture **texture
3216     );
3217     HRESULT SetTextureStageState(
3218         [in] DWORD stage,
3219         [in] WINED3DTEXTURESTAGESTATETYPE state,
3220         [in] DWORD value
3221     );
3222     HRESULT GetTextureStageState(
3223         [in] DWORD stage,
3224         [in] WINED3DTEXTURESTAGESTATETYPE state,
3225         [out] DWORD *value
3226     );
3227     HRESULT SetTransform(
3228         [in] WINED3DTRANSFORMSTATETYPE state,
3229         [in] const WINED3DMATRIX *matrix
3230     );
3231     HRESULT GetTransform(
3232         [in] WINED3DTRANSFORMSTATETYPE state,
3233         [out] WINED3DMATRIX *matrix
3234     );
3235     HRESULT SetVertexDeclaration(
3236         [in] IWineD3DVertexDeclaration *declaration
3237     );
3238     HRESULT GetVertexDeclaration(
3239         [out] IWineD3DVertexDeclaration **declaration
3240     );
3241     HRESULT SetVertexShader(
3242         [in] IWineD3DVertexShader *shader
3243     );
3244     HRESULT GetVertexShader(
3245         [out] IWineD3DVertexShader **shader
3246     );
3247     HRESULT SetVertexShaderConstantB(
3248         [in] UINT start_register,
3249         [in] const BOOL *constants,
3250         [in] UINT bool_count
3251     );
3252     HRESULT GetVertexShaderConstantB(
3253         [in] UINT start_register,
3254         [out] BOOL *constants,
3255         [in] UINT bool_count
3256     );
3257     HRESULT SetVertexShaderConstantI(
3258         [in] UINT start_register,
3259         [in] const int *constants,
3260         [in] UINT vector4i_count
3261     );
3262     HRESULT GetVertexShaderConstantI(
3263         [in] UINT start_register,
3264         [out] int *constants,
3265         [in] UINT vector4i_count
3266     );
3267     HRESULT SetVertexShaderConstantF(
3268         [in] UINT start_register,
3269         [in] const float *constants,
3270         [in] UINT vector4f_count
3271     );
3272     HRESULT GetVertexShaderConstantF(
3273         [in] UINT start_register,
3274         [out] float *constants,
3275         [in] UINT vector4f_count
3276     );
3277     HRESULT SetViewport(
3278         [in] const WINED3DVIEWPORT *viewport
3279     );
3280     HRESULT GetViewport(
3281         [out] WINED3DVIEWPORT *viewport
3282     );
3283     HRESULT MultiplyTransform(
3284         [in] WINED3DTRANSFORMSTATETYPE state,
3285         [in] const WINED3DMATRIX *matrix
3286     );
3287     HRESULT ValidateDevice(
3288         [out] DWORD *num_passes
3289     );
3290     HRESULT ProcessVertices(
3291         [in] UINT src_start_idx,
3292         [in] UINT dst_idx,
3293         [in] UINT vertex_count,
3294         [in] IWineD3DBuffer *dest_buffer,
3295         [in] IWineD3DVertexDeclaration *declaration,
3296         [in] DWORD flags,
3297         [in] DWORD DestFVF
3298     );
3299     HRESULT BeginStateBlock(
3300     );
3301     HRESULT EndStateBlock(
3302         [out] IWineD3DStateBlock **stateblock
3303     );
3304     HRESULT BeginScene(
3305     );
3306     HRESULT EndScene(
3307     );
3308     HRESULT Present(
3309         [in] const RECT *src_rect,
3310         [in] const RECT *dst_rect,
3311         [in] HWND dst_window_override,
3312         [in] const RGNDATA *dirty_region
3313     );
3314     HRESULT Clear(
3315         [in] DWORD rect_count,
3316         [in] const WINED3DRECT *rects,
3317         [in] DWORD flags,
3318         [in] WINED3DCOLOR color,
3319         [in] float z,
3320         [in] DWORD stencil
3321     );
3322     void ClearRendertargetView(
3323         [in] IWineD3DRendertargetView *rendertarget_view,
3324         [in] const WINED3DCOLORVALUE *color
3325     );
3326     void SetPrimitiveType(
3327         [in] WINED3DPRIMITIVETYPE primitive_topology
3328     );
3329     void GetPrimitiveType(
3330         [out] WINED3DPRIMITIVETYPE *primitive_topology
3331     );
3332     HRESULT DrawPrimitive(
3333         [in] UINT start_vertex,
3334         [in] UINT vertex_count
3335     );
3336     HRESULT DrawIndexedPrimitive(
3337         [in] UINT start_idx,
3338         [in] UINT index_count
3339     );
3340     HRESULT DrawPrimitiveUP(
3341         [in] UINT vertex_count,
3342         [in] const void *stream_data,
3343         [in] UINT stream_stride
3344     );
3345     HRESULT DrawIndexedPrimitiveUP(
3346         [in] UINT index_count,
3347         [in] const void *index_data,
3348         [in] WINED3DFORMAT index_data_format,
3349         [in] const void *stream_data,
3350         [in] UINT stream_stride
3351     );
3352     HRESULT DrawPrimitiveStrided(
3353         [in] UINT vertex_count,
3354         [in] const WineDirect3DVertexStridedData *strided_data
3355     );
3356     HRESULT DrawIndexedPrimitiveStrided(
3357         [in] UINT index_count,
3358         [in] const WineDirect3DVertexStridedData *strided_data,
3359         [in] UINT vertex_count,
3360         [in] const void *index_data,
3361         [in] WINED3DFORMAT index_data_format
3362     );
3363     HRESULT DrawRectPatch(
3364         [in] UINT handle,
3365         [in] const float *num_segs,
3366         [in] const WINED3DRECTPATCH_INFO *rect_patch_info
3367     );
3368     HRESULT DrawTriPatch(
3369         [in] UINT handle,
3370         [in] const float *num_segs,
3371         [in] const WINED3DTRIPATCH_INFO *tri_patch_info
3372     );
3373     HRESULT DeletePatch(
3374         [in] UINT handle
3375     );
3376     HRESULT ColorFill(
3377         [in] IWineD3DSurface *surface,
3378         [in] const WINED3DRECT *rect,
3379         [in] WINED3DCOLOR color
3380     );
3381     HRESULT UpdateTexture(
3382         [in] IWineD3DBaseTexture *src_texture,
3383         [in] IWineD3DBaseTexture *dst_texture
3384     );
3385     HRESULT UpdateSurface(
3386         [in] IWineD3DSurface *src_surface,
3387         [in] const RECT *src_rect,
3388         [in] IWineD3DSurface *dst_surface,
3389         [in] const POINT *dst_point
3390     );
3391     HRESULT GetFrontBufferData(
3392         [in] UINT swapchain_idx,
3393         [in] IWineD3DSurface *dst_surface
3394     );
3395     HRESULT EnumResources(
3396         [in] D3DCB_ENUMRESOURCES callback,
3397         [in] void *data
3398     );
3399     HRESULT GetSurfaceFromDC(
3400         [in] HDC dc,
3401         [out] IWineD3DSurface **surface
3402     );
3403     HRESULT AcquireFocusWindow(
3404         [in] HWND window
3405     );
3406     void ReleaseFocusWindow(
3407     );
3408 }
3409
3410 IWineD3D *WineDirect3DCreate(UINT dxVersion, IUnknown *parent);
3411 IWineD3DClipper *WineDirect3DCreateClipper(IUnknown *parent);
3412 void wined3d_mutex_lock(void);
3413 void wined3d_mutex_unlock(void);