include: Fix interface definition.
[wine] / include / d3d11.idl
1 /*
2  * Copyright 2010 Rico Schüller
3  * Copyright 2013 Austin English
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19
20 import "oaidl.idl";
21 import "ocidl.idl";
22 import "dxgi.idl";
23 import "d3dcommon.idl";
24
25 typedef D3D_PRIMITIVE D3D11_PRIMITIVE;
26 typedef D3D_PRIMITIVE_TOPOLOGY D3D11_PRIMITIVE_TOPOLOGY;
27 typedef D3D_SRV_DIMENSION D3D11_SRV_DIMENSION;
28 typedef RECT D3D11_RECT;
29
30 const unsigned int D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
31
32 typedef enum D3D11_BLEND
33 {
34     D3D11_BLEND_ZERO = 1,
35     D3D11_BLEND_ONE = 2,
36     D3D11_BLEND_SRC_COLOR = 3,
37     D3D11_BLEND_INV_SRC_COLOR = 4,
38     D3D11_BLEND_SRC_ALPHA = 5,
39     D3D11_BLEND_INV_SRC_ALPHA = 6,
40     D3D11_BLEND_DEST_ALPHA = 7,
41     D3D11_BLEND_INV_DEST_ALPHA = 8,
42     D3D11_BLEND_DEST_COLOR = 9,
43     D3D11_BLEND_INV_DEST_COLOR = 10,
44     D3D11_BLEND_SRC_ALPHA_SAT = 11,
45     D3D11_BLEND_BLEND_FACTOR = 14,
46     D3D11_BLEND_INV_BLEND_FACTOR = 15,
47     D3D11_BLEND_SRC1_COLOR = 16,
48     D3D11_BLEND_INV_SRC1_COLOR = 17,
49     D3D11_BLEND_SRC1_ALPHA = 18,
50     D3D11_BLEND_INV_SRC1_ALPHA = 19,
51 } D3D11_BLEND;
52
53 typedef enum D3D11_BLEND_OP
54 {
55     D3D11_BLEND_OP_ADD = 1,
56     D3D11_BLEND_OP_SUBTRACT,
57     D3D11_BLEND_OP_REV_SUBTRACT,
58     D3D11_BLEND_OP_MIN,
59     D3D11_BLEND_OP_MAX
60 } D3D11_BLEND_OP;
61
62 typedef struct D3D11_BOX
63 {
64     UINT left;
65     UINT top;
66     UINT front;
67     UINT right;
68     UINT bottom;
69     UINT back;
70 } D3D11_BOX;
71
72 typedef struct D3D11_BUFFER_RTV
73 {
74     union
75     {
76         UINT FirstElement;
77         UINT ElementOffset;
78     };
79     union
80     {
81         UINT NumElements;
82         UINT ElementWidth;
83     };
84 } D3D11_BUFFER_RTV;
85
86 typedef struct D3D11_BUFFER_SRV
87 {
88     union
89     {
90         UINT FirstElement;
91         UINT ElementOffset;
92     };
93     union
94     {
95         UINT NumElements;
96         UINT ElementWidth;
97     };
98 } D3D11_BUFFER_SRV;
99
100 typedef struct D3D11_BUFFER_UAV
101 {
102     UINT FirstElement;
103     UINT NumElements;
104     UINT Flags;
105 } D3D11_BUFFER_UAV;
106
107 typedef struct D3D11_BUFFEREX_SRV
108 {
109     UINT FirstElement;
110     UINT NumElements;
111     UINT Flags;
112 } D3D11_BUFFEREX_SRV;
113
114 typedef struct D3D11_CLASS_INSTANCE_DESC
115 {
116     UINT InstanceId;
117     UINT InstanceIndex;
118     UINT TypeId;
119     UINT ConstantBuffer;
120     UINT BaseConstantBufferOffset;
121     UINT BaseTexture;
122     UINT BaseSampler;
123     BOOL Created;
124 } D3D11_CLASS_INSTANCE_DESC;
125
126 typedef enum D3D11_COMPARISON_FUNC
127 {
128     D3D11_COMPARISON_NEVER = 1,
129     D3D11_COMPARISON_LESS,
130     D3D11_COMPARISON_EQUAL,
131     D3D11_COMPARISON_LESS_EQUAL,
132     D3D11_COMPARISON_GREATER,
133     D3D11_COMPARISON_NOT_EQUAL,
134     D3D11_COMPARISON_GREATER_EQUAL,
135     D3D11_COMPARISON_ALWAYS
136 } D3D11_COMPARISON_FUNC;
137
138 typedef enum D3D11_COUNTER
139 {
140     D3D11_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000,
141 } D3D11_COUNTER;
142
143 typedef struct D3D11_COUNTER_DESC
144 {
145     D3D11_COUNTER Counter;
146     UINT MiscFlags;
147 } D3D11_COUNTER_DESC;
148
149 typedef struct D3D11_COUNTER_INFO
150 {
151     D3D11_COUNTER LastDeviceDependentCounter;
152     UINT NumSimultaneousCounters;
153     UINT8 NumDetectableParallelUnits;
154 } D3D11_COUNTER_INFO;
155
156 typedef enum D3D11_COUNTER_TYPE
157 {
158     D3D11_COUNTER_TYPE_FLOAT32,
159     D3D11_COUNTER_TYPE_UINT16,
160     D3D11_COUNTER_TYPE_UINT32,
161     D3D11_COUNTER_TYPE_UINT64,
162 } D3D11_COUNTER_TYPE;
163
164 typedef enum D3D11_CULL_MODE
165 {
166     D3D11_CULL_NONE = 1,
167     D3D11_CULL_FRONT,
168     D3D11_CULL_BACK
169 } D3D11_CULL_MODE;
170
171 typedef enum D3D11_DEPTH_WRITE_MASK
172 {
173     D3D11_DEPTH_WRITE_MASK_ZERO,
174     D3D11_DEPTH_WRITE_MASK_ALL,
175 } D3D11_DEPTH_WRITE_MASK;
176
177 typedef enum D3D11_DEVICE_CONTEXT_TYPE
178 {
179     D3D11_DEVICE_CONTEXT_IMMEDIATE,
180     D3D11_DEVICE_CONTEXT_DEFERRED,
181 } D3D11_DEVICE_CONTEXT_TYPE;
182
183 typedef enum D3D11_DSV_DIMENSION
184 {
185     D3D11_DSV_DIMENSION_UNKNOWN,
186     D3D11_DSV_DIMENSION_TEXTURE1D,
187     D3D11_DSV_DIMENSION_TEXTURE1DARRAY,
188     D3D11_DSV_DIMENSION_TEXTURE2D,
189     D3D11_DSV_DIMENSION_TEXTURE2DARRAY,
190     D3D11_DSV_DIMENSION_TEXTURE2DMS,
191     D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY,
192 } D3D11_DSV_DIMENSION;
193
194 typedef enum D3D11_FEATURE
195 {
196     D3D11_FEATURE_THREADING,
197     D3D11_FEATURE_DOUBLES,
198     D3D11_FEATURE_FORMAT_SUPPORT,
199     D3D11_FEATURE_FORMAT_SUPPORT2,
200     D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS,
201 } D3D11_FEATURE;
202
203 typedef enum D3D11_FILL_MODE
204 {
205     D3D11_FILL_WIREFRAME = 2,
206     D3D11_FILL_SOLID
207 } D3D11_FILL_MODE;
208
209 typedef enum D3D11_FILTER
210 {
211     D3D11_FILTER_MIN_MAG_MIP_POINT = 0x00,
212     D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x01,
213     D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x04,
214     D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x05,
215     D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
216     D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
217     D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
218     D3D11_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
219     D3D11_FILTER_ANISOTROPIC = 0x55,
220     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
221     D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
222     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
223     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
224     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
225     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
226     D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
227     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
228     D3D11_FILTER_COMPARISON_ANISOTROPIC = 0xd5
229 } D3D11_FILTER;
230
231 typedef enum D3D11_DSV_FLAG
232 {
233     D3D11_DSV_READ_ONLY_DEPTH = 0x1,
234     D3D11_DSV_READ_ONLY_STENCIL = 0x2,
235 } D3D11_DSV_FLAG;
236
237 typedef enum D3D11_INPUT_CLASSIFICATION
238 {
239     D3D11_INPUT_PER_VERTEX_DATA,
240     D3D11_INPUT_PER_INSTANCE_DATA,
241 } D3D11_INPUT_CLASSIFICATION;
242
243 typedef struct D3D11_INPUT_ELEMENT_DESC
244 {
245     LPCSTR SemanticName;
246     UINT SemanticIndex;
247     DXGI_FORMAT Format;
248     UINT InputSlot;
249     UINT AlignedByteOffset;
250     D3D11_INPUT_CLASSIFICATION InputSlotClass;
251     UINT InstanceDataStepRate;
252 } D3D11_INPUT_ELEMENT_DESC;
253
254 typedef enum D3D11_MAP
255 {
256     D3D11_MAP_READ = 1,
257     D3D11_MAP_WRITE,
258     D3D11_MAP_READ_WRITE,
259     D3D11_MAP_WRITE_DISCARD,
260     D3D11_MAP_WRITE_NO_OVERWRITE
261 } D3D11_MAP;
262
263 typedef struct D3D11_MAPPED_SUBRESOURCE
264 {
265     void *pData;
266     UINT RowPitch;
267     UINT DepthPitch;
268 } D3D11_MAPPED_SUBRESOURCE;
269
270 typedef enum D3D11_QUERY
271 {
272     D3D11_QUERY_EVENT,
273     D3D11_QUERY_OCCLUSION,
274     D3D11_QUERY_TIMESTAMP,
275     D3D11_QUERY_TIMESTAMP_DISJOINT,
276     D3D11_QUERY_PIPELINE_STATISTICS,
277     D3D11_QUERY_OCCLUSION_PREDICATE,
278     D3D11_QUERY_SO_STATISTICS,
279     D3D11_QUERY_SO_OVERFLOW_PREDICATE,
280     D3D11_QUERY_SO_STATISTICS_STREAM0,
281     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0,
282     D3D11_QUERY_SO_STATISTICS_STREAM1,
283     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1,
284     D3D11_QUERY_SO_STATISTICS_STREAM2,
285     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2,
286     D3D11_QUERY_SO_STATISTICS_STREAM3,
287     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3,
288 } D3D11_QUERY;
289
290 typedef struct D3D11_QUERY_DESC
291 {
292     D3D11_QUERY Query;
293     UINT MiscFlags;
294 } D3D11_QUERY_DESC;
295
296 typedef struct D3D11_RASTERIZER_DESC
297 {
298     D3D11_FILL_MODE FillMode;
299     D3D11_CULL_MODE CullMode;
300     BOOL FrontCounterClockwise;
301     INT DepthBias;
302     FLOAT DepthBiasClamp;
303     FLOAT SlopeScaledDepthBias;
304     BOOL DepthClipEnable;
305     BOOL ScissorEnable;
306     BOOL MultisampleEnable;
307     BOOL AntialiasedLineEnable;
308 } D3D11_RASTERIZER_DESC;
309
310 typedef enum D3D11_RESOURCE_DIMENSION
311 {
312     D3D11_RESOURCE_DIMENSION_UNKNOWN,
313     D3D11_RESOURCE_DIMENSION_BUFFER,
314     D3D11_RESOURCE_DIMENSION_TEXTURE1D,
315     D3D11_RESOURCE_DIMENSION_TEXTURE2D,
316     D3D11_RESOURCE_DIMENSION_TEXTURE3D,
317 } D3D11_RESOURCE_DIMENSION;
318
319 typedef enum D3D11_RTV_DIMENSION
320 {
321     D3D11_RTV_DIMENSION_UNKNOWN,
322     D3D11_RTV_DIMENSION_BUFFER,
323     D3D11_RTV_DIMENSION_TEXTURE1D,
324     D3D11_RTV_DIMENSION_TEXTURE1DARRAY,
325     D3D11_RTV_DIMENSION_TEXTURE2D,
326     D3D11_RTV_DIMENSION_TEXTURE2DARRAY,
327     D3D11_RTV_DIMENSION_TEXTURE2DMS,
328     D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY,
329     D3D11_RTV_DIMENSION_TEXTURE3D,
330 } D3D11_RTV_DIMENSION;
331
332 typedef struct D3D11_SO_DECLARATION_ENTRY
333 {
334     UINT Stream;
335     LPCSTR SemanticName;
336     UINT SemanticIndex;
337     BYTE StartComponent;
338     BYTE ComponentCount;
339     BYTE OutputSlot;
340 } D3D11_SO_DECLARATION_ENTRY;
341
342 typedef enum D3D11_STENCIL_OP
343 {
344     D3D11_STENCIL_OP_KEEP = 1,
345     D3D11_STENCIL_OP_ZERO,
346     D3D11_STENCIL_OP_REPLACE,
347     D3D11_STENCIL_OP_INCR_SAT,
348     D3D11_STENCIL_OP_DECR_SAT,
349     D3D11_STENCIL_OP_INVERT,
350     D3D11_STENCIL_OP_INCR,
351     D3D11_STENCIL_OP_DECR
352 } D3D11_STENCIL_OP;
353
354 typedef struct D3D11_SUBRESOURCE_DATA
355 {
356     const void *pSysMem;
357     UINT SysMemPitch;
358     UINT SysMemSlicePitch;
359 } D3D11_SUBRESOURCE_DATA;
360
361 typedef struct D3D11_TEX1D_ARRAY_DSV
362 {
363     UINT MipSlice;
364     UINT FirstArraySlice;
365     UINT ArraySize;
366 } D3D11_TEX1D_ARRAY_DSV;
367
368 typedef struct D3D11_TEX1D_ARRAY_RTV
369 {
370     UINT MipSlice;
371     UINT FirstArraySlice;
372     UINT ArraySize;
373 } D3D11_TEX1D_ARRAY_RTV;
374
375 typedef struct D3D11_TEX1D_ARRAY_SRV
376 {
377     UINT MostDetailedMip;
378     UINT MipLevels;
379     UINT FirstArraySlice;
380     UINT ArraySize;
381 } D3D11_TEX1D_ARRAY_SRV;
382
383 typedef struct D3D11_TEX1D_ARRAY_UAV
384 {
385     UINT MipSlice;
386     UINT FirstArraySlice;
387     UINT ArraySize;
388 } D3D11_TEX1D_ARRAY_UAV;
389
390 typedef struct D3D11_TEX1D_DSV
391 {
392     UINT MipSlice;
393 } D3D11_TEX1D_DSV;
394
395 typedef struct D3D11_TEX1D_RTV
396 {
397     UINT MipSlice;
398 } D3D11_TEX1D_RTV;
399
400 typedef struct D3D11_TEX1D_SRV
401 {
402     UINT MostDetailedMip;
403     UINT MipLevels;
404  } D3D11_TEX1D_SRV;
405
406 typedef struct D3D11_TEX1D_UAV
407 {
408     UINT MipSlice;
409 } D3D11_TEX1D_UAV;
410
411 typedef struct D3D11_TEX2D_ARRAY_DSV
412 {
413     UINT MipSlice;
414     UINT FirstArraySlice;
415     UINT ArraySize;
416 } D3D11_TEX2D_ARRAY_DSV;
417
418 typedef struct D3D11_TEX2D_ARRAY_RTV
419 {
420     UINT MipSlice;
421     UINT FirstArraySlice;
422     UINT ArraySize;
423 } D3D11_TEX2D_ARRAY_RTV;
424
425 typedef struct D3D11_TEX2D_ARRAY_SRV
426 {
427     UINT MostDetailedMip;
428     UINT MipLevels;
429     UINT FirstArraySlice;
430     UINT ArraySize;
431 } D3D11_TEX2D_ARRAY_SRV;
432
433 typedef struct D3D11_TEX2D_ARRAY_UAV
434 {
435     UINT MipSlice;
436     UINT FirstArraySlice;
437     UINT ArraySize;
438 } D3D11_TEX2D_ARRAY_UAV;
439
440 typedef struct D3D11_TEX2D_DSV
441 {
442     UINT MipSlice;
443 } D3D11_TEX2D_DSV;
444
445 typedef struct D3D11_TEX2D_RTV
446 {
447     UINT MipSlice;
448 } D3D11_TEX2D_RTV;
449
450 typedef struct D3D11_TEX2D_SRV
451 {
452     UINT MostDetailedMip;
453     UINT MipLevels;
454 } D3D11_TEX2D_SRV;
455
456 typedef struct D3D11_TEX2D_UAV
457 {
458     UINT MipSlice;
459 } D3D11_TEX2D_UAV;
460
461 typedef struct D3D11_TEX2DMS_ARRAY_DSV
462 {
463     UINT FirstArraySlice;
464     UINT ArraySize;
465 } D3D11_TEX2DMS_ARRAY_DSV;
466
467 typedef struct D3D11_TEX2DMS_ARRAY_RTV
468 {
469     UINT FirstArraySlice;
470     UINT ArraySize;
471 } D3D11_TEX2DMS_ARRAY_RTV;
472
473 typedef struct D3D11_TEX2DMS_ARRAY_SRV
474 {
475     UINT FirstArraySlice;
476     UINT ArraySize;
477 } D3D11_TEX2DMS_ARRAY_SRV;
478
479 typedef struct D3D11_TEX2DMS_DSV
480 {
481     UINT UnusedField_NothingToDefine;
482 } D3D11_TEX2DMS_DSV;
483
484 typedef struct D3D11_TEX2DMS_RTV
485 {
486     UINT UnusedField_NothingToDefine;
487 } D3D11_TEX2DMS_RTV;
488
489 typedef struct D3D11_TEX2DMS_SRV
490 {
491     UINT UnusedField_NothingToDefine;
492 } D3D11_TEX2DMS_SRV;
493
494 typedef struct D3D11_TEX3D_RTV
495 {
496     UINT MipSlice;
497     UINT FirstWSlice;
498     UINT WSize;
499 } D3D11_TEX3D_RTV;
500
501 typedef struct D3D11_TEX3D_SRV
502 {
503     UINT MostDetailedMip;
504     UINT MipLevels;
505 } D3D11_TEX3D_SRV;
506
507 typedef struct D3D11_TEX3D_UAV
508 {
509     UINT MipSlice;
510     UINT FirstWSlice;
511     UINT WSize;
512 } D3D11_TEX3D_UAV;
513
514 typedef struct D3D11_TEXCUBE_ARRAY_SRV
515 {
516     UINT MostDetailedMip;
517     UINT MipLevels;
518     UINT First2DArrayFace;
519     UINT NumCubes;
520 } D3D11_TEXCUBE_ARRAY_SRV;
521
522 typedef struct D3D11_TEXCUBE_SRV
523 {
524     UINT MostDetailedMip;
525     UINT MipLevels;
526 } D3D11_TEXCUBE_SRV;
527
528 typedef enum D3D11_TEXTURE_ADDRESS_MODE
529 {
530     D3D11_TEXTURE_ADDRESS_WRAP = 1,
531     D3D11_TEXTURE_ADDRESS_MIRROR,
532     D3D11_TEXTURE_ADDRESS_CLAMP,
533     D3D11_TEXTURE_ADDRESS_BORDER,
534     D3D11_TEXTURE_ADDRESS_MIRROR_ONCE
535 } D3D11_TEXTURE_ADDRESS_MODE;
536
537 typedef enum D3D11_UAV_DIMENSION
538 {
539     D3D11_UAV_DIMENSION_UNKNOWN,
540     D3D11_UAV_DIMENSION_BUFFER,
541     D3D11_UAV_DIMENSION_TEXTURE1D,
542     D3D11_UAV_DIMENSION_TEXTURE1DARRAY,
543     D3D11_UAV_DIMENSION_TEXTURE2D,
544     D3D11_UAV_DIMENSION_TEXTURE2DARRAY,
545     D3D11_UAV_DIMENSION_TEXTURE3D = 8,
546 } D3D11_UAV_DIMENSION;
547
548 typedef struct D3D11_UNORDERED_ACCESS_VIEW_DESC
549 {
550     DXGI_FORMAT Format;
551     D3D11_UAV_DIMENSION ViewDimension;
552
553     union
554     {
555         D3D11_BUFFER_UAV Buffer;
556         D3D11_TEX1D_UAV Texture1D;
557         D3D11_TEX1D_ARRAY_UAV Texture1DArray;
558         D3D11_TEX2D_UAV Texture2D;
559         D3D11_TEX2D_ARRAY_UAV Texture2DArray;
560         D3D11_TEX3D_UAV Texture3D;
561     };
562 } D3D11_UNORDERED_ACCESS_VIEW_DESC;
563
564 typedef enum D3D11_USAGE
565 {
566     D3D11_USAGE_DEFAULT,
567     D3D11_USAGE_IMMUTABLE,
568     D3D11_USAGE_DYNAMIC,
569     D3D11_USAGE_STAGING,
570 } D3D11_USAGE;
571
572 typedef struct D3D11_VIEWPORT
573 {
574     FLOAT TopLeftX;
575     FLOAT TopLeftY;
576     FLOAT Width;
577     FLOAT Height;
578     FLOAT MinDepth;
579     FLOAT MaxDepth;
580 } D3D11_VIEWPORT;
581
582 typedef struct D3D11_RENDER_TARGET_BLEND_DESC
583 {
584     BOOL BlendEnable;
585     D3D11_BLEND SrcBlend;
586     D3D11_BLEND DestBlend;
587     D3D11_BLEND_OP BlendOp;
588     D3D11_BLEND SrcBlendAlpha;
589     D3D11_BLEND DestBlendAlpha;
590     D3D11_BLEND_OP BlendOpAlpha;
591     UINT8 RenderTargetWriteMask;
592 } D3D11_RENDER_TARGET_BLEND_DESC;
593
594 typedef struct D3D11_BLEND_DESC
595 {
596     BOOL AlphaToCoverageEnable;
597     BOOL IndependentBlendEnable;
598     D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT];
599 } D3D11_BLEND_DESC;
600
601 typedef struct D3D11_BUFFER_DESC
602 {
603     UINT ByteWidth;
604     D3D11_USAGE Usage;
605     UINT BindFlags;
606     UINT CPUAccessFlags;
607     UINT MiscFlags;
608     UINT StructureByteStride;
609 } D3D11_BUFFER_DESC;
610
611 typedef struct D3D11_DEPTH_STENCIL_VIEW_DESC
612 {
613     DXGI_FORMAT Format;
614     D3D11_DSV_DIMENSION ViewDimension;
615     UINT Flags;
616
617     union
618     {
619         D3D11_TEX1D_DSV Texture1D;
620         D3D11_TEX1D_ARRAY_DSV Texture1DArray;
621         D3D11_TEX2D_DSV Texture2D;
622         D3D11_TEX2D_ARRAY_DSV Texture2DArray;
623         D3D11_TEX2DMS_DSV Texture2DMS;
624         D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray;
625     };
626 } D3D11_DEPTH_STENCIL_VIEW_DESC;
627
628 typedef struct D3D11_DEPTH_STENCILOP_DESC
629 {
630     D3D11_STENCIL_OP StencilFailOp;
631     D3D11_STENCIL_OP StencilDepthFailOp;
632     D3D11_STENCIL_OP StencilPassOp;
633     D3D11_COMPARISON_FUNC StencilFunc;
634 } D3D11_DEPTH_STENCILOP_DESC;
635
636 typedef struct D3D11_DEPTH_STENCIL_DESC
637 {
638     BOOL DepthEnable;
639     D3D11_DEPTH_WRITE_MASK DepthWriteMask;
640     D3D11_COMPARISON_FUNC DepthFunc;
641     BOOL StencilEnable;
642     UINT8 StencilReadMask;
643     UINT8 StencilWriteMask;
644     D3D11_DEPTH_STENCILOP_DESC FrontFace;
645     D3D11_DEPTH_STENCILOP_DESC BackFace;
646 } D3D11_DEPTH_STENCIL_DESC;
647
648 typedef struct D3D11_RENDER_TARGET_VIEW_DESC
649 {
650     DXGI_FORMAT Format;
651     D3D11_RTV_DIMENSION ViewDimension;
652
653     union
654     {
655         D3D11_BUFFER_RTV Buffer;
656         D3D11_TEX1D_RTV Texture1D;
657         D3D11_TEX1D_ARRAY_RTV Texture1DArray;
658         D3D11_TEX2D_RTV Texture2D;
659         D3D11_TEX2D_ARRAY_RTV Texture2DArray;
660         D3D11_TEX2DMS_RTV Texture2DMS;
661         D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray;
662         D3D11_TEX3D_RTV Texture3D;
663     };
664 } D3D11_RENDER_TARGET_VIEW_DESC;
665
666 typedef struct D3D11_SAMPLER_DESC
667 {
668     D3D11_FILTER Filter;
669     D3D11_TEXTURE_ADDRESS_MODE AddressU;
670     D3D11_TEXTURE_ADDRESS_MODE AddressV;
671     D3D11_TEXTURE_ADDRESS_MODE AddressW;
672     FLOAT MipLODBias;
673     UINT MaxAnisotropy;
674     D3D11_COMPARISON_FUNC ComparisonFunc;
675     FLOAT BorderColor[4];
676     FLOAT MinLOD;
677     FLOAT MaxLOD;
678 } D3D11_SAMPLER_DESC;
679
680 typedef struct D3D11_SHADER_RESOURCE_VIEW_DESC
681 {
682     DXGI_FORMAT Format;
683     D3D11_SRV_DIMENSION ViewDimension;
684
685     union
686     {
687         D3D11_BUFFER_SRV Buffer;
688         D3D11_TEX1D_SRV Texture1D;
689         D3D11_TEX1D_ARRAY_SRV Texture1DArray;
690         D3D11_TEX2D_SRV Texture2D;
691         D3D11_TEX2D_ARRAY_SRV Texture2DArray;
692         D3D11_TEX2DMS_SRV Texture2DMS;
693         D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray;
694         D3D11_TEX3D_SRV Texture3D;
695         D3D11_TEXCUBE_SRV TextureCube;
696         D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray;
697         D3D11_BUFFEREX_SRV BufferEx;
698     };
699 } D3D11_SHADER_RESOURCE_VIEW_DESC;
700
701 typedef struct D3D11_TEXTURE1D_DESC
702 {
703     UINT Width;
704     UINT MipLevels;
705     UINT ArraySize;
706     DXGI_FORMAT Format;
707     D3D11_USAGE Usage;
708     UINT BindFlags;
709     UINT CPUAccessFlags;
710     UINT MiscFlags;
711 } D3D11_TEXTURE1D_DESC;
712
713 typedef struct D3D11_TEXTURE2D_DESC
714 {
715     UINT Width;
716     UINT Height;
717     UINT MipLevels;
718     UINT ArraySize;
719     DXGI_FORMAT Format;
720     DXGI_SAMPLE_DESC SampleDesc;
721     D3D11_USAGE Usage;
722     UINT BindFlags;
723     UINT CPUAccessFlags;
724     UINT MiscFlags;
725 } D3D11_TEXTURE2D_DESC;
726
727 typedef struct D3D11_TEXTURE3D_DESC
728 {
729     UINT Width;
730     UINT Height;
731     UINT Depth;
732     UINT MipLevels;
733     DXGI_FORMAT Format;
734     D3D11_USAGE Usage;
735     UINT BindFlags;
736     UINT CPUAccessFlags;
737     UINT MiscFlags;
738 } D3D11_TEXTURE3D_DESC;
739
740 /* A couple forward declarations are needed */
741 interface ID3D11Device;
742 interface ID3D11ClassLinkage;
743
744 [
745     object,
746     local,
747     uuid(1841e5c8-16b0-489b-bcc8-44cfb0d5deae)
748 ]
749 interface ID3D11DeviceChild : IUnknown
750 {
751     void GetDevice(
752         [out] ID3D11Device **ppDevice);
753     HRESULT GetPrivateData(
754         [in] REFGUID guid,
755         [in, out] UINT *pDataSize,
756         [out] void *pData);
757     HRESULT SetPrivateData(
758         [in] REFGUID guid,
759         [in] UINT DataSize,
760         [in] const void *pData);
761     HRESULT SetPrivateDataInterface(
762         [in] REFGUID guid,
763         [in] const IUnknown *pData);
764 }
765
766 [
767     object,
768     local,
769     uuid(4b35d0cd-1e15-4258-9c98-1b1333f6dd3b)
770 ]
771 interface ID3D11Asynchronous : ID3D11DeviceChild
772 {
773     UINT GetDataSize();
774 }
775
776 [
777     object,
778     local,
779     uuid(d6c00747-87b7-425e-b84d-44d108560afd)
780 ]
781 interface ID3D11Query : ID3D11Asynchronous
782 {
783     void GetDesc(
784         [out] D3D11_QUERY_DESC *pDesc);
785 }
786
787 [
788     object,
789     local,
790     uuid(dc8e63f3-d12b-4952-b47b-5e45026a862d)
791 ]
792 interface ID3D11Resource : ID3D11DeviceChild
793 {
794     void GetType(
795         [out] D3D11_RESOURCE_DIMENSION *pResourceDimension);
796     void SetEvictionPriority(
797         [in] UINT EvictionPriority);
798     UINT GetEvictionPriority();
799 }
800
801 [
802     object,
803     local,
804     uuid(839d1216-bb2e-412b-b7f4-a9dbebe08ed1)
805 ]
806 interface ID3D11View : ID3D11DeviceChild
807 {
808     void GetResource(
809         [out] ID3D11Resource **ppResource);
810 }
811
812 [
813     object,
814     local,
815     uuid(75b68faa-347d-4159-8f45-a0640f01cd9a)
816 ]
817 interface ID3D11BlendState : ID3D11DeviceChild
818 {
819     void GetDesc(
820         [out] D3D11_BLEND_DESC *pDesc);
821 }
822
823 [
824     object,
825     local,
826     uuid(48570b85-d1ee-4fcd-a250-eb350722b037)
827 ]
828 interface ID3D11Buffer : ID3D11Resource
829 {
830     void GetDesc(
831         [out] D3D11_BUFFER_DESC *pDesc);
832 }
833
834 [
835     object,
836     local,
837     uuid(a6cd7faa-b0b7-4a2f-9436-8662a65797cb)
838 ]
839 interface ID3D11ClassInstance : ID3D11DeviceChild
840 {
841     void GetClassLinkage(
842         [out] ID3D11ClassLinkage **ppLinkage);
843     void GetDesc(
844         [out] D3D11_CLASS_INSTANCE_DESC *pDesc);
845     void GetInstanceName(
846         [out] LPSTR pInstanceName,
847         [in, out] SIZE_T *pBufferLength);
848     void GetTypeName(
849         [out] LPSTR pTypeName,
850         [in, out] SIZE_T *pBufferLength);
851 }
852
853 [
854     object,
855     local,
856     uuid(ddf57cba-9543-46e4-a12b-f207a0fe7fed)
857 ]
858 interface ID3D11ClassLinkage : ID3D11DeviceChild
859 {
860     HRESULT GetClassInstance(
861         [in] LPCSTR pClassInstanceName,
862         [in] UINT InstanceIndex,
863         [out] ID3D11ClassInstance **ppInstance);
864     HRESULT CreateClassInstance(
865         [in] LPCSTR pClassTypeName,
866         [in] UINT ConstantBufferOffset,
867         [in] UINT ConstantVectorOffset,
868         [in] UINT TextureOffset,
869         [in] UINT SamplerOffset,
870         [out] ID3D11ClassInstance **ppInstance);
871 }
872
873 [
874     object,
875     local,
876     uuid(a24bc4d1-769e-43f7-8013-98ff566c18e2)
877 ]
878 interface ID3D11CommandList : ID3D11DeviceChild
879 {
880     UINT GetContextFlags();
881 }
882
883 [
884     object,
885     local,
886     uuid(4f5b196e-c2bd-495e-bd01-1fded38e4969)
887 ]
888 interface ID3D11ComputeShader : ID3D11DeviceChild
889 {
890 }
891
892 [
893     object,
894     local,
895     uuid(6e8c49fb-a371-4770-b440-29086022b741)
896 ]
897 interface ID3D11Counter : ID3D11Asynchronous
898 {
899     void GetDesc(
900         [out] D3D11_COUNTER_DESC *pDesc);
901 }
902
903 [
904     object,
905     local,
906     uuid(03823efb-8d8f-4e1c-9aa2-f64bb2cbfdf1)
907 ]
908 interface ID3D11DepthStencilState : ID3D11DeviceChild
909 {
910     void GetDesc(
911         [out] D3D11_DEPTH_STENCIL_DESC *pDesc);
912 }
913
914 [
915     object,
916     local,
917     uuid(9fdac92a-1876-48c3-afad-25b94f84a9b6)
918 ]
919 interface ID3D11DepthStencilView : ID3D11View
920 {
921     void GetDesc(
922         [out] D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc);
923 }
924
925 [
926     object,
927     local,
928     uuid(f582c508-0f36-490c-9977-31eece268cfa)
929 ]
930 interface ID3D11DomainShader : ID3D11DeviceChild
931 {
932 }
933
934 [
935     object,
936     local,
937     uuid(38325b96-effb-4022-ba02-2e795b70275c)
938 ]
939 interface ID3D11GeometryShader : ID3D11DeviceChild
940 {
941 }
942
943 [
944     object,
945     local,
946     uuid(8e5c6061-628a-4c8e-8264-bbe45cb3d5dd)
947 ]
948 interface ID3D11HullShader : ID3D11DeviceChild
949 {
950 }
951
952 [
953     object,
954     local,
955     uuid(e4819ddc-4cf0-4025-bd26-5de82a3e07b7)
956 ]
957 interface ID3D11InputLayout : ID3D11DeviceChild
958 {
959 }
960
961 [
962     object,
963     local,
964     uuid(ea82e40d-51dc-4f33-93d4-db7c9125ae8c)
965 ]
966 interface ID3D11PixelShader : ID3D11DeviceChild
967 {
968 }
969
970 [
971     object,
972     local,
973     uuid(9eb576dd-9f77-4d86-81aa-8bab5fe490e2)
974 ]
975 interface ID3D11Predicate : ID3D11Query
976 {
977 }
978
979 [
980     object,
981     local,
982     uuid(9bb4ab81-ab1a-4d8f-b506-fc04200b6ee7)
983 ]
984 interface ID3D11RasterizerState : ID3D11DeviceChild
985 {
986     void GetDesc(
987         [out] D3D11_RASTERIZER_DESC *pDesc);
988 }
989
990 [
991     object,
992     local,
993     uuid(dfdba067-0b8d-4865-875b-d7b4516cc164)
994 ]
995 interface ID3D11RenderTargetView : ID3D11View
996 {
997     void GetDesc(
998         [out] D3D11_RENDER_TARGET_VIEW_DESC *pDesc);
999 }
1000
1001 [
1002     object,
1003     local,
1004     uuid(da6fea51-564c-4487-9810-f0d0f9b4e3a5)
1005 ]
1006 interface ID3D11SamplerState : ID3D11DeviceChild
1007 {
1008     void GetDesc(
1009         [out] D3D11_SAMPLER_DESC *pDesc);
1010 }
1011
1012 [
1013     object,
1014     local,
1015     uuid(b0e06fe0-8192-4e1a-b1ca-36d7414710b2)
1016 ]
1017 interface ID3D11ShaderResourceView : ID3D11View
1018 {
1019     void GetDesc(
1020         [out] D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc);
1021 }
1022
1023 [
1024     object,
1025     local,
1026     uuid(f8fb5c27-c6b3-4f75-a4c8-439af2ef564c),
1027 ]
1028 interface ID3D11Texture1D : ID3D11Resource
1029 {
1030     void GetDesc(
1031         [out] D3D11_TEXTURE1D_DESC *pDesc);
1032 }
1033
1034 [
1035     object,
1036     local,
1037     uuid(6f15aaf2-d208-4e89-9ab4-489535d34f9c)
1038 ]
1039 interface ID3D11Texture2D : ID3D11Resource
1040 {
1041     void GetDesc(
1042         [out] D3D11_TEXTURE2D_DESC *pDesc);
1043 }
1044
1045 [
1046     object,
1047     local,
1048     uuid(037e866e-f56d-4357-a8af-9dabbe6e250e)
1049 ]
1050 interface ID3D11Texture3D : ID3D11Resource
1051 {
1052     void GetDesc(
1053         [out] D3D11_TEXTURE3D_DESC *pDesc);
1054 }
1055
1056 [
1057     object,
1058     local,
1059     uuid(28acf509-7f5c-48f6-8611-f316010a6380)
1060 ]
1061 interface ID3D11UnorderedAccessView : ID3D11View
1062 {
1063     void GetDesc(
1064         [out] D3D11_UNORDERED_ACCESS_VIEW_DESC *pDesc);
1065 }
1066
1067 [
1068     object,
1069     local,
1070     uuid(3b301d64-d678-4289-8897-22f8928b72f3)
1071 ]
1072 interface ID3D11VertexShader : ID3D11DeviceChild
1073 {
1074 }
1075
1076 [
1077     object,
1078     local,
1079     uuid(c0bfa96c-e089-44fb-8eaf-26f8796190da)
1080 ]
1081 interface ID3D11DeviceContext : ID3D11DeviceChild
1082 {
1083     void VSSetConstantBuffers(
1084         [in] UINT StartSlot,
1085         [in] UINT NumBuffers,
1086         [in] ID3D11Buffer *const *ppConstantBuffers);
1087     void PSSetShaderResources(
1088         [in] UINT StartSlot,
1089         [in] UINT NumViews,
1090         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
1091     void PSSetShader(
1092         [in] ID3D11PixelShader *pPixelShader,
1093         [in] ID3D11ClassInstance *const *ppClassInstances,
1094         UINT NumClassInstances);
1095     void PSSetSamplers(
1096         [in] UINT StartSlot,
1097         [in] UINT NumSamplers,
1098         [in] ID3D11SamplerState *const *ppSamplers);
1099     void VSSetShader(
1100         [in] ID3D11VertexShader *pVertexShader,
1101         [in] ID3D11ClassInstance *const *ppClassInstances,
1102         UINT NumClassInstances);
1103     void DrawIndexed(
1104         [in] UINT IndexCount,
1105         [in] UINT StartIndexLocation,
1106         [in] INT BaseVertexLocation);
1107     void Draw(
1108         [in] UINT VertexCount,
1109         [in] UINT StartVertexLocation);
1110     HRESULT Map(
1111         [in] ID3D11Resource *pResource,
1112         [in] UINT Subresource,
1113         [in] D3D11_MAP MapType,
1114         [in] UINT MapFlags,
1115         [out] D3D11_MAPPED_SUBRESOURCE *pMappedResource);
1116     void Unmap(
1117         [in] ID3D11Resource *pResource,
1118         [in] UINT Subresource);
1119     void PSSetConstantBuffers(
1120         [in] UINT StartSlot,
1121         [in] UINT NumBuffers,
1122         [in] ID3D11Buffer *const *ppConstantBuffers);
1123     void IASetInputLayout(
1124         [in] ID3D11InputLayout *pInputLayout);
1125     void IASetVertexBuffers(
1126         [in] UINT StartSlot,
1127         [in] UINT NumBuffers,
1128         [in] ID3D11Buffer *const *ppVertexBuffers,
1129         [in] const UINT *pStrides,
1130         [in] const UINT *pOffsets);
1131     void IASetIndexBuffer(
1132         [in] ID3D11Buffer *pIndexBuffer,
1133         [in] DXGI_FORMAT  Format,
1134         [in] UINT Offset);
1135     void DrawIndexedInstanced(
1136         [in] UINT IndexCountPerInstance,
1137         [in] UINT InstanceCount,
1138         [in] UINT StartIndexLocation,
1139         [in] INT BaseVertexLocation,
1140         [in] UINT StartInstanceLocation);
1141     void DrawInstanced(
1142         [in] UINT VertexCountPerInstance,
1143         [in] UINT InstanceCount,
1144         [in] UINT StartVertexLocation,
1145         [in] UINT StartInstanceLocation);
1146     void GSSetConstantBuffers(
1147         [in] UINT StartSlot,
1148         [in] UINT NumBuffers,
1149         [in] ID3D11Buffer *const *ppConstantBuffers);
1150     void GSSetShader(
1151         [in] ID3D11GeometryShader *pShader,
1152         [in] ID3D11ClassInstance *const *ppClassInstances,
1153         UINT NumClassInstances);
1154     void IASetPrimitiveTopology(
1155         [in] D3D11_PRIMITIVE_TOPOLOGY Topology);
1156     void VSSetShaderResources(
1157         [in] UINT StartSlot,
1158         [in] UINT NumViews,
1159         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
1160     void VSSetSamplers(
1161         [in] UINT StartSlot,
1162         [in] UINT NumSamplers,
1163         [in] ID3D11SamplerState *const *ppSamplers);
1164     void Begin(
1165         [in] ID3D11Asynchronous *pAsync);
1166     void End(
1167         [in] ID3D11Asynchronous *pAsync);
1168     HRESULT GetData(
1169         [in] ID3D11Asynchronous *pAsync,
1170         [in] void *pData,
1171         [in] UINT DataSize,
1172         [in] UINT GetDataFlags);
1173     void SetPredication(
1174         [in] ID3D11Predicate *pPredicate,
1175         [in] BOOL PredicateValue);
1176     void GSSetShaderResources(
1177         [in] UINT StartSlot,
1178         [in] UINT NumViews,
1179         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
1180     void GSSetSamplers(
1181         [in] UINT StartSlot,
1182         [in] UINT NumSamplers,
1183         [in] ID3D11SamplerState *const *ppSamplers);
1184     void OMSetRenderTargets(
1185         [in] UINT NumViews,
1186         [in] ID3D11RenderTargetView *const *ppRenderTargetViews,
1187         [in] ID3D11DepthStencilView *pDepthStencilView);
1188     void OMSetRenderTargetsAndUnorderedAccessViews(
1189         [in] UINT NumRTVs,
1190         [in] ID3D11RenderTargetView *const *ppRenderTargetViews,
1191         [in] ID3D11DepthStencilView *pDepthStencilView,
1192         [in] UINT UAVStartSlot,
1193         [in] UINT NumUAVs,
1194         [in] ID3D11UnorderedAccessView *const *ppUnorderedAccessViews,
1195         [in] const UINT *pUAVInitialCounts);
1196     void OMSetBlendState(
1197         [in] ID3D11BlendState *pBlendState,
1198         [in] const FLOAT BlendFactor[4],
1199         [in] UINT SampleMask);
1200     void OMSetDepthStencilState(
1201         [in] ID3D11DepthStencilState *pDepthStencilState,
1202         [in] UINT StencilRef);
1203     void SOSetTargets(
1204         [in] UINT NumBuffers,
1205         [in] ID3D11Buffer *const *ppSOTargets,
1206         [in] const UINT *pOffsets);
1207     void DrawAuto();
1208     void DrawIndexedInstancedIndirect(
1209         [in] ID3D11Buffer *pBufferForArgs,
1210         [in] UINT AlignedByteOffsetForArgs);
1211     void DrawInstancedIndirect(
1212         [in] ID3D11Buffer *pBufferForArgs,
1213         [in] UINT AlignedByteOffsetForArgs);
1214     void Dispatch(
1215         [in] UINT ThreadGroupCountX,
1216         [in] UINT ThreadGroupCountY,
1217         [in] UINT ThreadGroupCountZ);
1218     void DispatchIndirect(
1219         [in] ID3D11Buffer *pBufferForArgs,
1220         [in] UINT AlignedByteOffsetForArgs);
1221     void RSSetState(
1222         [in] ID3D11RasterizerState *pRasterizerState);
1223     void RSSetViewports(
1224         [in] UINT NumViewports,
1225         [in] const D3D11_VIEWPORT *pViewports);
1226     void RSSetScissorRects(
1227         [in] UINT NumRects,
1228         [in] const D3D11_RECT *pRects);
1229     void CopySubresourceRegion(
1230         [in] ID3D11Resource *pDstResource,
1231         [in] UINT DstSubresource,
1232         [in] UINT DstX,
1233         [in] UINT DstY,
1234         [in] UINT DstZ,
1235         [in] ID3D11Resource *pSrcResource,
1236         [in] UINT SrcSubresource,
1237         [in] const D3D11_BOX *pSrcBox);
1238     void CopyResource(
1239         [in] ID3D11Resource *pDstResource,
1240         [in] ID3D11Resource *pSrcResource);
1241     void UpdateSubresource(
1242         [in] ID3D11Resource *pDstResource,
1243         [in] UINT DstSubresource,
1244         [in] const D3D11_BOX *pDstBox,
1245         [in] const void *pSrcData,
1246         [in] UINT SrcRowPitch,
1247         [in] UINT SrcDepthPitch);
1248     void CopyStructureCount(
1249         [in] ID3D11Buffer *pDstBuffer,
1250         [in] UINT DstAlignedByteOffset,
1251         [in] ID3D11UnorderedAccessView *pSrcView);
1252     void ClearRenderTargetView(
1253         [in] ID3D11RenderTargetView *pRenderTargetView,
1254         [in] const FLOAT ColorRGBA[4]);
1255     void ClearUnorderedAccessViewUint(
1256         [in] ID3D11UnorderedAccessView *pUnorderedAccessView,
1257         [in] const UINT Values[4]);
1258     void ClearUnorderedAccessViewFloat(
1259         [in] ID3D11UnorderedAccessView *pUnorderedAccessView,
1260         [in] const FLOAT Values[4]);
1261     void ClearDepthStencilView(
1262         [in] ID3D11DepthStencilView *pDepthStencilView,
1263         [in] UINT ClearFlags,
1264         [in] FLOAT Depth,
1265         [in] UINT8 Stencil);
1266     void GenerateMips(
1267         [in] ID3D11ShaderResourceView *pShaderResourceView);
1268     void SetResourceMinLOD(
1269         [in] ID3D11Resource *pResource, FLOAT MinLOD);
1270     FLOAT GetResourceMinLOD(
1271         [in] ID3D11Resource *pResource);
1272     void ResolveSubresource(
1273         [in] ID3D11Resource *pDstResource,
1274         [in] UINT DstSubresource,
1275         [in] ID3D11Resource *pSrcResource,
1276         [in] UINT SrcSubresource,
1277         [in] DXGI_FORMAT Format);
1278     void ExecuteCommandList(
1279         [in] ID3D11CommandList *pCommandList,
1280         BOOL RestoreContextState);
1281     void HSSetShaderResources(
1282         [in] UINT StartSlot,
1283         [in] UINT NumViews,
1284         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
1285     void HSSetShader(
1286         [in] ID3D11HullShader *pHullShader,
1287         [in] ID3D11ClassInstance *const *ppClassInstances,
1288         UINT NumClassInstances);
1289     void HSSetSamplers(
1290         [in] UINT StartSlot,
1291         [in] UINT NumSamplers,
1292         [in] ID3D11SamplerState *const *ppSamplers);
1293     void HSSetConstantBuffers(
1294         [in] UINT StartSlot,
1295         [in] UINT NumBuffers,
1296         [in] ID3D11Buffer *const *ppConstantBuffers);
1297     void DSSetShaderResources(
1298         [in] UINT StartSlot,
1299         [in] UINT NumViews,
1300         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
1301     void DSSetShader(
1302         [in] ID3D11DomainShader *pDomainShader,
1303         [in] ID3D11ClassInstance *const *ppClassInstances,
1304         UINT NumClassInstances);
1305     void DSSetSamplers(
1306         [in] UINT StartSlot,
1307         [in] UINT NumSamplers,
1308         [in] ID3D11SamplerState *const *ppSamplers);
1309     void DSSetConstantBuffers(
1310         [in] UINT StartSlot,
1311         [in] UINT NumBuffers,
1312         [in] ID3D11Buffer *const *ppConstantBuffers);
1313     void CSSetShaderResources(
1314         [in] UINT StartSlot,
1315         [in] UINT NumViews,
1316         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
1317     void CSSetUnorderedAccessViews(
1318         [in] UINT StartSlot,
1319         [in] UINT NumUAVs,
1320         [in] ID3D11UnorderedAccessView *const *ppUnorderedAccessViews,
1321         [in] const UINT *pUAVInitialCounts);
1322     void CSSetShader(
1323         [in] ID3D11ComputeShader *pComputeShader,
1324         [in] ID3D11ClassInstance *const *ppClassInstances,
1325         UINT NumClassInstances);
1326     void CSSetSamplers(
1327         [in] UINT StartSlot,
1328         [in] UINT NumSamplers,
1329         [in] ID3D11SamplerState *const *ppSamplers);
1330     void CSSetConstantBuffers(
1331         [in] UINT StartSlot,
1332         [in] UINT NumBuffers,
1333         [in] ID3D11Buffer *const *ppConstantBuffers);
1334     void VSGetConstantBuffers(
1335         [in] UINT StartSlot,
1336         [in] UINT NumBuffers,
1337         [out] ID3D11Buffer **ppConstantBuffers);
1338     void PSGetShaderResources(
1339         [in] UINT StartSlot,
1340         [in] UINT NumViews,
1341         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
1342     void PSGetShader(
1343         [out] ID3D11PixelShader **ppPixelShader,
1344         [out] ID3D11ClassInstance **ppClassInstances,
1345         [in, out] UINT *pNumClassInstances);
1346     void PSGetSamplers(
1347         [in] UINT StartSlot,
1348         [in] UINT NumSamplers,
1349         [out] ID3D11SamplerState **ppSamplers);
1350     void VSGetShader(
1351         [out] ID3D11VertexShader **ppVertexShader,
1352         [out] ID3D11ClassInstance **ppClassInstances,
1353         [in, out] UINT *pNumClassInstances);
1354     void PSGetConstantBuffers(
1355         [in] UINT StartSlot,
1356         [in] UINT NumBuffers,
1357         [out] ID3D11Buffer **ppConstantBuffers);
1358     void IAGetInputLayout(
1359         [out] ID3D11InputLayout **ppInputLayout);
1360     void IAGetVertexBuffers(
1361         [in] UINT StartSlot,
1362         [in] UINT NumBuffers,
1363         [out] ID3D11Buffer **ppVertexBuffers,
1364         [out] UINT *pStrides,
1365         [out] UINT *pOffsets);
1366     void IAGetIndexBuffer(
1367         [out] ID3D11Buffer **pIndexBuffer,
1368         [out] DXGI_FORMAT* Format,
1369         [out] UINT* Offset);
1370     void GSGetConstantBuffers(
1371         [in] UINT StartSlot,
1372         [in] UINT NumBuffers,
1373         [out] ID3D11Buffer **ppConstantBuffers);
1374     void GSGetShader(
1375         [out] ID3D11GeometryShader **ppGeometryShader,
1376         [out] ID3D11ClassInstance **ppClassInstances,
1377         [in, out] UINT *pNumClassInstances);
1378     void IAGetPrimitiveTopology(
1379         [out] D3D11_PRIMITIVE_TOPOLOGY *pTopology);
1380     void VSGetShaderResources(
1381         [in] UINT StartSlot,
1382         [in] UINT NumViews,
1383         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
1384     void VSGetSamplers(
1385         [in] UINT StartSlot,
1386         [in] UINT NumSamplers,
1387         [out] ID3D11SamplerState **ppSamplers);
1388     void GetPredication(
1389         [out] ID3D11Predicate **ppPredicate,
1390         [out] BOOL *pPredicateValue);
1391     void GSGetShaderResources(
1392         [in] UINT StartSlot,
1393         [in] UINT NumViews,
1394         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
1395     void GSGetSamplers(
1396         [in] UINT StartSlot,
1397         [in] UINT NumSamplers,
1398         [out] ID3D11SamplerState **ppSamplers);
1399     void OMGetRenderTargets(
1400         [in] UINT NumViews,
1401         [out] ID3D11RenderTargetView **ppRenderTargetViews,
1402         [out] ID3D11DepthStencilView **ppDepthStencilView);
1403     void OMGetRenderTargetsAndUnorderedAccessViews(
1404         [in] UINT NumRTVs,
1405         [out] ID3D11RenderTargetView **ppRenderTargetViews,
1406         [out] ID3D11DepthStencilView **ppDepthStencilView,
1407         [in] UINT UAVStartSlot,
1408         [out] UINT NumUAVs,
1409         [out] ID3D11UnorderedAccessView **ppUnorderedAccessViews);
1410     void OMGetBlendState(
1411         [out] ID3D11BlendState **ppBlendState,
1412         [out] FLOAT BlendFactor[4],
1413         [out] UINT *pSampleMask);
1414     void OMGetDepthStencilState(
1415         [out] ID3D11DepthStencilState **ppDepthStencilState,
1416         [out] UINT *pStencilRef);
1417     void SOGetTargets(
1418         [in] UINT NumBuffers,
1419         [out] ID3D11Buffer **ppSOTargets);
1420     void RSGetState(
1421         [out] ID3D11RasterizerState **ppRasterizerState);
1422     void RSGetViewports(
1423         [in, out] UINT *pNumViewports,
1424         [out] D3D11_VIEWPORT *pViewports);
1425     void RSGetScissorRects(
1426         [in, out] UINT *pNumRects,
1427         [out] D3D11_RECT *pRects);
1428     void HSGetShaderResources(
1429         [in] UINT StartSlot,
1430         [in] UINT NumViews,
1431         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
1432     void HSGetShader(
1433         [out] ID3D11HullShader **ppHullShader,
1434         [out] ID3D11ClassInstance **ppClassInstances,
1435         [in, out] UINT *pNumClassInstances);
1436     void HSGetSamplers(
1437         [in] UINT StartSlot,
1438         [in] UINT NumSamplers,
1439         [out] ID3D11SamplerState **ppSamplers);
1440     void HSGetConstantBuffers(
1441         [in] UINT StartSlot,
1442         [in] UINT NumBuffers,
1443         [out] ID3D11Buffer **ppConstantBuffers);
1444     void DSGetShaderResources(
1445         [in] UINT StartSlot,
1446         [in] UINT NumViews,
1447         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
1448     void DSGetShader(
1449         [out] ID3D11DomainShader **ppDomainShader,
1450         [out] ID3D11ClassInstance **ppClassInstances,
1451         [in, out] UINT *pNumClassInstances);
1452     void DSGetSamplers(
1453         [in] UINT StartSlot,
1454         [in] UINT NumSamplers,
1455         [out] ID3D11SamplerState **ppSamplers);
1456     void DSGetConstantBuffers(
1457         [in] UINT StartSlot,
1458         [in] UINT NumBuffers,
1459         [out] ID3D11Buffer **ppConstantBuffers);
1460     void CSGetShaderResources(
1461         [in] UINT StartSlot,
1462         [in] UINT NumViews,
1463         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
1464     void CSGetUnorderedAccessViews(
1465         [in] UINT StartSlot,
1466         [in] UINT NumUAVs,
1467         [out] ID3D11UnorderedAccessView **ppUnorderedAccessViews);
1468     void CSGetShader(
1469         [out] ID3D11ComputeShader **ppComputeShader,
1470         [out] ID3D11ClassInstance **ppClassInstances,
1471         [in, out] UINT *pNumClassInstances);
1472     void CSGetSamplers(
1473         [in] UINT StartSlot,
1474         [in] UINT NumSamplers,
1475         [out] ID3D11SamplerState **ppSamplers);
1476     void CSGetConstantBuffers(
1477         [in] UINT StartSlot,
1478         [in] UINT NumBuffers,
1479         [out] ID3D11Buffer **ppConstantBuffers);
1480     void ClearState();
1481     void Flush();
1482     D3D11_DEVICE_CONTEXT_TYPE GetType();
1483     UINT GetContextFlags();
1484     HRESULT FinishCommandList(
1485         BOOL RestoreDeferredContextState,
1486         [out] ID3D11CommandList **ppCommandList);
1487 }
1488
1489 [
1490     object,
1491     local,
1492     uuid(db6f6ddb-ac77-4e88-8253-819df9bbf140)
1493 ]
1494 interface ID3D11Device : IUnknown
1495 {
1496     HRESULT CreateBuffer(
1497         [in] const D3D11_BUFFER_DESC *pDesc,
1498         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
1499         [out] ID3D11Buffer **ppBuffer);
1500     HRESULT CreateTexture1D(
1501         [in] const D3D11_TEXTURE1D_DESC *pDesc,
1502         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
1503         [out] ID3D11Texture1D **ppTexture1D);
1504     HRESULT CreateTexture2D(
1505         [in] const D3D11_TEXTURE2D_DESC *pDesc,
1506         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
1507         [out] ID3D11Texture2D **ppTexture2D);
1508     HRESULT CreateTexture3D(
1509         [in] const D3D11_TEXTURE3D_DESC *pDesc,
1510         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
1511         [out] ID3D11Texture3D **ppTexture3D);
1512     HRESULT CreateShaderResourceView(
1513         [in] ID3D11Resource *pResource,
1514         [in] const D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc,
1515         [out] ID3D11ShaderResourceView **ppSRView);
1516     HRESULT CreateUnorderedAccessView(
1517         [in] ID3D11Resource *pResource,
1518         [in] const D3D11_UNORDERED_ACCESS_VIEW_DESC *pDesc,
1519         [out] ID3D11UnorderedAccessView **ppUAView);
1520     HRESULT CreateRenderTargetView(
1521         [in] ID3D11Resource *pResource,
1522         [in] const D3D11_RENDER_TARGET_VIEW_DESC *pDesc,
1523         [out] ID3D11RenderTargetView **ppRTView);
1524     HRESULT CreateDepthStencilView(
1525         [in] ID3D11Resource *pResource,
1526         [in] const D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc,
1527         [out] ID3D11DepthStencilView **ppDepthStencilView);
1528     HRESULT CreateInputLayout(
1529         [in] const D3D11_INPUT_ELEMENT_DESC *pInputElementDescs,
1530         [in] UINT NumElements,
1531         [in] const void *pShaderBytecodeWithInputSignature,
1532         [in] SIZE_T BytecodeLength,
1533         [out] ID3D11InputLayout **ppInputLayout);
1534     HRESULT CreateVertexShader(
1535         [in] const void *pShaderBytecode,
1536         [in] SIZE_T BytecodeLength,
1537         [in] ID3D11ClassLinkage *pClassLinkage,
1538         [out] ID3D11VertexShader **ppVertexShader);
1539     HRESULT CreateGeometryShader(
1540         [in] const void *pShaderBytecode,
1541         [in] SIZE_T BytecodeLength,
1542         [in] ID3D11ClassLinkage *pClassLinkage,
1543         [out] ID3D11GeometryShader **ppGeometryShader);
1544     HRESULT CreateGeometryShaderWithStreamOutput(
1545         [in] const void *pShaderBytecode,
1546         [in] SIZE_T BytecodeLength,
1547         [in] const D3D11_SO_DECLARATION_ENTRY *pSODeclaration,
1548         [in] UINT NumEntries,
1549         [in] const UINT *pBufferStrides,
1550         [in] UINT NumStrides,
1551         [in] UINT RasterizedStream,
1552         [in] ID3D11ClassLinkage *pClassLinkage,
1553         [out] ID3D11GeometryShader **ppGeometryShader);
1554     HRESULT CreatePixelShader(
1555         [in] const void *pShaderBytecode,
1556         [in] SIZE_T BytecodeLength,
1557         [in] ID3D11ClassLinkage *pClassLinkage,
1558         [out] ID3D11PixelShader **ppPixelShader);
1559     HRESULT CreateHullShader(
1560         [in] const void *pShaderBytecode,
1561         [in] SIZE_T BytecodeLength,
1562         [in] ID3D11ClassLinkage *pClassLinkage,
1563         [out] ID3D11HullShader **ppHullShader);
1564     HRESULT CreateDomainShader(
1565         [in] const void *pShaderBytecode,
1566         [in] SIZE_T BytecodeLength,
1567         [in] ID3D11ClassLinkage *pClassLinkage,
1568         [out] ID3D11DomainShader **ppDomainShader);
1569     HRESULT CreateComputeShader(
1570         [in] const void *pShaderBytecode,
1571         [in] SIZE_T BytecodeLength,
1572         [in] ID3D11ClassLinkage *pClassLinkage,
1573         [out] ID3D11ComputeShader **ppComputeShader);
1574     HRESULT CreateClassLinkage(
1575         [out] ID3D11ClassLinkage **ppLinkage);
1576     HRESULT CreateBlendState(
1577         [in] const D3D11_BLEND_DESC *pBlendStateDesc,
1578         [out] ID3D11BlendState **ppBlendState);
1579     HRESULT CreateDepthStencilState(
1580         [in] const D3D11_DEPTH_STENCIL_DESC *pDepthStencilDesc,
1581         [out] ID3D11DepthStencilState **ppDepthStencilState);
1582     HRESULT CreateRasterizerState(
1583         [in] const D3D11_RASTERIZER_DESC *pRasterizerDesc,
1584         [out] ID3D11RasterizerState **ppRasterizerState);
1585     HRESULT CreateSamplerState(
1586         [in] const D3D11_SAMPLER_DESC *pSamplerDesc,
1587         [out] ID3D11SamplerState **ppSamplerState);
1588     HRESULT CreateQuery(
1589         [in] const D3D11_QUERY_DESC *pQueryDesc,
1590         [out] ID3D11Query **ppQuery);
1591     HRESULT CreatePredicate(
1592         [in] const D3D11_QUERY_DESC *pPredicateDesc,
1593         [out] ID3D11Predicate **ppPredicate);
1594     HRESULT CreateCounter(
1595         [in] const D3D11_COUNTER_DESC *pCounterDesc,
1596         [out] ID3D11Counter **ppCounter);
1597     HRESULT CreateDeferredContext(
1598         UINT ContextFlags,
1599         [out] ID3D11DeviceContext **ppDeferredContext);
1600     HRESULT OpenSharedResource(
1601         [in] HANDLE hResource,
1602         [in] REFIID ReturnedInterface,
1603         [out] void  **ppResource);
1604     HRESULT CheckFormatSupport(
1605         [in] DXGI_FORMAT Format,
1606         [out] UINT *pFormatSupport);
1607     HRESULT CheckMultisampleQualityLevels(
1608         [in] DXGI_FORMAT Format,
1609         [in] UINT        SampleCount,
1610         [out] UINT *pNumQualityLevels);
1611     void CheckCounterInfo(
1612         [out] D3D11_COUNTER_INFO *pCounterInfo);
1613     HRESULT CheckCounter(
1614         [in] const D3D11_COUNTER_DESC *pDesc,
1615         [out] D3D11_COUNTER_TYPE *pType,
1616         [out] UINT *pActiveCounters,
1617         [out] LPSTR szName,
1618         [in, out] UINT *pNameLength,
1619         [out] LPSTR szUnits,
1620         [in, out] UINT *pUnitsLength,
1621         [out] LPSTR szDescription,
1622         [in, out] UINT *pDescriptionLength);
1623     HRESULT CheckFeatureSupport(
1624         D3D11_FEATURE Feature,
1625         [out] void *pFeatureSupportData,
1626         UINT FeatureSupportDataSize);
1627     HRESULT GetPrivateData(
1628         [in] REFGUID guid,
1629         [in, out] UINT *pDataSize,
1630         [out] void *pData);
1631     HRESULT SetPrivateData(
1632         [in] REFGUID guid,
1633         [in] UINT DataSize,
1634         [in] const void *pData);
1635     HRESULT SetPrivateDataInterface(
1636         [in] REFGUID guid,
1637         [in] const IUnknown *pData);
1638     D3D_FEATURE_LEVEL GetFeatureLevel();
1639     UINT GetCreationFlags();
1640     HRESULT GetDeviceRemovedReason();
1641     void GetImmediateContext(
1642         [out] ID3D11DeviceContext **ppImmediateContext);
1643     HRESULT SetExceptionMode(UINT RaiseFlags);
1644     UINT GetExceptionMode();
1645 }
1646
1647 cpp_quote("#include <d3d10_1.h>")
1648 cpp_quote("#ifndef D3D11_IGNORE_SDK_LAYERS")
1649 cpp_quote("/* FIXME: # include <d3d11sdklayers.h> */")
1650 cpp_quote("#endif")
1651 cpp_quote("#include <d3d10misc.h>")
1652 cpp_quote("#include <d3d10shader.h>")
1653 cpp_quote("#include <d3d10effect.h>")
1654 cpp_quote("#include <d3d10_1shader.h>")