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