1/**************************************************************************
2 *
3 * Copyright 2010 Luca Barbieri
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining
6 * a copy of this software and associated documentation files (the
7 * "Software"), to deal in the Software without restriction, including
8 * without limitation the rights to use, copy, modify, merge, publish,
9 * distribute, sublicense, and/or sell copies of the Software, and to
10 * permit persons to whom the Software is furnished to do so, subject to
11 * the following conditions:
12 *
13 * The above copyright notice and this permission notice (including the
14 * next paragraph) shall be included in all copies or substantial
15 * portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
21 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 *
25 **************************************************************************/
26
27import "oaidl.idl";
28import "ocidl.idl";
29
30typedef const void* LPCVOID;
31
32typedef enum D3D_DRIVER_TYPE
33{
34	D3D_DRIVER_TYPE_UNKNOWN,
35	D3D_DRIVER_TYPE_HARDWARE,
36	D3D_DRIVER_TYPE_REFERENCE,
37	D3D_DRIVER_TYPE_NULL,
38	D3D_DRIVER_TYPE_SOFTWARE,
39	D3D_DRIVER_TYPE_WARP,
40} D3D_DRIVER_TYPE;
41
42typedef enum D3D_FEATURE_LEVEL
43{
44	D3D_FEATURE_LEVEL_9_1 = 0x9100,
45	D3D_FEATURE_LEVEL_9_2 = 0x9200,
46	D3D_FEATURE_LEVEL_9_3 = 0x9300,
47	D3D_FEATURE_LEVEL_10_0 = 0xa000,
48	D3D_FEATURE_LEVEL_10_1 = 0xa100,
49	D3D_FEATURE_LEVEL_11_0 = 0xb000
50} D3D_FEATURE_LEVEL;
51
52typedef enum D3D_PRIMITIVE_TOPOLOGY
53{
54	D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
55	D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
56	D3D_PRIMITIVE_TOPOLOGY_LINELIST,
57	D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
58	D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
59	D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
60
61	D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
62	D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
63	D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
64	D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
65
66	D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST	= 33,
67	D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
68	D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
69	D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
70	D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
71	D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
72	D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
73	D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
74	D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
75	D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
76	D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
77	D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
78	D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
79	D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
80	D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
81	D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
82	D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
83	D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
84	D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
85	D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
86	D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
87	D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
88	D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
89	D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
90	D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
91	D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
92	D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
93	D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
94	D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
95	D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
96	D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
97	D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST,
98
99	D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
100	D3D10_PRIMITIVE_TOPOLOGY_POINTLIST,
101	D3D10_PRIMITIVE_TOPOLOGY_LINELIST,
102	D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP,
103	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
104	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
105
106	D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
107	D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
108	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
109	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
110
111	D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
112	D3D11_PRIMITIVE_TOPOLOGY_POINTLIST,
113	D3D11_PRIMITIVE_TOPOLOGY_LINELIST,
114	D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP,
115	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
116	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
117
118	D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
119	D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
120	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
121	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
122
123	D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST	= 33,
124	D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
125	D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
126	D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
127	D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
128	D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
129	D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
130	D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
131	D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
132	D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
133	D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
134	D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
135	D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
136	D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
137	D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
138	D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
139	D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
140	D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
141	D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
142	D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
143	D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
144	D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
145	D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
146	D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
147	D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
148	D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
149	D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
150	D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
151	D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
152	D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
153	D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
154	D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST,
155} D3D_PRIMITIVE_TOPOLOGY;
156
157typedef enum D3D_PRIMITIVE
158{
159	D3D_PRIMITIVE_UNDEFINED = 0,
160	D3D_PRIMITIVE_POINT,
161	D3D_PRIMITIVE_LINE,
162	D3D_PRIMITIVE_TRIANGLE,
163
164	D3D_PRIMITIVE_LINE_ADJ = 6,
165	D3D_PRIMITIVE_TRIANGLE_ADJ,
166
167	D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
168	D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
169	D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
170	D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
171	D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
172	D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
173	D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
174	D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
175	D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
176	D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
177	D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
178	D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
179	D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
180	D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
181	D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
182	D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
183	D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
184	D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
185	D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
186	D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
187	D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
188	D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
189	D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
190	D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
191	D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
192	D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
193	D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
194	D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
195	D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
196	D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
197	D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
198	D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
199
200	D3D10_PRIMITIVE_UNDEFINED = 0,
201	D3D10_PRIMITIVE_POINT,
202	D3D10_PRIMITIVE_LINE,
203	D3D10_PRIMITIVE_TRIANGLE,
204
205	D3D10_PRIMITIVE_LINE_ADJ = 6,
206	D3D10_PRIMITIVE_TRIANGLE_ADJ,
207
208	D3D11_PRIMITIVE_UNDEFINED = 0,
209	D3D11_PRIMITIVE_POINT,
210	D3D11_PRIMITIVE_LINE,
211	D3D11_PRIMITIVE_TRIANGLE,
212
213	D3D11_PRIMITIVE_LINE_ADJ = 6,
214	D3D11_PRIMITIVE_TRIANGLE_ADJ,
215
216	D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
217	D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH,
218	D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH,
219	D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH,
220	D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH,
221	D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH,
222	D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH,
223	D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH,
224	D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH,
225	D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH,
226	D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH,
227	D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH,
228	D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH,
229	D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH,
230	D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH,
231	D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH,
232	D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH,
233	D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH,
234	D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH,
235	D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH,
236	D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH,
237	D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH,
238	D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH,
239	D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH,
240	D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH,
241	D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH,
242	D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH,
243	D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH,
244	D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH,
245	D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH,
246	D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH,
247	D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH,
248} D3D_PRIMITIVE;
249
250typedef enum D3D_SRV_DIMENSION
251{
252	D3D_SRV_DIMENSION_UNKNOWN = 0,
253	D3D_SRV_DIMENSION_BUFFER,
254	D3D_SRV_DIMENSION_TEXTURE1D,
255	D3D_SRV_DIMENSION_TEXTURE1DARRAY,
256	D3D_SRV_DIMENSION_TEXTURE2D,
257	D3D_SRV_DIMENSION_TEXTURE2DARRAY,
258	D3D_SRV_DIMENSION_TEXTURE2DMS,
259	D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
260	D3D_SRV_DIMENSION_TEXTURE3D,
261	D3D_SRV_DIMENSION_TEXTURECUBE,
262	D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
263	D3D_SRV_DIMENSION_BUFFEREX,
264
265	D3D10_SRV_DIMENSION_UNKNOWN = 0,
266	D3D10_SRV_DIMENSION_BUFFER,
267	D3D10_SRV_DIMENSION_TEXTURE1D,
268	D3D10_SRV_DIMENSION_TEXTURE1DARRAY,
269	D3D10_SRV_DIMENSION_TEXTURE2D,
270	D3D10_SRV_DIMENSION_TEXTURE2DARRAY,
271	D3D10_SRV_DIMENSION_TEXTURE2DMS,
272	D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY,
273	D3D10_SRV_DIMENSION_TEXTURE3D,
274	D3D10_SRV_DIMENSION_TEXTURECUBE,
275
276	D3D10_1_SRV_DIMENSION_UNKNOWN = 0,
277	D3D10_1_SRV_DIMENSION_BUFFER,
278	D3D10_1_SRV_DIMENSION_TEXTURE1D,
279	D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY,
280	D3D10_1_SRV_DIMENSION_TEXTURE2D,
281	D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY,
282	D3D10_1_SRV_DIMENSION_TEXTURE2DMS,
283	D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY,
284	D3D10_1_SRV_DIMENSION_TEXTURE3D,
285	D3D10_1_SRV_DIMENSION_TEXTURECUBE,
286	D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY,
287
288	D3D11_SRV_DIMENSION_UNKNOWN = 0,
289	D3D11_SRV_DIMENSION_BUFFER,
290	D3D11_SRV_DIMENSION_TEXTURE1D,
291	D3D11_SRV_DIMENSION_TEXTURE1DARRAY,
292	D3D11_SRV_DIMENSION_TEXTURE2D,
293	D3D11_SRV_DIMENSION_TEXTURE2DARRAY,
294	D3D11_SRV_DIMENSION_TEXTURE2DMS,
295	D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY,
296	D3D11_SRV_DIMENSION_TEXTURE3D,
297	D3D11_SRV_DIMENSION_TEXTURECUBE,
298	D3D11_SRV_DIMENSION_TEXTURECUBEARRAY,
299	D3D11_SRV_DIMENSION_BUFFEREX,
300} D3D_SRV_DIMENSION;
301
302typedef struct _D3D_SHADER_MACRO
303{
304	LPCSTR Name;
305	LPCSTR Definition;
306} D3D_SHADER_MACRO;
307
308typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO;
309
310[object, local, uuid(8ba5fb08-5195-40e2-ac58-0d989c3a0102)]
311interface ID3D10Blob : IUnknown
312{
313	LPVOID GetBufferPointer();
314	SIZE_T GetBufferSize();
315};
316
317typedef ID3D10Blob* LPD3D10BLOB;
318typedef ID3D10Blob ID3DBlob;
319typedef ID3DBlob* LPD3DBLOB;
320
321typedef enum _D3D_INCLUDE_TYPE
322{
323	D3D_INCLUDE_LOCAL = 0,
324	D3D_INCLUDE_SYSTEM,
325
326	D3D10_INCLUDE_LOCAL = 0,
327	D3D10_INCLUDE_SYSTEM,
328
329	D3D_INCLUDE_FORCE_DWORD = 0x7fffffff,
330} D3D_INCLUDE_TYPE;
331
332[object, local]
333interface ID3DInclude : IUnknown
334{
335	HRESULT Open(
336		[in] D3D_INCLUDE_TYPE a,
337		[in] LPCSTR b,
338		[in] LPCVOID c,
339		[out] LPCVOID *d,
340		[in] UINT *e
341	);
342	HRESULT Close(
343		[in] LPCVOID a
344	);
345};
346
347typedef enum _D3D_SHADER_VARIABLE_CLASS
348{
349	D3D_SVC_SCALAR = 0,
350	D3D_SVC_VECTOR,
351	D3D_SVC_MATRIX_ROWS,
352	D3D_SVC_MATRIX_COLUMNS,
353	D3D_SVC_OBJECT,
354	D3D_SVC_STRUCT,
355	D3D_SVC_INTERFACE_CLASS,
356	D3D_SVC_INTERFACE_POINTER,
357
358	D3D10_SVC_SCALAR = 0,
359	D3D10_SVC_VECTOR,
360	D3D10_SVC_MATRIX_ROWS,
361	D3D10_SVC_MATRIX_COLUMNS,
362	D3D10_SVC_OBJECT,
363	D3D10_SVC_STRUCT,
364	D3D11_SVC_INTERFACE_CLASS,
365	D3D11_SVC_INTERFACE_POINTER,
366	D3D_SVC_FORCE_DWORD = 0x7fffffff
367} D3D_SHADER_VARIABLE_CLASS;
368
369typedef enum _D3D_SHADER_VARIABLE_FLAGS
370{
371	D3D_SVF_USERPACKED = 1,
372	D3D_SVF_USED = 2,
373	D3D_SVF_INTERFACE_POINTER = 4,
374	D3D_SVF_INTERFACE_PARAMETER = 8,
375
376	D3D10_SVF_USERPACKED = 1,
377	D3D10_SVF_USED = 2,
378	D3D10_SVF_INTERFACE_POINTER = 4,
379	D3D10_SVF_INTERFACE_PARAMETER = 8,
380
381	D3D_SVF_FORCE_DWORD = 0x7fffffff
382} D3D_SHADER_VARIABLE_FLAGS;
383
384typedef enum _D3D_SHADER_VARIABLE_TYPE
385{
386	D3D_SVT_VOID = 0,
387	D3D_SVT_BOOL,
388	D3D_SVT_INT,
389	D3D_SVT_FLOAT,
390	D3D_SVT_STRING,
391	D3D_SVT_TEXTURE,
392	D3D_SVT_TEXTURE1D,
393	D3D_SVT_TEXTURE2D,
394	D3D_SVT_TEXTURE3D,
395	D3D_SVT_TEXTURECUBE,
396	D3D_SVT_SAMPLER,
397	D3D_SVT_SAMPLER1D,
398	D3D_SVT_SAMPLER2D,
399	D3D_SVT_SAMPLER3D,
400	D3D_SVT_SAMPLERCUBE,
401	D3D_SVT_PIXELSHADER,
402	D3D_SVT_VERTEXSHADER,
403	D3D_SVT_PIXELFRAGMENT,
404	D3D_SVT_VERTEXFRAGMENT,
405	D3D_SVT_UINT,
406	D3D_SVT_UINT8,
407	D3D_SVT_GEOMETRYSHADER,
408	D3D_SVT_RASTERIZER,
409	D3D_SVT_DEPTHSTENCIL,
410	D3D_SVT_BLEND,
411	D3D_SVT_BUFFER,
412	D3D_SVT_CBUFFER,
413	D3D_SVT_TBUFFER,
414	D3D_SVT_TEXTURE1DARRAY,
415	D3D_SVT_TEXTURE2DARRAY,
416	D3D_SVT_RENDERTARGETVIEW,
417	D3D_SVT_DEPTHSTENCILVIEW,
418	D3D_SVT_TEXTURE2DMS,
419	D3D_SVT_TEXTURE2DMSARRAY,
420	D3D_SVT_TEXTURECUBEARRAY,
421	D3D_SVT_HULLSHADER,
422	D3D_SVT_DOMAINSHADER,
423	D3D_SVT_INTERFACE_POINTER,
424	D3D_SVT_COMPUTESHADER,
425	D3D_SVT_DOUBLE,
426	D3D_SVT_RWTEXTURE1D,
427	D3D_SVT_RWTEXTURE1DARRAY,
428	D3D_SVT_RWTEXTURE2D,
429	D3D_SVT_RWTEXTURE2DARRAY,
430	D3D_SVT_RWTEXTURE3D,
431	D3D_SVT_RWBUFFER,
432	D3D_SVT_BYTEADDRESS_BUFFER,
433	D3D_SVT_RWBYTEADDRESS_BUFFER,
434	D3D_SVT_STRUCTURED_BUFFER,
435	D3D_SVT_RWSTRUCTURED_BUFFER,
436	D3D_SVT_APPEND_STRUCTURED_BUFFER,
437	D3D_SVT_CONSUME_STRUCTURED_BUFFER,
438
439	D3D10_SVT_VOID = 0,
440	D3D10_SVT_BOOL,
441	D3D10_SVT_INT,
442	D3D10_SVT_FLOAT,
443	D3D10_SVT_STRING,
444	D3D10_SVT_TEXTURE,
445	D3D10_SVT_TEXTURE1D,
446	D3D10_SVT_TEXTURE2D,
447	D3D10_SVT_TEXTURE3D,
448	D3D10_SVT_TEXTURECUBE,
449	D3D10_SVT_SAMPLER,
450	D3D10_SVT_SAMPLER1D,
451	D3D10_SVT_SAMPLER2D,
452	D3D10_SVT_SAMPLER3D,
453	D3D10_SVT_SAMPLERCUBE,
454	D3D10_SVT_PIXELSHADER,
455	D3D10_SVT_VERTEXSHADER,
456	D3D10_SVT_PIXELFRAGMENT,
457	D3D10_SVT_VERTEXFRAGMENT,
458	D3D10_SVT_UINT,
459	D3D10_SVT_UINT8,
460	D3D10_SVT_GEOMETRYSHADER,
461	D3D10_SVT_RASTERIZER,
462	D3D10_SVT_DEPTHSTENCIL,
463	D3D10_SVT_BLEND,
464	D3D10_SVT_BUFFER,
465	D3D10_SVT_CBUFFER,
466	D3D10_SVT_TBUFFER,
467	D3D10_SVT_TEXTURE1DARRAY,
468	D3D10_SVT_TEXTURE2DARRAY,
469	D3D10_SVT_RENDERTARGETVIEW,
470	D3D10_SVT_DEPTHSTENCILVIEW,
471	D3D10_SVT_TEXTURE2DMS,
472	D3D10_SVT_TEXTURE2DMSARRAY,
473	D3D10_SVT_TEXTURECUBEARRAY,
474
475	D3D11_SVT_HULLSHADER,
476	D3D11_SVT_DOMAINSHADER,
477	D3D11_SVT_INTERFACE_POINTER,
478	D3D11_SVT_COMPUTESHADER,
479	D3D11_SVT_DOUBLE,
480	D3D11_SVT_RWTEXTURE1D,
481	D3D11_SVT_RWTEXTURE1DARRAY,
482	D3D11_SVT_RWTEXTURE2D,
483	D3D11_SVT_RWTEXTURE2DARRAY,
484	D3D11_SVT_RWTEXTURE3D,
485	D3D11_SVT_RWBUFFER,
486	D3D11_SVT_BYTEADDRESS_BUFFER,
487	D3D11_SVT_RWBYTEADDRESS_BUFFER,
488	D3D11_SVT_STRUCTURED_BUFFER,
489	D3D11_SVT_RWSTRUCTURED_BUFFER,
490	D3D11_SVT_APPEND_STRUCTURED_BUFFER,
491	D3D11_SVT_CONSUME_STRUCTURED_BUFFER,
492
493	D3D_SVT_FORCE_DWORD	= 0x7fffffff
494} D3D_SHADER_VARIABLE_TYPE;
495
496typedef enum _D3D_SHADER_INPUT_FLAGS
497{
498	D3D_SIF_USERPACKED = 1,
499	D3D_SIF_COMPARISON_SAMPLER = 2,
500	D3D_SIF_TEXTURE_COMPONENT_0 = 4,
501	D3D_SIF_TEXTURE_COMPONENT_1 = 8,
502	D3D_SIF_TEXTURE_COMPONENTS = 12,
503
504	D3D10_SIF_USERPACKED = 1,
505	D3D10_SIF_COMPARISON_SAMPLER = 2,
506	D3D10_SIF_TEXTURE_COMPONENT_0 = 4,
507	D3D10_SIF_TEXTURE_COMPONENT_1 = 8,
508	D3D10_SIF_TEXTURE_COMPONENTS = 12,
509
510	D3D_SIF_FORCE_DWORD	= 0x7fffffff
511	} 	D3D_SHADER_INPUT_FLAGS;
512
513typedef enum _D3D_SHADER_INPUT_TYPE
514{
515	D3D_SIT_CBUFFER = 0,
516	D3D_SIT_TBUFFER,
517	D3D_SIT_TEXTURE,
518	D3D_SIT_SAMPLER,
519	D3D_SIT_UAV_RWTYPED,
520	D3D_SIT_STRUCTURED,
521	D3D_SIT_UAV_RWSTRUCTURED,
522	D3D_SIT_BYTEADDRESS,
523	D3D_SIT_UAV_RWBYTEADDRESS,
524	D3D_SIT_UAV_APPEND_STRUCTURED,
525	D3D_SIT_UAV_CONSUME_STRUCTURED,
526	D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
527
528	D3D10_SIT_CBUFFER = 0,
529	D3D10_SIT_TBUFFER,
530	D3D10_SIT_TEXTURE,
531	D3D10_SIT_SAMPLER,
532
533	D3D11_SIT_UAV_RWTYPED,
534	D3D11_SIT_STRUCTURED,
535	D3D11_SIT_UAV_RWSTRUCTURED,
536	D3D11_SIT_BYTEADDRESS,
537	D3D11_SIT_UAV_RWBYTEADDRESS,
538	D3D11_SIT_UAV_APPEND_STRUCTURED,
539	D3D11_SIT_UAV_CONSUME_STRUCTURED,
540	D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
541	} 	D3D_SHADER_INPUT_TYPE;
542
543typedef enum _D3D_SHADER_CBUFFER_FLAGS
544{
545	D3D_CBF_USERPACKED = 1,
546
547	D3D10_CBF_USERPACKED = 1,
548
549	D3D_CBF_FORCE_DWORD = 0x7fffffff
550} D3D_SHADER_CBUFFER_FLAGS;
551
552typedef enum _D3D_CBUFFER_TYPE
553{
554	D3D_CT_CBUFFER = 0,
555	D3D_CT_TBUFFER,
556	D3D_CT_INTERFACE_POINTERS,
557	D3D_CT_RESOURCE_BIND_INFO,
558
559	D3D10_CT_CBUFFER = 0,
560	D3D10_CT_TBUFFER,
561
562	D3D11_CT_CBUFFER = 0,
563	D3D11_CT_TBUFFER,
564	D3D11_CT_INTERFACE_POINTERS,
565	D3D11_CT_RESOURCE_BIND_INFO,
566} D3D_CBUFFER_TYPE;
567
568typedef enum D3D_NAME
569{
570	D3D_NAME_UNDEFINED = 0,
571	D3D_NAME_POSITION,
572	D3D_NAME_CLIP_DISTANCE,
573	D3D_NAME_CULL_DISTANCE,
574	D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
575	D3D_NAME_VIEWPORT_ARRAY_INDEX,
576	D3D_NAME_VERTEX_ID,
577	D3D_NAME_PRIMITIVE_ID,
578	D3D_NAME_INSTANCE_ID,
579	D3D_NAME_IS_FRONT_FACE,
580	D3D_NAME_SAMPLE_INDEX,
581	D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
582	D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
583	D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
584	D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
585	D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
586	D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
587
588	D3D_NAME_TARGET = 64,
589	D3D_NAME_DEPTH,
590	D3D_NAME_COVERAGE,
591	D3D_NAME_DEPTH_GREATER_EQUAL,
592	D3D_NAME_DEPTH_LESS_EQUAL,
593
594	D3D10_NAME_UNDEFINED = 0,
595	D3D10_NAME_POSITION,
596	D3D10_NAME_CLIP_DISTANCE,
597	D3D10_NAME_CULL_DISTANCE,
598	D3D10_NAME_RENDER_TARGET_ARRAY_INDEX,
599	D3D10_NAME_VIEWPORT_ARRAY_INDEX,
600	D3D10_NAME_VERTEX_ID,
601	D3D10_NAME_PRIMITIVE_ID,
602	D3D10_NAME_INSTANCE_ID,
603	D3D10_NAME_IS_FRONT_FACE,
604	D3D10_NAME_SAMPLE_INDEX,
605
606	D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
607	D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
608	D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR,
609	D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
610	D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
611	D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
612
613	D3D10_NAME_TARGET = 64,
614	D3D10_NAME_DEPTH	,
615	D3D10_NAME_COVERAGE,
616
617	D3D11_NAME_DEPTH_GREATER_EQUAL,
618	D3D11_NAME_DEPTH_LESS_EQUAL,
619} D3D_NAME;
620
621typedef enum D3D_RESOURCE_RETURN_TYPE
622{
623	D3D_RETURN_TYPE_UNORM = 1,
624	D3D_RETURN_TYPE_SNORM,
625	D3D_RETURN_TYPE_SINT,
626	D3D_RETURN_TYPE_UINT,
627	D3D_RETURN_TYPE_FLOAT,
628	D3D_RETURN_TYPE_MIXED,
629	D3D_RETURN_TYPE_DOUBLE,
630	D3D_RETURN_TYPE_CONTINUED,
631
632	D3D10_RETURN_TYPE_UNORM = 1,
633	D3D10_RETURN_TYPE_SNORM,
634	D3D10_RETURN_TYPE_SINT,
635	D3D10_RETURN_TYPE_UINT,
636	D3D10_RETURN_TYPE_FLOAT,
637	D3D10_RETURN_TYPE_MIXED,
638
639	D3D11_RETURN_TYPE_UNORM = 1,
640	D3D11_RETURN_TYPE_SNORM,
641	D3D11_RETURN_TYPE_SINT,
642	D3D11_RETURN_TYPE_UINT,
643	D3D11_RETURN_TYPE_FLOAT,
644	D3D11_RETURN_TYPE_MIXED,
645	D3D11_RETURN_TYPE_DOUBLE,
646	D3D11_RETURN_TYPE_CONTINUED,
647} D3D_RESOURCE_RETURN_TYPE;
648
649typedef enum D3D_REGISTER_COMPONENT_TYPE
650{
651	D3D_REGISTER_COMPONENT_UNKNOWN = 0,
652	D3D_REGISTER_COMPONENT_UINT32,
653	D3D_REGISTER_COMPONENT_SINT32,
654	D3D_REGISTER_COMPONENT_FLOAT32,
655
656	D3D10_REGISTER_COMPONENT_UNKNOWN = 0,
657	D3D10_REGISTER_COMPONENT_UINT32,
658	D3D10_REGISTER_COMPONENT_SINT32,
659	D3D10_REGISTER_COMPONENT_FLOAT32,
660} D3D_REGISTER_COMPONENT_TYPE;
661
662typedef enum D3D_TESSELLATOR_DOMAIN
663{
664	D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
665	D3D_TESSELLATOR_DOMAIN_ISOLINE,
666	D3D_TESSELLATOR_DOMAIN_TRI,
667	D3D_TESSELLATOR_DOMAIN_QUAD,
668
669	D3D11_TESSELLATOR_DOMAIN_UNDEFINED = 0,
670	D3D11_TESSELLATOR_DOMAIN_ISOLINE,
671	D3D11_TESSELLATOR_DOMAIN_TRI,
672	D3D11_TESSELLATOR_DOMAIN_QUAD,
673} D3D_TESSELLATOR_DOMAIN;
674
675typedef enum D3D_TESSELLATOR_PARTITIONING
676{
677	D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
678	D3D_TESSELLATOR_PARTITIONING_INTEGER,
679	D3D_TESSELLATOR_PARTITIONING_POW2,
680	D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
681	D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
682
683	D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
684	D3D11_TESSELLATOR_PARTITIONING_INTEGER,
685	D3D11_TESSELLATOR_PARTITIONING_POW2,
686	D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
687	D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
688} D3D_TESSELLATOR_PARTITIONING;
689
690typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
691{
692	D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
693	D3D_TESSELLATOR_OUTPUT_POINT,
694	D3D_TESSELLATOR_OUTPUT_LINE,
695	D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
696	D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
697
698	D3D11_TESSELLATOR_OUTPUT_UNDEFINED = 0,
699	D3D11_TESSELLATOR_OUTPUT_POINT,
700	D3D11_TESSELLATOR_OUTPUT_LINE,
701	D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW,
702	D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
703} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
704
705