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