xref: /reactos/sdk/include/reactos/wine/wined3d.h (revision 81cffd76)
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 #ifndef __WINE_WINED3D_H
27 #define __WINE_WINED3D_H
28 
29 #ifndef __WINE_CONFIG_H
30 # error You must include config.h to use this header
31 #endif
32 
33 #include "wine/list.h"
34 
35 DEFINE_GUID(IID_IWineD3DDevice, 0xd56e2a4c, 0x5127, 0x8437, 0x65, 0x8a, 0x98, 0xc5, 0xbb, 0x78, 0x94, 0x98);
36 
37 #define WINED3D_OK                                              S_OK
38 
39 #define _FACWINED3D                                             0x876
40 #define MAKE_WINED3DSTATUS(code)                                MAKE_HRESULT(0, _FACWINED3D, code)
41 #define WINED3DOK_NOMIPGEN                                      MAKE_WINED3DSTATUS(2159)
42 
43 #define MAKE_WINED3DHRESULT(code)                               MAKE_HRESULT(1, _FACWINED3D, code)
44 #define WINED3DERR_CONFLICTINGRENDERSTATE                       MAKE_WINED3DHRESULT(2081)
45 #define WINED3DERR_UNSUPPORTEDTEXTUREFILTER                     MAKE_WINED3DHRESULT(2082)
46 #define WINED3DERR_NOTAVAILABLE                                 MAKE_WINED3DHRESULT(2154)
47 #define WINED3DERR_OUTOFVIDEOMEMORY                             MAKE_WINED3DHRESULT(380)
48 #define WINED3DERR_INVALIDCALL                                  MAKE_WINED3DHRESULT(2156)
49 #define WINEDDERR_NOTAOVERLAYSURFACE                            MAKE_WINED3DHRESULT(580)
50 #define WINEDDERR_NOTLOCKED                                     MAKE_WINED3DHRESULT(584)
51 #define WINEDDERR_SURFACEBUSY                                   MAKE_WINED3DHRESULT(430)
52 #define WINEDDERR_INVALIDRECT                                   MAKE_WINED3DHRESULT(150)
53 #define WINEDDERR_OVERLAYNOTVISIBLE                             MAKE_WINED3DHRESULT(577)
54 
55 #define WINED3D_RESOURCE_ACCESS_GPU                             0x1u
56 #define WINED3D_RESOURCE_ACCESS_CPU                             0x2u
57 #define WINED3D_RESOURCE_ACCESS_MAP_R                           0x4u
58 #define WINED3D_RESOURCE_ACCESS_MAP_W                           0x8u
59 
60 enum wined3d_light_type
61 {
62     WINED3D_LIGHT_POINT                     = 1,
63     WINED3D_LIGHT_SPOT                      = 2,
64     WINED3D_LIGHT_DIRECTIONAL               = 3,
65     WINED3D_LIGHT_PARALLELPOINT             = 4, /* < D3D7 */
66     WINED3D_LIGHT_GLSPOT                    = 5, /* < D3D5, not actually usable */
67 };
68 
69 enum wined3d_primitive_type
70 {
71     WINED3D_PT_UNDEFINED                    = 0,
72     WINED3D_PT_POINTLIST                    = 1,
73     WINED3D_PT_LINELIST                     = 2,
74     WINED3D_PT_LINESTRIP                    = 3,
75     WINED3D_PT_TRIANGLELIST                 = 4,
76     WINED3D_PT_TRIANGLESTRIP                = 5,
77     WINED3D_PT_TRIANGLEFAN                  = 6,
78     WINED3D_PT_LINELIST_ADJ                 = 10,
79     WINED3D_PT_LINESTRIP_ADJ                = 11,
80     WINED3D_PT_TRIANGLELIST_ADJ             = 12,
81     WINED3D_PT_TRIANGLESTRIP_ADJ            = 13,
82     WINED3D_PT_PATCH                        = 14,
83 };
84 
85 enum wined3d_device_type
86 {
87     WINED3D_DEVICE_TYPE_HAL                 = 1,
88     WINED3D_DEVICE_TYPE_REF                 = 2,
89     WINED3D_DEVICE_TYPE_SW                  = 3,
90     WINED3D_DEVICE_TYPE_NULLREF             = 4,
91 };
92 
93 enum wined3d_degree_type
94 {
95     WINED3D_DEGREE_LINEAR                   = 1,
96     WINED3D_DEGREE_QUADRATIC                = 2,
97     WINED3D_DEGREE_CUBIC                    = 3,
98     WINED3D_DEGREE_QUINTIC                  = 5,
99 };
100 
101 #define WINEMAKEFOURCC(ch0, ch1, ch2, ch3) \
102         ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
103         ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
104 
105 enum wined3d_format_id
106 {
107     WINED3DFMT_UNKNOWN,
108     WINED3DFMT_B8G8R8_UNORM,
109     WINED3DFMT_B5G5R5X1_UNORM,
110     WINED3DFMT_B4G4R4A4_UNORM,
111     WINED3DFMT_B2G3R3_UNORM,
112     WINED3DFMT_B2G3R3A8_UNORM,
113     WINED3DFMT_B4G4R4X4_UNORM,
114     WINED3DFMT_R8G8B8X8_UNORM,
115     WINED3DFMT_B10G10R10A2_UNORM,
116     WINED3DFMT_P8_UINT_A8_UNORM,
117     WINED3DFMT_P8_UINT,
118     WINED3DFMT_L8_UNORM,
119     WINED3DFMT_L8A8_UNORM,
120     WINED3DFMT_L4A4_UNORM,
121     WINED3DFMT_R5G5_SNORM_L6_UNORM,
122     WINED3DFMT_R8G8_SNORM_L8X8_UNORM,
123     WINED3DFMT_R10G11B11_SNORM,
124     WINED3DFMT_R10G10B10X2_UINT,
125     WINED3DFMT_R10G10B10X2_SNORM,
126     WINED3DFMT_R10G10B10_SNORM_A2_UNORM,
127     WINED3DFMT_D16_LOCKABLE,
128     WINED3DFMT_D32_UNORM,
129     WINED3DFMT_S1_UINT_D15_UNORM,
130     WINED3DFMT_X8D24_UNORM,
131     WINED3DFMT_S4X4_UINT_D24_UNORM,
132     WINED3DFMT_L16_UNORM,
133     WINED3DFMT_S8_UINT_D24_FLOAT,
134     WINED3DFMT_R8G8_SNORM_Cx,
135     WINED3DFMT_R32G32B32A32_TYPELESS,
136     WINED3DFMT_R32G32B32A32_FLOAT,
137     WINED3DFMT_R32G32B32A32_UINT,
138     WINED3DFMT_R32G32B32A32_SINT,
139     WINED3DFMT_R32G32B32_TYPELESS,
140     WINED3DFMT_R32G32B32_FLOAT,
141     WINED3DFMT_R32G32B32_UINT,
142     WINED3DFMT_R32G32B32_SINT,
143     WINED3DFMT_R16G16B16A16_TYPELESS,
144     WINED3DFMT_R16G16B16A16_FLOAT,
145     WINED3DFMT_R16G16B16A16_UNORM,
146     WINED3DFMT_R16G16B16A16_UINT,
147     WINED3DFMT_R16G16B16A16_SNORM,
148     WINED3DFMT_R16G16B16A16_SINT,
149     WINED3DFMT_R32G32_TYPELESS,
150     WINED3DFMT_R32G32_FLOAT,
151     WINED3DFMT_R32G32_UINT,
152     WINED3DFMT_R32G32_SINT,
153     WINED3DFMT_R32G8X24_TYPELESS,
154     WINED3DFMT_D32_FLOAT_S8X24_UINT,
155     WINED3DFMT_R32_FLOAT_X8X24_TYPELESS,
156     WINED3DFMT_X32_TYPELESS_G8X24_UINT,
157     WINED3DFMT_R10G10B10A2_TYPELESS,
158     WINED3DFMT_R10G10B10A2_UNORM,
159     WINED3DFMT_R10G10B10A2_UINT,
160     WINED3DFMT_R10G10B10A2_SNORM,
161     WINED3DFMT_R10G10B10_XR_BIAS_A2_UNORM,
162     WINED3DFMT_R11G11B10_FLOAT,
163     WINED3DFMT_R8G8B8A8_TYPELESS,
164     WINED3DFMT_R8G8B8A8_UNORM,
165     WINED3DFMT_R8G8B8A8_UNORM_SRGB,
166     WINED3DFMT_R8G8B8A8_UINT,
167     WINED3DFMT_R8G8B8A8_SNORM,
168     WINED3DFMT_R8G8B8A8_SINT,
169     WINED3DFMT_R16G16_TYPELESS,
170     WINED3DFMT_R16G16_FLOAT,
171     WINED3DFMT_R16G16_UNORM,
172     WINED3DFMT_R16G16_UINT,
173     WINED3DFMT_R16G16_SNORM,
174     WINED3DFMT_R16G16_SINT,
175     WINED3DFMT_R32_TYPELESS,
176     WINED3DFMT_D32_FLOAT,
177     WINED3DFMT_R32_FLOAT,
178     WINED3DFMT_R32_UINT,
179     WINED3DFMT_R32_SINT,
180     WINED3DFMT_R24G8_TYPELESS,
181     WINED3DFMT_D24_UNORM_S8_UINT,
182     WINED3DFMT_R24_UNORM_X8_TYPELESS,
183     WINED3DFMT_X24_TYPELESS_G8_UINT,
184     WINED3DFMT_R8G8_TYPELESS,
185     WINED3DFMT_R8G8_UNORM,
186     WINED3DFMT_R8G8_UINT,
187     WINED3DFMT_R8G8_SNORM,
188     WINED3DFMT_R8G8_SINT,
189     WINED3DFMT_R16_TYPELESS,
190     WINED3DFMT_R16_FLOAT,
191     WINED3DFMT_D16_UNORM,
192     WINED3DFMT_R16_UNORM,
193     WINED3DFMT_R16_UINT,
194     WINED3DFMT_R16_SNORM,
195     WINED3DFMT_R16_SINT,
196     WINED3DFMT_R8_TYPELESS,
197     WINED3DFMT_R8_UNORM,
198     WINED3DFMT_R8_UINT,
199     WINED3DFMT_R8_SNORM,
200     WINED3DFMT_R8_SINT,
201     WINED3DFMT_A8_UNORM,
202     WINED3DFMT_R1_UNORM,
203     WINED3DFMT_R9G9B9E5_SHAREDEXP,
204     WINED3DFMT_R8G8_B8G8_UNORM,
205     WINED3DFMT_G8R8_G8B8_UNORM,
206     WINED3DFMT_BC1_TYPELESS,
207     WINED3DFMT_BC1_UNORM,
208     WINED3DFMT_BC1_UNORM_SRGB,
209     WINED3DFMT_BC2_TYPELESS,
210     WINED3DFMT_BC2_UNORM,
211     WINED3DFMT_BC2_UNORM_SRGB,
212     WINED3DFMT_BC3_TYPELESS,
213     WINED3DFMT_BC3_UNORM,
214     WINED3DFMT_BC3_UNORM_SRGB,
215     WINED3DFMT_BC4_TYPELESS,
216     WINED3DFMT_BC4_UNORM,
217     WINED3DFMT_BC4_SNORM,
218     WINED3DFMT_BC5_TYPELESS,
219     WINED3DFMT_BC5_UNORM,
220     WINED3DFMT_BC5_SNORM,
221     WINED3DFMT_B5G6R5_UNORM,
222     WINED3DFMT_B5G5R5A1_UNORM,
223     WINED3DFMT_B8G8R8A8_UNORM,
224     WINED3DFMT_B8G8R8X8_UNORM,
225     WINED3DFMT_B8G8R8A8_TYPELESS,
226     WINED3DFMT_B8G8R8A8_UNORM_SRGB,
227     WINED3DFMT_B8G8R8X8_TYPELESS,
228     WINED3DFMT_B8G8R8X8_UNORM_SRGB,
229     WINED3DFMT_BC6H_TYPELESS,
230     WINED3DFMT_BC6H_UF16,
231     WINED3DFMT_BC6H_SF16,
232     WINED3DFMT_BC7_TYPELESS,
233     WINED3DFMT_BC7_UNORM,
234     WINED3DFMT_BC7_UNORM_SRGB,
235     /* FOURCC formats. */
236     WINED3DFMT_UYVY                         = WINEMAKEFOURCC('U','Y','V','Y'),
237     WINED3DFMT_YUY2                         = WINEMAKEFOURCC('Y','U','Y','2'),
238     WINED3DFMT_YV12                         = WINEMAKEFOURCC('Y','V','1','2'),
239     WINED3DFMT_DXT1                         = WINEMAKEFOURCC('D','X','T','1'),
240     WINED3DFMT_DXT2                         = WINEMAKEFOURCC('D','X','T','2'),
241     WINED3DFMT_DXT3                         = WINEMAKEFOURCC('D','X','T','3'),
242     WINED3DFMT_DXT4                         = WINEMAKEFOURCC('D','X','T','4'),
243     WINED3DFMT_DXT5                         = WINEMAKEFOURCC('D','X','T','5'),
244     WINED3DFMT_MULTI2_ARGB8                 = WINEMAKEFOURCC('M','E','T','1'),
245     WINED3DFMT_G8R8_G8B8                    = WINEMAKEFOURCC('G','R','G','B'),
246     WINED3DFMT_R8G8_B8G8                    = WINEMAKEFOURCC('R','G','B','G'),
247     WINED3DFMT_ATI1N                        = WINEMAKEFOURCC('A','T','I','1'),
248     WINED3DFMT_ATI2N                        = WINEMAKEFOURCC('A','T','I','2'),
249     WINED3DFMT_INST                         = WINEMAKEFOURCC('I','N','S','T'),
250     WINED3DFMT_NVDB                         = WINEMAKEFOURCC('N','V','D','B'),
251     WINED3DFMT_NVHU                         = WINEMAKEFOURCC('N','V','H','U'),
252     WINED3DFMT_NVHS                         = WINEMAKEFOURCC('N','V','H','S'),
253     WINED3DFMT_INTZ                         = WINEMAKEFOURCC('I','N','T','Z'),
254     WINED3DFMT_RESZ                         = WINEMAKEFOURCC('R','E','S','Z'),
255     WINED3DFMT_NULL                         = WINEMAKEFOURCC('N','U','L','L'),
256     WINED3DFMT_R16                          = WINEMAKEFOURCC(' ','R','1','6'),
257     WINED3DFMT_AL16                         = WINEMAKEFOURCC('A','L','1','6'),
258     WINED3DFMT_NV12                         = WINEMAKEFOURCC('N','V','1','2'),
259 
260     WINED3DFMT_FORCE_DWORD = 0xffffffff
261 };
262 
263 enum wined3d_render_state
264 {
265     WINED3D_RS_ANTIALIAS                    = 2,
266     WINED3D_RS_TEXTUREPERSPECTIVE           = 4,
267     WINED3D_RS_WRAPU                        = 5,
268     WINED3D_RS_WRAPV                        = 6,
269     WINED3D_RS_ZENABLE                      = 7,
270     WINED3D_RS_FILLMODE                     = 8,
271     WINED3D_RS_SHADEMODE                    = 9,
272     WINED3D_RS_LINEPATTERN                  = 10,
273     WINED3D_RS_MONOENABLE                   = 11,
274     WINED3D_RS_ROP2                         = 12,
275     WINED3D_RS_PLANEMASK                    = 13,
276     WINED3D_RS_ZWRITEENABLE                 = 14,
277     WINED3D_RS_ALPHATESTENABLE              = 15,
278     WINED3D_RS_LASTPIXEL                    = 16,
279     WINED3D_RS_SRCBLEND                     = 19,
280     WINED3D_RS_DESTBLEND                    = 20,
281     WINED3D_RS_CULLMODE                     = 22,
282     WINED3D_RS_ZFUNC                        = 23,
283     WINED3D_RS_ALPHAREF                     = 24,
284     WINED3D_RS_ALPHAFUNC                    = 25,
285     WINED3D_RS_DITHERENABLE                 = 26,
286     WINED3D_RS_ALPHABLENDENABLE             = 27,
287     WINED3D_RS_FOGENABLE                    = 28,
288     WINED3D_RS_SPECULARENABLE               = 29,
289     WINED3D_RS_ZVISIBLE                     = 30,
290     WINED3D_RS_SUBPIXEL                     = 31,
291     WINED3D_RS_SUBPIXELX                    = 32,
292     WINED3D_RS_STIPPLEDALPHA                = 33,
293     WINED3D_RS_FOGCOLOR                     = 34,
294     WINED3D_RS_FOGTABLEMODE                 = 35,
295     WINED3D_RS_FOGSTART                     = 36,
296     WINED3D_RS_FOGEND                       = 37,
297     WINED3D_RS_FOGDENSITY                   = 38,
298     WINED3D_RS_STIPPLEENABLE                = 39,
299     WINED3D_RS_EDGEANTIALIAS                = 40,
300     WINED3D_RS_COLORKEYENABLE               = 41,
301     WINED3D_RS_MIPMAPLODBIAS                = 46,
302     WINED3D_RS_RANGEFOGENABLE               = 48,
303     WINED3D_RS_ANISOTROPY                   = 49,
304     WINED3D_RS_FLUSHBATCH                   = 50,
305     WINED3D_RS_TRANSLUCENTSORTINDEPENDENT   = 51,
306     WINED3D_RS_STENCILENABLE                = 52,
307     WINED3D_RS_STENCILFAIL                  = 53,
308     WINED3D_RS_STENCILZFAIL                 = 54,
309     WINED3D_RS_STENCILPASS                  = 55,
310     WINED3D_RS_STENCILFUNC                  = 56,
311     WINED3D_RS_STENCILREF                   = 57,
312     WINED3D_RS_STENCILMASK                  = 58,
313     WINED3D_RS_STENCILWRITEMASK             = 59,
314     WINED3D_RS_TEXTUREFACTOR                = 60,
315     WINED3D_RS_WRAP0                        = 128,
316     WINED3D_RS_WRAP1                        = 129,
317     WINED3D_RS_WRAP2                        = 130,
318     WINED3D_RS_WRAP3                        = 131,
319     WINED3D_RS_WRAP4                        = 132,
320     WINED3D_RS_WRAP5                        = 133,
321     WINED3D_RS_WRAP6                        = 134,
322     WINED3D_RS_WRAP7                        = 135,
323     WINED3D_RS_CLIPPING                     = 136,
324     WINED3D_RS_LIGHTING                     = 137,
325     WINED3D_RS_EXTENTS                      = 138,
326     WINED3D_RS_AMBIENT                      = 139,
327     WINED3D_RS_FOGVERTEXMODE                = 140,
328     WINED3D_RS_COLORVERTEX                  = 141,
329     WINED3D_RS_LOCALVIEWER                  = 142,
330     WINED3D_RS_NORMALIZENORMALS             = 143,
331     WINED3D_RS_COLORKEYBLENDENABLE          = 144,
332     WINED3D_RS_DIFFUSEMATERIALSOURCE        = 145,
333     WINED3D_RS_SPECULARMATERIALSOURCE       = 146,
334     WINED3D_RS_AMBIENTMATERIALSOURCE        = 147,
335     WINED3D_RS_EMISSIVEMATERIALSOURCE       = 148,
336     WINED3D_RS_VERTEXBLEND                  = 151,
337     WINED3D_RS_CLIPPLANEENABLE              = 152,
338     WINED3D_RS_SOFTWAREVERTEXPROCESSING     = 153,
339     WINED3D_RS_POINTSIZE                    = 154,
340     WINED3D_RS_POINTSIZE_MIN                = 155,
341     WINED3D_RS_POINTSPRITEENABLE            = 156,
342     WINED3D_RS_POINTSCALEENABLE             = 157,
343     WINED3D_RS_POINTSCALE_A                 = 158,
344     WINED3D_RS_POINTSCALE_B                 = 159,
345     WINED3D_RS_POINTSCALE_C                 = 160,
346     WINED3D_RS_MULTISAMPLEANTIALIAS         = 161,
347     WINED3D_RS_MULTISAMPLEMASK              = 162,
348     WINED3D_RS_PATCHEDGESTYLE               = 163,
349     WINED3D_RS_PATCHSEGMENTS                = 164,
350     WINED3D_RS_DEBUGMONITORTOKEN            = 165,
351     WINED3D_RS_POINTSIZE_MAX                = 166,
352     WINED3D_RS_INDEXEDVERTEXBLENDENABLE     = 167,
353     WINED3D_RS_COLORWRITEENABLE             = 168,
354     WINED3D_RS_TWEENFACTOR                  = 170,
355     WINED3D_RS_BLENDOP                      = 171,
356     WINED3D_RS_POSITIONDEGREE               = 172,
357     WINED3D_RS_NORMALDEGREE                 = 173,
358     WINED3D_RS_SCISSORTESTENABLE            = 174,
359     WINED3D_RS_SLOPESCALEDEPTHBIAS          = 175,
360     WINED3D_RS_ANTIALIASEDLINEENABLE        = 176,
361     WINED3D_RS_MINTESSELLATIONLEVEL         = 178,
362     WINED3D_RS_MAXTESSELLATIONLEVEL         = 179,
363     WINED3D_RS_ADAPTIVETESS_X               = 180,
364     WINED3D_RS_ADAPTIVETESS_Y               = 181,
365     WINED3D_RS_ADAPTIVETESS_Z               = 182,
366     WINED3D_RS_ADAPTIVETESS_W               = 183,
367     WINED3D_RS_ENABLEADAPTIVETESSELLATION   = 184,
368     WINED3D_RS_TWOSIDEDSTENCILMODE          = 185,
369     WINED3D_RS_BACK_STENCILFAIL             = 186,
370     WINED3D_RS_BACK_STENCILZFAIL            = 187,
371     WINED3D_RS_BACK_STENCILPASS             = 188,
372     WINED3D_RS_BACK_STENCILFUNC             = 189,
373     WINED3D_RS_COLORWRITEENABLE1            = 190,
374     WINED3D_RS_COLORWRITEENABLE2            = 191,
375     WINED3D_RS_COLORWRITEENABLE3            = 192,
376     WINED3D_RS_BLENDFACTOR                  = 193,
377     WINED3D_RS_SRGBWRITEENABLE              = 194,
378     WINED3D_RS_DEPTHBIAS                    = 195,
379     WINED3D_RS_WRAP8                        = 198,
380     WINED3D_RS_WRAP9                        = 199,
381     WINED3D_RS_WRAP10                       = 200,
382     WINED3D_RS_WRAP11                       = 201,
383     WINED3D_RS_WRAP12                       = 202,
384     WINED3D_RS_WRAP13                       = 203,
385     WINED3D_RS_WRAP14                       = 204,
386     WINED3D_RS_WRAP15                       = 205,
387     WINED3D_RS_SEPARATEALPHABLENDENABLE     = 206,
388     WINED3D_RS_SRCBLENDALPHA                = 207,
389     WINED3D_RS_DESTBLENDALPHA               = 208,
390     WINED3D_RS_BLENDOPALPHA                 = 209,
391     WINED3D_RS_DEPTHCLIP                    = 210,
392     WINED3D_RS_DEPTHBIASCLAMP               = 211,
393     WINED3D_RS_COLORWRITEENABLE4            = 212,
394     WINED3D_RS_COLORWRITEENABLE5            = 213,
395     WINED3D_RS_COLORWRITEENABLE6            = 214,
396     WINED3D_RS_COLORWRITEENABLE7            = 215,
397 };
398 #define WINEHIGHEST_RENDER_STATE                                WINED3D_RS_COLORWRITEENABLE7
399 
WINED3D_RS_COLORWRITE(int index)400 static inline enum wined3d_render_state WINED3D_RS_COLORWRITE(int index)
401 {
402     if (index == 0) return WINED3D_RS_COLORWRITEENABLE;
403     if (index <= 3) return WINED3D_RS_COLORWRITEENABLE1 + index - 1;
404     if (index <= 7) return WINED3D_RS_COLORWRITEENABLE4 + index - 4;
405     return WINED3D_RS_COLORWRITEENABLE;
406 }
407 
408 enum wined3d_blend
409 {
410     WINED3D_BLEND_ZERO                      =  1,
411     WINED3D_BLEND_ONE                       =  2,
412     WINED3D_BLEND_SRCCOLOR                  =  3,
413     WINED3D_BLEND_INVSRCCOLOR               =  4,
414     WINED3D_BLEND_SRCALPHA                  =  5,
415     WINED3D_BLEND_INVSRCALPHA               =  6,
416     WINED3D_BLEND_DESTALPHA                 =  7,
417     WINED3D_BLEND_INVDESTALPHA              =  8,
418     WINED3D_BLEND_DESTCOLOR                 =  9,
419     WINED3D_BLEND_INVDESTCOLOR              = 10,
420     WINED3D_BLEND_SRCALPHASAT               = 11,
421     WINED3D_BLEND_BOTHSRCALPHA              = 12,
422     WINED3D_BLEND_BOTHINVSRCALPHA           = 13,
423     WINED3D_BLEND_BLENDFACTOR               = 14,
424     WINED3D_BLEND_INVBLENDFACTOR            = 15,
425     WINED3D_BLEND_SRC1COLOR                 = 16,
426     WINED3D_BLEND_INVSRC1COLOR              = 17,
427     WINED3D_BLEND_SRC1ALPHA                 = 18,
428     WINED3D_BLEND_INVSRC1ALPHA              = 19,
429 };
430 
431 enum wined3d_blend_op
432 {
433     WINED3D_BLEND_OP_ADD                    = 1,
434     WINED3D_BLEND_OP_SUBTRACT               = 2,
435     WINED3D_BLEND_OP_REVSUBTRACT            = 3,
436     WINED3D_BLEND_OP_MIN                    = 4,
437     WINED3D_BLEND_OP_MAX                    = 5,
438 };
439 
440 enum wined3d_vertex_blend_flags
441 {
442     WINED3D_VBF_DISABLE                     = 0,
443     WINED3D_VBF_1WEIGHTS                    = 1,
444     WINED3D_VBF_2WEIGHTS                    = 2,
445     WINED3D_VBF_3WEIGHTS                    = 3,
446     WINED3D_VBF_TWEENING                    = 255,
447     WINED3D_VBF_0WEIGHTS                    = 256,
448 };
449 
450 enum wined3d_cmp_func
451 {
452     WINED3D_CMP_NEVER                       = 1,
453     WINED3D_CMP_LESS                        = 2,
454     WINED3D_CMP_EQUAL                       = 3,
455     WINED3D_CMP_LESSEQUAL                   = 4,
456     WINED3D_CMP_GREATER                     = 5,
457     WINED3D_CMP_NOTEQUAL                    = 6,
458     WINED3D_CMP_GREATEREQUAL                = 7,
459     WINED3D_CMP_ALWAYS                      = 8,
460 };
461 
462 enum wined3d_depth_buffer_type
463 {
464     WINED3D_ZB_FALSE                        = 0,
465     WINED3D_ZB_TRUE                         = 1,
466     WINED3D_ZB_USEW                         = 2,
467 };
468 
469 enum wined3d_fog_mode
470 {
471     WINED3D_FOG_NONE                        = 0,
472     WINED3D_FOG_EXP                         = 1,
473     WINED3D_FOG_EXP2                        = 2,
474     WINED3D_FOG_LINEAR                      = 3,
475 };
476 
477 enum wined3d_shade_mode
478 {
479     WINED3D_SHADE_FLAT                      = 1,
480     WINED3D_SHADE_GOURAUD                   = 2,
481     WINED3D_SHADE_PHONG                     = 3,
482 };
483 
484 enum wined3d_fill_mode
485 {
486     WINED3D_FILL_POINT                      = 1,
487     WINED3D_FILL_WIREFRAME                  = 2,
488     WINED3D_FILL_SOLID                      = 3,
489 };
490 
491 enum wined3d_cull
492 {
493     WINED3D_CULL_NONE                       = 1,
494     WINED3D_CULL_FRONT                      = 2,
495     WINED3D_CULL_BACK                       = 3,
496 };
497 
498 enum wined3d_stencil_op
499 {
500     WINED3D_STENCIL_OP_KEEP                 = 1,
501     WINED3D_STENCIL_OP_ZERO                 = 2,
502     WINED3D_STENCIL_OP_REPLACE              = 3,
503     WINED3D_STENCIL_OP_INCR_SAT             = 4,
504     WINED3D_STENCIL_OP_DECR_SAT             = 5,
505     WINED3D_STENCIL_OP_INVERT               = 6,
506     WINED3D_STENCIL_OP_INCR                 = 7,
507     WINED3D_STENCIL_OP_DECR                 = 8,
508 };
509 
510 enum wined3d_material_color_source
511 {
512     WINED3D_MCS_MATERIAL                    = 0,
513     WINED3D_MCS_COLOR1                      = 1,
514     WINED3D_MCS_COLOR2                      = 2,
515 };
516 
517 enum wined3d_patch_edge_style
518 {
519     WINED3D_PATCH_EDGE_DISCRETE             = 0,
520     WINED3D_PATCH_EDGE_CONTINUOUS           = 1,
521 };
522 
523 enum wined3d_swap_effect
524 {
525     WINED3D_SWAP_EFFECT_DISCARD,
526     WINED3D_SWAP_EFFECT_SEQUENTIAL,
527     WINED3D_SWAP_EFFECT_FLIP_DISCARD,
528     WINED3D_SWAP_EFFECT_FLIP_SEQUENTIAL,
529     WINED3D_SWAP_EFFECT_COPY,
530     WINED3D_SWAP_EFFECT_COPY_VSYNC,
531     WINED3D_SWAP_EFFECT_OVERLAY,
532 };
533 
534 enum wined3d_sampler_state
535 {
536     WINED3D_SAMP_ADDRESS_U                  = 1,
537     WINED3D_SAMP_ADDRESS_V                  = 2,
538     WINED3D_SAMP_ADDRESS_W                  = 3,
539     WINED3D_SAMP_BORDER_COLOR               = 4,
540     WINED3D_SAMP_MAG_FILTER                 = 5,
541     WINED3D_SAMP_MIN_FILTER                 = 6,
542     WINED3D_SAMP_MIP_FILTER                 = 7,
543     WINED3D_SAMP_MIPMAP_LOD_BIAS            = 8,
544     WINED3D_SAMP_MAX_MIP_LEVEL              = 9,
545     WINED3D_SAMP_MAX_ANISOTROPY             = 10,
546     WINED3D_SAMP_SRGB_TEXTURE               = 11,
547     WINED3D_SAMP_ELEMENT_INDEX              = 12,
548     WINED3D_SAMP_DMAP_OFFSET                = 13,
549 };
550 #define WINED3D_HIGHEST_SAMPLER_STATE                           WINED3D_SAMP_DMAP_OFFSET
551 
552 enum wined3d_multisample_type
553 {
554     WINED3D_MULTISAMPLE_NONE                = 0,
555     WINED3D_MULTISAMPLE_NON_MASKABLE        = 1,
556     WINED3D_MULTISAMPLE_2_SAMPLES           = 2,
557     WINED3D_MULTISAMPLE_3_SAMPLES           = 3,
558     WINED3D_MULTISAMPLE_4_SAMPLES           = 4,
559     WINED3D_MULTISAMPLE_5_SAMPLES           = 5,
560     WINED3D_MULTISAMPLE_6_SAMPLES           = 6,
561     WINED3D_MULTISAMPLE_7_SAMPLES           = 7,
562     WINED3D_MULTISAMPLE_8_SAMPLES           = 8,
563     WINED3D_MULTISAMPLE_9_SAMPLES           = 9,
564     WINED3D_MULTISAMPLE_10_SAMPLES          = 10,
565     WINED3D_MULTISAMPLE_11_SAMPLES          = 11,
566     WINED3D_MULTISAMPLE_12_SAMPLES          = 12,
567     WINED3D_MULTISAMPLE_13_SAMPLES          = 13,
568     WINED3D_MULTISAMPLE_14_SAMPLES          = 14,
569     WINED3D_MULTISAMPLE_15_SAMPLES          = 15,
570     WINED3D_MULTISAMPLE_16_SAMPLES          = 16,
571 };
572 
573 enum wined3d_texture_stage_state
574 {
575     WINED3D_TSS_COLOR_OP                    = 0,
576     WINED3D_TSS_COLOR_ARG1                  = 1,
577     WINED3D_TSS_COLOR_ARG2                  = 2,
578     WINED3D_TSS_ALPHA_OP                    = 3,
579     WINED3D_TSS_ALPHA_ARG1                  = 4,
580     WINED3D_TSS_ALPHA_ARG2                  = 5,
581     WINED3D_TSS_BUMPENV_MAT00               = 6,
582     WINED3D_TSS_BUMPENV_MAT01               = 7,
583     WINED3D_TSS_BUMPENV_MAT10               = 8,
584     WINED3D_TSS_BUMPENV_MAT11               = 9,
585     WINED3D_TSS_TEXCOORD_INDEX              = 10,
586     WINED3D_TSS_BUMPENV_LSCALE              = 11,
587     WINED3D_TSS_BUMPENV_LOFFSET             = 12,
588     WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS     = 13,
589     WINED3D_TSS_COLOR_ARG0                  = 14,
590     WINED3D_TSS_ALPHA_ARG0                  = 15,
591     WINED3D_TSS_RESULT_ARG                  = 16,
592     WINED3D_TSS_CONSTANT                    = 17,
593     WINED3D_TSS_INVALID                     = ~0U,
594 };
595 #define WINED3D_HIGHEST_TEXTURE_STATE                           WINED3D_TSS_CONSTANT
596 
597 enum wined3d_texture_transform_flags
598 {
599     WINED3D_TTFF_DISABLE                    = 0,
600     WINED3D_TTFF_COUNT1                     = 1,
601     WINED3D_TTFF_COUNT2                     = 2,
602     WINED3D_TTFF_COUNT3                     = 3,
603     WINED3D_TTFF_COUNT4                     = 4,
604     WINED3D_TTFF_PROJECTED                  = 256,
605 };
606 
607 enum wined3d_texture_op
608 {
609     WINED3D_TOP_DISABLE                     = 1,
610     WINED3D_TOP_SELECT_ARG1                 = 2,
611     WINED3D_TOP_SELECT_ARG2                 = 3,
612     WINED3D_TOP_MODULATE                    = 4,
613     WINED3D_TOP_MODULATE_2X                 = 5,
614     WINED3D_TOP_MODULATE_4X                 = 6,
615     WINED3D_TOP_ADD                         = 7,
616     WINED3D_TOP_ADD_SIGNED                  = 8,
617     WINED3D_TOP_ADD_SIGNED_2X               = 9,
618     WINED3D_TOP_SUBTRACT                    = 10,
619     WINED3D_TOP_ADD_SMOOTH                  = 11,
620     WINED3D_TOP_BLEND_DIFFUSE_ALPHA         = 12,
621     WINED3D_TOP_BLEND_TEXTURE_ALPHA         = 13,
622     WINED3D_TOP_BLEND_FACTOR_ALPHA          = 14,
623     WINED3D_TOP_BLEND_TEXTURE_ALPHA_PM      = 15,
624     WINED3D_TOP_BLEND_CURRENT_ALPHA         = 16,
625     WINED3D_TOP_PREMODULATE                 = 17,
626     WINED3D_TOP_MODULATE_ALPHA_ADD_COLOR    = 18,
627     WINED3D_TOP_MODULATE_COLOR_ADD_ALPHA    = 19,
628     WINED3D_TOP_MODULATE_INVALPHA_ADD_COLOR = 20,
629     WINED3D_TOP_MODULATE_INVCOLOR_ADD_ALPHA = 21,
630     WINED3D_TOP_BUMPENVMAP                  = 22,
631     WINED3D_TOP_BUMPENVMAP_LUMINANCE        = 23,
632     WINED3D_TOP_DOTPRODUCT3                 = 24,
633     WINED3D_TOP_MULTIPLY_ADD                = 25,
634     WINED3D_TOP_LERP                        = 26,
635 };
636 
637 enum wined3d_texture_address
638 {
639     WINED3D_TADDRESS_WRAP                   = 1,
640     WINED3D_TADDRESS_MIRROR                 = 2,
641     WINED3D_TADDRESS_CLAMP                  = 3,
642     WINED3D_TADDRESS_BORDER                 = 4,
643     WINED3D_TADDRESS_MIRROR_ONCE            = 5,
644 };
645 
646 enum wined3d_transform_state
647 {
648     WINED3D_TS_VIEW                         = 2,
649     WINED3D_TS_PROJECTION                   = 3,
650     WINED3D_TS_TEXTURE0                     = 16,
651     WINED3D_TS_TEXTURE1                     = 17,
652     WINED3D_TS_TEXTURE2                     = 18,
653     WINED3D_TS_TEXTURE3                     = 19,
654     WINED3D_TS_TEXTURE4                     = 20,
655     WINED3D_TS_TEXTURE5                     = 21,
656     WINED3D_TS_TEXTURE6                     = 22,
657     WINED3D_TS_TEXTURE7                     = 23,
658     WINED3D_TS_WORLD                        = 256, /* WINED3D_TS_WORLD_MATRIX(0) */
659     WINED3D_TS_WORLD1                       = 257,
660     WINED3D_TS_WORLD2                       = 258,
661     WINED3D_TS_WORLD3                       = 259,
662 };
663 
664 #define WINED3D_TS_WORLD_MATRIX(index)                          (enum wined3d_transform_state)(index + 256)
665 
666 enum wined3d_basis_type
667 {
668     WINED3D_BASIS_BEZIER                    = 0,
669     WINED3D_BASIS_BSPLINE                   = 1,
670     WINED3D_BASIS_INTERPOLATE               = 2,
671 };
672 
673 enum wined3d_cubemap_face
674 {
675     WINED3D_CUBEMAP_FACE_POSITIVE_X         = 0,
676     WINED3D_CUBEMAP_FACE_NEGATIVE_X         = 1,
677     WINED3D_CUBEMAP_FACE_POSITIVE_Y         = 2,
678     WINED3D_CUBEMAP_FACE_NEGATIVE_Y         = 3,
679     WINED3D_CUBEMAP_FACE_POSITIVE_Z         = 4,
680     WINED3D_CUBEMAP_FACE_NEGATIVE_Z         = 5,
681 };
682 
683 enum wined3d_texture_filter_type
684 {
685     WINED3D_TEXF_NONE                       = 0,
686     WINED3D_TEXF_POINT                      = 1,
687     WINED3D_TEXF_LINEAR                     = 2,
688     WINED3D_TEXF_ANISOTROPIC                = 3,
689     WINED3D_TEXF_FLAT_CUBIC                 = 4,
690     WINED3D_TEXF_GAUSSIAN_CUBIC             = 5,
691     WINED3D_TEXF_PYRAMIDAL_QUAD             = 6,
692     WINED3D_TEXF_GAUSSIAN_QUAD              = 7,
693 };
694 
695 enum wined3d_resource_type
696 {
697     WINED3D_RTYPE_NONE                      = 0,
698     WINED3D_RTYPE_BUFFER                    = 1,
699     WINED3D_RTYPE_TEXTURE_1D                = 2,
700     WINED3D_RTYPE_TEXTURE_2D                = 3,
701     WINED3D_RTYPE_TEXTURE_3D                = 4,
702 };
703 
704 enum wined3d_query_type
705 {
706     WINED3D_QUERY_TYPE_VCACHE                = 4,
707     WINED3D_QUERY_TYPE_RESOURCE_MANAGER      = 5,
708     WINED3D_QUERY_TYPE_VERTEX_STATS          = 6,
709     WINED3D_QUERY_TYPE_EVENT                 = 8,
710     WINED3D_QUERY_TYPE_OCCLUSION             = 9,
711     WINED3D_QUERY_TYPE_TIMESTAMP             = 10,
712     WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT    = 11,
713     WINED3D_QUERY_TYPE_TIMESTAMP_FREQ        = 12,
714     WINED3D_QUERY_TYPE_PIPELINE_TIMINGS      = 13,
715     WINED3D_QUERY_TYPE_INTERFACE_TIMINGS     = 14,
716     WINED3D_QUERY_TYPE_VERTEX_TIMINGS        = 15,
717     WINED3D_QUERY_TYPE_PIXEL_TIMINGS         = 16,
718     WINED3D_QUERY_TYPE_BANDWIDTH_TIMINGS     = 17,
719     WINED3D_QUERY_TYPE_CACHE_UTILIZATION     = 18,
720     WINED3D_QUERY_TYPE_MEMORY_PRESSURE       = 19,
721     WINED3D_QUERY_TYPE_PIPELINE_STATISTICS   = 20,
722     WINED3D_QUERY_TYPE_SO_STATISTICS         = 21,
723     WINED3D_QUERY_TYPE_SO_OVERFLOW           = 22,
724     WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0 = 23,
725     WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1 = 24,
726     WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM2 = 25,
727     WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3 = 26,
728     WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM0   = 27,
729     WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM1   = 28,
730     WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM2   = 29,
731     WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM3   = 30,
732 };
733 
734 struct wined3d_query_data_timestamp_disjoint
735 {
736     UINT64 frequency;
737     BOOL disjoint;
738 };
739 
740 struct wined3d_query_data_so_statistics
741 {
742     UINT64 primitives_written;
743     UINT64 primitives_generated;
744 };
745 
746 struct wined3d_query_data_pipeline_statistics
747 {
748     UINT64 vertices_submitted;
749     UINT64 primitives_submitted;
750     UINT64 vs_invocations;
751     UINT64 gs_invocations;
752     UINT64 gs_primitives;
753     UINT64 clipping_input_primitives;
754     UINT64 clipping_output_primitives;
755     UINT64 ps_invocations;
756     UINT64 hs_invocations;
757     UINT64 ds_invocations;
758     UINT64 cs_invocations;
759 };
760 
761 #define WINED3DISSUE_BEGIN                                      (1u << 1)
762 #define WINED3DISSUE_END                                        (1u << 0)
763 #define WINED3DGETDATA_FLUSH                                    (1u << 0)
764 
765 enum wined3d_stateblock_type
766 {
767     WINED3D_SBT_ALL                         = 1,
768     WINED3D_SBT_PIXEL_STATE                 = 2,
769     WINED3D_SBT_VERTEX_STATE                = 3,
770     WINED3D_SBT_RECORDED                    = 4, /* WineD3D private */
771 };
772 
773 enum wined3d_decl_method
774 {
775     WINED3D_DECL_METHOD_DEFAULT             = 0,
776     WINED3D_DECL_METHOD_PARTIAL_U           = 1,
777     WINED3D_DECL_METHOD_PARTIAL_V           = 2,
778     WINED3D_DECL_METHOD_CROSS_UV            = 3,
779     WINED3D_DECL_METHOD_UV                  = 4,
780     WINED3D_DECL_METHOD_LOOKUP              = 5,
781     WINED3D_DECL_METHOD_LOOKUP_PRESAMPLED   = 6,
782 };
783 
784 enum wined3d_decl_usage
785 {
786     WINED3D_DECL_USAGE_POSITION             = 0,
787     WINED3D_DECL_USAGE_BLEND_WEIGHT         = 1,
788     WINED3D_DECL_USAGE_BLEND_INDICES        = 2,
789     WINED3D_DECL_USAGE_NORMAL               = 3,
790     WINED3D_DECL_USAGE_PSIZE                = 4,
791     WINED3D_DECL_USAGE_TEXCOORD             = 5,
792     WINED3D_DECL_USAGE_TANGENT              = 6,
793     WINED3D_DECL_USAGE_BINORMAL             = 7,
794     WINED3D_DECL_USAGE_TESS_FACTOR          = 8,
795     WINED3D_DECL_USAGE_POSITIONT            = 9,
796     WINED3D_DECL_USAGE_COLOR                = 10,
797     WINED3D_DECL_USAGE_FOG                  = 11,
798     WINED3D_DECL_USAGE_DEPTH                = 12,
799     WINED3D_DECL_USAGE_SAMPLE               = 13
800 };
801 
802 enum wined3d_sysval_semantic
803 {
804     WINED3D_SV_POSITION                     = 1,
805     WINED3D_SV_CLIP_DISTANCE                = 2,
806     WINED3D_SV_CULL_DISTANCE                = 3,
807     WINED3D_SV_RENDER_TARGET_ARRAY_INDEX    = 4,
808     WINED3D_SV_VIEWPORT_ARRAY_INDEX         = 5,
809     WINED3D_SV_VERTEX_ID                    = 6,
810     WINED3D_SV_PRIMITIVE_ID                 = 7,
811     WINED3D_SV_INSTANCE_ID                  = 8,
812     WINED3D_SV_IS_FRONT_FACE                = 9,
813     WINED3D_SV_SAMPLE_INDEX                 = 10,
814     WINED3D_SV_TESS_FACTOR_QUADEDGE         = 11,
815     WINED3D_SV_TESS_FACTOR_QUADINT          = 12,
816     WINED3D_SV_TESS_FACTOR_TRIEDGE          = 13,
817     WINED3D_SV_TESS_FACTOR_TRIINT           = 14,
818     WINED3D_SV_TESS_FACTOR_LINEDET          = 15,
819     WINED3D_SV_TESS_FACTOR_LINEDEN          = 16,
820 };
821 
822 enum wined3d_component_type
823 {
824     WINED3D_TYPE_UNKNOWN = 0,
825     WINED3D_TYPE_UINT    = 1,
826     WINED3D_TYPE_INT     = 2,
827     WINED3D_TYPE_FLOAT   = 3,
828 };
829 
830 enum wined3d_scanline_ordering
831 {
832     WINED3D_SCANLINE_ORDERING_UNKNOWN       = 0,
833     WINED3D_SCANLINE_ORDERING_PROGRESSIVE   = 1,
834     WINED3D_SCANLINE_ORDERING_INTERLACED    = 2,
835 };
836 
837 enum wined3d_display_rotation
838 {
839     WINED3D_DISPLAY_ROTATION_UNSPECIFIED    = 0,
840     WINED3D_DISPLAY_ROTATION_0              = 1,
841     WINED3D_DISPLAY_ROTATION_90             = 2,
842     WINED3D_DISPLAY_ROTATION_180            = 3,
843     WINED3D_DISPLAY_ROTATION_270            = 4,
844 };
845 
846 enum wined3d_shader_byte_code_format
847 {
848     WINED3D_SHADER_BYTE_CODE_FORMAT_SM1     = 0,
849     WINED3D_SHADER_BYTE_CODE_FORMAT_SM4     = 1,
850 };
851 
852 #define WINED3DCOLORWRITEENABLE_RED                             (1u << 0)
853 #define WINED3DCOLORWRITEENABLE_GREEN                           (1u << 1)
854 #define WINED3DCOLORWRITEENABLE_BLUE                            (1u << 2)
855 #define WINED3DCOLORWRITEENABLE_ALPHA                           (1u << 3)
856 
857 #define WINED3DADAPTER_DEFAULT                                  0
858 #define WINED3DENUM_NO_WHQL_LEVEL                               2
859 
860 #define WINED3DTSS_TCI_PASSTHRU                                 0x00000
861 #define WINED3DTSS_TCI_CAMERASPACENORMAL                        0x10000
862 #define WINED3DTSS_TCI_CAMERASPACEPOSITION                      0x20000
863 #define WINED3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR              0x30000
864 #define WINED3DTSS_TCI_SPHEREMAP                                0x40000
865 
866 #define WINED3DTA_SELECTMASK                                    0x0000000f
867 #define WINED3DTA_DIFFUSE                                       0x00000000
868 #define WINED3DTA_CURRENT                                       0x00000001
869 #define WINED3DTA_TEXTURE                                       0x00000002
870 #define WINED3DTA_TFACTOR                                       0x00000003
871 #define WINED3DTA_SPECULAR                                      0x00000004
872 #define WINED3DTA_TEMP                                          0x00000005
873 #define WINED3DTA_CONSTANT                                      0x00000006
874 #define WINED3DTA_COMPLEMENT                                    0x00000010
875 #define WINED3DTA_ALPHAREPLICATE                                0x00000020
876 
877 #define WINED3D_SWAPCHAIN_LOCKABLE_BACKBUFFER                   0x00000001u
878 #define WINED3D_SWAPCHAIN_DISCARD_DEPTHSTENCIL                  0x00000002u
879 #define WINED3D_SWAPCHAIN_DEVICECLIP                            0x00000004u
880 #define WINED3D_SWAPCHAIN_VIDEO                                 0x00000010u
881 #define WINED3D_SWAPCHAIN_NOAUTOROTATE                          0x00000020u
882 #define WINED3D_SWAPCHAIN_UNPRUNEDMODE                          0x00000040u
883 #define WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH                     0x00001000u
884 #define WINED3D_SWAPCHAIN_USE_CLOSEST_MATCHING_MODE             0x00002000u
885 #define WINED3D_SWAPCHAIN_RESTORE_WINDOW_RECT                   0x00004000u
886 #define WINED3D_SWAPCHAIN_GDI_COMPATIBLE                        0x00008000u
887 
888 #define WINED3DDP_MAXTEXCOORD                                   8
889 
890 #define WINED3D_BIND_VERTEX_BUFFER                              0x00000001
891 #define WINED3D_BIND_INDEX_BUFFER                               0x00000002
892 #define WINED3D_BIND_CONSTANT_BUFFER                            0x00000004
893 #define WINED3D_BIND_SHADER_RESOURCE                            0x00000008
894 #define WINED3D_BIND_STREAM_OUTPUT                              0x00000010
895 #define WINED3D_BIND_RENDER_TARGET                              0x00000020
896 #define WINED3D_BIND_DEPTH_STENCIL                              0x00000040
897 #define WINED3D_BIND_UNORDERED_ACCESS                           0x00000080
898 
899 #define WINED3DUSAGE_RENDERTARGET                               0x00000001
900 #define WINED3DUSAGE_DEPTHSTENCIL                               0x00000002
901 #define WINED3DUSAGE_WRITEONLY                                  0x00000008
902 #define WINED3DUSAGE_SOFTWAREPROCESSING                         0x00000010
903 #define WINED3DUSAGE_DONOTCLIP                                  0x00000020
904 #define WINED3DUSAGE_POINTS                                     0x00000040
905 #define WINED3DUSAGE_RTPATCHES                                  0x00000080
906 #define WINED3DUSAGE_NPATCHES                                   0x00000100
907 #define WINED3DUSAGE_DYNAMIC                                    0x00000200
908 #define WINED3DUSAGE_RESTRICTED_CONTENT                         0x00000800
909 #define WINED3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER            0x00001000
910 #define WINED3DUSAGE_RESTRICT_SHARED_RESOURCE                   0x00002000
911 #define WINED3DUSAGE_DMAP                                       0x00004000
912 #define WINED3DUSAGE_TEXTAPI                                    0x10000000
913 #define WINED3DUSAGE_MASK                                       0x10007bff
914 
915 #define WINED3DUSAGE_SCRATCH                                    0x00200000
916 #define WINED3DUSAGE_PRIVATE                                    0x00400000
917 #define WINED3DUSAGE_LEGACY_CUBEMAP                             0x00800000
918 #define WINED3DUSAGE_TEXTURE                                    0x01000000
919 #define WINED3DUSAGE_OWNDC                                      0x02000000
920 #define WINED3DUSAGE_STATICDECL                                 0x04000000
921 #define WINED3DUSAGE_OVERLAY                                    0x08000000
922 
923 #define WINED3DUSAGE_QUERY_GENMIPMAP                            0x00000400
924 #define WINED3DUSAGE_QUERY_LEGACYBUMPMAP                        0x00008000
925 #define WINED3DUSAGE_QUERY_FILTER                               0x00020000
926 #define WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING             0x00080000
927 #define WINED3DUSAGE_QUERY_SRGBREAD                             0x00010000
928 #define WINED3DUSAGE_QUERY_SRGBWRITE                            0x00040000
929 #define WINED3DUSAGE_QUERY_VERTEXTEXTURE                        0x00100000
930 #define WINED3DUSAGE_QUERY_WRAPANDMIP                           0x00200000
931 #define WINED3DUSAGE_QUERY_MASK                                 0x003f8400
932 
933 #define WINED3D_MAP_NOSYSLOCK                                   0x00000800
934 #define WINED3D_MAP_NOOVERWRITE                                 0x00001000
935 #define WINED3D_MAP_DISCARD                                     0x00002000
936 #define WINED3D_MAP_DONOTWAIT                                   0x00004000
937 #define WINED3D_MAP_NO_DIRTY_UPDATE                             0x00008000
938 #define WINED3D_MAP_WRITE                                       0x40000000
939 #define WINED3D_MAP_READ                                        0x80000000
940 
941 #define WINED3DPRESENT_RATE_DEFAULT                             0x00000000
942 
943 #define WINED3DPRESENT_INTERVAL_DEFAULT                         0x00000000
944 #define WINED3DPRESENT_INTERVAL_ONE                             0x00000001
945 #define WINED3DPRESENT_INTERVAL_TWO                             0x00000002
946 #define WINED3DPRESENT_INTERVAL_THREE                           0x00000004
947 #define WINED3DPRESENT_INTERVAL_FOUR                            0x00000008
948 #define WINED3DPRESENT_INTERVAL_IMMEDIATE                       0x80000000
949 
950 #define WINED3DCLIPPLANE0                                       (1u << 0)
951 #define WINED3DCLIPPLANE1                                       (1u << 1)
952 #define WINED3DCLIPPLANE2                                       (1u << 2)
953 #define WINED3DCLIPPLANE3                                       (1u << 3)
954 #define WINED3DCLIPPLANE4                                       (1u << 4)
955 #define WINED3DCLIPPLANE5                                       (1u << 5)
956 
957 /* FVF (Flexible Vertex Format) codes */
958 #define WINED3DFVF_RESERVED0                                    0x0001
959 #define WINED3DFVF_POSITION_MASK                                0x400e
960 #define WINED3DFVF_XYZ                                          0x0002
961 #define WINED3DFVF_XYZRHW                                       0x0004
962 #define WINED3DFVF_XYZB1                                        0x0006
963 #define WINED3DFVF_XYZB2                                        0x0008
964 #define WINED3DFVF_XYZB3                                        0x000a
965 #define WINED3DFVF_XYZB4                                        0x000c
966 #define WINED3DFVF_XYZB5                                        0x000e
967 #define WINED3DFVF_XYZW                                         0x4002
968 #define WINED3DFVF_NORMAL                                       0x0010
969 #define WINED3DFVF_PSIZE                                        0x0020
970 #define WINED3DFVF_DIFFUSE                                      0x0040
971 #define WINED3DFVF_SPECULAR                                     0x0080
972 #define WINED3DFVF_TEXCOUNT_MASK                                0x0f00
973 #define WINED3DFVF_TEXCOUNT_SHIFT                               8
974 #define WINED3DFVF_TEX0                                         0x0000
975 #define WINED3DFVF_TEX1                                         0x0100
976 #define WINED3DFVF_TEX2                                         0x0200
977 #define WINED3DFVF_TEX3                                         0x0300
978 #define WINED3DFVF_TEX4                                         0x0400
979 #define WINED3DFVF_TEX5                                         0x0500
980 #define WINED3DFVF_TEX6                                         0x0600
981 #define WINED3DFVF_TEX7                                         0x0700
982 #define WINED3DFVF_TEX8                                         0x0800
983 #define WINED3DFVF_LASTBETA_UBYTE4                              0x1000
984 #define WINED3DFVF_LASTBETA_D3DCOLOR                            0x8000
985 #define WINED3DFVF_RESERVED2                                    0x6000
986 
987 #define WINED3DFVF_TEXTUREFORMAT1                               3u
988 #define WINED3DFVF_TEXTUREFORMAT2                               0u
989 #define WINED3DFVF_TEXTUREFORMAT3                               1u
990 #define WINED3DFVF_TEXTUREFORMAT4                               2u
991 #define WINED3DFVF_TEXCOORDSIZE1(idx)                           (WINED3DFVF_TEXTUREFORMAT1 << (idx * 2 + 16))
992 #define WINED3DFVF_TEXCOORDSIZE2(idx)                           (WINED3DFVF_TEXTUREFORMAT2 << (idx * 2 + 16))
993 #define WINED3DFVF_TEXCOORDSIZE3(idx)                           (WINED3DFVF_TEXTUREFORMAT3 << (idx * 2 + 16))
994 #define WINED3DFVF_TEXCOORDSIZE4(idx)                           (WINED3DFVF_TEXTUREFORMAT4 << (idx * 2 + 16))
995 
996 /* Clear flags */
997 #define WINED3DCLEAR_TARGET                                     0x00000001
998 #define WINED3DCLEAR_ZBUFFER                                    0x00000002
999 #define WINED3DCLEAR_STENCIL                                    0x00000004
1000 
1001 /* Stream source flags */
1002 #define WINED3DSTREAMSOURCE_INDEXEDDATA                         (1u << 30)
1003 #define WINED3DSTREAMSOURCE_INSTANCEDATA                        (2u << 30)
1004 
1005 /* SetPrivateData flags */
1006 #define WINED3DSPD_IUNKNOWN                                     0x00000001
1007 
1008 /* IWineD3D::CreateDevice behaviour flags */
1009 #define WINED3DCREATE_FPU_PRESERVE                              0x00000002
1010 #define WINED3DCREATE_PUREDEVICE                                0x00000010
1011 #define WINED3DCREATE_SOFTWARE_VERTEXPROCESSING                 0x00000020
1012 #define WINED3DCREATE_HARDWARE_VERTEXPROCESSING                 0x00000040
1013 #define WINED3DCREATE_MIXED_VERTEXPROCESSING                    0x00000080
1014 #define WINED3DCREATE_DISABLE_DRIVER_MANAGEMENT                 0x00000100
1015 #define WINED3DCREATE_ADAPTERGROUP_DEVICE                       0x00000200
1016 #define WINED3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX              0x00000400
1017 #define WINED3DCREATE_NOWINDOWCHANGES                           0x00000800
1018 #define WINED3DCREATE_DISABLE_PSGP_THREADING                    0x00002000
1019 #define WINED3DCREATE_ENABLE_PRESENTSTATS                       0x00004000
1020 #define WINED3DCREATE_DISABLE_PRINTSCREEN                       0x00008000
1021 #define WINED3DCREATE_SCREENSAVER                               0x10000000
1022 
1023 /* VTF defines */
1024 #define WINED3DDMAPSAMPLER                                      0x100
1025 #define WINED3DVERTEXTEXTURESAMPLER0                            (WINED3DDMAPSAMPLER + 1)
1026 #define WINED3DVERTEXTEXTURESAMPLER1                            (WINED3DDMAPSAMPLER + 2)
1027 #define WINED3DVERTEXTEXTURESAMPLER2                            (WINED3DDMAPSAMPLER + 3)
1028 #define WINED3DVERTEXTEXTURESAMPLER3                            (WINED3DDMAPSAMPLER + 4)
1029 
1030 #define WINED3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD           0x00000020
1031 #define WINED3DCAPS3_LINEAR_TO_SRGB_PRESENTATION                0x00000080
1032 #define WINED3DCAPS3_COPY_TO_VIDMEM                             0x00000100
1033 #define WINED3DCAPS3_COPY_TO_SYSTEMMEM                          0x00000200
1034 #define WINED3DCAPS3_RESERVED                                   0x8000001f
1035 
1036 #define WINED3DDEVCAPS2_STREAMOFFSET                            0x00000001
1037 #define WINED3DDEVCAPS2_DMAPNPATCH                              0x00000002
1038 #define WINED3DDEVCAPS2_ADAPTIVETESSRTPATCH                     0x00000004
1039 #define WINED3DDEVCAPS2_ADAPTIVETESSNPATCH                      0x00000008
1040 #define WINED3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES           0x00000010
1041 #define WINED3DDEVCAPS2_PRESAMPLEDDMAPNPATCH                    0x00000020
1042 #define WINED3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET      0x00000040
1043 
1044 #define WINED3DDTCAPS_UBYTE4                                    0x00000001
1045 #define WINED3DDTCAPS_UBYTE4N                                   0x00000002
1046 #define WINED3DDTCAPS_SHORT2N                                   0x00000004
1047 #define WINED3DDTCAPS_SHORT4N                                   0x00000008
1048 #define WINED3DDTCAPS_USHORT2N                                  0x00000010
1049 #define WINED3DDTCAPS_USHORT4N                                  0x00000020
1050 #define WINED3DDTCAPS_UDEC3                                     0x00000040
1051 #define WINED3DDTCAPS_DEC3N                                     0x00000080
1052 #define WINED3DDTCAPS_FLOAT16_2                                 0x00000100
1053 #define WINED3DDTCAPS_FLOAT16_4                                 0x00000200
1054 
1055 #define WINED3DFVFCAPS_TEXCOORDCOUNTMASK                        0x0000ffff
1056 #define WINED3DFVFCAPS_DONOTSTRIPELEMENTS                       0x00080000
1057 #define WINED3DFVFCAPS_PSIZE                                    0x00100000
1058 
1059 #define WINED3DLINECAPS_TEXTURE                                 0x00000001
1060 #define WINED3DLINECAPS_ZTEST                                   0x00000002
1061 #define WINED3DLINECAPS_BLEND                                   0x00000004
1062 #define WINED3DLINECAPS_ALPHACMP                                0x00000008
1063 #define WINED3DLINECAPS_FOG                                     0x00000010
1064 #define WINED3DLINECAPS_ANTIALIAS                               0x00000020
1065 
1066 #define WINED3DMAX30SHADERINSTRUCTIONS                          32768
1067 #define WINED3DMIN30SHADERINSTRUCTIONS                          512
1068 
1069 #define WINED3DPBLENDCAPS_ZERO                                  0x00000001
1070 #define WINED3DPBLENDCAPS_ONE                                   0x00000002
1071 #define WINED3DPBLENDCAPS_SRCCOLOR                              0x00000004
1072 #define WINED3DPBLENDCAPS_INVSRCCOLOR                           0x00000008
1073 #define WINED3DPBLENDCAPS_SRCALPHA                              0x00000010
1074 #define WINED3DPBLENDCAPS_INVSRCALPHA                           0x00000020
1075 #define WINED3DPBLENDCAPS_DESTALPHA                             0x00000040
1076 #define WINED3DPBLENDCAPS_INVDESTALPHA                          0x00000080
1077 #define WINED3DPBLENDCAPS_DESTCOLOR                             0x00000100
1078 #define WINED3DPBLENDCAPS_INVDESTCOLOR                          0x00000200
1079 #define WINED3DPBLENDCAPS_SRCALPHASAT                           0x00000400
1080 #define WINED3DPBLENDCAPS_BOTHSRCALPHA                          0x00000800
1081 #define WINED3DPBLENDCAPS_BOTHINVSRCALPHA                       0x00001000
1082 #define WINED3DPBLENDCAPS_BLENDFACTOR                           0x00002000
1083 
1084 #define WINED3DPCMPCAPS_NEVER                                   0x00000001
1085 #define WINED3DPCMPCAPS_LESS                                    0x00000002
1086 #define WINED3DPCMPCAPS_EQUAL                                   0x00000004
1087 #define WINED3DPCMPCAPS_LESSEQUAL                               0x00000008
1088 #define WINED3DPCMPCAPS_GREATER                                 0x00000010
1089 #define WINED3DPCMPCAPS_NOTEQUAL                                0x00000020
1090 #define WINED3DPCMPCAPS_GREATEREQUAL                            0x00000040
1091 #define WINED3DPCMPCAPS_ALWAYS                                  0x00000080
1092 
1093 #define WINED3DPMISCCAPS_MASKZ                                  0x00000002
1094 #define WINED3DPMISCCAPS_LINEPATTERNREP                         0x00000004
1095 #define WINED3DPMISCCAPS_CULLNONE                               0x00000010
1096 #define WINED3DPMISCCAPS_CULLCW                                 0x00000020
1097 #define WINED3DPMISCCAPS_CULLCCW                                0x00000040
1098 #define WINED3DPMISCCAPS_COLORWRITEENABLE                       0x00000080
1099 #define WINED3DPMISCCAPS_CLIPPLANESCALEDPOINTS                  0x00000100
1100 #define WINED3DPMISCCAPS_CLIPTLVERTS                            0x00000200
1101 #define WINED3DPMISCCAPS_TSSARGTEMP                             0x00000400
1102 #define WINED3DPMISCCAPS_BLENDOP                                0x00000800
1103 #define WINED3DPMISCCAPS_NULLREFERENCE                          0x00001000
1104 #define WINED3DPMISCCAPS_INDEPENDENTWRITEMASKS                  0x00004000
1105 #define WINED3DPMISCCAPS_PERSTAGECONSTANT                       0x00008000
1106 #define WINED3DPMISCCAPS_FOGANDSPECULARALPHA                    0x00010000
1107 #define WINED3DPMISCCAPS_SEPARATEALPHABLEND                     0x00020000
1108 #define WINED3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS                0x00040000
1109 #define WINED3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING             0x00080000
1110 #define WINED3DPMISCCAPS_FOGVERTEXCLAMPED                       0x00100000
1111 #define WINED3DPMISCCAPS_POSTBLENDSRGBCONVERT                   0x00200000
1112 
1113 #define WINED3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH                 24
1114 #define WINED3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH                 0
1115 #define WINED3DPS20_MAX_NUMTEMPS                                32
1116 #define WINED3DPS20_MIN_NUMTEMPS                                12
1117 #define WINED3DPS20_MAX_STATICFLOWCONTROLDEPTH                  4
1118 #define WINED3DPS20_MIN_STATICFLOWCONTROLDEPTH                  0
1119 #define WINED3DPS20_MAX_NUMINSTRUCTIONSLOTS                     512
1120 #define WINED3DPS20_MIN_NUMINSTRUCTIONSLOTS                     96
1121 
1122 #define WINED3DPS20CAPS_ARBITRARYSWIZZLE                        0x00000001
1123 #define WINED3DPS20CAPS_GRADIENTINSTRUCTIONS                    0x00000002
1124 #define WINED3DPS20CAPS_PREDICATION                             0x00000004
1125 #define WINED3DPS20CAPS_NODEPENDENTREADLIMIT                    0x00000008
1126 #define WINED3DPS20CAPS_NOTEXINSTRUCTIONLIMIT                   0x00000010
1127 
1128 #define WINED3DPTADDRESSCAPS_WRAP                               0x00000001
1129 #define WINED3DPTADDRESSCAPS_MIRROR                             0x00000002
1130 #define WINED3DPTADDRESSCAPS_CLAMP                              0x00000004
1131 #define WINED3DPTADDRESSCAPS_BORDER                             0x00000008
1132 #define WINED3DPTADDRESSCAPS_INDEPENDENTUV                      0x00000010
1133 #define WINED3DPTADDRESSCAPS_MIRRORONCE                         0x00000020
1134 
1135 #define WINED3DSTENCILCAPS_KEEP                                 0x00000001
1136 #define WINED3DSTENCILCAPS_ZERO                                 0x00000002
1137 #define WINED3DSTENCILCAPS_REPLACE                              0x00000004
1138 #define WINED3DSTENCILCAPS_INCRSAT                              0x00000008
1139 #define WINED3DSTENCILCAPS_DECRSAT                              0x00000010
1140 #define WINED3DSTENCILCAPS_INVERT                               0x00000020
1141 #define WINED3DSTENCILCAPS_INCR                                 0x00000040
1142 #define WINED3DSTENCILCAPS_DECR                                 0x00000080
1143 #define WINED3DSTENCILCAPS_TWOSIDED                             0x00000100
1144 
1145 #define WINED3DTEXOPCAPS_DISABLE                                0x00000001
1146 #define WINED3DTEXOPCAPS_SELECTARG1                             0x00000002
1147 #define WINED3DTEXOPCAPS_SELECTARG2                             0x00000004
1148 #define WINED3DTEXOPCAPS_MODULATE                               0x00000008
1149 #define WINED3DTEXOPCAPS_MODULATE2X                             0x00000010
1150 #define WINED3DTEXOPCAPS_MODULATE4X                             0x00000020
1151 #define WINED3DTEXOPCAPS_ADD                                    0x00000040
1152 #define WINED3DTEXOPCAPS_ADDSIGNED                              0x00000080
1153 #define WINED3DTEXOPCAPS_ADDSIGNED2X                            0x00000100
1154 #define WINED3DTEXOPCAPS_SUBTRACT                               0x00000200
1155 #define WINED3DTEXOPCAPS_ADDSMOOTH                              0x00000400
1156 #define WINED3DTEXOPCAPS_BLENDDIFFUSEALPHA                      0x00000800
1157 #define WINED3DTEXOPCAPS_BLENDTEXTUREALPHA                      0x00001000
1158 #define WINED3DTEXOPCAPS_BLENDFACTORALPHA                       0x00002000
1159 #define WINED3DTEXOPCAPS_BLENDTEXTUREALPHAPM                    0x00004000
1160 #define WINED3DTEXOPCAPS_BLENDCURRENTALPHA                      0x00008000
1161 #define WINED3DTEXOPCAPS_PREMODULATE                            0x00010000
1162 #define WINED3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR                 0x00020000
1163 #define WINED3DTEXOPCAPS_MODULATECOLOR_ADDALPHA                 0x00040000
1164 #define WINED3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR              0x00080000
1165 #define WINED3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA              0x00100000
1166 #define WINED3DTEXOPCAPS_BUMPENVMAP                             0x00200000
1167 #define WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE                    0x00400000
1168 #define WINED3DTEXOPCAPS_DOTPRODUCT3                            0x00800000
1169 #define WINED3DTEXOPCAPS_MULTIPLYADD                            0x01000000
1170 #define WINED3DTEXOPCAPS_LERP                                   0x02000000
1171 
1172 #define WINED3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH                 24
1173 #define WINED3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH                 0
1174 #define WINED3DVS20_MAX_NUMTEMPS                                32
1175 #define WINED3DVS20_MIN_NUMTEMPS                                12
1176 #define WINED3DVS20_MAX_STATICFLOWCONTROLDEPTH                  4
1177 #define WINED3DVS20_MIN_STATICFLOWCONTROLDEPTH                  1
1178 
1179 #define WINED3DVS20CAPS_PREDICATION                             0x00000001
1180 
1181 #define WINED3DCAPS2_NO2DDURING3DSCENE                          0x00000002
1182 #define WINED3DCAPS2_FULLSCREENGAMMA                            0x00020000
1183 #define WINED3DCAPS2_CANRENDERWINDOWED                          0x00080000
1184 #define WINED3DCAPS2_CANCALIBRATEGAMMA                          0x00100000
1185 #define WINED3DCAPS2_RESERVED                                   0x02000000
1186 #define WINED3DCAPS2_CANMANAGERESOURCE                          0x10000000
1187 #define WINED3DCAPS2_DYNAMICTEXTURES                            0x20000000
1188 #define WINED3DCAPS2_CANGENMIPMAP                               0x40000000
1189 
1190 #define WINED3DPRASTERCAPS_DITHER                               0x00000001
1191 #define WINED3DPRASTERCAPS_ROP2                                 0x00000002
1192 #define WINED3DPRASTERCAPS_XOR                                  0x00000004
1193 #define WINED3DPRASTERCAPS_PAT                                  0x00000008
1194 #define WINED3DPRASTERCAPS_ZTEST                                0x00000010
1195 #define WINED3DPRASTERCAPS_SUBPIXEL                             0x00000020
1196 #define WINED3DPRASTERCAPS_SUBPIXELX                            0x00000040
1197 #define WINED3DPRASTERCAPS_FOGVERTEX                            0x00000080
1198 #define WINED3DPRASTERCAPS_FOGTABLE                             0x00000100
1199 #define WINED3DPRASTERCAPS_STIPPLE                              0x00000200
1200 #define WINED3DPRASTERCAPS_ANTIALIASSORTDEPENDENT               0x00000400
1201 #define WINED3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT             0x00000800
1202 #define WINED3DPRASTERCAPS_ANTIALIASEDGES                       0x00001000
1203 #define WINED3DPRASTERCAPS_MIPMAPLODBIAS                        0x00002000
1204 #define WINED3DPRASTERCAPS_ZBIAS                                0x00004000
1205 #define WINED3DPRASTERCAPS_ZBUFFERLESSHSR                       0x00008000
1206 #define WINED3DPRASTERCAPS_FOGRANGE                             0x00010000
1207 #define WINED3DPRASTERCAPS_ANISOTROPY                           0x00020000
1208 #define WINED3DPRASTERCAPS_WBUFFER                              0x00040000
1209 #define WINED3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT           0x00080000
1210 #define WINED3DPRASTERCAPS_WFOG                                 0x00100000
1211 #define WINED3DPRASTERCAPS_ZFOG                                 0x00200000
1212 #define WINED3DPRASTERCAPS_COLORPERSPECTIVE                     0x00400000
1213 #define WINED3DPRASTERCAPS_SCISSORTEST                          0x01000000
1214 #define WINED3DPRASTERCAPS_SLOPESCALEDEPTHBIAS                  0x02000000
1215 #define WINED3DPRASTERCAPS_DEPTHBIAS                            0x04000000
1216 #define WINED3DPRASTERCAPS_MULTISAMPLE_TOGGLE                   0x08000000
1217 
1218 #define WINED3DPSHADECAPS_COLORFLATMONO                         0x00000001
1219 #define WINED3DPSHADECAPS_COLORFLATRGB                          0x00000002
1220 #define WINED3DPSHADECAPS_COLORGOURAUDMONO                      0x00000004
1221 #define WINED3DPSHADECAPS_COLORGOURAUDRGB                       0x00000008
1222 #define WINED3DPSHADECAPS_COLORPHONGMONO                        0x00000010
1223 #define WINED3DPSHADECAPS_COLORPHONGRGB                         0x00000020
1224 #define WINED3DPSHADECAPS_SPECULARFLATMONO                      0x00000040
1225 #define WINED3DPSHADECAPS_SPECULARFLATRGB                       0x00000080
1226 #define WINED3DPSHADECAPS_SPECULARGOURAUDMONO                   0x00000100
1227 #define WINED3DPSHADECAPS_SPECULARGOURAUDRGB                    0x00000200
1228 #define WINED3DPSHADECAPS_SPECULARPHONGMONO                     0x00000400
1229 #define WINED3DPSHADECAPS_SPECULARPHONGRGB                      0x00000800
1230 #define WINED3DPSHADECAPS_ALPHAFLATBLEND                        0x00001000
1231 #define WINED3DPSHADECAPS_ALPHAFLATSTIPPLED                     0x00002000
1232 #define WINED3DPSHADECAPS_ALPHAGOURAUDBLEND                     0x00004000
1233 #define WINED3DPSHADECAPS_ALPHAGOURAUDSTIPPLED                  0x00008000
1234 #define WINED3DPSHADECAPS_ALPHAPHONGBLEND                       0x00010000
1235 #define WINED3DPSHADECAPS_ALPHAPHONGSTIPPLED                    0x00020000
1236 #define WINED3DPSHADECAPS_FOGFLAT                               0x00040000
1237 #define WINED3DPSHADECAPS_FOGGOURAUD                            0x00080000
1238 #define WINED3DPSHADECAPS_FOGPHONG                              0x00100000
1239 
1240 #define WINED3DPTEXTURECAPS_PERSPECTIVE                         0x00000001
1241 #define WINED3DPTEXTURECAPS_POW2                                0x00000002
1242 #define WINED3DPTEXTURECAPS_ALPHA                               0x00000004
1243 #define WINED3DPTEXTURECAPS_TRANSPARENCY                        0x00000008
1244 #define WINED3DPTEXTURECAPS_BORDER                              0x00000010
1245 #define WINED3DPTEXTURECAPS_SQUAREONLY                          0x00000020
1246 #define WINED3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE            0x00000040
1247 #define WINED3DPTEXTURECAPS_ALPHAPALETTE                        0x00000080
1248 #define WINED3DPTEXTURECAPS_NONPOW2CONDITIONAL                  0x00000100
1249 #define WINED3DPTEXTURECAPS_PROJECTED                           0x00000400
1250 #define WINED3DPTEXTURECAPS_CUBEMAP                             0x00000800
1251 #define WINED3DPTEXTURECAPS_COLORKEYBLEND                       0x00001000
1252 #define WINED3DPTEXTURECAPS_VOLUMEMAP                           0x00002000
1253 #define WINED3DPTEXTURECAPS_MIPMAP                              0x00004000
1254 #define WINED3DPTEXTURECAPS_MIPVOLUMEMAP                        0x00008000
1255 #define WINED3DPTEXTURECAPS_MIPCUBEMAP                          0x00010000
1256 #define WINED3DPTEXTURECAPS_CUBEMAP_POW2                        0x00020000
1257 #define WINED3DPTEXTURECAPS_VOLUMEMAP_POW2                      0x00040000
1258 #define WINED3DPTEXTURECAPS_NOPROJECTEDBUMPENV                  0x00200000
1259 
1260 #define WINED3DPTFILTERCAPS_NEAREST                             0x00000001
1261 #define WINED3DPTFILTERCAPS_LINEAR                              0x00000002
1262 #define WINED3DPTFILTERCAPS_MIPNEAREST                          0x00000004
1263 #define WINED3DPTFILTERCAPS_MIPLINEAR                           0x00000008
1264 #define WINED3DPTFILTERCAPS_LINEARMIPNEAREST                    0x00000010
1265 #define WINED3DPTFILTERCAPS_LINEARMIPLINEAR                     0x00000020
1266 #define WINED3DPTFILTERCAPS_MINFPOINT                           0x00000100
1267 #define WINED3DPTFILTERCAPS_MINFLINEAR                          0x00000200
1268 #define WINED3DPTFILTERCAPS_MINFANISOTROPIC                     0x00000400
1269 #define WINED3DPTFILTERCAPS_MIPFPOINT                           0x00010000
1270 #define WINED3DPTFILTERCAPS_MIPFLINEAR                          0x00020000
1271 #define WINED3DPTFILTERCAPS_MAGFPOINT                           0x01000000
1272 #define WINED3DPTFILTERCAPS_MAGFLINEAR                          0x02000000
1273 #define WINED3DPTFILTERCAPS_MAGFANISOTROPIC                     0x04000000
1274 #define WINED3DPTFILTERCAPS_MAGFPYRAMIDALQUAD                   0x08000000
1275 #define WINED3DPTFILTERCAPS_MAGFGAUSSIANQUAD                    0x10000000
1276 
1277 #define WINED3DVTXPCAPS_TEXGEN                                  0x00000001
1278 #define WINED3DVTXPCAPS_MATERIALSOURCE7                         0x00000002
1279 #define WINED3DVTXPCAPS_VERTEXFOG                               0x00000004
1280 #define WINED3DVTXPCAPS_DIRECTIONALLIGHTS                       0x00000008
1281 #define WINED3DVTXPCAPS_POSITIONALLIGHTS                        0x00000010
1282 #define WINED3DVTXPCAPS_LOCALVIEWER                             0x00000020
1283 #define WINED3DVTXPCAPS_TWEENING                                0x00000040
1284 #define WINED3DVTXPCAPS_TEXGEN_SPHEREMAP                        0x00000100
1285 #define WINED3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER                0x00000200
1286 
1287 #define WINED3DCURSORCAPS_COLOR                                 0x00000001
1288 #define WINED3DCURSORCAPS_LOWRES                                0x00000002
1289 
1290 #define WINED3DDEVCAPS_FLOATTLVERTEX                            0x00000001
1291 #define WINED3DDEVCAPS_SORTINCREASINGZ                          0x00000002
1292 #define WINED3DDEVCAPS_SORTDECREASINGZ                          0X00000004
1293 #define WINED3DDEVCAPS_SORTEXACT                                0x00000008
1294 #define WINED3DDEVCAPS_EXECUTESYSTEMMEMORY                      0x00000010
1295 #define WINED3DDEVCAPS_EXECUTEVIDEOMEMORY                       0x00000020
1296 #define WINED3DDEVCAPS_TLVERTEXSYSTEMMEMORY                     0x00000040
1297 #define WINED3DDEVCAPS_TLVERTEXVIDEOMEMORY                      0x00000080
1298 #define WINED3DDEVCAPS_TEXTURESYSTEMMEMORY                      0x00000100
1299 #define WINED3DDEVCAPS_TEXTUREVIDEOMEMORY                       0x00000200
1300 #define WINED3DDEVCAPS_DRAWPRIMTLVERTEX                         0x00000400
1301 #define WINED3DDEVCAPS_CANRENDERAFTERFLIP                       0x00000800
1302 #define WINED3DDEVCAPS_TEXTURENONLOCALVIDMEM                    0x00001000
1303 #define WINED3DDEVCAPS_DRAWPRIMITIVES2                          0x00002000
1304 #define WINED3DDEVCAPS_SEPARATETEXTUREMEMORIES                  0x00004000
1305 #define WINED3DDEVCAPS_DRAWPRIMITIVES2EX                        0x00008000
1306 #define WINED3DDEVCAPS_HWTRANSFORMANDLIGHT                      0x00010000
1307 #define WINED3DDEVCAPS_CANBLTSYSTONONLOCAL                      0x00020000
1308 #define WINED3DDEVCAPS_HWRASTERIZATION                          0x00080000
1309 #define WINED3DDEVCAPS_PUREDEVICE                               0x00100000
1310 #define WINED3DDEVCAPS_QUINTICRTPATCHES                         0x00200000
1311 #define WINED3DDEVCAPS_RTPATCHES                                0x00400000
1312 #define WINED3DDEVCAPS_RTPATCHHANDLEZERO                        0x00800000
1313 #define WINED3DDEVCAPS_NPATCHES                                 0x01000000
1314 
1315 #define WINED3D_LEGACY_DEPTH_BIAS                               0x00000001
1316 #define WINED3D_NO3D                                            0x00000002
1317 #define WINED3D_VIDMEM_ACCOUNTING                               0x00000004
1318 #define WINED3D_PRESENT_CONVERSION                              0x00000008
1319 #define WINED3D_RESTORE_MODE_ON_ACTIVATE                        0x00000010
1320 #define WINED3D_FOCUS_MESSAGES                                  0x00000020
1321 #define WINED3D_HANDLE_RESTORE                                  0x00000040
1322 #define WINED3D_PIXEL_CENTER_INTEGER                            0x00000080
1323 #define WINED3D_LEGACY_FFP_LIGHTING                             0x00000100
1324 #define WINED3D_SRGB_READ_WRITE_CONTROL                         0x00000200
1325 #define WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR                   0x00000400
1326 #define WINED3D_NO_PRIMITIVE_RESTART                            0x00000800
1327 #define WINED3D_LEGACY_CUBEMAP_FILTERING                        0x00001000
1328 #define WINED3D_NORMALIZED_DEPTH_BIAS                           0x00002000
1329 #define WINED3D_REQUEST_D3D10                                   0x00004000
1330 #define WINED3D_LIMIT_VIEWPORT                                  0x00008000
1331 
1332 #define WINED3D_RESZ_CODE                                       0x7fa05000
1333 
1334 #define WINED3D_CKEY_DST_BLT                                    0x00000002
1335 #define WINED3D_CKEY_DST_OVERLAY                                0x00000004
1336 #define WINED3D_CKEY_SRC_BLT                                    0x00000008
1337 #define WINED3D_CKEY_SRC_OVERLAY                                0x00000010
1338 
1339 /* dwDDFX */
1340 /* arithmetic stretching along y axis */
1341 #define WINEDDBLTFX_ARITHSTRETCHY                               0x00000001
1342 /* mirror on y axis */
1343 #define WINEDDBLTFX_MIRRORLEFTRIGHT                             0x00000002
1344 /* mirror on x axis */
1345 #define WINEDDBLTFX_MIRRORUPDOWN                                0x00000004
1346 /* do not tear */
1347 #define WINEDDBLTFX_NOTEARING                                   0x00000008
1348 /* 180 degrees clockwise rotation */
1349 #define WINEDDBLTFX_ROTATE180                                   0x00000010
1350 /* 270 degrees clockwise rotation */
1351 #define WINEDDBLTFX_ROTATE270                                   0x00000020
1352 /* 90 degrees clockwise rotation */
1353 #define WINEDDBLTFX_ROTATE90                                    0x00000040
1354 /* dwZBufferLow and dwZBufferHigh specify limits to the copied Z values */
1355 #define WINEDDBLTFX_ZBUFFERRANGE                                0x00000080
1356 /* add dwZBufferBaseDest to every source z value before compare */
1357 #define WINEDDBLTFX_ZBUFFERBASEDEST                             0x00000100
1358 
1359 #define WINED3D_BLT_FX                                          0x00000800
1360 #define WINED3D_BLT_DST_CKEY                                    0x00002000
1361 #define WINED3D_BLT_DST_CKEY_OVERRIDE                           0x00004000
1362 #define WINED3D_BLT_SRC_CKEY                                    0x00008000
1363 #define WINED3D_BLT_SRC_CKEY_OVERRIDE                           0x00010000
1364 #define WINED3D_BLT_WAIT                                        0x01000000
1365 #define WINED3D_BLT_DO_NOT_WAIT                                 0x08000000
1366 #define WINED3D_BLT_RAW                                         0x20000000
1367 #define WINED3D_BLT_SYNCHRONOUS                                 0x40000000
1368 #define WINED3D_BLT_ALPHA_TEST                                  0x80000000
1369 #define WINED3D_BLT_MASK                                        0x0901e800
1370 
1371 /* dwFlags for GetBltStatus */
1372 #define WINEDDGBS_CANBLT                                        0x00000001
1373 #define WINEDDGBS_ISBLTDONE                                     0x00000002
1374 
1375 /* dwFlags for GetFlipStatus */
1376 #define WINEDDGFS_CANFLIP                                       0x00000001
1377 #define WINEDDGFS_ISFLIPDONE                                    0x00000002
1378 
1379 /* dwFlags for Flip */
1380 #define WINEDDFLIP_WAIT                                         0x00000001
1381 #define WINEDDFLIP_EVEN                                         0x00000002 /* only valid for overlay */
1382 #define WINEDDFLIP_ODD                                          0x00000004 /* only valid for overlay */
1383 #define WINEDDFLIP_NOVSYNC                                      0x00000008
1384 #define WINEDDFLIP_STEREO                                       0x00000010
1385 #define WINEDDFLIP_DONOTWAIT                                    0x00000020
1386 #define WINEDDFLIP_INTERVAL2                                    0x02000000
1387 #define WINEDDFLIP_INTERVAL3                                    0x03000000
1388 #define WINEDDFLIP_INTERVAL4                                    0x04000000
1389 
1390 #define WINEDDOVER_ALPHADEST                                    0x00000001
1391 #define WINEDDOVER_ALPHADESTCONSTOVERRIDE                       0x00000002
1392 #define WINEDDOVER_ALPHADESTNEG                                 0x00000004
1393 #define WINEDDOVER_ALPHADESTSURFACEOVERRIDE                     0x00000008
1394 #define WINEDDOVER_ALPHAEDGEBLEND                               0x00000010
1395 #define WINEDDOVER_ALPHASRC                                     0x00000020
1396 #define WINEDDOVER_ALPHASRCCONSTOVERRIDE                        0x00000040
1397 #define WINEDDOVER_ALPHASRCNEG                                  0x00000080
1398 #define WINEDDOVER_ALPHASRCSURFACEOVERRIDE                      0x00000100
1399 #define WINEDDOVER_HIDE                                         0x00000200
1400 #define WINEDDOVER_KEYDEST                                      0x00000400
1401 #define WINEDDOVER_KEYDESTOVERRIDE                              0x00000800
1402 #define WINEDDOVER_KEYSRC                                       0x00001000
1403 #define WINEDDOVER_KEYSRCOVERRIDE                               0x00002000
1404 #define WINEDDOVER_SHOW                                         0x00004000
1405 #define WINEDDOVER_ADDDIRTYRECT                                 0x00008000
1406 #define WINEDDOVER_REFRESHDIRTYRECTS                            0x00010000
1407 #define WINEDDOVER_REFRESHALL                                   0x00020000
1408 #define WINEDDOVER_DDFX                                         0x00080000
1409 #define WINEDDOVER_AUTOFLIP                                     0x00100000
1410 #define WINEDDOVER_BOB                                          0x00200000
1411 #define WINEDDOVER_OVERRIDEBOBWEAVE                             0x00400000
1412 #define WINEDDOVER_INTERLEAVED                                  0x00800000
1413 
1414 /* DirectDraw Caps */
1415 #define WINEDDSCAPS_RESERVED1                                   0x00000001
1416 #define WINEDDSCAPS_ALPHA                                       0x00000002
1417 #define WINEDDSCAPS_BACKBUFFER                                  0x00000004
1418 #define WINEDDSCAPS_COMPLEX                                     0x00000008
1419 #define WINEDDSCAPS_FLIP                                        0x00000010
1420 #define WINEDDSCAPS_FRONTBUFFER                                 0x00000020
1421 #define WINEDDSCAPS_OFFSCREENPLAIN                              0x00000040
1422 #define WINEDDSCAPS_OVERLAY                                     0x00000080
1423 #define WINEDDSCAPS_PALETTE                                     0x00000100
1424 #define WINEDDSCAPS_PRIMARYSURFACE                              0x00000200
1425 #define WINEDDSCAPS_PRIMARYSURFACELEFT                          0x00000400
1426 #define WINEDDSCAPS_SYSTEMMEMORY                                0x00000800
1427 #define WINEDDSCAPS_TEXTURE                                     0x00001000
1428 #define WINEDDSCAPS_3DDEVICE                                    0x00002000
1429 #define WINEDDSCAPS_VIDEOMEMORY                                 0x00004000
1430 #define WINEDDSCAPS_VISIBLE                                     0x00008000
1431 #define WINEDDSCAPS_WRITEONLY                                   0x00010000
1432 #define WINEDDSCAPS_ZBUFFER                                     0x00020000
1433 #define WINEDDSCAPS_OWNDC                                       0x00040000
1434 #define WINEDDSCAPS_LIVEVIDEO                                   0x00080000
1435 #define WINEDDSCAPS_HWCODEC                                     0x00100000
1436 #define WINEDDSCAPS_MODEX                                       0x00200000
1437 #define WINEDDSCAPS_MIPMAP                                      0x00400000
1438 #define WINEDDSCAPS_RESERVED2                                   0x00800000
1439 #define WINEDDSCAPS_ALLOCONLOAD                                 0x04000000
1440 #define WINEDDSCAPS_VIDEOPORT                                   0x08000000
1441 #define WINEDDSCAPS_LOCALVIDMEM                                 0x10000000
1442 #define WINEDDSCAPS_NONLOCALVIDMEM                              0x20000000
1443 #define WINEDDSCAPS_STANDARDVGAMODE                             0x40000000
1444 #define WINEDDSCAPS_OPTIMIZED                                   0x80000000
1445 
1446 #define WINEDDCKEYCAPS_DESTBLT                                  0x00000001
1447 #define WINEDDCKEYCAPS_DESTBLTCLRSPACE                          0x00000002
1448 #define WINEDDCKEYCAPS_DESTBLTCLRSPACEYUV                       0x00000004
1449 #define WINEDDCKEYCAPS_DESTBLTYUV                               0x00000008
1450 #define WINEDDCKEYCAPS_DESTOVERLAY                              0x00000010
1451 #define WINEDDCKEYCAPS_DESTOVERLAYCLRSPACE                      0x00000020
1452 #define WINEDDCKEYCAPS_DESTOVERLAYCLRSPACEYUV                   0x00000040
1453 #define WINEDDCKEYCAPS_DESTOVERLAYONEACTIVE                     0x00000080
1454 #define WINEDDCKEYCAPS_DESTOVERLAYYUV                           0x00000100
1455 #define WINEDDCKEYCAPS_SRCBLT                                   0x00000200
1456 #define WINEDDCKEYCAPS_SRCBLTCLRSPACE                           0x00000400
1457 #define WINEDDCKEYCAPS_SRCBLTCLRSPACEYUV                        0x00000800
1458 #define WINEDDCKEYCAPS_SRCBLTYUV                                0x00001000
1459 #define WINEDDCKEYCAPS_SRCOVERLAY                               0x00002000
1460 #define WINEDDCKEYCAPS_SRCOVERLAYCLRSPACE                       0x00004000
1461 #define WINEDDCKEYCAPS_SRCOVERLAYCLRSPACEYUV                    0x00008000
1462 #define WINEDDCKEYCAPS_SRCOVERLAYONEACTIVE                      0x00010000
1463 #define WINEDDCKEYCAPS_SRCOVERLAYYUV                            0x00020000
1464 #define WINEDDCKEYCAPS_NOCOSTOVERLAY                            0x00040000
1465 
1466 #define WINEDDFXCAPS_BLTALPHA                                   0x00000001
1467 #define WINEDDFXCAPS_OVERLAYALPHA                               0x00000004
1468 #define WINEDDFXCAPS_BLTARITHSTRETCHYN                          0x00000010
1469 #define WINEDDFXCAPS_BLTARITHSTRETCHY                           0x00000020
1470 #define WINEDDFXCAPS_BLTMIRRORLEFTRIGHT                         0x00000040
1471 #define WINEDDFXCAPS_BLTMIRRORUPDOWN                            0x00000080
1472 #define WINEDDFXCAPS_BLTROTATION                                0x00000100
1473 #define WINEDDFXCAPS_BLTROTATION90                              0x00000200
1474 #define WINEDDFXCAPS_BLTSHRINKX                                 0x00000400
1475 #define WINEDDFXCAPS_BLTSHRINKXN                                0x00000800
1476 #define WINEDDFXCAPS_BLTSHRINKY                                 0x00001000
1477 #define WINEDDFXCAPS_BLTSHRINKYN                                0x00002000
1478 #define WINEDDFXCAPS_BLTSTRETCHX                                0x00004000
1479 #define WINEDDFXCAPS_BLTSTRETCHXN                               0x00008000
1480 #define WINEDDFXCAPS_BLTSTRETCHY                                0x00010000
1481 #define WINEDDFXCAPS_BLTSTRETCHYN                               0x00020000
1482 #define WINEDDFXCAPS_OVERLAYARITHSTRETCHY                       0x00040000
1483 #define WINEDDFXCAPS_OVERLAYARITHSTRETCHYN                      0x00000008
1484 #define WINEDDFXCAPS_OVERLAYSHRINKX                             0x00080000
1485 #define WINEDDFXCAPS_OVERLAYSHRINKXN                            0x00100000
1486 #define WINEDDFXCAPS_OVERLAYSHRINKY                             0x00200000
1487 #define WINEDDFXCAPS_OVERLAYSHRINKYN                            0x00400000
1488 #define WINEDDFXCAPS_OVERLAYSTRETCHX                            0x00800000
1489 #define WINEDDFXCAPS_OVERLAYSTRETCHXN                           0x01000000
1490 #define WINEDDFXCAPS_OVERLAYSTRETCHY                            0x02000000
1491 #define WINEDDFXCAPS_OVERLAYSTRETCHYN                           0x04000000
1492 #define WINEDDFXCAPS_OVERLAYMIRRORLEFTRIGHT                     0x08000000
1493 #define WINEDDFXCAPS_OVERLAYMIRRORUPDOWN                        0x10000000
1494 
1495 #define WINEDDCAPS_3D                                           0x00000001
1496 #define WINEDDCAPS_ALIGNBOUNDARYDEST                            0x00000002
1497 #define WINEDDCAPS_ALIGNSIZEDEST                                0x00000004
1498 #define WINEDDCAPS_ALIGNBOUNDARYSRC                             0x00000008
1499 #define WINEDDCAPS_ALIGNSIZESRC                                 0x00000010
1500 #define WINEDDCAPS_ALIGNSTRIDE                                  0x00000020
1501 #define WINEDDCAPS_BLT                                          0x00000040
1502 #define WINEDDCAPS_BLTQUEUE                                     0x00000080
1503 #define WINEDDCAPS_BLTFOURCC                                    0x00000100
1504 #define WINEDDCAPS_BLTSTRETCH                                   0x00000200
1505 #define WINEDDCAPS_GDI                                          0x00000400
1506 #define WINEDDCAPS_OVERLAY                                      0x00000800
1507 #define WINEDDCAPS_OVERLAYCANTCLIP                              0x00001000
1508 #define WINEDDCAPS_OVERLAYFOURCC                                0x00002000
1509 #define WINEDDCAPS_OVERLAYSTRETCH                               0x00004000
1510 #define WINEDDCAPS_PALETTE                                      0x00008000
1511 #define WINEDDCAPS_PALETTEVSYNC                                 0x00010000
1512 #define WINEDDCAPS_READSCANLINE                                 0x00020000
1513 #define WINEDDCAPS_STEREOVIEW                                   0x00040000
1514 #define WINEDDCAPS_VBI                                          0x00080000
1515 #define WINEDDCAPS_ZBLTS                                        0x00100000
1516 #define WINEDDCAPS_ZOVERLAYS                                    0x00200000
1517 #define WINEDDCAPS_COLORKEY                                     0x00400000
1518 #define WINEDDCAPS_ALPHA                                        0x00800000
1519 #define WINEDDCAPS_COLORKEYHWASSIST                             0x01000000
1520 #define WINEDDCAPS_NOHARDWARE                                   0x02000000
1521 #define WINEDDCAPS_BLTCOLORFILL                                 0x04000000
1522 #define WINEDDCAPS_BANKSWITCHED                                 0x08000000
1523 #define WINEDDCAPS_BLTDEPTHFILL                                 0x10000000
1524 #define WINEDDCAPS_CANCLIP                                      0x20000000
1525 #define WINEDDCAPS_CANCLIPSTRETCHED                             0x40000000
1526 #define WINEDDCAPS_CANBLTSYSMEM                                 0x80000000
1527 
1528 #define WINEDDCAPS2_CERTIFIED                                   0x00000001
1529 #define WINEDDCAPS2_NO2DDURING3DSCENE                           0x00000002
1530 #define WINEDDCAPS2_VIDEOPORT                                   0x00000004
1531 #define WINEDDCAPS2_AUTOFLIPOVERLAY                             0x00000008
1532 #define WINEDDCAPS2_CANBOBINTERLEAVED                           0x00000010
1533 #define WINEDDCAPS2_CANBOBNONINTERLEAVED                        0x00000020
1534 #define WINEDDCAPS2_COLORCONTROLOVERLAY                         0x00000040
1535 #define WINEDDCAPS2_COLORCONTROLPRIMARY                         0x00000080
1536 #define WINEDDCAPS2_CANDROPZ16BIT                               0x00000100
1537 #define WINEDDCAPS2_NONLOCALVIDMEM                              0x00000200
1538 #define WINEDDCAPS2_NONLOCALVIDMEMCAPS                          0x00000400
1539 #define WINEDDCAPS2_NOPAGELOCKREQUIRED                          0x00000800
1540 #define WINEDDCAPS2_WIDESURFACES                                0x00001000
1541 #define WINEDDCAPS2_CANFLIPODDEVEN                              0x00002000
1542 #define WINEDDCAPS2_CANBOBHARDWARE                              0x00004000
1543 #define WINEDDCAPS2_COPYFOURCC                                  0x00008000
1544 #define WINEDDCAPS2_PRIMARYGAMMA                                0x00020000
1545 #define WINEDDCAPS2_CANRENDERWINDOWED                           0x00080000
1546 #define WINEDDCAPS2_CANCALIBRATEGAMMA                           0x00100000
1547 #define WINEDDCAPS2_FLIPINTERVAL                                0x00200000
1548 #define WINEDDCAPS2_FLIPNOVSYNC                                 0x00400000
1549 #define WINEDDCAPS2_CANMANAGETEXTURE                            0x00800000
1550 #define WINEDDCAPS2_TEXMANINNONLOCALVIDMEM                      0x01000000
1551 #define WINEDDCAPS2_STEREO                                      0x02000000
1552 #define WINEDDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL                 0x04000000
1553 
1554 #define WINED3D_PALETTE_8BIT_ENTRIES                            0x00000001
1555 #define WINED3D_PALETTE_ALLOW_256                               0x00000002
1556 #define WINED3D_PALETTE_ALPHA                                   0x00000004
1557 
1558 #define WINED3D_TEXTURE_CREATE_MAPPABLE                         0x00000001
1559 #define WINED3D_TEXTURE_CREATE_DISCARD                          0x00000002
1560 #define WINED3D_TEXTURE_CREATE_GET_DC_LENIENT                   0x00000004
1561 #define WINED3D_TEXTURE_CREATE_GET_DC                           0x00000008
1562 #define WINED3D_TEXTURE_CREATE_GENERATE_MIPMAPS                 0x00000010
1563 
1564 #define WINED3D_APPEND_ALIGNED_ELEMENT                          0xffffffff
1565 
1566 #define WINED3D_OUTPUT_SLOT_SEMANTIC                            0xffffffff
1567 #define WINED3D_OUTPUT_SLOT_UNUSED                              0xfffffffe
1568 
1569 #define WINED3D_MAX_STREAM_OUTPUT_BUFFERS                       4
1570 #define WINED3D_STREAM_OUTPUT_GAP                               0xffffffff
1571 #define WINED3D_NO_RASTERIZER_STREAM                            0xffffffff
1572 
1573 #define WINED3D_VIEW_BUFFER_RAW                                 0x00000001
1574 #define WINED3D_VIEW_BUFFER_APPEND                              0x00000002
1575 #define WINED3D_VIEW_BUFFER_COUNTER                             0x00000004
1576 #define WINED3D_VIEW_TEXTURE_CUBE                               0x00000008
1577 #define WINED3D_VIEW_TEXTURE_ARRAY                              0x00000010
1578 
1579 struct wined3d_display_mode
1580 {
1581     UINT width;
1582     UINT height;
1583     UINT refresh_rate;
1584     enum wined3d_format_id format_id;
1585     enum wined3d_scanline_ordering scanline_ordering;
1586 };
1587 
1588 struct wined3d_color
1589 {
1590     float r;
1591     float g;
1592     float b;
1593     float a;
1594 };
1595 
1596 struct wined3d_vec3
1597 {
1598     float x;
1599     float y;
1600     float z;
1601 };
1602 
1603 struct wined3d_vec4
1604 {
1605     float x;
1606     float y;
1607     float z;
1608     float w;
1609 };
1610 
1611 struct wined3d_dvec4
1612 {
1613     double x;
1614     double y;
1615     double z;
1616     double w;
1617 };
1618 
1619 struct wined3d_ivec4
1620 {
1621     int x;
1622     int y;
1623     int z;
1624     int w;
1625 };
1626 
1627 struct wined3d_uvec4
1628 {
1629     unsigned int x;
1630     unsigned int y;
1631     unsigned int z;
1632     unsigned int w;
1633 };
1634 
1635 struct wined3d_matrix
1636 {
1637     float _11, _12, _13, _14;
1638     float _21, _22, _23, _24;
1639     float _31, _32, _33, _34;
1640     float _41, _42, _43, _44;
1641 };
1642 
1643 struct wined3d_light
1644 {
1645     enum wined3d_light_type type;
1646     struct wined3d_color diffuse;
1647     struct wined3d_color specular;
1648     struct wined3d_color ambient;
1649     struct wined3d_vec3 position;
1650     struct wined3d_vec3 direction;
1651     float range;
1652     float falloff;
1653     float attenuation0;
1654     float attenuation1;
1655     float attenuation2;
1656     float theta;
1657     float phi;
1658 };
1659 
1660 struct wined3d_material
1661 {
1662     struct wined3d_color diffuse;
1663     struct wined3d_color ambient;
1664     struct wined3d_color specular;
1665     struct wined3d_color emissive;
1666     float power;
1667 };
1668 
1669 struct wined3d_viewport
1670 {
1671     float x;
1672     float y;
1673     float width;
1674     float height;
1675     float min_z;
1676     float max_z;
1677 };
1678 
1679 struct wined3d_gamma_ramp
1680 {
1681     WORD red[256];
1682     WORD green[256];
1683     WORD blue[256];
1684 };
1685 
1686 struct wined3d_line_pattern
1687 {
1688     WORD repeat_factor;
1689     WORD line_pattern;
1690 };
1691 
1692 struct wined3d_rect_patch_info
1693 {
1694     UINT start_vertex_offset_width;
1695     UINT start_vertex_offset_height;
1696     UINT width;
1697     UINT height;
1698     UINT stride;
1699     enum wined3d_basis_type basis;
1700     enum wined3d_degree_type degree;
1701 };
1702 
1703 struct wined3d_tri_patch_info
1704 {
1705     UINT start_vertex_offset;
1706     UINT vertex_count;
1707     enum wined3d_basis_type basis;
1708     enum wined3d_degree_type degree;
1709 };
1710 
1711 struct wined3d_adapter_identifier
1712 {
1713     char *driver;
1714     UINT driver_size;
1715     char *description;
1716     UINT description_size;
1717     char *device_name;
1718     UINT device_name_size;
1719     LARGE_INTEGER driver_version;
1720     DWORD vendor_id;
1721     DWORD device_id;
1722     DWORD subsystem_id;
1723     DWORD revision;
1724     GUID device_identifier;
1725     DWORD whql_level;
1726     LUID adapter_luid;
1727     SIZE_T video_memory;
1728 };
1729 
1730 struct wined3d_swapchain_desc
1731 {
1732     UINT backbuffer_width;
1733     UINT backbuffer_height;
1734     enum wined3d_format_id backbuffer_format;
1735     UINT backbuffer_count;
1736     DWORD backbuffer_usage;
1737     enum wined3d_multisample_type multisample_type;
1738     DWORD multisample_quality;
1739     enum wined3d_swap_effect swap_effect;
1740     HWND device_window;
1741     BOOL windowed;
1742     BOOL enable_auto_depth_stencil;
1743     enum wined3d_format_id auto_depth_stencil_format;
1744     DWORD flags;
1745     UINT refresh_rate;
1746     UINT swap_interval;
1747     BOOL auto_restore_display_mode;
1748 };
1749 
1750 struct wined3d_resource_desc
1751 {
1752     enum wined3d_resource_type resource_type;
1753     enum wined3d_format_id format;
1754     enum wined3d_multisample_type multisample_type;
1755     unsigned int multisample_quality;
1756     unsigned int usage;
1757     unsigned int access;
1758     unsigned int width;
1759     unsigned int height;
1760     unsigned int depth;
1761     unsigned int size;
1762 };
1763 
1764 struct wined3d_sub_resource_desc
1765 {
1766     enum wined3d_format_id format;
1767     enum wined3d_multisample_type multisample_type;
1768     unsigned int multisample_quality;
1769     unsigned int usage;
1770     unsigned int access;
1771     unsigned int width;
1772     unsigned int height;
1773     unsigned int depth;
1774     unsigned int size;
1775 };
1776 
1777 struct wined3d_clip_status
1778 {
1779    DWORD clip_union;
1780    DWORD clip_intersection;
1781 };
1782 
1783 enum wined3d_input_classification
1784 {
1785     WINED3D_INPUT_PER_VERTEX_DATA,
1786     WINED3D_INPUT_PER_INSTANCE_DATA,
1787 };
1788 
1789 struct wined3d_vertex_element
1790 {
1791     enum wined3d_format_id format;
1792     unsigned int input_slot;
1793     unsigned int offset;
1794     unsigned int output_slot; /* D3D 8 & 10 */
1795     enum wined3d_input_classification input_slot_class;
1796     unsigned int instance_data_step_rate;
1797     BYTE method;
1798     BYTE usage;
1799     BYTE usage_idx;
1800 };
1801 
1802 struct wined3d_device_creation_parameters
1803 {
1804     UINT adapter_idx;
1805     enum wined3d_device_type device_type;
1806     HWND focus_window;
1807     DWORD flags;
1808 };
1809 
1810 struct wined3d_raster_status
1811 {
1812     BOOL in_vblank;
1813     UINT scan_line;
1814 };
1815 
1816 struct wined3d_map_desc
1817 {
1818     UINT row_pitch;
1819     UINT slice_pitch;
1820     void *data;
1821 };
1822 
1823 struct wined3d_map_info
1824 {
1825     UINT row_pitch;
1826     UINT slice_pitch;
1827     UINT size;
1828 };
1829 
1830 struct wined3d_sub_resource_data
1831 {
1832     const void *data;
1833     unsigned int row_pitch;
1834     unsigned int slice_pitch;
1835 };
1836 
1837 struct wined3d_box
1838 {
1839     UINT left;
1840     UINT top;
1841     UINT right;
1842     UINT bottom;
1843     UINT front;
1844     UINT back;
1845 };
1846 
1847 struct wined3d_vertex_shader_caps
1848 {
1849     DWORD caps;
1850     INT dynamic_flow_control_depth;
1851     INT temp_count;
1852     INT static_flow_control_depth;
1853 };
1854 
1855 struct wined3d_pixel_shader_caps
1856 {
1857     DWORD caps;
1858     INT dynamic_flow_control_depth;
1859     INT temp_count;
1860     INT static_flow_control_depth;
1861     INT instruction_slot_count;
1862 };
1863 
1864 struct wined3d_ddraw_caps
1865 {
1866     DWORD caps;
1867     DWORD caps2;
1868     DWORD color_key_caps;
1869     DWORD fx_caps;
1870     DWORD fx_alpha_caps;
1871     DWORD sv_caps;
1872     DWORD svb_caps;
1873     DWORD svb_color_key_caps;
1874     DWORD svb_fx_caps;
1875     DWORD vsb_caps;
1876     DWORD vsb_color_key_caps;
1877     DWORD vsb_fx_caps;
1878     DWORD ssb_caps;
1879     DWORD ssb_color_key_caps;
1880     DWORD ssb_fx_caps;
1881     DWORD dds_caps;
1882 };
1883 
1884 typedef struct _WINED3DCAPS
1885 {
1886     enum wined3d_device_type DeviceType;
1887     UINT AdapterOrdinal;
1888 
1889     DWORD Caps;
1890     DWORD Caps2;
1891     DWORD Caps3;
1892     DWORD PresentationIntervals;
1893 
1894     DWORD CursorCaps;
1895     DWORD DevCaps;
1896     DWORD PrimitiveMiscCaps;
1897     DWORD RasterCaps;
1898     DWORD ZCmpCaps;
1899     DWORD SrcBlendCaps;
1900     DWORD DestBlendCaps;
1901     DWORD AlphaCmpCaps;
1902     DWORD ShadeCaps;
1903     DWORD TextureCaps;
1904     DWORD TextureFilterCaps;
1905     DWORD CubeTextureFilterCaps;
1906     DWORD VolumeTextureFilterCaps;
1907     DWORD TextureAddressCaps;
1908     DWORD VolumeTextureAddressCaps;
1909     DWORD LineCaps;
1910 
1911     DWORD MaxTextureWidth;
1912     DWORD MaxTextureHeight;
1913     DWORD MaxVolumeExtent;
1914     DWORD MaxTextureRepeat;
1915     DWORD MaxTextureAspectRatio;
1916     DWORD MaxAnisotropy;
1917     float MaxVertexW;
1918 
1919     float GuardBandLeft;
1920     float GuardBandTop;
1921     float GuardBandRight;
1922     float GuardBandBottom;
1923 
1924     float ExtentsAdjust;
1925     DWORD StencilCaps;
1926 
1927     DWORD FVFCaps;
1928     DWORD TextureOpCaps;
1929     DWORD MaxTextureBlendStages;
1930     DWORD MaxSimultaneousTextures;
1931 
1932     DWORD VertexProcessingCaps;
1933     DWORD MaxActiveLights;
1934     DWORD MaxUserClipPlanes;
1935     DWORD MaxVertexBlendMatrices;
1936     DWORD MaxVertexBlendMatrixIndex;
1937 
1938     float MaxPointSize;
1939 
1940     DWORD MaxPrimitiveCount;
1941     DWORD MaxVertexIndex;
1942     DWORD MaxStreams;
1943     DWORD MaxStreamStride;
1944 
1945     DWORD VertexShaderVersion;
1946     DWORD MaxVertexShaderConst;
1947 
1948     DWORD PixelShaderVersion;
1949     float PixelShader1xMaxValue;
1950 
1951     /* DX 9 */
1952     DWORD DevCaps2;
1953 
1954     float MaxNpatchTessellationLevel;
1955     DWORD Reserved5; /* undocumented */
1956 
1957     UINT MasterAdapterOrdinal;
1958     UINT AdapterOrdinalInGroup;
1959     UINT NumberOfAdaptersInGroup;
1960     DWORD DeclTypes;
1961     DWORD NumSimultaneousRTs;
1962     DWORD StretchRectFilterCaps;
1963     struct wined3d_vertex_shader_caps VS20Caps;
1964     struct wined3d_pixel_shader_caps PS20Caps;
1965     DWORD VertexTextureFilterCaps;
1966     DWORD MaxVShaderInstructionsExecuted;
1967     DWORD MaxPShaderInstructionsExecuted;
1968     DWORD MaxVertexShader30InstructionSlots;
1969     DWORD MaxPixelShader30InstructionSlots;
1970     DWORD Reserved2; /* Not in the microsoft headers but documented */
1971     DWORD Reserved3;
1972 
1973     struct wined3d_ddraw_caps ddraw_caps;
1974 
1975     BOOL shader_double_precision;
1976 } WINED3DCAPS;
1977 
1978 struct wined3d_color_key
1979 {
1980     DWORD color_space_low_value;    /* low boundary of color space that is to
1981                                      * be treated as Color Key, inclusive */
1982     DWORD color_space_high_value;   /* high boundary of color space that is
1983                                      * to be treated as Color Key, inclusive */
1984 };
1985 
1986 struct wined3d_blt_fx
1987 {
1988     DWORD fx;
1989     struct wined3d_color_key dst_color_key;
1990     struct wined3d_color_key src_color_key;
1991 };
1992 
1993 struct wined3d_buffer_desc
1994 {
1995     unsigned int byte_width;
1996     unsigned int usage;
1997     unsigned int bind_flags;
1998     unsigned int access;
1999     unsigned int misc_flags;
2000     unsigned int structure_byte_stride;
2001 };
2002 
2003 struct wined3d_blend_state_desc
2004 {
2005     BOOL alpha_to_coverage;
2006 };
2007 
2008 struct wined3d_rasterizer_state_desc
2009 {
2010     BOOL front_ccw;
2011 };
2012 
2013 struct wined3d_sampler_desc
2014 {
2015     enum wined3d_texture_address address_u;
2016     enum wined3d_texture_address address_v;
2017     enum wined3d_texture_address address_w;
2018     float border_color[4];
2019     enum wined3d_texture_filter_type mag_filter;
2020     enum wined3d_texture_filter_type min_filter;
2021     enum wined3d_texture_filter_type mip_filter;
2022     float lod_bias;
2023     float min_lod;
2024     float max_lod;
2025     unsigned int mip_base_level;
2026     unsigned int max_anisotropy;
2027     BOOL compare;
2028     enum wined3d_cmp_func comparison_func;
2029     BOOL srgb_decode;
2030 };
2031 
2032 struct wined3d_shader_signature_element
2033 {
2034     const char *semantic_name;
2035     unsigned int semantic_idx;
2036     unsigned int stream_idx;
2037     enum wined3d_sysval_semantic sysval_semantic;
2038     enum wined3d_component_type component_type;
2039     unsigned int register_idx;
2040     DWORD mask;
2041 };
2042 
2043 struct wined3d_shader_signature
2044 {
2045     UINT element_count;
2046     struct wined3d_shader_signature_element *elements;
2047 };
2048 
2049 struct wined3d_shader_desc
2050 {
2051     const DWORD *byte_code;
2052     size_t byte_code_size;
2053     enum wined3d_shader_byte_code_format format;
2054     struct wined3d_shader_signature input_signature;
2055     struct wined3d_shader_signature output_signature;
2056     struct wined3d_shader_signature patch_constant_signature;
2057     unsigned int max_version;
2058 };
2059 
2060 struct wined3d_stream_output_element
2061 {
2062     unsigned int stream_idx;
2063     unsigned int register_idx;
2064     BYTE component_idx;
2065     BYTE component_count;
2066     BYTE output_slot;
2067 };
2068 
2069 struct wined3d_stream_output_desc
2070 {
2071     struct wined3d_stream_output_element *elements;
2072     unsigned int element_count;
2073     unsigned int buffer_strides[WINED3D_MAX_STREAM_OUTPUT_BUFFERS];
2074     unsigned int buffer_stride_count;
2075     unsigned int rasterizer_stream_idx;
2076 };
2077 
2078 struct wined3d_view_desc
2079 {
2080     enum wined3d_format_id format_id;
2081     unsigned int flags;
2082     union
2083     {
2084         struct
2085         {
2086             unsigned int start_idx;
2087             unsigned int count;
2088         } buffer;
2089         struct
2090         {
2091             unsigned int level_idx;
2092             unsigned int level_count;
2093             unsigned int layer_idx;
2094             unsigned int layer_count;
2095         } texture;
2096     } u;
2097 };
2098 
2099 struct wined3d_output_desc
2100 {
2101     WCHAR device_name[CCHDEVICENAME];
2102     RECT desktop_rect;
2103     BOOL attached_to_desktop;
2104     enum wined3d_display_rotation rotation;
2105     HMONITOR monitor;
2106 };
2107 
2108 struct wined3d_parent_ops
2109 {
2110     void (__stdcall *wined3d_object_destroyed)(void *parent);
2111 };
2112 
2113 struct wined3d;
2114 struct wined3d_buffer;
2115 struct wined3d_device;
2116 struct wined3d_palette;
2117 struct wined3d_query;
2118 struct wined3d_blend_state;
2119 struct wined3d_rasterizer_state;
2120 struct wined3d_rendertarget_view;
2121 struct wined3d_resource;
2122 struct wined3d_sampler;
2123 struct wined3d_shader;
2124 struct wined3d_shader_resource_view;
2125 struct wined3d_stateblock;
2126 struct wined3d_swapchain;
2127 struct wined3d_texture;
2128 struct wined3d_unordered_access_view;
2129 struct wined3d_vertex_declaration;
2130 
2131 struct wined3d_device_parent
2132 {
2133     const struct wined3d_device_parent_ops *ops;
2134 };
2135 
2136 struct wined3d_device_parent_ops
2137 {
2138     void (__cdecl *wined3d_device_created)(struct wined3d_device_parent *device_parent, struct wined3d_device *device);
2139     void (__cdecl *mode_changed)(struct wined3d_device_parent *device_parent);
2140     void (__cdecl *activate)(struct wined3d_device_parent *device_parent, BOOL activate);
2141     HRESULT (__cdecl *surface_created)(struct wined3d_device_parent *device_parent,
2142             struct wined3d_texture *texture, unsigned int sub_resource_idx,
2143             void **parent, const struct wined3d_parent_ops **parent_ops);
2144     HRESULT (__cdecl *volume_created)(struct wined3d_device_parent *device_parent,
2145             struct wined3d_texture *wined3d_texture, unsigned int sub_resource_idx,
2146             void **parent, const struct wined3d_parent_ops **parent_ops);
2147     HRESULT (__cdecl *create_swapchain_texture)(struct wined3d_device_parent *device_parent, void *parent,
2148             const struct wined3d_resource_desc *desc, DWORD texture_flags, struct wined3d_texture **texture);
2149     HRESULT (__cdecl *create_swapchain)(struct wined3d_device_parent *device_parent,
2150             struct wined3d_swapchain_desc *desc, struct wined3d_swapchain **swapchain);
2151 };
2152 
2153 struct wined3d_private_store
2154 {
2155     struct list content;
2156 };
2157 
2158 struct wined3d_private_data
2159 {
2160     struct list entry;
2161 
2162     GUID tag;
2163     DWORD flags; /* DDSPD_* */
2164     DWORD size;
2165     union
2166     {
2167         BYTE data[1];
2168         IUnknown *object;
2169     } content;
2170 };
2171 
2172 typedef HRESULT (CDECL *wined3d_device_reset_cb)(struct wined3d_resource *resource);
2173 
2174 void __stdcall wined3d_mutex_lock(void);
2175 void __stdcall wined3d_mutex_unlock(void);
2176 
2177 UINT __cdecl wined3d_calculate_format_pitch(const struct wined3d *wined3d, UINT adapter_idx,
2178         enum wined3d_format_id format_id, UINT width);
2179 HRESULT __cdecl wined3d_check_depth_stencil_match(const struct wined3d *wined3d, UINT adapter_idx,
2180         enum wined3d_device_type device_type, enum wined3d_format_id adapter_format_id,
2181         enum wined3d_format_id render_target_format_id, enum wined3d_format_id depth_stencil_format_id);
2182 HRESULT __cdecl wined3d_check_device_format(const struct wined3d *wined3d, UINT adaper_idx,
2183         enum wined3d_device_type device_type, enum wined3d_format_id adapter_format_id, DWORD usage,
2184         enum wined3d_resource_type resource_type, enum wined3d_format_id check_format_id);
2185 HRESULT __cdecl wined3d_check_device_format_conversion(const struct wined3d *wined3d, UINT adapter_idx,
2186         enum wined3d_device_type device_type, enum wined3d_format_id source_format_id,
2187         enum wined3d_format_id target_format_id);
2188 HRESULT __cdecl wined3d_check_device_multisample_type(const struct wined3d *wined3d, UINT adapter_idx,
2189         enum wined3d_device_type device_type, enum wined3d_format_id surface_format_id, BOOL windowed,
2190         enum wined3d_multisample_type multisample_type, DWORD *quality_levels);
2191 HRESULT __cdecl wined3d_check_device_type(const struct wined3d *wined3d, UINT adapter_idx,
2192         enum wined3d_device_type device_type, enum wined3d_format_id display_format_id,
2193         enum wined3d_format_id backbuffer_format_id, BOOL windowed);
2194 struct wined3d * __cdecl wined3d_create(DWORD flags);
2195 ULONG __cdecl wined3d_decref(struct wined3d *wined3d);
2196 HRESULT __cdecl wined3d_enum_adapter_modes(const struct wined3d *wined3d, UINT adapter_idx,
2197         enum wined3d_format_id format_id, enum wined3d_scanline_ordering scanline_ordering,
2198         UINT mode_idx, struct wined3d_display_mode *mode);
2199 HRESULT __cdecl wined3d_find_closest_matching_adapter_mode(const struct wined3d *wined3d,
2200         unsigned int adapter_idx, struct wined3d_display_mode *mode);
2201 UINT __cdecl wined3d_get_adapter_count(const struct wined3d *wined3d);
2202 HRESULT __cdecl wined3d_get_adapter_display_mode(const struct wined3d *wined3d, UINT adapter_idx,
2203         struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation);
2204 HRESULT __cdecl wined3d_get_adapter_identifier(const struct wined3d *wined3d, UINT adapter_idx,
2205         DWORD flags, struct wined3d_adapter_identifier *identifier);
2206 UINT __cdecl wined3d_get_adapter_mode_count(const struct wined3d *wined3d, UINT adapter_idx,
2207         enum wined3d_format_id format_id, enum wined3d_scanline_ordering scanline_ordering);
2208 HRESULT __cdecl wined3d_get_adapter_raster_status(const struct wined3d *wined3d, UINT adapter_idx,
2209         struct wined3d_raster_status *raster_status);
2210 HRESULT __cdecl wined3d_get_device_caps(const struct wined3d *wined3d, UINT adapter_idx,
2211         enum wined3d_device_type device_type, WINED3DCAPS *caps);
2212 HRESULT __cdecl wined3d_get_output_desc(const struct wined3d *wined3d, unsigned int adapter_idx,
2213         struct wined3d_output_desc *desc);
2214 ULONG __cdecl wined3d_incref(struct wined3d *wined3d);
2215 HRESULT __cdecl wined3d_register_software_device(struct wined3d *wined3d, void *init_function);
2216 HRESULT __cdecl wined3d_set_adapter_display_mode(struct wined3d *wined3d,
2217         UINT adapter_idx, const struct wined3d_display_mode *mode);
2218 
2219 HRESULT __cdecl wined3d_buffer_create(struct wined3d_device *device, const struct wined3d_buffer_desc *desc,
2220         const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops,
2221         struct wined3d_buffer **buffer);
2222 ULONG __cdecl wined3d_buffer_decref(struct wined3d_buffer *buffer);
2223 void * __cdecl wined3d_buffer_get_parent(const struct wined3d_buffer *buffer);
2224 struct wined3d_resource * __cdecl wined3d_buffer_get_resource(struct wined3d_buffer *buffer);
2225 ULONG __cdecl wined3d_buffer_incref(struct wined3d_buffer *buffer);
2226 
2227 HRESULT __cdecl wined3d_device_acquire_focus_window(struct wined3d_device *device, HWND window);
2228 HRESULT __cdecl wined3d_device_begin_scene(struct wined3d_device *device);
2229 HRESULT __cdecl wined3d_device_begin_stateblock(struct wined3d_device *device);
2230 HRESULT __cdecl wined3d_device_clear(struct wined3d_device *device, DWORD rect_count, const RECT *rects, DWORD flags,
2231         const struct wined3d_color *color, float z, DWORD stencil);
2232 HRESULT __cdecl wined3d_device_clear_rendertarget_view(struct wined3d_device *device,
2233         struct wined3d_rendertarget_view *view, const RECT *rect, DWORD flags,
2234         const struct wined3d_color *color, float depth, DWORD stencil);
2235 void __cdecl wined3d_device_clear_unordered_access_view_uint(struct wined3d_device *device,
2236         struct wined3d_unordered_access_view *view, const struct wined3d_uvec4 *clear_value);
2237 void __cdecl wined3d_device_copy_resource(struct wined3d_device *device,
2238         struct wined3d_resource *dst_resource, struct wined3d_resource *src_resource);
2239 HRESULT __cdecl wined3d_device_copy_sub_resource_region(struct wined3d_device *device,
2240         struct wined3d_resource *dst_resource, unsigned int dst_sub_resource_idx, unsigned int dst_x,
2241         unsigned int dst_y, unsigned int dst_z, struct wined3d_resource *src_resource,
2242         unsigned int src_sub_resource_idx, const struct wined3d_box *src_box);
2243 void __cdecl wined3d_device_copy_uav_counter(struct wined3d_device *device,
2244         struct wined3d_buffer *dst_buffer, unsigned int offset, struct wined3d_unordered_access_view *uav);
2245 HRESULT __cdecl wined3d_device_create(struct wined3d *wined3d, UINT adapter_idx,
2246         enum wined3d_device_type device_type, HWND focus_window, DWORD behaviour_flags, BYTE surface_alignment,
2247         struct wined3d_device_parent *device_parent, struct wined3d_device **device);
2248 ULONG __cdecl wined3d_device_decref(struct wined3d_device *device);
2249 void __cdecl wined3d_device_dispatch_compute(struct wined3d_device *device,
2250         unsigned int group_count_x, unsigned int group_count_y, unsigned int group_count_z);
2251 void __cdecl wined3d_device_dispatch_compute_indirect(struct wined3d_device *device,
2252         struct wined3d_buffer *buffer, unsigned int offset);
2253 HRESULT __cdecl wined3d_device_draw_indexed_primitive(struct wined3d_device *device, UINT start_idx, UINT index_count);
2254 void __cdecl wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device *device,
2255         UINT start_idx, UINT index_count, UINT start_instance, UINT instance_count);
2256 void __cdecl wined3d_device_draw_indexed_primitive_instanced_indirect(struct wined3d_device *device,
2257         struct wined3d_buffer *buffer, unsigned int offset);
2258 HRESULT __cdecl wined3d_device_draw_primitive(struct wined3d_device *device, UINT start_vertex, UINT vertex_count);
2259 void __cdecl wined3d_device_draw_primitive_instanced(struct wined3d_device *device,
2260         UINT start_vertex, UINT vertex_count, UINT start_instance, UINT instance_count);
2261 void __cdecl wined3d_device_draw_primitive_instanced_indirect(struct wined3d_device *device,
2262         struct wined3d_buffer *buffer, unsigned int offset);
2263 HRESULT __cdecl wined3d_device_end_scene(struct wined3d_device *device);
2264 HRESULT __cdecl wined3d_device_end_stateblock(struct wined3d_device *device, struct wined3d_stateblock **stateblock);
2265 void __cdecl wined3d_device_evict_managed_resources(struct wined3d_device *device);
2266 UINT __cdecl wined3d_device_get_available_texture_mem(const struct wined3d_device *device);
2267 INT __cdecl wined3d_device_get_base_vertex_index(const struct wined3d_device *device);
2268 struct wined3d_blend_state * __cdecl wined3d_device_get_blend_state(const struct wined3d_device *device);
2269 HRESULT __cdecl wined3d_device_get_clip_plane(const struct wined3d_device *device,
2270         UINT plane_idx, struct wined3d_vec4 *plane);
2271 HRESULT __cdecl wined3d_device_get_clip_status(const struct wined3d_device *device,
2272         struct wined3d_clip_status *clip_status);
2273 struct wined3d_shader * __cdecl wined3d_device_get_compute_shader(const struct wined3d_device *device);
2274 void __cdecl wined3d_device_get_creation_parameters(const struct wined3d_device *device,
2275         struct wined3d_device_creation_parameters *creation_parameters);
2276 struct wined3d_buffer * __cdecl wined3d_device_get_cs_cb(const struct wined3d_device *device, unsigned int idx);
2277 struct wined3d_shader_resource_view * __cdecl wined3d_device_get_cs_resource_view(const struct wined3d_device *device,
2278         unsigned int idx);
2279 struct wined3d_sampler * __cdecl wined3d_device_get_cs_sampler(const struct wined3d_device *device, unsigned int idx);
2280 struct wined3d_unordered_access_view * __cdecl wined3d_device_get_cs_uav(const struct wined3d_device *device,
2281         unsigned int idx);
2282 struct wined3d_rendertarget_view * __cdecl wined3d_device_get_depth_stencil_view(const struct wined3d_device *device);
2283 HRESULT __cdecl wined3d_device_get_device_caps(const struct wined3d_device *device, WINED3DCAPS *caps);
2284 HRESULT __cdecl wined3d_device_get_display_mode(const struct wined3d_device *device, UINT swapchain_idx,
2285         struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation);
2286 struct wined3d_shader * __cdecl wined3d_device_get_domain_shader(const struct wined3d_device *device);
2287 struct wined3d_buffer * __cdecl wined3d_device_get_ds_cb(const struct wined3d_device *device, unsigned int idx);
2288 struct wined3d_shader_resource_view * __cdecl wined3d_device_get_ds_resource_view(const struct wined3d_device *device,
2289         unsigned int idx);
2290 struct wined3d_sampler * __cdecl wined3d_device_get_ds_sampler(const struct wined3d_device *device, unsigned int idx);
2291 void __cdecl wined3d_device_get_gamma_ramp(const struct wined3d_device *device,
2292         UINT swapchain_idx, struct wined3d_gamma_ramp *ramp);
2293 struct wined3d_shader * __cdecl wined3d_device_get_geometry_shader(const struct wined3d_device *device);
2294 struct wined3d_buffer * __cdecl wined3d_device_get_gs_cb(const struct wined3d_device *device, UINT idx);
2295 struct wined3d_shader_resource_view * __cdecl wined3d_device_get_gs_resource_view(const struct wined3d_device *device,
2296         UINT idx);
2297 struct wined3d_sampler * __cdecl wined3d_device_get_gs_sampler(const struct wined3d_device *device, UINT idx);
2298 struct wined3d_buffer * __cdecl wined3d_device_get_hs_cb(const struct wined3d_device *device, unsigned int idx);
2299 struct wined3d_shader_resource_view * __cdecl wined3d_device_get_hs_resource_view(const struct wined3d_device *device,
2300         unsigned int idx);
2301 struct wined3d_sampler * __cdecl wined3d_device_get_hs_sampler(const struct wined3d_device *device, unsigned int idx);
2302 struct wined3d_shader * __cdecl wined3d_device_get_hull_shader(const struct wined3d_device *device);
2303 struct wined3d_buffer * __cdecl wined3d_device_get_index_buffer(const struct wined3d_device *device,
2304         enum wined3d_format_id *format, unsigned int *offset);
2305 HRESULT __cdecl wined3d_device_get_light(const struct wined3d_device *device,
2306         UINT light_idx, struct wined3d_light *light);
2307 HRESULT __cdecl wined3d_device_get_light_enable(const struct wined3d_device *device, UINT light_idx, BOOL *enable);
2308 void __cdecl wined3d_device_get_material(const struct wined3d_device *device, struct wined3d_material *material);
2309 float __cdecl wined3d_device_get_npatch_mode(const struct wined3d_device *device);
2310 struct wined3d_shader * __cdecl wined3d_device_get_pixel_shader(const struct wined3d_device *device);
2311 struct wined3d_query * __cdecl wined3d_device_get_predication(struct wined3d_device *device, BOOL *value);
2312 void __cdecl wined3d_device_get_primitive_type(const struct wined3d_device *device,
2313         enum wined3d_primitive_type *primitive_topology, unsigned int *patch_vertex_count);
2314 struct wined3d_buffer * __cdecl wined3d_device_get_ps_cb(const struct wined3d_device *device, UINT idx);
2315 HRESULT __cdecl wined3d_device_get_ps_consts_b(const struct wined3d_device *device,
2316         unsigned int start_idx, unsigned int count, BOOL *constants);
2317 HRESULT __cdecl wined3d_device_get_ps_consts_f(const struct wined3d_device *device,
2318         unsigned int start_idx, unsigned int count, struct wined3d_vec4 *constants);
2319 HRESULT __cdecl wined3d_device_get_ps_consts_i(const struct wined3d_device *device,
2320         unsigned int start_idx, unsigned int count, struct wined3d_ivec4 *constants);
2321 struct wined3d_shader_resource_view * __cdecl wined3d_device_get_ps_resource_view(const struct wined3d_device *device,
2322         UINT idx);
2323 struct wined3d_sampler * __cdecl wined3d_device_get_ps_sampler(const struct wined3d_device *device, UINT idx);
2324 HRESULT __cdecl wined3d_device_get_raster_status(const struct wined3d_device *device,
2325         UINT swapchain_idx, struct wined3d_raster_status *raster_status);
2326 struct wined3d_rasterizer_state * __cdecl wined3d_device_get_rasterizer_state(struct wined3d_device *device);
2327 DWORD __cdecl wined3d_device_get_render_state(const struct wined3d_device *device, enum wined3d_render_state state);
2328 struct wined3d_rendertarget_view * __cdecl wined3d_device_get_rendertarget_view(const struct wined3d_device *device,
2329         unsigned int view_idx);
2330 DWORD __cdecl wined3d_device_get_sampler_state(const struct wined3d_device *device,
2331         UINT sampler_idx, enum wined3d_sampler_state state);
2332 void __cdecl wined3d_device_get_scissor_rect(const struct wined3d_device *device, RECT *rect);
2333 BOOL __cdecl wined3d_device_get_software_vertex_processing(const struct wined3d_device *device);
2334 struct wined3d_buffer * __cdecl wined3d_device_get_stream_output(struct wined3d_device *device,
2335         UINT idx, UINT *offset);
2336 HRESULT __cdecl wined3d_device_get_stream_source(const struct wined3d_device *device,
2337         UINT stream_idx, struct wined3d_buffer **buffer, UINT *offset, UINT *stride);
2338 HRESULT __cdecl wined3d_device_get_stream_source_freq(const struct wined3d_device *device,
2339         UINT stream_idx, UINT *divider);
2340 struct wined3d_swapchain * __cdecl wined3d_device_get_swapchain(const struct wined3d_device *device,
2341         UINT swapchain_idx);
2342 UINT __cdecl wined3d_device_get_swapchain_count(const struct wined3d_device *device);
2343 struct wined3d_texture * __cdecl wined3d_device_get_texture(const struct wined3d_device *device, UINT stage);
2344 DWORD __cdecl wined3d_device_get_texture_stage_state(const struct wined3d_device *device,
2345         UINT stage, enum wined3d_texture_stage_state state);
2346 void __cdecl wined3d_device_get_transform(const struct wined3d_device *device,
2347         enum wined3d_transform_state state, struct wined3d_matrix *matrix);
2348 struct wined3d_unordered_access_view * __cdecl wined3d_device_get_unordered_access_view(
2349         const struct wined3d_device *device, unsigned int idx);
2350 struct wined3d_vertex_declaration * __cdecl wined3d_device_get_vertex_declaration(const struct wined3d_device *device);
2351 struct wined3d_shader * __cdecl wined3d_device_get_vertex_shader(const struct wined3d_device *device);
2352 void __cdecl wined3d_device_get_viewport(const struct wined3d_device *device, struct wined3d_viewport *viewport);
2353 struct wined3d_buffer * __cdecl wined3d_device_get_vs_cb(const struct wined3d_device *device, UINT idx);
2354 HRESULT __cdecl wined3d_device_get_vs_consts_b(const struct wined3d_device *device,
2355         unsigned int start_idx, unsigned int count, BOOL *constants);
2356 HRESULT __cdecl wined3d_device_get_vs_consts_f(const struct wined3d_device *device,
2357         unsigned int start_idx, unsigned int count, struct wined3d_vec4 *constants);
2358 HRESULT __cdecl wined3d_device_get_vs_consts_i(const struct wined3d_device *device,
2359         unsigned int start_idx, unsigned int count, struct wined3d_ivec4 *constants);
2360 struct wined3d_shader_resource_view * __cdecl wined3d_device_get_vs_resource_view(const struct wined3d_device *device,
2361         UINT idx);
2362 struct wined3d_sampler * __cdecl wined3d_device_get_vs_sampler(const struct wined3d_device *device, UINT idx);
2363 struct wined3d * __cdecl wined3d_device_get_wined3d(const struct wined3d_device *device);
2364 ULONG __cdecl wined3d_device_incref(struct wined3d_device *device);
2365 HRESULT __cdecl wined3d_device_init_3d(struct wined3d_device *device, struct wined3d_swapchain_desc *swapchain_desc);
2366 HRESULT __cdecl wined3d_device_init_gdi(struct wined3d_device *device, struct wined3d_swapchain_desc *swapchain_desc);
2367 void __cdecl wined3d_device_multiply_transform(struct wined3d_device *device,
2368         enum wined3d_transform_state state, const struct wined3d_matrix *matrix);
2369 HRESULT __cdecl wined3d_device_process_vertices(struct wined3d_device *device,
2370         UINT src_start_idx, UINT dst_idx, UINT vertex_count, struct wined3d_buffer *dst_buffer,
2371         const struct wined3d_vertex_declaration *declaration, DWORD flags, DWORD dst_fvf);
2372 void __cdecl wined3d_device_release_focus_window(struct wined3d_device *device);
2373 HRESULT __cdecl wined3d_device_reset(struct wined3d_device *device,
2374         const struct wined3d_swapchain_desc *swapchain_desc, const struct wined3d_display_mode *mode,
2375         wined3d_device_reset_cb callback, BOOL reset_state);
2376 void __cdecl wined3d_device_resolve_sub_resource(struct wined3d_device *device,
2377         struct wined3d_resource *dst_resource, unsigned int dst_sub_resource_idx,
2378         struct wined3d_resource *src_resource, unsigned int src_sub_resource_idx,
2379         enum wined3d_format_id format_id);
2380 void __cdecl wined3d_device_restore_fullscreen_window(struct wined3d_device *device, HWND window,
2381         const RECT *window_rect);
2382 void __cdecl wined3d_device_set_base_vertex_index(struct wined3d_device *device, INT base_index);
2383 void __cdecl wined3d_device_set_blend_state(struct wined3d_device *device, struct wined3d_blend_state *blend_state);
2384 HRESULT __cdecl wined3d_device_set_clip_plane(struct wined3d_device *device,
2385         UINT plane_idx, const struct wined3d_vec4 *plane);
2386 HRESULT __cdecl wined3d_device_set_clip_status(struct wined3d_device *device,
2387         const struct wined3d_clip_status *clip_status);
2388 void __cdecl wined3d_device_set_compute_shader(struct wined3d_device *device, struct wined3d_shader *shader);
2389 void __cdecl wined3d_device_set_cs_cb(struct wined3d_device *device, unsigned int idx, struct wined3d_buffer *buffer);
2390 void __cdecl wined3d_device_set_cs_resource_view(struct wined3d_device *device,
2391         unsigned int idx, struct wined3d_shader_resource_view *view);
2392 void __cdecl wined3d_device_set_cs_sampler(struct wined3d_device *device,
2393         unsigned int idx, struct wined3d_sampler *sampler);
2394 void __cdecl wined3d_device_set_cs_uav(struct wined3d_device *device, unsigned int idx,
2395         struct wined3d_unordered_access_view *uav, unsigned int initial_count);
2396 void __cdecl wined3d_device_set_cursor_position(struct wined3d_device *device,
2397         int x_screen_space, int y_screen_space, DWORD flags);
2398 HRESULT __cdecl wined3d_device_set_cursor_properties(struct wined3d_device *device,
2399         UINT x_hotspot, UINT y_hotspot, struct wined3d_texture *texture, unsigned int sub_resource_idx);
2400 void __cdecl wined3d_device_set_depth_stencil_view(struct wined3d_device *device,
2401         struct wined3d_rendertarget_view *view);
2402 HRESULT __cdecl wined3d_device_set_dialog_box_mode(struct wined3d_device *device, BOOL enable_dialogs);
2403 void __cdecl wined3d_device_set_domain_shader(struct wined3d_device *device, struct wined3d_shader *shader);
2404 void __cdecl wined3d_device_set_ds_cb(struct wined3d_device *device, unsigned int idx, struct wined3d_buffer *buffer);
2405 void __cdecl wined3d_device_set_ds_resource_view(struct wined3d_device *device,
2406         unsigned int idx, struct wined3d_shader_resource_view *view);
2407 void __cdecl wined3d_device_set_ds_sampler(struct wined3d_device *device,
2408         unsigned int idx, struct wined3d_sampler *sampler);
2409 void __cdecl wined3d_device_set_gamma_ramp(const struct wined3d_device *device,
2410         UINT swapchain_idx, DWORD flags, const struct wined3d_gamma_ramp *ramp);
2411 void __cdecl wined3d_device_set_geometry_shader(struct wined3d_device *device, struct wined3d_shader *shader);
2412 void __cdecl wined3d_device_set_gs_cb(struct wined3d_device *device, UINT idx, struct wined3d_buffer *buffer);
2413 void __cdecl wined3d_device_set_gs_resource_view(struct wined3d_device *device,
2414         UINT idx, struct wined3d_shader_resource_view *view);
2415 void __cdecl wined3d_device_set_gs_sampler(struct wined3d_device *device, UINT idx, struct wined3d_sampler *sampler);
2416 void __cdecl wined3d_device_set_hs_cb(struct wined3d_device *device, unsigned int idx, struct wined3d_buffer *buffer);
2417 void __cdecl wined3d_device_set_hs_resource_view(struct wined3d_device *device,
2418         unsigned int idx, struct wined3d_shader_resource_view *view);
2419 void __cdecl wined3d_device_set_hs_sampler(struct wined3d_device *device,
2420         unsigned int idx, struct wined3d_sampler *sampler);
2421 void __cdecl wined3d_device_set_hull_shader(struct wined3d_device *device, struct wined3d_shader *shader);
2422 void __cdecl wined3d_device_set_index_buffer(struct wined3d_device *device,
2423         struct wined3d_buffer *index_buffer, enum wined3d_format_id format_id, unsigned int offset);
2424 HRESULT __cdecl wined3d_device_set_light(struct wined3d_device *device,
2425         UINT light_idx, const struct wined3d_light *light);
2426 HRESULT __cdecl wined3d_device_set_light_enable(struct wined3d_device *device, UINT light_idx, BOOL enable);
2427 void __cdecl wined3d_device_set_material(struct wined3d_device *device, const struct wined3d_material *material);
2428 void __cdecl wined3d_device_set_multithreaded(struct wined3d_device *device);
2429 HRESULT __cdecl wined3d_device_set_npatch_mode(struct wined3d_device *device, float segments);
2430 void __cdecl wined3d_device_set_pixel_shader(struct wined3d_device *device, struct wined3d_shader *shader);
2431 void __cdecl wined3d_device_set_predication(struct wined3d_device *device,
2432         struct wined3d_query *predicate, BOOL value);
2433 void __cdecl wined3d_device_set_primitive_type(struct wined3d_device *device,
2434         enum wined3d_primitive_type primitive_topology, unsigned int patch_vertex_count);
2435 void __cdecl wined3d_device_set_ps_cb(struct wined3d_device *device, UINT idx, struct wined3d_buffer *buffer);
2436 HRESULT __cdecl wined3d_device_set_ps_consts_b(struct wined3d_device *device,
2437         unsigned int start_idx, unsigned int count, const BOOL *constants);
2438 HRESULT __cdecl wined3d_device_set_ps_consts_f(struct wined3d_device *device,
2439         unsigned int start_idx, unsigned int count, const struct wined3d_vec4 *constants);
2440 HRESULT __cdecl wined3d_device_set_ps_consts_i(struct wined3d_device *device,
2441         unsigned int start_idx, unsigned int count, const struct wined3d_ivec4 *constants);
2442 void __cdecl wined3d_device_set_ps_resource_view(struct wined3d_device *device,
2443         UINT idx, struct wined3d_shader_resource_view *view);
2444 void __cdecl wined3d_device_set_ps_sampler(struct wined3d_device *device, UINT idx, struct wined3d_sampler *sampler);
2445 void __cdecl wined3d_device_set_rasterizer_state(struct wined3d_device *device,
2446         struct wined3d_rasterizer_state *rasterizer_state);
2447 void __cdecl wined3d_device_set_render_state(struct wined3d_device *device,
2448         enum wined3d_render_state state, DWORD value);
2449 HRESULT __cdecl wined3d_device_set_rendertarget_view(struct wined3d_device *device,
2450         unsigned int view_idx, struct wined3d_rendertarget_view *view, BOOL set_viewport);
2451 void __cdecl wined3d_device_set_sampler_state(struct wined3d_device *device,
2452         UINT sampler_idx, enum wined3d_sampler_state state, DWORD value);
2453 void __cdecl wined3d_device_set_scissor_rect(struct wined3d_device *device, const RECT *rect);
2454 void __cdecl wined3d_device_set_software_vertex_processing(struct wined3d_device *device, BOOL software);
2455 void __cdecl wined3d_device_set_stream_output(struct wined3d_device *device, UINT idx,
2456         struct wined3d_buffer *buffer, UINT offset);
2457 HRESULT __cdecl wined3d_device_set_stream_source(struct wined3d_device *device,
2458         UINT stream_idx, struct wined3d_buffer *buffer, UINT offset, UINT stride);
2459 HRESULT __cdecl wined3d_device_set_stream_source_freq(struct wined3d_device *device, UINT stream_idx, UINT divider);
2460 HRESULT __cdecl wined3d_device_set_texture(struct wined3d_device *device, UINT stage, struct wined3d_texture *texture);
2461 void __cdecl wined3d_device_set_texture_stage_state(struct wined3d_device *device,
2462         UINT stage, enum wined3d_texture_stage_state state, DWORD value);
2463 void __cdecl wined3d_device_set_transform(struct wined3d_device *device,
2464         enum wined3d_transform_state state, const struct wined3d_matrix *matrix);
2465 void __cdecl wined3d_device_set_unordered_access_view(struct wined3d_device *device,
2466         unsigned int idx, struct wined3d_unordered_access_view *uav, unsigned int initial_count);
2467 void __cdecl wined3d_device_set_vertex_declaration(struct wined3d_device *device,
2468         struct wined3d_vertex_declaration *declaration);
2469 void __cdecl wined3d_device_set_vertex_shader(struct wined3d_device *device, struct wined3d_shader *shader);
2470 void __cdecl wined3d_device_set_viewport(struct wined3d_device *device, const struct wined3d_viewport *viewport);
2471 void __cdecl wined3d_device_set_vs_cb(struct wined3d_device *device, UINT idx, struct wined3d_buffer *buffer);
2472 HRESULT __cdecl wined3d_device_set_vs_consts_b(struct wined3d_device *device,
2473         unsigned int start_idx, unsigned int count, const BOOL *constants);
2474 HRESULT __cdecl wined3d_device_set_vs_consts_f(struct wined3d_device *device,
2475         unsigned int start_idx, unsigned int count, const struct wined3d_vec4 *constants);
2476 HRESULT __cdecl wined3d_device_set_vs_consts_i(struct wined3d_device *device,
2477         unsigned int start_idx, unsigned int count, const struct wined3d_ivec4 *constants);
2478 void __cdecl wined3d_device_set_vs_resource_view(struct wined3d_device *device,
2479         UINT idx, struct wined3d_shader_resource_view *view);
2480 void __cdecl wined3d_device_set_vs_sampler(struct wined3d_device *device, UINT idx, struct wined3d_sampler *sampler);
2481 void __cdecl wined3d_device_setup_fullscreen_window(struct wined3d_device *device, HWND window, UINT w, UINT h);
2482 BOOL __cdecl wined3d_device_show_cursor(struct wined3d_device *device, BOOL show);
2483 HRESULT __cdecl wined3d_device_uninit_3d(struct wined3d_device *device);
2484 HRESULT __cdecl wined3d_device_uninit_gdi(struct wined3d_device *device);
2485 void __cdecl wined3d_device_update_sub_resource(struct wined3d_device *device, struct wined3d_resource *resource,
2486         unsigned int sub_resource_idx, const struct wined3d_box *box, const void *data, unsigned int row_pitch,
2487         unsigned int depth_pitch);
2488 HRESULT __cdecl wined3d_device_update_texture(struct wined3d_device *device,
2489         struct wined3d_texture *src_texture, struct wined3d_texture *dst_texture);
2490 HRESULT __cdecl wined3d_device_validate_device(const struct wined3d_device *device, DWORD *num_passes);
2491 
2492 HRESULT __cdecl wined3d_palette_create(struct wined3d_device *device, DWORD flags,
2493         unsigned int entry_count, const PALETTEENTRY *entries, struct wined3d_palette **palette);
2494 ULONG __cdecl wined3d_palette_decref(struct wined3d_palette *palette);
2495 HRESULT __cdecl wined3d_palette_get_entries(const struct wined3d_palette *palette,
2496         DWORD flags, DWORD start, DWORD count, PALETTEENTRY *entries);
2497 void __cdecl wined3d_palette_apply_to_dc(const struct wined3d_palette *palette, HDC dc);
2498 ULONG __cdecl wined3d_palette_incref(struct wined3d_palette *palette);
2499 HRESULT __cdecl wined3d_palette_set_entries(struct wined3d_palette *palette,
2500         DWORD flags, DWORD start, DWORD count, const PALETTEENTRY *entries);
2501 
2502 HRESULT __cdecl wined3d_query_create(struct wined3d_device *device, enum wined3d_query_type type,
2503         void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query);
2504 ULONG __cdecl wined3d_query_decref(struct wined3d_query *query);
2505 HRESULT __cdecl wined3d_query_get_data(struct wined3d_query *query, void *data, UINT data_size, DWORD flags);
2506 UINT __cdecl wined3d_query_get_data_size(const struct wined3d_query *query);
2507 void * __cdecl wined3d_query_get_parent(const struct wined3d_query *query);
2508 enum wined3d_query_type __cdecl wined3d_query_get_type(const struct wined3d_query *query);
2509 ULONG __cdecl wined3d_query_incref(struct wined3d_query *query);
2510 HRESULT __cdecl wined3d_query_issue(struct wined3d_query *query, DWORD flags);
2511 
wined3d_private_store_init(struct wined3d_private_store * store)2512 static inline void wined3d_private_store_init(struct wined3d_private_store *store)
2513 {
2514     list_init(&store->content);
2515 }
2516 
wined3d_private_store_get_private_data(const struct wined3d_private_store * store,const GUID * tag)2517 static inline struct wined3d_private_data *wined3d_private_store_get_private_data(
2518         const struct wined3d_private_store *store, const GUID *tag)
2519 {
2520     struct wined3d_private_data *data;
2521     struct list *entry;
2522 
2523     LIST_FOR_EACH(entry, &store->content)
2524     {
2525         data = LIST_ENTRY(entry, struct wined3d_private_data, entry);
2526         if (IsEqualGUID(&data->tag, tag))
2527             return data;
2528     }
2529     return NULL;
2530 }
2531 
wined3d_private_store_free_private_data(struct wined3d_private_store * store,struct wined3d_private_data * entry)2532 static inline void wined3d_private_store_free_private_data(struct wined3d_private_store *store,
2533         struct wined3d_private_data *entry)
2534 {
2535     if (entry->flags & WINED3DSPD_IUNKNOWN)
2536         IUnknown_Release(entry->content.object);
2537     list_remove(&entry->entry);
2538     HeapFree(GetProcessHeap(), 0, entry);
2539 }
2540 
wined3d_private_store_cleanup(struct wined3d_private_store * store)2541 static inline void wined3d_private_store_cleanup(struct wined3d_private_store *store)
2542 {
2543     struct wined3d_private_data *data;
2544     struct list *e1, *e2;
2545 
2546     LIST_FOR_EACH_SAFE(e1, e2, &store->content)
2547     {
2548         data = LIST_ENTRY(e1, struct wined3d_private_data, entry);
2549         wined3d_private_store_free_private_data(store, data);
2550     }
2551 }
2552 
wined3d_private_store_set_private_data(struct wined3d_private_store * store,const GUID * guid,const void * data,DWORD data_size,DWORD flags)2553 static inline HRESULT wined3d_private_store_set_private_data(struct wined3d_private_store *store,
2554         const GUID *guid, const void *data, DWORD data_size, DWORD flags)
2555 {
2556     struct wined3d_private_data *d, *old;
2557     const void *ptr = data;
2558 
2559     if (flags & WINED3DSPD_IUNKNOWN)
2560     {
2561         if (data_size != sizeof(IUnknown *))
2562             return WINED3DERR_INVALIDCALL;
2563         ptr = &data;
2564     }
2565 
2566     if (!(d = HeapAlloc(GetProcessHeap(), 0,
2567             FIELD_OFFSET(struct wined3d_private_data, content.data[data_size]))))
2568         return E_OUTOFMEMORY;
2569 
2570     d->tag = *guid;
2571     d->flags = flags;
2572     d->size = data_size;
2573 
2574     memcpy(d->content.data, ptr, data_size);
2575     if (flags & WINED3DSPD_IUNKNOWN)
2576         IUnknown_AddRef(d->content.object);
2577 
2578     old = wined3d_private_store_get_private_data(store, guid);
2579     if (old)
2580         wined3d_private_store_free_private_data(store, old);
2581     list_add_tail(&store->content, &d->entry);
2582 
2583     return WINED3D_OK;
2584 }
2585 
2586 HRESULT __cdecl wined3d_blend_state_create(struct wined3d_device *device,
2587         const struct wined3d_blend_state_desc *desc, void *parent,
2588         const struct wined3d_parent_ops *parent_ops, struct wined3d_blend_state **state);
2589 ULONG __cdecl wined3d_blend_state_decref(struct wined3d_blend_state *state);
2590 void * __cdecl wined3d_blend_state_get_parent(const struct wined3d_blend_state *state);
2591 ULONG __cdecl wined3d_blend_state_incref(struct wined3d_blend_state *state);
2592 
2593 HRESULT __cdecl wined3d_rasterizer_state_create(struct wined3d_device *device,
2594         const struct wined3d_rasterizer_state_desc *desc, void *parent,
2595         const struct wined3d_parent_ops *parent_ops, struct wined3d_rasterizer_state **state);
2596 ULONG __cdecl wined3d_rasterizer_state_decref(struct wined3d_rasterizer_state *state);
2597 void * __cdecl wined3d_rasterizer_state_get_parent(const struct wined3d_rasterizer_state *state);
2598 ULONG __cdecl wined3d_rasterizer_state_incref(struct wined3d_rasterizer_state *state);
2599 
2600 void __cdecl wined3d_resource_get_desc(const struct wined3d_resource *resource,
2601         struct wined3d_resource_desc *desc);
2602 void * __cdecl wined3d_resource_get_parent(const struct wined3d_resource *resource);
2603 DWORD __cdecl wined3d_resource_get_priority(const struct wined3d_resource *resource);
2604 HRESULT __cdecl wined3d_resource_map(struct wined3d_resource *resource, unsigned int sub_resource_idx,
2605         struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags);
2606 HRESULT __cdecl wined3d_resource_map_info(struct wined3d_resource *resource, unsigned int sub_resource_idx,
2607         struct wined3d_map_info *info, DWORD flags);
2608 void __cdecl wined3d_resource_preload(struct wined3d_resource *resource);
2609 void __cdecl wined3d_resource_set_parent(struct wined3d_resource *resource, void *parent);
2610 DWORD __cdecl wined3d_resource_set_priority(struct wined3d_resource *resource, DWORD priority);
2611 HRESULT __cdecl wined3d_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx);
2612 UINT __cdecl wined3d_resource_update_info(struct wined3d_resource *resource, unsigned int sub_resource_idx,
2613         const struct wined3d_box *box, unsigned int row_pitch, unsigned int depth_pitch);
2614 
2615 HRESULT __cdecl wined3d_rendertarget_view_create(const struct wined3d_view_desc *desc,
2616         struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops,
2617         struct wined3d_rendertarget_view **view);
2618 HRESULT __cdecl wined3d_rendertarget_view_create_from_sub_resource(struct wined3d_texture *texture,
2619         unsigned int sub_resource_idx, void *parent, const struct wined3d_parent_ops *parent_ops,
2620         struct wined3d_rendertarget_view **view);
2621 ULONG __cdecl wined3d_rendertarget_view_decref(struct wined3d_rendertarget_view *view);
2622 void * __cdecl wined3d_rendertarget_view_get_parent(const struct wined3d_rendertarget_view *view);
2623 struct wined3d_resource * __cdecl wined3d_rendertarget_view_get_resource(const struct wined3d_rendertarget_view *view);
2624 void * __cdecl wined3d_rendertarget_view_get_sub_resource_parent(const struct wined3d_rendertarget_view *view);
2625 ULONG __cdecl wined3d_rendertarget_view_incref(struct wined3d_rendertarget_view *view);
2626 void __cdecl wined3d_rendertarget_view_set_parent(struct wined3d_rendertarget_view *view, void *parent);
2627 
2628 HRESULT __cdecl wined3d_sampler_create(struct wined3d_device *device, const struct wined3d_sampler_desc *desc,
2629         void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_sampler **sampler);
2630 ULONG __cdecl wined3d_sampler_decref(struct wined3d_sampler *sampler);
2631 void * __cdecl wined3d_sampler_get_parent(const struct wined3d_sampler *sampler);
2632 ULONG __cdecl wined3d_sampler_incref(struct wined3d_sampler *sampler);
2633 
2634 HRESULT __cdecl wined3d_shader_create_cs(struct wined3d_device *device, const struct wined3d_shader_desc *desc,
2635         void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader **shader);
2636 HRESULT __cdecl wined3d_shader_create_ds(struct wined3d_device *device, const struct wined3d_shader_desc *desc,
2637         void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader **shader);
2638 HRESULT __cdecl wined3d_shader_create_gs(struct wined3d_device *device, const struct wined3d_shader_desc *desc,
2639         const struct wined3d_stream_output_desc *so_desc, void *parent, const struct wined3d_parent_ops *parent_ops,
2640         struct wined3d_shader **shader);
2641 HRESULT __cdecl wined3d_shader_create_hs(struct wined3d_device *device, const struct wined3d_shader_desc *desc,
2642         void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader **shader);
2643 HRESULT __cdecl wined3d_shader_create_ps(struct wined3d_device *device, const struct wined3d_shader_desc *desc,
2644         void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader **shader);
2645 HRESULT __cdecl wined3d_shader_create_vs(struct wined3d_device *device, const struct wined3d_shader_desc *desc,
2646         void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader **shader);
2647 ULONG __cdecl wined3d_shader_decref(struct wined3d_shader *shader);
2648 HRESULT __cdecl wined3d_shader_get_byte_code(const struct wined3d_shader *shader,
2649         void *byte_code, UINT *byte_code_size);
2650 void * __cdecl wined3d_shader_get_parent(const struct wined3d_shader *shader);
2651 ULONG __cdecl wined3d_shader_incref(struct wined3d_shader *shader);
2652 HRESULT __cdecl wined3d_shader_set_local_constants_float(struct wined3d_shader *shader,
2653         UINT start_idx, const float *src_data, UINT vector4f_count);
2654 
2655 HRESULT __cdecl wined3d_shader_resource_view_create(const struct wined3d_view_desc *desc,
2656         struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops,
2657         struct wined3d_shader_resource_view **view);
2658 ULONG __cdecl wined3d_shader_resource_view_decref(struct wined3d_shader_resource_view *view);
2659 void __cdecl wined3d_shader_resource_view_generate_mipmaps(struct wined3d_shader_resource_view *view);
2660 void * __cdecl wined3d_shader_resource_view_get_parent(const struct wined3d_shader_resource_view *view);
2661 ULONG __cdecl wined3d_shader_resource_view_incref(struct wined3d_shader_resource_view *view);
2662 
2663 void __cdecl wined3d_stateblock_apply(const struct wined3d_stateblock *stateblock);
2664 void __cdecl wined3d_stateblock_capture(struct wined3d_stateblock *stateblock);
2665 HRESULT __cdecl wined3d_stateblock_create(struct wined3d_device *device,
2666         enum wined3d_stateblock_type type, struct wined3d_stateblock **stateblock);
2667 ULONG __cdecl wined3d_stateblock_decref(struct wined3d_stateblock *stateblock);
2668 ULONG __cdecl wined3d_stateblock_incref(struct wined3d_stateblock *stateblock);
2669 
2670 HRESULT __cdecl wined3d_swapchain_create(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
2671         void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain);
2672 ULONG __cdecl wined3d_swapchain_decref(struct wined3d_swapchain *swapchain);
2673 struct wined3d_texture * __cdecl wined3d_swapchain_get_back_buffer(const struct wined3d_swapchain *swapchain,
2674         UINT backbuffer_idx);
2675 struct wined3d_device * __cdecl wined3d_swapchain_get_device(const struct wined3d_swapchain *swapchain);
2676 HRESULT __cdecl wined3d_swapchain_get_display_mode(const struct wined3d_swapchain *swapchain,
2677         struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation);
2678 HRESULT __cdecl wined3d_swapchain_get_front_buffer_data(const struct wined3d_swapchain *swapchain,
2679         struct wined3d_texture *dst_texture, unsigned int sub_resource_idx);
2680 HRESULT __cdecl wined3d_swapchain_get_gamma_ramp(const struct wined3d_swapchain *swapchain,
2681         struct wined3d_gamma_ramp *ramp);
2682 void * __cdecl wined3d_swapchain_get_parent(const struct wined3d_swapchain *swapchain);
2683 void __cdecl wined3d_swapchain_get_desc(const struct wined3d_swapchain *swapchain,
2684         struct wined3d_swapchain_desc *desc);
2685 HRESULT __cdecl wined3d_swapchain_get_raster_status(const struct wined3d_swapchain *swapchain,
2686         struct wined3d_raster_status *raster_status);
2687 ULONG __cdecl wined3d_swapchain_incref(struct wined3d_swapchain *swapchain);
2688 HRESULT __cdecl wined3d_swapchain_present(struct wined3d_swapchain *swapchain,
2689         const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override, DWORD swap_interval, DWORD flags);
2690 HRESULT __cdecl wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapchain, unsigned int buffer_count,
2691         unsigned int width, unsigned int height, enum wined3d_format_id format_id,
2692         enum wined3d_multisample_type multisample_type, unsigned int multisample_quality);
2693 HRESULT __cdecl wined3d_swapchain_resize_target(struct wined3d_swapchain *swapchain,
2694         const struct wined3d_display_mode *mode);
2695 HRESULT __cdecl wined3d_swapchain_set_fullscreen(struct wined3d_swapchain *swapchain,
2696         const struct wined3d_swapchain_desc *desc, const struct wined3d_display_mode *mode);
2697 HRESULT __cdecl wined3d_swapchain_set_gamma_ramp(const struct wined3d_swapchain *swapchain,
2698         DWORD flags, const struct wined3d_gamma_ramp *ramp);
2699 void __cdecl wined3d_swapchain_set_palette(struct wined3d_swapchain *swapchain, struct wined3d_palette *palette);
2700 void __cdecl wined3d_swapchain_set_window(struct wined3d_swapchain *swapchain, HWND window);
2701 
2702 HRESULT __cdecl wined3d_texture_add_dirty_region(struct wined3d_texture *texture,
2703         UINT layer, const struct wined3d_box *dirty_region);
2704 HRESULT __cdecl wined3d_texture_blt(struct wined3d_texture *dst_texture, unsigned int dst_idx, const RECT *dst_rect_in,
2705         struct wined3d_texture *src_texture, unsigned int src_idx, const RECT *src_rect_in, DWORD flags,
2706         const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter);
2707 HRESULT __cdecl wined3d_texture_create(struct wined3d_device *device, const struct wined3d_resource_desc *desc,
2708         UINT layer_count, UINT level_count, DWORD flags, const struct wined3d_sub_resource_data *data,
2709         void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_texture **texture);
2710 struct wined3d_texture * __cdecl wined3d_texture_from_resource(struct wined3d_resource *resource);
2711 ULONG __cdecl wined3d_texture_decref(struct wined3d_texture *texture);
2712 HRESULT __cdecl wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned int sub_resource_idx, HDC *dc);
2713 DWORD __cdecl wined3d_texture_get_level_count(const struct wined3d_texture *texture);
2714 DWORD __cdecl wined3d_texture_get_lod(const struct wined3d_texture *texture);
2715 HRESULT __cdecl wined3d_texture_get_overlay_position(const struct wined3d_texture *texture,
2716         unsigned int sub_resource_idx, LONG *x, LONG *y);
2717 void * __cdecl wined3d_texture_get_parent(const struct wined3d_texture *texture);
2718 void __cdecl wined3d_texture_get_pitch(const struct wined3d_texture *texture,
2719         unsigned int level, unsigned int *row_pitch, unsigned int *slice_pitch);
2720 struct wined3d_resource * __cdecl wined3d_texture_get_resource(struct wined3d_texture *texture);
2721 HRESULT __cdecl wined3d_texture_get_sub_resource_desc(const struct wined3d_texture *texture,
2722         unsigned int sub_resource_idx, struct wined3d_sub_resource_desc *desc);
2723 void * __cdecl wined3d_texture_get_sub_resource_parent(struct wined3d_texture *texture, unsigned int sub_resource_idx);
2724 ULONG __cdecl wined3d_texture_incref(struct wined3d_texture *texture);
2725 HRESULT __cdecl wined3d_texture_release_dc(struct wined3d_texture *texture, unsigned int sub_resource_idx, HDC dc);
2726 HRESULT __cdecl wined3d_texture_set_color_key(struct wined3d_texture *texture,
2727         DWORD flags, const struct wined3d_color_key *color_key);
2728 DWORD __cdecl wined3d_texture_set_lod(struct wined3d_texture *texture, DWORD lod);
2729 HRESULT __cdecl wined3d_texture_set_overlay_position(struct wined3d_texture *texture,
2730         unsigned int sub_resource_idx, LONG x, LONG y);
2731 void __cdecl wined3d_texture_set_sub_resource_parent(struct wined3d_texture *texture,
2732         unsigned int sub_resource_idx, void *parent);
2733 HRESULT __cdecl wined3d_texture_update_desc(struct wined3d_texture *texture,
2734         UINT width, UINT height, enum wined3d_format_id format_id,
2735         enum wined3d_multisample_type multisample_type, UINT multisample_quality,
2736         void *mem, UINT pitch);
2737 HRESULT __cdecl wined3d_texture_update_overlay(struct wined3d_texture *texture, unsigned int sub_resource_idx,
2738         const RECT *src_rect, struct wined3d_texture *dst_texture, unsigned int dst_sub_resource_idx,
2739         const RECT *dst_rect, DWORD flags);
2740 
2741 HRESULT __cdecl wined3d_unordered_access_view_create(const struct wined3d_view_desc *desc,
2742         struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops,
2743         struct wined3d_unordered_access_view **view);
2744 ULONG __cdecl wined3d_unordered_access_view_decref(struct wined3d_unordered_access_view *view);
2745 void * __cdecl wined3d_unordered_access_view_get_parent(const struct wined3d_unordered_access_view *view);
2746 ULONG __cdecl wined3d_unordered_access_view_incref(struct wined3d_unordered_access_view *view);
2747 
2748 HRESULT __cdecl wined3d_vertex_declaration_create(struct wined3d_device *device,
2749         const struct wined3d_vertex_element *elements, UINT element_count, void *parent,
2750         const struct wined3d_parent_ops *parent_ops, struct wined3d_vertex_declaration **declaration);
2751 HRESULT __cdecl wined3d_vertex_declaration_create_from_fvf(struct wined3d_device *device,
2752         DWORD fvf, void *parent, const struct wined3d_parent_ops *parent_ops,
2753         struct wined3d_vertex_declaration **declaration);
2754 ULONG __cdecl wined3d_vertex_declaration_decref(struct wined3d_vertex_declaration *declaration);
2755 void * __cdecl wined3d_vertex_declaration_get_parent(const struct wined3d_vertex_declaration *declaration);
2756 ULONG __cdecl wined3d_vertex_declaration_incref(struct wined3d_vertex_declaration *declaration);
2757 
2758 /* Return the integer base-2 logarithm of x. Undefined for x == 0. */
wined3d_log2i(unsigned int x)2759 static inline unsigned int wined3d_log2i(unsigned int x)
2760 {
2761 #ifdef HAVE___BUILTIN_CLZ
2762     return __builtin_clz(x) ^ 0x1f;
2763 #else
2764     static const unsigned int l[] =
2765     {
2766         ~0u, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
2767           4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2768           5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2769           5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2770           6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
2771           6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
2772           6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
2773           6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
2774           7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2775           7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2776           7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2777           7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2778           7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2779           7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2780           7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2781           7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2782     };
2783     unsigned int i;
2784 
2785     return (i = x >> 16) ? (x = i >> 8) ? l[x] + 24 : l[i] + 16 : (i = x >> 8) ? l[i] + 8 : l[x];
2786 #endif
2787 }
2788 
wined3d_box_set(struct wined3d_box * box,unsigned int left,unsigned int top,unsigned int right,unsigned int bottom,unsigned int front,unsigned int back)2789 static inline void wined3d_box_set(struct wined3d_box *box, unsigned int left, unsigned int top,
2790         unsigned int right, unsigned int bottom, unsigned int front, unsigned int back)
2791 {
2792     box->left = left;
2793     box->top = top;
2794     box->right = right;
2795     box->bottom = bottom;
2796     box->front = front;
2797     box->back = back;
2798 }
2799 
2800 BOOL wined3d_dxt1_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
2801                          enum wined3d_format_id format, unsigned int w, unsigned int h);
2802 BOOL wined3d_dxt1_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
2803                          enum wined3d_format_id format, unsigned int w, unsigned int h);
2804 BOOL wined3d_dxt3_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
2805                          enum wined3d_format_id format, unsigned int w, unsigned int h);
2806 BOOL wined3d_dxt3_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
2807                          enum wined3d_format_id format, unsigned int w, unsigned int h);
2808 BOOL wined3d_dxt5_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
2809                          enum wined3d_format_id format, unsigned int w, unsigned int h);
2810 BOOL wined3d_dxt5_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
2811                          enum wined3d_format_id format, unsigned int w, unsigned int h);
2812 BOOL wined3d_dxtn_supported(void);
2813 
2814 #endif /* __WINE_WINED3D_H */
2815