1 // Copyright © 2015, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 use super::*;
4 pub const D3D11_16BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xffff;
5 pub const D3D11_32BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xffffffff;
6 pub const D3D11_8BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xff;
7 pub const D3D11_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT: DWORD = 9;
8 pub const D3D11_CLIP_OR_CULL_DISTANCE_COUNT: DWORD = 8;
9 pub const D3D11_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT: DWORD = 2;
10 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT: DWORD = 14;
11 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS: DWORD = 4;
12 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT: DWORD = 32;
13 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT: DWORD = 15;
14 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT: DWORD = 16;
15 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS: DWORD = 4;
16 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT: DWORD = 15;
17 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST: DWORD = 1;
18 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS: DWORD = 1;
19 pub const D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT: DWORD = 64;
20 pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS: DWORD = 4;
21 pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT: DWORD = 1;
22 pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST: DWORD = 1;
23 pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS: DWORD = 1;
24 pub const D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT: DWORD = 32;
25 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS: DWORD = 1;
26 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT: DWORD = 128;
27 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST: DWORD = 1;
28 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS: DWORD = 1;
29 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT: DWORD = 128;
30 pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS: DWORD = 1;
31 pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT: DWORD = 16;
32 pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST: DWORD = 1;
33 pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS: DWORD = 1;
34 pub const D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT: DWORD = 16;
35 pub const D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT: DWORD = 32;
36 pub const D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS: DWORD = 4;
37 pub const D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
38 pub const D3D11_COMMONSHADER_TEMP_REGISTER_COUNT: DWORD = 4096;
39 pub const D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST: DWORD = 3;
40 pub const D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS: DWORD = 3;
41 pub const D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX: DWORD = 10;
42 pub const D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN: c_long = -10;
43 pub const D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE: c_long = -8;
44 pub const D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE: DWORD = 7;
45 pub const D3D11_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 256;
46 pub const D3D11_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP: DWORD = 64;
47 pub const D3D11_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 240;
48 pub const D3D11_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP: DWORD = 68;
49 pub const D3D11_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 224;
50 pub const D3D11_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP: DWORD = 72;
51 pub const D3D11_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 208;
52 pub const D3D11_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP: DWORD = 76;
53 pub const D3D11_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 192;
54 pub const D3D11_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP: DWORD = 84;
55 pub const D3D11_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 176;
56 pub const D3D11_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP: DWORD = 92;
57 pub const D3D11_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 160;
58 pub const D3D11_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP: DWORD = 100;
59 pub const D3D11_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 144;
60 pub const D3D11_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP: DWORD = 112;
61 pub const D3D11_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 128;
62 pub const D3D11_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP: DWORD = 128;
63 pub const D3D11_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 112;
64 pub const D3D11_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP: DWORD = 144;
65 pub const D3D11_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 96;
66 pub const D3D11_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP: DWORD = 168;
67 pub const D3D11_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 80;
68 pub const D3D11_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP: DWORD = 204;
69 pub const D3D11_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 64;
70 pub const D3D11_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP: DWORD = 256;
71 pub const D3D11_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 48;
72 pub const D3D11_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP: DWORD = 340;
73 pub const D3D11_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 32;
74 pub const D3D11_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP: DWORD = 512;
75 pub const D3D11_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 16;
76 pub const D3D11_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP: DWORD = 768;
77 pub const D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION: DWORD = 1;
78 pub const D3D11_CS_4_X_RAW_UAV_BYTE_ALIGNMENT: DWORD = 256;
79 pub const D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP: DWORD = 768;
80 pub const D3D11_CS_4_X_THREAD_GROUP_MAX_X: DWORD = 768;
81 pub const D3D11_CS_4_X_THREAD_GROUP_MAX_Y: DWORD = 768;
82 pub const D3D11_CS_4_X_UAV_REGISTER_COUNT: DWORD = 1;
83 pub const D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION: DWORD = 65535;
84 pub const D3D11_CS_TGSM_REGISTER_COUNT: DWORD = 8192;
85 pub const D3D11_CS_TGSM_REGISTER_READS_PER_INST: DWORD = 1;
86 pub const D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS: DWORD = 1;
87 pub const D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS: DWORD = 1;
88 pub const D3D11_CS_THREADGROUPID_REGISTER_COMPONENTS: DWORD = 3;
89 pub const D3D11_CS_THREADGROUPID_REGISTER_COUNT: DWORD = 1;
90 pub const D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS: DWORD = 1;
91 pub const D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT: DWORD = 1;
92 pub const D3D11_CS_THREADIDINGROUP_REGISTER_COMPONENTS: DWORD = 3;
93 pub const D3D11_CS_THREADIDINGROUP_REGISTER_COUNT: DWORD = 1;
94 pub const D3D11_CS_THREADID_REGISTER_COMPONENTS: DWORD = 3;
95 pub const D3D11_CS_THREADID_REGISTER_COUNT: DWORD = 1;
96 pub const D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP: DWORD = 1024;
97 pub const D3D11_CS_THREAD_GROUP_MAX_X: DWORD = 1024;
98 pub const D3D11_CS_THREAD_GROUP_MAX_Y: DWORD = 1024;
99 pub const D3D11_CS_THREAD_GROUP_MAX_Z: DWORD = 64;
100 pub const D3D11_CS_THREAD_GROUP_MIN_X: DWORD = 1;
101 pub const D3D11_CS_THREAD_GROUP_MIN_Y: DWORD = 1;
102 pub const D3D11_CS_THREAD_GROUP_MIN_Z: DWORD = 1;
103 pub const D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL: DWORD = 16384;
104 pub const D3D11_DEFAULT_BLEND_FACTOR_ALPHA: FLOAT = 1.0;
105 pub const D3D11_DEFAULT_BLEND_FACTOR_BLUE: FLOAT = 1.0;
106 pub const D3D11_DEFAULT_BLEND_FACTOR_GREEN: FLOAT = 1.0;
107 pub const D3D11_DEFAULT_BLEND_FACTOR_RED: FLOAT = 1.0;
108 pub const D3D11_DEFAULT_BORDER_COLOR_COMPONENT: FLOAT = 0.0;
109 pub const D3D11_DEFAULT_DEPTH_BIAS: DWORD = 0;
110 pub const D3D11_DEFAULT_DEPTH_BIAS_CLAMP: FLOAT = 0.0;
111 pub const D3D11_DEFAULT_MAX_ANISOTROPY: DWORD = 16;
112 pub const D3D11_DEFAULT_MIP_LOD_BIAS: FLOAT = 0.0;
113 pub const D3D11_DEFAULT_RENDER_TARGET_ARRAY_INDEX: DWORD = 0;
114 pub const D3D11_DEFAULT_SAMPLE_MASK: DWORD = 0xffffffff;
115 pub const D3D11_DEFAULT_SCISSOR_ENDX: DWORD = 0;
116 pub const D3D11_DEFAULT_SCISSOR_ENDY: DWORD = 0;
117 pub const D3D11_DEFAULT_SCISSOR_STARTX: DWORD = 0;
118 pub const D3D11_DEFAULT_SCISSOR_STARTY: DWORD = 0;
119 pub const D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS: FLOAT = 0.0;
120 pub const D3D11_DEFAULT_STENCIL_READ_MASK: DWORD = 0xff;
121 pub const D3D11_DEFAULT_STENCIL_REFERENCE: DWORD = 0;
122 pub const D3D11_DEFAULT_STENCIL_WRITE_MASK: DWORD = 0xff;
123 pub const D3D11_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX: DWORD = 0;
124 pub const D3D11_DEFAULT_VIEWPORT_HEIGHT: DWORD = 0;
125 pub const D3D11_DEFAULT_VIEWPORT_MAX_DEPTH: FLOAT = 0.0;
126 pub const D3D11_DEFAULT_VIEWPORT_MIN_DEPTH: FLOAT = 0.0;
127 pub const D3D11_DEFAULT_VIEWPORT_TOPLEFTX: DWORD = 0;
128 pub const D3D11_DEFAULT_VIEWPORT_TOPLEFTY: DWORD = 0;
129 pub const D3D11_DEFAULT_VIEWPORT_WIDTH: DWORD = 0;
130 pub const D3D11_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: DWORD = 3968;
131 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS: DWORD = 4;
132 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
133 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COUNT: DWORD = 32;
134 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST: DWORD = 2;
135 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS: DWORD = 1;
136 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS: DWORD = 3;
137 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
138 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT: DWORD = 1;
139 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST: DWORD = 2;
140 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS: DWORD = 1;
141 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: DWORD = 4;
142 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
143 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT: DWORD = 32;
144 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: DWORD = 2;
145 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: DWORD = 1;
146 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: DWORD = 1;
147 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
148 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: DWORD = 1;
149 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: DWORD = 2;
150 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: DWORD = 1;
151 pub const D3D11_DS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
152 pub const D3D11_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
153 pub const D3D11_DS_OUTPUT_REGISTER_COUNT: DWORD = 32;
154 pub const D3D11_FLOAT16_FUSED_TOLERANCE_IN_ULP: FLOAT = 0.6;
155 pub const D3D11_FLOAT32_MAX: FLOAT = 3.402823466E+38;
156 pub const D3D11_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP: FLOAT = 0.6;
157 pub const D3D11_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR: FLOAT = 2.4;
158 pub const D3D11_FLOAT_TO_SRGB_EXPONENT_NUMERATOR: FLOAT = 1.0;
159 pub const D3D11_FLOAT_TO_SRGB_OFFSET: FLOAT = 0.055;
160 pub const D3D11_FLOAT_TO_SRGB_SCALE_1: FLOAT = 12.92;
161 pub const D3D11_FLOAT_TO_SRGB_SCALE_2: FLOAT = 1.055;
162 pub const D3D11_FLOAT_TO_SRGB_THRESHOLD: FLOAT = 0.0031308;
163 pub const D3D11_FTOI_INSTRUCTION_MAX_INPUT: FLOAT = 2147483647.999;
164 pub const D3D11_FTOI_INSTRUCTION_MIN_INPUT: FLOAT = -2147483648.999;
165 pub const D3D11_FTOU_INSTRUCTION_MAX_INPUT: FLOAT = 4294967295.999;
166 pub const D3D11_FTOU_INSTRUCTION_MIN_INPUT: FLOAT = 0.0;
167 pub const D3D11_GS_INPUT_INSTANCE_ID_READS_PER_INST: DWORD = 2;
168 pub const D3D11_GS_INPUT_INSTANCE_ID_READ_PORTS: DWORD = 1;
169 pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
170 pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
171 pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
172 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS: DWORD = 1;
173 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
174 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COUNT: DWORD = 1;
175 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST: DWORD = 2;
176 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS: DWORD = 1;
177 pub const D3D11_GS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
178 pub const D3D11_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
179 pub const D3D11_GS_INPUT_REGISTER_COUNT: DWORD = 32;
180 pub const D3D11_GS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
181 pub const D3D11_GS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
182 pub const D3D11_GS_INPUT_REGISTER_VERTICES: DWORD = 32;
183 pub const D3D11_GS_MAX_INSTANCE_COUNT: DWORD = 32;
184 pub const D3D11_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES: DWORD = 1024;
185 pub const D3D11_GS_OUTPUT_ELEMENTS: DWORD = 32;
186 pub const D3D11_GS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
187 pub const D3D11_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
188 pub const D3D11_GS_OUTPUT_REGISTER_COUNT: DWORD = 32;
189 pub const D3D11_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT: DWORD = 32;
190 pub const D3D11_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT: DWORD = 32;
191 pub const D3D11_HS_CONTROL_POINT_REGISTER_COMPONENTS: DWORD = 4;
192 pub const D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
193 pub const D3D11_HS_CONTROL_POINT_REGISTER_READS_PER_INST: DWORD = 2;
194 pub const D3D11_HS_CONTROL_POINT_REGISTER_READ_PORTS: DWORD = 1;
195 pub const D3D11_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND: DWORD = 0xffffffff;
196 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
197 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
198 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
199 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST: DWORD = 2;
200 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS: DWORD = 1;
201 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
202 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
203 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
204 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST: DWORD = 2;
205 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS: DWORD = 1;
206 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: DWORD = 1;
207 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
208 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: DWORD = 1;
209 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: DWORD = 2;
210 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: DWORD = 1;
211 pub const D3D11_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND: DWORD = 0xffffffff;
212 pub const D3D11_HS_MAXTESSFACTOR_LOWER_BOUND: FLOAT = 1.0;
213 pub const D3D11_HS_MAXTESSFACTOR_UPPER_BOUND: FLOAT = 64.0;
214 pub const D3D11_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: DWORD = 3968;
215 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS: DWORD = 1;
216 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
217 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT: DWORD = 1;
218 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST: DWORD = 2;
219 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS: DWORD = 1;
220 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: DWORD = 4;
221 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
222 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT: DWORD = 32;
223 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: DWORD = 2;
224 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: DWORD = 1;
225 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS: DWORD = 128;
226 pub const D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES: DWORD = 0;
227 pub const D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY: DWORD = 0;
228 pub const D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES: DWORD = 0;
229 pub const D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT: DWORD = 1;
230 pub const D3D11_IA_INSTANCE_ID_BIT_COUNT: DWORD = 32;
231 pub const D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT: DWORD = 32;
232 pub const D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT: DWORD = 32;
233 pub const D3D11_IA_PRIMITIVE_ID_BIT_COUNT: DWORD = 32;
234 pub const D3D11_IA_VERTEX_ID_BIT_COUNT: DWORD = 32;
235 pub const D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT: DWORD = 32;
236 pub const D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS: DWORD = 128;
237 pub const D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT: DWORD = 32;
238 pub const D3D11_INTEGER_DIVIDE_BY_ZERO_QUOTIENT: DWORD = 0xffffffff;
239 pub const D3D11_INTEGER_DIVIDE_BY_ZERO_REMAINDER: DWORD = 0xffffffff;
240 pub const D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL: DWORD = 0xffffffff;
241 pub const D3D11_KEEP_UNORDERED_ACCESS_VIEWS: DWORD = 0xffffffff;
242 pub const D3D11_LINEAR_GAMMA: FLOAT = 1.0;
243 pub const D3D11_MAJOR_VERSION: DWORD = 11;
244 pub const D3D11_MAX_BORDER_COLOR_COMPONENT: FLOAT = 1.0;
245 pub const D3D11_MAX_DEPTH: FLOAT = 1.0;
246 pub const D3D11_MAX_MAXANISOTROPY: DWORD = 16;
247 pub const D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT: DWORD = 32;
248 pub const D3D11_MAX_POSITION_VALUE: FLOAT = 3.402823466E+34;
249 pub const D3D11_MAX_TEXTURE_DIMENSION_2_TO_EXP: DWORD = 17;
250 pub const D3D11_MINOR_VERSION: DWORD = 0;
251 pub const D3D11_MIN_BORDER_COLOR_COMPONENT: FLOAT = 0.0;
252 pub const D3D11_MIN_DEPTH: FLOAT = 0.0;
253 pub const D3D11_MIN_MAXANISOTROPY: DWORD = 0;
254 pub const D3D11_MIP_LOD_BIAS_MAX: FLOAT = 15.99;
255 pub const D3D11_MIP_LOD_BIAS_MIN: FLOAT = -16.0;
256 pub const D3D11_MIP_LOD_FRACTIONAL_BIT_COUNT: DWORD = 8;
257 pub const D3D11_MIP_LOD_RANGE_BIT_COUNT: DWORD = 8;
258 pub const D3D11_MULTISAMPLE_ANTIALIAS_LINE_WIDTH: FLOAT = 1.4;
259 pub const D3D11_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT: DWORD = 0;
260 pub const D3D11_PIXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 15;
261 pub const D3D11_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 16;
262 pub const D3D11_PS_CS_UAV_REGISTER_COMPONENTS: DWORD = 1;
263 pub const D3D11_PS_CS_UAV_REGISTER_COUNT: DWORD = 8;
264 pub const D3D11_PS_CS_UAV_REGISTER_READS_PER_INST: DWORD = 1;
265 pub const D3D11_PS_CS_UAV_REGISTER_READ_PORTS: DWORD = 1;
266 pub const D3D11_PS_FRONTFACING_DEFAULT_VALUE: DWORD = 0xffffffff;
267 pub const D3D11_PS_FRONTFACING_FALSE_VALUE: DWORD = 0;
268 pub const D3D11_PS_FRONTFACING_TRUE_VALUE: DWORD = 0xffffffff;
269 pub const D3D11_PS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
270 pub const D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
271 pub const D3D11_PS_INPUT_REGISTER_COUNT: DWORD = 32;
272 pub const D3D11_PS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
273 pub const D3D11_PS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
274 pub const D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT: FLOAT = 0.0;
275 pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS: DWORD = 1;
276 pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
277 pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT: DWORD = 1;
278 pub const D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS: DWORD = 1;
279 pub const D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
280 pub const D3D11_PS_OUTPUT_MASK_REGISTER_COUNT: DWORD = 1;
281 pub const D3D11_PS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
282 pub const D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
283 pub const D3D11_PS_OUTPUT_REGISTER_COUNT: DWORD = 8;
284 pub const D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT: FLOAT = 0.5;
285 pub const D3D11_RAW_UAV_SRV_BYTE_ALIGNMENT: DWORD = 16;
286 pub const D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
287 pub const D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP: DWORD = 27;
288 pub const D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT: DWORD = 4096;
289 pub const D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
290 pub const D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: DWORD = 32;
291 pub const D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP: DWORD = 32;
292 pub const D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION: DWORD = 16384;
293 pub const D3D11_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT: DWORD = 1024;
294 pub const D3D11_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT: DWORD = 4096;
295 pub const D3D11_REQ_MAXANISOTROPY: DWORD = 16;
296 pub const D3D11_REQ_MIP_LEVELS: DWORD = 15;
297 pub const D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES: DWORD = 2048;
298 pub const D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
299 pub const D3D11_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH: DWORD = 16384;
300 pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM: DWORD = 128;
301 pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM: FLOAT = 0.25;
302 pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM: DWORD = 2048;
303 pub const D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP: DWORD = 20;
304 pub const D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
305 pub const D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION: DWORD = 2048;
306 pub const D3D11_REQ_TEXTURE1D_U_DIMENSION: DWORD = 16384;
307 pub const D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION: DWORD = 2048;
308 pub const D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION: DWORD = 16384;
309 pub const D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION: DWORD = 2048;
310 pub const D3D11_REQ_TEXTURECUBE_DIMENSION: DWORD = 16384;
311 pub const D3D11_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL: DWORD = 0;
312 pub const D3D11_SHADER_MAJOR_VERSION: DWORD = 5;
313 pub const D3D11_SHADER_MAX_INSTANCES: DWORD = 65535;
314 pub const D3D11_SHADER_MAX_INTERFACES: DWORD = 253;
315 pub const D3D11_SHADER_MAX_INTERFACE_CALL_SITES: DWORD = 4096;
316 pub const D3D11_SHADER_MAX_TYPES: DWORD = 65535;
317 pub const D3D11_SHADER_MINOR_VERSION: DWORD = 0;
318 pub const D3D11_SHIFT_INSTRUCTION_PAD_VALUE: DWORD = 0;
319 pub const D3D11_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT: DWORD = 5;
320 pub const D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT: DWORD = 8;
321 pub const D3D11_SO_BUFFER_MAX_STRIDE_IN_BYTES: DWORD = 2048;
322 pub const D3D11_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES: DWORD = 512;
323 pub const D3D11_SO_BUFFER_SLOT_COUNT: DWORD = 4;
324 pub const D3D11_SO_DDI_REGISTER_INDEX_DENOTING_GAP: DWORD = 0xffffffff;
325 pub const D3D11_SO_NO_RASTERIZED_STREAM: DWORD = 0xffffffff;
326 pub const D3D11_SO_OUTPUT_COMPONENT_COUNT: DWORD = 128;
327 pub const D3D11_SO_STREAM_COUNT: DWORD = 4;
328 pub const D3D11_SPEC_DATE_DAY: DWORD = 16;
329 pub const D3D11_SPEC_DATE_MONTH: DWORD = 05;
330 pub const D3D11_SPEC_DATE_YEAR: DWORD = 2011;
331 pub const D3D11_SPEC_VERSION: FLOAT = 1.07;
332 pub const D3D11_SRGB_GAMMA: FLOAT = 2.2;
333 pub const D3D11_SRGB_TO_FLOAT_DENOMINATOR_1: FLOAT = 12.92;
334 pub const D3D11_SRGB_TO_FLOAT_DENOMINATOR_2: FLOAT = 1.055;
335 pub const D3D11_SRGB_TO_FLOAT_EXPONENT: FLOAT = 2.4;
336 pub const D3D11_SRGB_TO_FLOAT_OFFSET: FLOAT = 0.055;
337 pub const D3D11_SRGB_TO_FLOAT_THRESHOLD: FLOAT = 0.04045;
338 pub const D3D11_SRGB_TO_FLOAT_TOLERANCE_IN_ULP: FLOAT = 0.5;
339 pub const D3D11_STANDARD_COMPONENT_BIT_COUNT: DWORD = 32;
340 pub const D3D11_STANDARD_COMPONENT_BIT_COUNT_DOUBLED: DWORD = 64;
341 pub const D3D11_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE: DWORD = 4;
342 pub const D3D11_STANDARD_PIXEL_COMPONENT_COUNT: DWORD = 128;
343 pub const D3D11_STANDARD_PIXEL_ELEMENT_COUNT: DWORD = 32;
344 pub const D3D11_STANDARD_VECTOR_SIZE: DWORD = 4;
345 pub const D3D11_STANDARD_VERTEX_ELEMENT_COUNT: DWORD = 32;
346 pub const D3D11_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT: DWORD = 64;
347 pub const D3D11_SUBPIXEL_FRACTIONAL_BIT_COUNT: DWORD = 8;
348 pub const D3D11_SUBTEXEL_FRACTIONAL_BIT_COUNT: DWORD = 8;
349 pub const D3D11_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR: DWORD = 64;
350 pub const D3D11_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR: DWORD = 64;
351 pub const D3D11_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR: DWORD = 63;
352 pub const D3D11_TESSELLATOR_MAX_TESSELLATION_FACTOR: DWORD = 64;
353 pub const D3D11_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR: DWORD = 2;
354 pub const D3D11_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR: DWORD = 1;
355 pub const D3D11_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR: DWORD = 1;
356 pub const D3D11_TEXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 16;
357 pub const D3D11_UNBOUND_MEMORY_ACCESS_RESULT: DWORD = 0;
358 pub const D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX: DWORD = 15;
359 pub const D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE: DWORD = 16;
360 pub const D3D11_VIEWPORT_BOUNDS_MAX: DWORD = 32767;
361 pub const D3D11_VIEWPORT_BOUNDS_MIN: c_long = -32768;
362 pub const D3D11_VS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
363 pub const D3D11_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
364 pub const D3D11_VS_INPUT_REGISTER_COUNT: DWORD = 32;
365 pub const D3D11_VS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
366 pub const D3D11_VS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
367 pub const D3D11_VS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
368 pub const D3D11_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
369 pub const D3D11_VS_OUTPUT_REGISTER_COUNT: DWORD = 32;
370 pub const D3D11_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT: DWORD = 10;
371 pub const D3D11_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: DWORD = 25;
372 pub const D3D11_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP: DWORD = 25;
373 pub const D3D11_1_UAV_SLOT_COUNT: DWORD = 64;
374 pub const D3D11_2_TILED_RESOURCE_TILE_SIZE_IN_BYTES: DWORD = 65536;
375 ENUM!{enum D3D11_INPUT_CLASSIFICATION {
376     D3D11_INPUT_PER_VERTEX_DATA = 0,
377     D3D11_INPUT_PER_INSTANCE_DATA = 1,
378 }}
379 pub const D3D11_APPEND_ALIGNED_ELEMENT: DWORD = 0xffffffff;
380 STRUCT!{struct D3D11_INPUT_ELEMENT_DESC {
381     SemanticName: LPCSTR,
382     SemanticIndex: UINT,
383     Format: DXGI_FORMAT,
384     InputSlot: UINT,
385     AlignedByteOffset: UINT,
386     InputSlotClass: D3D11_INPUT_CLASSIFICATION,
387     InstanceDataStepRate: UINT,
388 }}
389 ENUM!{enum D3D11_FILL_MODE {
390     D3D11_FILL_WIREFRAME = 2,
391     D3D11_FILL_SOLID = 3,
392 }}
393 pub type D3D11_PRIMITIVE_TOPOLOGY = D3D_PRIMITIVE_TOPOLOGY;
394 pub type D3D11_PRIMITIVE = D3D_PRIMITIVE;
395 ENUM!{enum D3D11_CULL_MODE {
396     D3D11_CULL_NONE = 1,
397     D3D11_CULL_FRONT = 2,
398     D3D11_CULL_BACK = 3,
399 }}
400 STRUCT!{struct D3D11_SO_DECLARATION_ENTRY {
401     Stream: UINT,
402     SemanticName: LPCSTR,
403     SemanticIndex: UINT,
404     StartComponent: BYTE,
405     ComponentCount: BYTE,
406     OutputSlot: BYTE,
407 }}
408 STRUCT!{struct D3D11_VIEWPORT {
409     TopLeftX: FLOAT,
410     TopLeftY: FLOAT,
411     Width: FLOAT,
412     Height: FLOAT,
413     MinDepth: FLOAT,
414     MaxDepth: FLOAT,
415 }}
416 STRUCT!{struct D3D11_DRAW_INSTANCED_INDIRECT_ARGS {
417     VertexCountPerInstance: UINT,
418     InstanceCount: UINT,
419     StartVertexLocation: UINT,
420     StartInstanceLocation: UINT,
421 }}
422 STRUCT!{struct D3D11_DRAW_INDEXED_INSTANCED_INDIRECT_ARGS {
423     IndexCountPerInstance: UINT,
424     InstanceCount: UINT,
425     StartIndexLocation: UINT,
426     BaseVertexLocation: INT,
427     StartInstanceLocation: UINT,
428 }}
429 ENUM!{enum D3D11_RESOURCE_DIMENSION {
430     D3D11_RESOURCE_DIMENSION_UNKNOWN = 0,
431     D3D11_RESOURCE_DIMENSION_BUFFER = 1,
432     D3D11_RESOURCE_DIMENSION_TEXTURE1D = 2,
433     D3D11_RESOURCE_DIMENSION_TEXTURE2D = 3,
434     D3D11_RESOURCE_DIMENSION_TEXTURE3D = 4,
435 }}
436 pub type D3D11_SRV_DIMENSION = D3D_SRV_DIMENSION;
437 ENUM!{enum D3D11_DSV_DIMENSION {
438     D3D11_DSV_DIMENSION_UNKNOWN = 0,
439     D3D11_DSV_DIMENSION_TEXTURE1D = 1,
440     D3D11_DSV_DIMENSION_TEXTURE1DARRAY = 2,
441     D3D11_DSV_DIMENSION_TEXTURE2D = 3,
442     D3D11_DSV_DIMENSION_TEXTURE2DARRAY = 4,
443     D3D11_DSV_DIMENSION_TEXTURE2DMS = 5,
444     D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
445 }}
446 ENUM!{enum D3D11_RTV_DIMENSION {
447     D3D11_RTV_DIMENSION_UNKNOWN = 0,
448     D3D11_RTV_DIMENSION_BUFFER = 1,
449     D3D11_RTV_DIMENSION_TEXTURE1D = 2,
450     D3D11_RTV_DIMENSION_TEXTURE1DARRAY = 3,
451     D3D11_RTV_DIMENSION_TEXTURE2D = 4,
452     D3D11_RTV_DIMENSION_TEXTURE2DARRAY = 5,
453     D3D11_RTV_DIMENSION_TEXTURE2DMS = 6,
454     D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
455     D3D11_RTV_DIMENSION_TEXTURE3D = 8,
456 }}
457 ENUM!{enum D3D11_UAV_DIMENSION {
458     D3D11_UAV_DIMENSION_UNKNOWN = 0,
459     D3D11_UAV_DIMENSION_BUFFER = 1,
460     D3D11_UAV_DIMENSION_TEXTURE1D = 2,
461     D3D11_UAV_DIMENSION_TEXTURE1DARRAY = 3,
462     D3D11_UAV_DIMENSION_TEXTURE2D = 4,
463     D3D11_UAV_DIMENSION_TEXTURE2DARRAY = 5,
464     D3D11_UAV_DIMENSION_TEXTURE3D = 8,
465 }}
466 ENUM!{enum D3D11_USAGE {
467     D3D11_USAGE_DEFAULT = 0,
468     D3D11_USAGE_IMMUTABLE = 1,
469     D3D11_USAGE_DYNAMIC = 2,
470     D3D11_USAGE_STAGING = 3,
471 }}
472 FLAGS!{enum D3D11_BIND_FLAG {
473     D3D11_BIND_VERTEX_BUFFER = 0x1,
474     D3D11_BIND_INDEX_BUFFER = 0x2,
475     D3D11_BIND_CONSTANT_BUFFER = 0x4,
476     D3D11_BIND_SHADER_RESOURCE = 0x8,
477     D3D11_BIND_STREAM_OUTPUT = 0x10,
478     D3D11_BIND_RENDER_TARGET = 0x20,
479     D3D11_BIND_DEPTH_STENCIL = 0x40,
480     D3D11_BIND_UNORDERED_ACCESS = 0x80,
481     D3D11_BIND_DECODER = 0x200,
482     D3D11_BIND_VIDEO_ENCODER = 0x400,
483 }}
484 FLAGS!{enum D3D11_CPU_ACCESS_FLAG {
485     D3D11_CPU_ACCESS_WRITE = 0x10000,
486     D3D11_CPU_ACCESS_READ = 0x20000,
487 }}
488 FLAGS!{enum D3D11_RESOURCE_MISC_FLAG {
489     D3D11_RESOURCE_MISC_GENERATE_MIPS = 0x1,
490     D3D11_RESOURCE_MISC_SHARED = 0x2,
491     D3D11_RESOURCE_MISC_TEXTURECUBE = 0x4,
492     D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS = 0x10,
493     D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS = 0x20,
494     D3D11_RESOURCE_MISC_BUFFER_STRUCTURED = 0x40,
495     D3D11_RESOURCE_MISC_RESOURCE_CLAMP = 0x80,
496     D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x100,
497     D3D11_RESOURCE_MISC_GDI_COMPATIBLE = 0x200,
498     D3D11_RESOURCE_MISC_SHARED_NTHANDLE = 0x800,
499     D3D11_RESOURCE_MISC_RESTRICTED_CONTENT = 0x1000,
500     D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE = 0x2000,
501     D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER = 0x4000,
502     D3D11_RESOURCE_MISC_GUARDED = 0x8000,
503     D3D11_RESOURCE_MISC_TILE_POOL = 0x20000,
504     D3D11_RESOURCE_MISC_TILED = 0x40000,
505     D3D11_RESOURCE_MISC_HW_PROTECTED = 0x80000,
506 }}
507 ENUM!{enum D3D11_MAP {
508     D3D11_MAP_READ = 1,
509     D3D11_MAP_WRITE = 2,
510     D3D11_MAP_READ_WRITE = 3,
511     D3D11_MAP_WRITE_DISCARD = 4,
512     D3D11_MAP_WRITE_NO_OVERWRITE = 5,
513 }}
514 FLAGS!{enum D3D11_MAP_FLAG {
515     D3D11_MAP_FLAG_DO_NOT_WAIT = 0x100000,
516 }}
517 FLAGS!{enum D3D11_RAISE_FLAG {
518     D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR = 0x1,
519 }}
520 FLAGS!{enum D3D11_CLEAR_FLAG {
521     D3D11_CLEAR_DEPTH = 0x1,
522     D3D11_CLEAR_STENCIL = 0x2,
523 }}
524 pub type D3D11_RECT = RECT;
525 STRUCT!{struct D3D11_BOX {
526     left: UINT,
527     top: UINT,
528     front: UINT,
529     right: UINT,
530     bottom: UINT,
531     back: UINT,
532 }}
533 RIDL!{interface ID3D11DeviceChild(ID3D11DeviceChildVtbl): IUnknown(IUnknownVtbl) {
534     fn GetDevice(&mut self, ppDevice: *mut *mut ID3D11Device) -> (),
535     fn GetPrivateData(
536         &mut self, guid: REFGUID, pDataSize: *mut UINT, pData: *mut c_void
537     ) -> HRESULT,
538     fn SetPrivateData(
539         &mut self, guid: REFGUID, DataSize: UINT, pData: *const c_void
540     ) -> HRESULT,
541     fn SetPrivateDataInterface(&mut self, guid: REFGUID, pData: *const IUnknown) -> HRESULT
542 }}
543 ENUM!{enum D3D11_COMPARISON_FUNC {
544     D3D11_COMPARISON_NEVER = 1,
545     D3D11_COMPARISON_LESS = 2,
546     D3D11_COMPARISON_EQUAL = 3,
547     D3D11_COMPARISON_LESS_EQUAL = 4,
548     D3D11_COMPARISON_GREATER = 5,
549     D3D11_COMPARISON_NOT_EQUAL = 6,
550     D3D11_COMPARISON_GREATER_EQUAL = 7,
551     D3D11_COMPARISON_ALWAYS = 8,
552 }}
553 ENUM!{enum D3D11_DEPTH_WRITE_MASK {
554     D3D11_DEPTH_WRITE_MASK_ZERO = 0,
555     D3D11_DEPTH_WRITE_MASK_ALL = 1,
556 }}
557 ENUM!{enum D3D11_STENCIL_OP {
558     D3D11_STENCIL_OP_KEEP = 1,
559     D3D11_STENCIL_OP_ZERO = 2,
560     D3D11_STENCIL_OP_REPLACE = 3,
561     D3D11_STENCIL_OP_INCR_SAT = 4,
562     D3D11_STENCIL_OP_DECR_SAT = 5,
563     D3D11_STENCIL_OP_INVERT = 6,
564     D3D11_STENCIL_OP_INCR = 7,
565     D3D11_STENCIL_OP_DECR = 8,
566 }}
567 STRUCT!{struct D3D11_DEPTH_STENCILOP_DESC {
568     StencilFailOp: D3D11_STENCIL_OP,
569     StencilDepthFailOp: D3D11_STENCIL_OP,
570     StencilPassOp: D3D11_STENCIL_OP,
571     StencilFunc: D3D11_COMPARISON_FUNC,
572 }}
573 STRUCT!{struct D3D11_DEPTH_STENCIL_DESC {
574     DepthEnable: BOOL,
575     DepthWriteMask: D3D11_DEPTH_WRITE_MASK,
576     DepthFunc: D3D11_COMPARISON_FUNC,
577     StencilEnable: BOOL,
578     StencilReadMask: UINT8,
579     StencilWriteMask: UINT8,
580     FrontFace: D3D11_DEPTH_STENCILOP_DESC,
581     BackFace: D3D11_DEPTH_STENCILOP_DESC,
582 }}
583 RIDL!{interface ID3D11DepthStencilState(ID3D11DepthStencilStateVtbl)
584     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
585     fn GetDesc(&mut self, pDesc: *mut D3D11_DEPTH_STENCIL_DESC) -> ()
586 }}
587 ENUM!{enum D3D11_BLEND {
588     D3D11_BLEND_ZERO = 1,
589     D3D11_BLEND_ONE = 2,
590     D3D11_BLEND_SRC_COLOR = 3,
591     D3D11_BLEND_INV_SRC_COLOR = 4,
592     D3D11_BLEND_SRC_ALPHA = 5,
593     D3D11_BLEND_INV_SRC_ALPHA = 6,
594     D3D11_BLEND_DEST_ALPHA = 7,
595     D3D11_BLEND_INV_DEST_ALPHA = 8,
596     D3D11_BLEND_DEST_COLOR = 9,
597     D3D11_BLEND_INV_DEST_COLOR = 10,
598     D3D11_BLEND_SRC_ALPHA_SAT = 11,
599     D3D11_BLEND_BLEND_FACTOR = 14,
600     D3D11_BLEND_INV_BLEND_FACTOR = 15,
601     D3D11_BLEND_SRC1_COLOR = 16,
602     D3D11_BLEND_INV_SRC1_COLOR = 17,
603     D3D11_BLEND_SRC1_ALPHA = 18,
604     D3D11_BLEND_INV_SRC1_ALPHA = 19,
605 }}
606 ENUM!{enum D3D11_BLEND_OP {
607     D3D11_BLEND_OP_ADD = 1,
608     D3D11_BLEND_OP_SUBTRACT = 2,
609     D3D11_BLEND_OP_REV_SUBTRACT = 3,
610     D3D11_BLEND_OP_MIN = 4,
611     D3D11_BLEND_OP_MAX = 5,
612 }}
613 FLAGS!{enum D3D11_COLOR_WRITE_ENABLE {
614     D3D11_COLOR_WRITE_ENABLE_RED = 1,
615     D3D11_COLOR_WRITE_ENABLE_GREEN = 2,
616     D3D11_COLOR_WRITE_ENABLE_BLUE = 4,
617     D3D11_COLOR_WRITE_ENABLE_ALPHA = 8,
618     D3D11_COLOR_WRITE_ENABLE_ALL = D3D11_COLOR_WRITE_ENABLE_RED.0 | D3D11_COLOR_WRITE_ENABLE_GREEN.0 |
619         D3D11_COLOR_WRITE_ENABLE_BLUE.0 | D3D11_COLOR_WRITE_ENABLE_ALPHA.0,
620 }}
621 STRUCT!{struct D3D11_RENDER_TARGET_BLEND_DESC {
622     BlendEnable: BOOL,
623     SrcBlend: D3D11_BLEND,
624     DestBlend: D3D11_BLEND,
625     BlendOp: D3D11_BLEND_OP,
626     SrcBlendAlpha: D3D11_BLEND,
627     DestBlendAlpha: D3D11_BLEND,
628     BlendOpAlpha: D3D11_BLEND_OP,
629     RenderTargetWriteMask: UINT8,
630 }}
631 STRUCT!{struct D3D11_BLEND_DESC {
632     AlphaToCoverageEnable: BOOL,
633     IndependentBlendEnable: BOOL,
634     RenderTarget: [D3D11_RENDER_TARGET_BLEND_DESC; 8],
635 }}
636 RIDL!{interface ID3D11BlendState(ID3D11BlendStateVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
637     fn GetDesc(&mut self, pDesc: *mut D3D11_BLEND_DESC) -> ()
638 }}
639 STRUCT!{struct D3D11_RASTERIZER_DESC {
640     FillMode: D3D11_FILL_MODE,
641     CullMode: D3D11_CULL_MODE,
642     FrontCounterClockwise: BOOL,
643     DepthBias: INT,
644     DepthBiasClamp: FLOAT,
645     SlopeScaledDepthBias: FLOAT,
646     DepthClipEnable: BOOL,
647     ScissorEnable: BOOL,
648     MultisampleEnable: BOOL,
649     AntialiasedLineEnable: BOOL,
650 }}
651 RIDL!{interface ID3D11RasterizerState(ID3D11RasterizerStateVtbl)
652     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
653     fn GetDesc(&mut self, pDesc: *mut D3D11_RASTERIZER_DESC) -> ()
654 }}
655 STRUCT!{struct D3D11_SUBRESOURCE_DATA {
656     pSysMem: *const c_void,
657     SysMemPitch: UINT,
658     SysMemSlicePitch: UINT,
659 }}
660 STRUCT!{struct D3D11_MAPPED_SUBRESOURCE {
661     pData: *mut c_void,
662     RowPitch: UINT,
663     DepthPitch: UINT,
664 }}
665 RIDL!{interface ID3D11Resource(ID3D11ResourceVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
666     fn GetType(&mut self, pResourceDimension: *mut D3D11_RESOURCE_DIMENSION) -> (),
667     fn SetEvictionPriority(&mut self, EvictionPriority: UINT) -> (),
668     fn GetEvictionPriority(&mut self) -> UINT
669 }}
670 STRUCT!{struct D3D11_BUFFER_DESC {
671     ByteWidth: UINT,
672     Usage: D3D11_USAGE,
673     BindFlags: UINT,
674     CPUAccessFlags: UINT,
675     MiscFlags: UINT,
676     StructureByteStride: UINT,
677 }}
678 RIDL!{interface ID3D11Buffer(ID3D11BufferVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
679     fn GetDesc(&mut self, pDesc: *mut D3D11_BUFFER_DESC) -> ()
680 }}
681 STRUCT!{struct D3D11_TEXTURE1D_DESC {
682     Width: UINT,
683     MipLevels: UINT,
684     ArraySize: UINT,
685     Format: DXGI_FORMAT,
686     Usage: D3D11_USAGE,
687     BindFlags: UINT,
688     CPUAccessFlags: UINT,
689     MiscFlags: UINT,
690 }}
691 RIDL!{interface ID3D11Texture1D(ID3D11Texture1DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
692     fn GetDesc(&mut self, pDesc: *mut D3D11_TEXTURE1D_DESC) -> ()
693 }}
694 STRUCT!{struct D3D11_TEXTURE2D_DESC {
695     Width: UINT,
696     Height: UINT,
697     MipLevels: UINT,
698     ArraySize: UINT,
699     Format: DXGI_FORMAT,
700     SampleDesc: DXGI_SAMPLE_DESC,
701     Usage: D3D11_USAGE,
702     BindFlags: UINT,
703     CPUAccessFlags: UINT,
704     MiscFlags: UINT,
705 }}
706 RIDL!{interface ID3D11Texture2D(ID3D11Texture2DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
707     fn GetDesc(&mut self, pDesc: *mut D3D11_TEXTURE2D_DESC) -> ()
708 }}
709 STRUCT!{struct D3D11_TEXTURE3D_DESC {
710     Width: UINT,
711     Height: UINT,
712     Depth: UINT,
713     MipLevels: UINT,
714     Format: DXGI_FORMAT,
715     Usage: D3D11_USAGE,
716     BindFlags: UINT,
717     CPUAccessFlags: UINT,
718     MiscFlags: UINT,
719 }}
720 RIDL!{interface ID3D11Texture3D(ID3D11Texture3DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
721     fn GetDesc(&mut self, pDesc: *mut D3D11_TEXTURE3D_DESC) -> ()
722 }}
723 ENUM!{enum D3D11_TEXTURECUBE_FACE {
724     D3D11_TEXTURECUBE_FACE_POSITIVE_X = 0,
725     D3D11_TEXTURECUBE_FACE_NEGATIVE_X = 1,
726     D3D11_TEXTURECUBE_FACE_POSITIVE_Y = 2,
727     D3D11_TEXTURECUBE_FACE_NEGATIVE_Y = 3,
728     D3D11_TEXTURECUBE_FACE_POSITIVE_Z = 4,
729     D3D11_TEXTURECUBE_FACE_NEGATIVE_Z = 5,
730 }}
731 RIDL!{interface ID3D11View(ID3D11ViewVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
732     fn GetResource(&mut self, ppResource: *mut *mut ID3D11Resource) -> ()
733 }}
734 STRUCT!{struct D3D11_BUFFER_SRV {
735     u1: UINT,
736     u2: UINT,
737 }}
738 UNION!{D3D11_BUFFER_SRV, u1, FirstElement, FirstElement_mut, UINT}
739 UNION!{D3D11_BUFFER_SRV, u1, ElementOffset, ElementOffset_mut, UINT}
740 UNION!{D3D11_BUFFER_SRV, u2, NumElements, NumElements_mut, UINT}
741 UNION!{D3D11_BUFFER_SRV, u2, ElementWidth, ElementWidth_mut, UINT}
742 FLAGS!{enum D3D11_BUFFEREX_SRV_FLAG {
743     D3D11_BUFFEREX_SRV_FLAG_RAW = 0x1,
744 }}
745 STRUCT!{struct D3D11_BUFFEREX_SRV {
746     FirstElement: UINT,
747     NumElements: UINT,
748     Flags: UINT,
749 }}
750 STRUCT!{struct D3D11_TEX1D_SRV {
751     MostDetailedMip: UINT,
752     MipLevels: UINT,
753 }}
754 STRUCT!{struct D3D11_TEX1D_ARRAY_SRV {
755     MostDetailedMip: UINT,
756     MipLevels: UINT,
757     FirstArraySlice: UINT,
758     ArraySize: UINT,
759 }}
760 STRUCT!{struct D3D11_TEX2D_SRV {
761     MostDetailedMip: UINT,
762     MipLevels: UINT,
763 }}
764 STRUCT!{struct D3D11_TEX2D_ARRAY_SRV {
765     MostDetailedMip: UINT,
766     MipLevels: UINT,
767     FirstArraySlice: UINT,
768     ArraySize: UINT,
769 }}
770 STRUCT!{struct D3D11_TEX3D_SRV {
771     MostDetailedMip: UINT,
772     MipLevels: UINT,
773 }}
774 STRUCT!{struct D3D11_TEXCUBE_SRV {
775     MostDetailedMip: UINT,
776     MipLevels: UINT,
777 }}
778 STRUCT!{struct D3D11_TEXCUBE_ARRAY_SRV {
779     MostDetailedMip: UINT,
780     MipLevels: UINT,
781     First2DArrayFace: UINT,
782     NumCubes: UINT,
783 }}
784 STRUCT!{struct D3D11_TEX2DMS_SRV {
785     UnusedField_NothingToDefine: UINT,
786 }}
787 STRUCT!{struct D3D11_TEX2DMS_ARRAY_SRV {
788     FirstArraySlice: UINT,
789     ArraySize: UINT,
790 }}
791 STRUCT!{struct D3D11_SHADER_RESOURCE_VIEW_DESC {
792     Format: DXGI_FORMAT,
793     ViewDimension:  D3D11_SRV_DIMENSION,
794     u: [UINT; 4],
795 }}
796 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Buffer, Buffer_mut, D3D11_BUFFER_SRV}
797 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture1D, Texture1D_mut, D3D11_TEX1D_SRV}
798 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
799     D3D11_TEX1D_ARRAY_SRV}
800 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_SRV}
801 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
802     D3D11_TEX2D_ARRAY_SRV}
803 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, D3D11_TEX2DMS_SRV}
804 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
805     D3D11_TEX2DMS_ARRAY_SRV}
806 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture3D, Texture3D_mut, D3D11_TEX3D_SRV}
807 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, TextureCube, TextureCube_mut, D3D11_TEXCUBE_SRV}
808 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, TextureCubeArray, TextureCubeArray_mut,
809     D3D11_TEXCUBE_ARRAY_SRV}
810 UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, BufferEx, BufferEx_mut, D3D11_BUFFEREX_SRV}
811 RIDL!{interface ID3D11ShaderResourceView(ID3D11ShaderResourceViewVtbl): ID3D11View(ID3D11ViewVtbl) {
812     fn GetDesc(&mut self, pDesc: *mut D3D11_SHADER_RESOURCE_VIEW_DESC) -> ()
813 }}
814 STRUCT!{struct D3D11_BUFFER_RTV {
815     u1: UINT,
816     u2: UINT,
817 }}
818 UNION!{D3D11_BUFFER_RTV, u1, FirstElement, FirstElement_mut, UINT}
819 UNION!{D3D11_BUFFER_RTV, u1, ElementOffset, ElementOffset_mut, UINT}
820 UNION!{D3D11_BUFFER_RTV, u2, NumElements, NumElements_mut, UINT}
821 UNION!{D3D11_BUFFER_RTV, u2, ElementWidth, ElementWidth_mut, UINT}
822 STRUCT!{struct D3D11_TEX1D_RTV {
823     MipSlice: UINT,
824 }}
825 STRUCT!{struct D3D11_TEX1D_ARRAY_RTV {
826     MipSlice: UINT,
827     FirstArraySlice: UINT,
828     ArraySize: UINT,
829 }}
830 STRUCT!{struct D3D11_TEX2D_RTV {
831     MipSlice: UINT,
832 }}
833 STRUCT!{struct D3D11_TEX2DMS_RTV {
834     UnusedField_NothingToDefine: UINT,
835 }}
836 STRUCT!{struct D3D11_TEX2D_ARRAY_RTV {
837     MipSlice: UINT,
838     FirstArraySlice: UINT,
839     ArraySize: UINT,
840 }}
841 STRUCT!{struct D3D11_TEX2DMS_ARRAY_RTV {
842     FirstArraySlice: UINT,
843     ArraySize: UINT,
844 }}
845 STRUCT!{struct D3D11_TEX3D_RTV {
846     MipSlice: UINT,
847     FirstWSlice: UINT,
848     WSize: UINT,
849 }}
850 STRUCT!{struct D3D11_RENDER_TARGET_VIEW_DESC {
851     Format: DXGI_FORMAT,
852     ViewDimension: D3D11_RTV_DIMENSION,
853     u: [UINT; 3],
854 }}
855 UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Buffer, Buffer_mut, D3D11_BUFFER_RTV}
856 UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture1D, Texture1D_mut, D3D11_TEX1D_RTV}
857 UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
858     D3D11_TEX1D_ARRAY_RTV}
859 UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_RTV}
860 UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
861     D3D11_TEX2D_ARRAY_RTV}
862 UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, D3D11_TEX2DMS_RTV}
863 UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture2DMSArray,Texture2DMSArray_mut,
864     D3D11_TEX2DMS_ARRAY_RTV}
865 UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture3D, Texture3D_mut, D3D11_TEX3D_RTV}
866 RIDL!{interface ID3D11RenderTargetView(ID3D11RenderTargetViewVtbl): ID3D11View(ID3D11ViewVtbl) {
867     fn GetDesc(&mut self, pDesc: *mut D3D11_RENDER_TARGET_VIEW_DESC) -> ()
868 }}
869 STRUCT!{struct D3D11_TEX1D_DSV {
870     MipSlice: UINT,
871 }}
872 STRUCT!{struct D3D11_TEX1D_ARRAY_DSV {
873     MipSlice: UINT,
874     FirstArraySlice: UINT,
875     ArraySize: UINT,
876 }}
877 STRUCT!{struct D3D11_TEX2D_DSV {
878     MipSlice: UINT,
879 }}
880 STRUCT!{struct D3D11_TEX2D_ARRAY_DSV {
881     MipSlice: UINT,
882     FirstArraySlice: UINT,
883     ArraySize: UINT,
884 }}
885 STRUCT!{struct D3D11_TEX2DMS_DSV {
886     UnusedField_NothingToDefine: UINT,
887 }}
888 STRUCT!{struct D3D11_TEX2DMS_ARRAY_DSV {
889     FirstArraySlice: UINT,
890     ArraySize: UINT,
891 }}
892 FLAGS!{enum D3D11_DSV_FLAG{
893     D3D11_DSV_READ_ONLY_DEPTH = 0x1,
894     D3D11_DSV_READ_ONLY_STENCIL = 0x2,
895 }}
896 STRUCT!{struct D3D11_DEPTH_STENCIL_VIEW_DESC {
897     Format: DXGI_FORMAT,
898     ViewDimension: D3D11_DSV_DIMENSION,
899     Flags: UINT,
900     u: [UINT; 3],
901 }}
902 UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture1D, Texture1D_mut, D3D11_TEX1D_DSV}
903 UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
904     D3D11_TEX1D_ARRAY_DSV}
905 UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_DSV}
906 UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
907     D3D11_TEX2D_ARRAY_DSV}
908 UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, D3D11_TEX2DMS_DSV}
909 UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
910     D3D11_TEX2DMS_ARRAY_DSV}
911 RIDL!{interface ID3D11DepthStencilView(ID3D11DepthStencilViewVtbl): ID3D11View(ID3D11ViewVtbl) {
912     fn GetDesc(&mut self, pDesc: *mut D3D11_DEPTH_STENCIL_VIEW_DESC) -> ()
913 }}
914 FLAGS!{enum D3D11_BUFFER_UAV_FLAG {
915     D3D11_BUFFER_UAV_FLAG_RAW = 0x1,
916     D3D11_BUFFER_UAV_FLAG_APPEND = 0x2,
917     D3D11_BUFFER_UAV_FLAG_COUNTER = 0x4,
918 }}
919 STRUCT!{struct D3D11_BUFFER_UAV {
920     FirstElement: UINT,
921     NumElements: UINT,
922     Flags: UINT,
923 }}
924 STRUCT!{struct D3D11_TEX1D_UAV {
925     MipSlice: UINT,
926 }}
927 STRUCT!{struct D3D11_TEX1D_ARRAY_UAV {
928     MipSlice: UINT,
929     FirstArraySlice: UINT,
930     ArraySize: UINT,
931 }}
932 STRUCT!{struct D3D11_TEX2D_UAV {
933     MipSlice: UINT,
934 }}
935 STRUCT!{struct D3D11_TEX2D_ARRAY_UAV {
936     MipSlice: UINT,
937     FirstArraySlice: UINT,
938     ArraySize: UINT,
939 }}
940 STRUCT!{struct D3D11_TEX3D_UAV {
941     MipSlice: UINT,
942     FirstWSlice: UINT,
943     WSize: UINT,
944 }}
945 STRUCT!{struct D3D11_UNORDERED_ACCESS_VIEW_DESC {
946     Format: DXGI_FORMAT,
947     ViewDimension: D3D11_UAV_DIMENSION,
948     u: [UINT; 3],
949 }}
950 UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Buffer, Buffer_mut, D3D11_BUFFER_UAV}
951 UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture1D, Texture1D_mut, D3D11_TEX1D_UAV}
952 UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
953     D3D11_TEX1D_ARRAY_UAV}
954 UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_UAV}
955 UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
956     D3D11_TEX2D_ARRAY_UAV}
957 UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture3D, Texture3D_mut, D3D11_TEX3D_UAV}
958 RIDL!{interface ID3D11UnorderedAccessView(ID3D11UnorderedAccessViewVtbl): ID3D11View(ID3D11ViewVtbl) {
959     fn GetDesc(&mut self, pDesc: *mut D3D11_UNORDERED_ACCESS_VIEW_DESC) -> ()
960 }}
961 RIDL!{interface ID3D11VertexShader(ID3D11VertexShaderVtbl)
962     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
963 RIDL!{interface ID3D11HullShader(ID3D11HullShaderVtbl)
964     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
965 RIDL!{interface ID3D11DomainShader(ID3D11DomainShaderVtbl)
966     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
967 RIDL!{interface ID3D11GeometryShader(ID3D11GeometryShaderVtbl)
968     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
969 RIDL!{interface ID3D11PixelShader(ID3D11PixelShaderVtbl)
970     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
971 RIDL!{interface ID3D11ComputeShader(ID3D11ComputeShaderVtbl)
972     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
973 RIDL!{interface ID3D11InputLayout(ID3D11InputLayoutVtbl)
974     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
975 ENUM!{enum D3D11_FILTER {
976     D3D11_FILTER_MIN_MAG_MIP_POINT = 0,
977     D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
978     D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
979     D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
980     D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
981     D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
982     D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
983     D3D11_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
984     D3D11_FILTER_ANISOTROPIC = 0x55,
985     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
986     D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
987     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
988     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
989     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
990     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
991     D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
992     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
993     D3D11_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
994     D3D11_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
995     D3D11_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
996     D3D11_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
997     D3D11_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
998     D3D11_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
999     D3D11_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
1000     D3D11_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
1001     D3D11_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
1002     D3D11_FILTER_MINIMUM_ANISOTROPIC = 0x155,
1003     D3D11_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
1004     D3D11_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
1005     D3D11_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
1006     D3D11_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
1007     D3D11_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
1008     D3D11_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
1009     D3D11_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
1010     D3D11_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
1011     D3D11_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5,
1012 }}
1013 ENUM!{enum D3D11_FILTER_TYPE {
1014     D3D11_FILTER_TYPE_POINT = 0,
1015     D3D11_FILTER_TYPE_LINEAR = 1,
1016 }}
1017 ENUM!{enum D3D11_FILTER_REDUCTION_TYPE {
1018     D3D11_FILTER_REDUCTION_TYPE_STANDARD = 0,
1019     D3D11_FILTER_REDUCTION_TYPE_COMPARISON = 1,
1020     D3D11_FILTER_REDUCTION_TYPE_MINIMUM = 2,
1021     D3D11_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
1022 }}
1023 pub const D3D11_FILTER_REDUCTION_TYPE_MASK: DWORD = 0x3;
1024 pub const D3D11_FILTER_REDUCTION_TYPE_SHIFT: DWORD = 7;
1025 pub const D3D11_FILTER_TYPE_MASK: DWORD = 0x3;
1026 pub const D3D11_MIN_FILTER_SHIFT: DWORD = 4;
1027 pub const D3D11_MAG_FILTER_SHIFT: DWORD = 2;
1028 pub const D3D11_MIP_FILTER_SHIFT: DWORD = 0;
1029 pub const D3D11_COMPARISON_FILTERING_BIT: DWORD = 0x80;
1030 pub const D3D11_ANISOTROPIC_FILTERING_BIT: DWORD = 0x40;
1031 ENUM!{enum D3D11_TEXTURE_ADDRESS_MODE {
1032     D3D11_TEXTURE_ADDRESS_WRAP = 1,
1033     D3D11_TEXTURE_ADDRESS_MIRROR = 2,
1034     D3D11_TEXTURE_ADDRESS_CLAMP = 3,
1035     D3D11_TEXTURE_ADDRESS_BORDER = 4,
1036     D3D11_TEXTURE_ADDRESS_MIRROR_ONCE = 5,
1037 }}
1038 STRUCT!{struct D3D11_SAMPLER_DESC {
1039     Filter:  D3D11_FILTER,
1040     AddressU: D3D11_TEXTURE_ADDRESS_MODE,
1041     AddressV: D3D11_TEXTURE_ADDRESS_MODE,
1042     AddressW: D3D11_TEXTURE_ADDRESS_MODE,
1043     MipLODBias: FLOAT,
1044     MaxAnisotropy: UINT,
1045     ComparisonFunc: D3D11_COMPARISON_FUNC,
1046     BorderColor: [FLOAT; 4],
1047     MinLOD: FLOAT,
1048     MaxLOD: FLOAT,
1049 }}
1050 RIDL!{interface ID3D11SamplerState(ID3D11SamplerStateVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1051     fn GetDesc(&mut self, pDesc: *mut D3D11_SAMPLER_DESC) -> ()
1052 }}
1053 FLAGS!{enum D3D11_FORMAT_SUPPORT {
1054     D3D11_FORMAT_SUPPORT_BUFFER = 0x1,
1055     D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER = 0x2,
1056     D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER = 0x4,
1057     D3D11_FORMAT_SUPPORT_SO_BUFFER = 0x8,
1058     D3D11_FORMAT_SUPPORT_TEXTURE1D = 0x10,
1059     D3D11_FORMAT_SUPPORT_TEXTURE2D = 0x20,
1060     D3D11_FORMAT_SUPPORT_TEXTURE3D = 0x40,
1061     D3D11_FORMAT_SUPPORT_TEXTURECUBE = 0x80,
1062     D3D11_FORMAT_SUPPORT_SHADER_LOAD = 0x100,
1063     D3D11_FORMAT_SUPPORT_SHADER_SAMPLE = 0x200,
1064     D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON = 0x400,
1065     D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT = 0x800,
1066     D3D11_FORMAT_SUPPORT_MIP = 0x1000,
1067     D3D11_FORMAT_SUPPORT_MIP_AUTOGEN = 0x2000,
1068     D3D11_FORMAT_SUPPORT_RENDER_TARGET = 0x4000,
1069     D3D11_FORMAT_SUPPORT_BLENDABLE = 0x8000,
1070     D3D11_FORMAT_SUPPORT_DEPTH_STENCIL = 0x10000,
1071     D3D11_FORMAT_SUPPORT_CPU_LOCKABLE = 0x20000,
1072     D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE = 0x40000,
1073     D3D11_FORMAT_SUPPORT_DISPLAY = 0x80000,
1074     D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT = 0x100000,
1075     D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET = 0x200000,
1076     D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD = 0x400000,
1077     D3D11_FORMAT_SUPPORT_SHADER_GATHER = 0x800000,
1078     D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST = 0x1000000,
1079     D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
1080     D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON = 0x4000000,
1081     D3D11_FORMAT_SUPPORT_DECODER_OUTPUT = 0x8000000,
1082     D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
1083     D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT = 0x20000000,
1084     D3D11_FORMAT_SUPPORT_VIDEO_ENCODER = 0x40000000,
1085 }}
1086 FLAGS!{enum D3D11_FORMAT_SUPPORT2 {
1087     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
1088     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
1089     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
1090     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
1091     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
1092     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
1093     D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
1094     D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
1095     D3D11_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
1096     D3D11_FORMAT_SUPPORT2_TILED = 0x200,
1097     D3D11_FORMAT_SUPPORT2_SHAREABLE = 0x400,
1098     D3D11_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
1099 }}
1100 RIDL!{interface ID3D11Asynchronous(ID3D11AsynchronousVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1101     fn GetDataSize(&mut self) -> UINT
1102 }}
1103 FLAGS!{enum D3D11_ASYNC_GETDATA_FLAG {
1104     D3D11_ASYNC_GETDATA_DONOTFLUSH = 0x1,
1105 }}
1106 ENUM!{enum D3D11_QUERY {
1107     D3D11_QUERY_EVENT = 0,
1108     D3D11_QUERY_OCCLUSION = D3D11_QUERY_EVENT.0 + 1,
1109     D3D11_QUERY_TIMESTAMP = D3D11_QUERY_OCCLUSION.0 + 1,
1110     D3D11_QUERY_TIMESTAMP_DISJOINT = D3D11_QUERY_TIMESTAMP.0 + 1,
1111     D3D11_QUERY_PIPELINE_STATISTICS = D3D11_QUERY_TIMESTAMP_DISJOINT.0 + 1,
1112     D3D11_QUERY_OCCLUSION_PREDICATE = D3D11_QUERY_PIPELINE_STATISTICS.0 + 1,
1113     D3D11_QUERY_SO_STATISTICS = D3D11_QUERY_OCCLUSION_PREDICATE.0 + 1,
1114     D3D11_QUERY_SO_OVERFLOW_PREDICATE = D3D11_QUERY_SO_STATISTICS.0 + 1,
1115     D3D11_QUERY_SO_STATISTICS_STREAM0 = D3D11_QUERY_SO_OVERFLOW_PREDICATE.0 + 1,
1116     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 = D3D11_QUERY_SO_STATISTICS_STREAM0.0 + 1,
1117     D3D11_QUERY_SO_STATISTICS_STREAM1 = D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0.0 + 1,
1118     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 = D3D11_QUERY_SO_STATISTICS_STREAM1.0 + 1,
1119     D3D11_QUERY_SO_STATISTICS_STREAM2 = D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1.0 + 1,
1120     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 = D3D11_QUERY_SO_STATISTICS_STREAM2.0 + 1,
1121     D3D11_QUERY_SO_STATISTICS_STREAM3 = D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2.0 + 1,
1122     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 = D3D11_QUERY_SO_STATISTICS_STREAM3.0 + 1,
1123 }}
1124 FLAGS!{enum D3D11_QUERY_MISC_FLAG {
1125     D3D11_QUERY_MISC_PREDICATEHINT = 0x1,
1126 }}
1127 STRUCT!{struct D3D11_QUERY_DESC {
1128     Query: D3D11_QUERY,
1129     MiscFlags: UINT,
1130 }}
1131 RIDL!{interface ID3D11Query(ID3D11QueryVtbl): ID3D11Asynchronous(ID3D11AsynchronousVtbl) {
1132     fn GetDesc(&mut self, pDesc: *mut D3D11_QUERY_DESC) -> ()
1133 }}
1134 RIDL!{interface ID3D11Predicate(ID3D11PredicateVtbl): ID3D11Query(ID3D11QueryVtbl) {}}
1135 STRUCT!{struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT {
1136     Frequency: UINT64,
1137     Disjoint: BOOL,
1138 }}
1139 STRUCT!{struct D3D11_QUERY_DATA_PIPELINE_STATISTICS {
1140     IAVertices: UINT64,
1141     IAPrimitives: UINT64,
1142     VSInvocations: UINT64,
1143     GSInvocations: UINT64,
1144     GSPrimitives: UINT64,
1145     CInvocations: UINT64,
1146     CPrimitives: UINT64,
1147     PSInvocations: UINT64,
1148     HSInvocations: UINT64,
1149     DSInvocations: UINT64,
1150     CSInvocations: UINT64,
1151 }}
1152 STRUCT!{struct D3D11_QUERY_DATA_SO_STATISTICS {
1153     NumPrimitivesWritten: UINT64,
1154     PrimitivesStorageNeeded: UINT64,
1155 }}
1156 FLAGS!{enum D3D11_COUNTER {
1157     D3D11_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000,
1158 }}
1159 ENUM!{enum D3D11_COUNTER_TYPE {
1160     D3D11_COUNTER_TYPE_FLOAT32 = 0,
1161     D3D11_COUNTER_TYPE_UINT16 = D3D11_COUNTER_TYPE_FLOAT32.0 + 1,
1162     D3D11_COUNTER_TYPE_UINT32 = D3D11_COUNTER_TYPE_UINT16.0 + 1,
1163     D3D11_COUNTER_TYPE_UINT64 = D3D11_COUNTER_TYPE_UINT32.0 + 1,
1164 }}
1165 STRUCT!{struct D3D11_COUNTER_DESC {
1166     Counter: D3D11_COUNTER,
1167     MiscFlags: UINT,
1168 }}
1169 STRUCT!{struct D3D11_COUNTER_INFO {
1170     LastDeviceDependentCounter: D3D11_COUNTER,
1171     NumSimultaneousCounters: UINT,
1172     NumDetectableParallelUnits: UINT8,
1173 }}
1174 RIDL!{interface ID3D11Counter(ID3D11CounterVtbl): ID3D11Asynchronous(ID3D11AsynchronousVtbl) {
1175     fn GetDesc(&mut self, pDesc: *mut D3D11_COUNTER_DESC) -> ()
1176 }}
1177 ENUM!{enum D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS {
1178     D3D11_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
1179     D3D11_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe,
1180 }}
1181 ENUM!{enum D3D11_DEVICE_CONTEXT_TYPE {
1182     D3D11_DEVICE_CONTEXT_IMMEDIATE = 0,
1183     D3D11_DEVICE_CONTEXT_DEFERRED = D3D11_DEVICE_CONTEXT_IMMEDIATE.0 + 1,
1184 }}
1185 STRUCT!{struct D3D11_CLASS_INSTANCE_DESC {
1186     InstanceId: UINT,
1187     InstanceIndex: UINT,
1188     TypeId: UINT,
1189     ConstantBuffer: UINT,
1190     BaseConstantBufferOffset: UINT,
1191     BaseTexture: UINT,
1192     BaseSampler: UINT,
1193     Created: BOOL,
1194 }}
1195 RIDL!{interface ID3D11ClassInstance(ID3D11ClassInstanceVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1196     fn GetClassLinkage(&mut self, ppLinkage: *mut *mut ID3D11ClassLinkage) -> (),
1197     fn GetDesc(&mut self, pDesc: *mut D3D11_CLASS_INSTANCE_DESC) -> (),
1198     fn GetInstanceName(&mut self, pInstanceName: LPSTR, pBufferLength: *mut SIZE_T) -> (),
1199     fn GetTypeName(&mut self, pTypeName: LPSTR, pBufferLength: *mut SIZE_T) -> ()
1200 }}
1201 RIDL!{interface ID3D11ClassLinkage(ID3D11ClassLinkageVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1202     fn GetClassInstance(
1203         &mut self, GetClassInstance: LPCSTR, InstanceIndex: UINT,
1204         ppInstance: *mut *mut ID3D11ClassInstance
1205     ) -> HRESULT,
1206     fn CreateClassInstance(
1207         &mut self, pClassTypeName: LPCSTR, ConstantBufferOffset: UINT, ConstantVectorOffset: UINT, TextureOffset: UINT, SamplerOffset: UINT, ppInstance: *mut *mut ID3D11ClassInstance
1208     ) -> HRESULT
1209 }}
1210 RIDL!{interface ID3D11CommandList(ID3D11CommandListVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1211     fn GetContextFlags(&mut self) -> UINT
1212 }}
1213 ENUM!{enum D3D11_FEATURE {
1214     D3D11_FEATURE_THREADING = 0,
1215     D3D11_FEATURE_DOUBLES = D3D11_FEATURE_THREADING.0 + 1,
1216     D3D11_FEATURE_FORMAT_SUPPORT = D3D11_FEATURE_DOUBLES.0 + 1,
1217     D3D11_FEATURE_FORMAT_SUPPORT2 = D3D11_FEATURE_FORMAT_SUPPORT.0 + 1,
1218     D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS = D3D11_FEATURE_FORMAT_SUPPORT2.0 + 1,
1219     D3D11_FEATURE_D3D11_OPTIONS = D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS.0 + 1,
1220     D3D11_FEATURE_ARCHITECTURE_INFO = D3D11_FEATURE_D3D11_OPTIONS.0 + 1,
1221     D3D11_FEATURE_D3D9_OPTIONS = D3D11_FEATURE_ARCHITECTURE_INFO.0 + 1,
1222     D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT = D3D11_FEATURE_D3D9_OPTIONS.0 + 1,
1223     D3D11_FEATURE_D3D9_SHADOW_SUPPORT = D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT.0 + 1,
1224     D3D11_FEATURE_D3D11_OPTIONS1 = D3D11_FEATURE_D3D9_SHADOW_SUPPORT.0 + 1,
1225     D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT = D3D11_FEATURE_D3D11_OPTIONS1.0 + 1,
1226     D3D11_FEATURE_MARKER_SUPPORT = D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT.0 + 1,
1227     D3D11_FEATURE_D3D9_OPTIONS1 = D3D11_FEATURE_MARKER_SUPPORT.0 + 1,
1228     D3D11_FEATURE_D3D11_OPTIONS2 = D3D11_FEATURE_D3D9_OPTIONS1.0 + 1,
1229     D3D11_FEATURE_D3D11_OPTIONS3 = D3D11_FEATURE_D3D11_OPTIONS2.0 + 1,
1230     D3D11_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = D3D11_FEATURE_D3D11_OPTIONS3.0 + 1,
1231 }}
1232 STRUCT!{struct D3D11_FEATURE_DATA_THREADING {
1233     DriverConcurrentCreates: BOOL,
1234     DriverCommandLists: BOOL,
1235 }}
1236 STRUCT!{struct D3D11_FEATURE_DATA_DOUBLES {
1237     DoublePrecisionFloatShaderOps: BOOL,
1238 }}
1239 STRUCT!{struct D3D11_FEATURE_DATA_FORMAT_SUPPORT {
1240     InFormat: DXGI_FORMAT,
1241     OutFormatSupport: UINT,
1242 }}
1243 STRUCT!{struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2 {
1244     InFormat: DXGI_FORMAT,
1245     OutFormatSupport2: UINT,
1246 }}
1247 STRUCT!{struct D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS {
1248     ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x: BOOL,
1249 }}
1250 STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS {
1251     OutputMergerLogicOp: BOOL,
1252     UAVOnlyRenderingForcedSampleCount: BOOL,
1253     DiscardAPIsSeenByDriver: BOOL,
1254     FlagsForUpdateAndCopySeenByDriver: BOOL,
1255     ClearView: BOOL,
1256     CopyWithOverlap: BOOL,
1257     ConstantBufferPartialUpdate: BOOL,
1258     ConstantBufferOffsetting: BOOL,
1259     MapNoOverwriteOnDynamicConstantBuffer: BOOL,
1260     MapNoOverwriteOnDynamicBufferSRV: BOOL,
1261     MultisampleRTVWithForcedSampleCountOne: BOOL,
1262     SAD4ShaderInstructions: BOOL,
1263     ExtendedDoublesShaderInstructions: BOOL,
1264     ExtendedResourceSharing: BOOL,
1265 }}
1266 STRUCT!{struct D3D11_FEATURE_DATA_ARCHITECTURE_INFO {
1267     TileBasedDeferredRenderer: BOOL,
1268 }}
1269 STRUCT!{struct D3D11_FEATURE_DATA_D3D9_OPTIONS {
1270     FullNonPow2TextureSupport: BOOL,
1271 }}
1272 STRUCT!{struct D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT {
1273     SupportsDepthAsTextureWithLessEqualComparisonFilter: BOOL,
1274 }}
1275 FLAGS!{enum D3D11_SHADER_MIN_PRECISION_SUPPORT {
1276     D3D11_SHADER_MIN_PRECISION_10_BIT = 0x1,
1277     D3D11_SHADER_MIN_PRECISION_16_BIT = 0x2,
1278 }}
1279 STRUCT!{struct D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT {
1280     PixelShaderMinPrecision: UINT,
1281     AllOtherShaderStagesMinPrecision: UINT,
1282 }}
1283 ENUM!{enum D3D11_TILED_RESOURCES_TIER {
1284     D3D11_TILED_RESOURCES_NOT_SUPPORTED = 0,
1285     D3D11_TILED_RESOURCES_TIER_1 = 1,
1286     D3D11_TILED_RESOURCES_TIER_2 = 2,
1287     D3D11_TILED_RESOURCES_TIER_3 = 3,
1288 }}
1289 STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS1 {
1290     TiledResourcesTier: D3D11_TILED_RESOURCES_TIER,
1291     MinMaxFiltering: BOOL,
1292     ClearViewAlsoSupportsDepthOnlyFormats: BOOL,
1293     MapOnDefaultBuffers: BOOL,
1294 }}
1295 STRUCT!{struct D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT {
1296     SimpleInstancingSupported: BOOL,
1297 }}
1298 STRUCT!{struct D3D11_FEATURE_DATA_MARKER_SUPPORT {
1299     Profile: BOOL,
1300 }}
1301 STRUCT!{struct D3D11_FEATURE_DATA_D3D9_OPTIONS1 {
1302     FullNonPow2TextureSupported: BOOL,
1303     DepthAsTextureWithLessEqualComparisonFilterSupported: BOOL,
1304     SimpleInstancingSupported: BOOL,
1305     TextureCubeFaceRenderTargetWithNonCubeDepthStencilSupported: BOOL,
1306 }}
1307 ENUM!{enum D3D11_CONSERVATIVE_RASTERIZATION_TIER {
1308     D3D11_CONSERVATIVE_RASTERIZATION_NOT_SUPPORTED = 0,
1309     D3D11_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
1310     D3D11_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
1311     D3D11_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
1312 }}
1313 STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS2 {
1314     PSSpecifiedStencilRefSupported: BOOL,
1315     TypedUAVLoadAdditionalFormats: BOOL,
1316     ROVsSupported: BOOL,
1317     ConservativeRasterizationTier: D3D11_CONSERVATIVE_RASTERIZATION_TIER,
1318     TiledResourcesTier: D3D11_TILED_RESOURCES_TIER,
1319     MapOnDefaultTextures: BOOL,
1320     StandardSwizzle: BOOL,
1321     UnifiedMemoryArchitecture: BOOL,
1322 }}
1323 STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS3 {
1324     VPAndRTArrayIndexFromAnyShaderFeedingRasterizer: BOOL,
1325 }}
1326 STRUCT!{struct D3D11_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT {
1327     MaxGPUVirtualAddressBitsPerResource: UINT,
1328     MaxGPUVirtualAddressBitsPerProcess: UINT,
1329 }}
1330 RIDL!{interface ID3D11DeviceContext(ID3D11DeviceContextVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1331     fn VSSetConstantBuffers(
1332         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
1333     ) -> (),
1334     fn PSSetShaderResources(
1335         &mut self, StartSlot: UINT, NumViews: UINT,
1336         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
1337     ) -> (),
1338     fn PSSetShader(
1339         &mut self, pPixelShader: *mut ID3D11PixelShader,
1340         ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
1341     ) -> (),
1342     fn PSSetSamplers(
1343         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
1344     ) -> (),
1345     fn VSSetShader(
1346         &mut self, pVertexShader: *mut ID3D11VertexShader,
1347         ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
1348     ) -> (),
1349     fn DrawIndexed(
1350         &mut self, IndexCount: UINT, StartIndexLocation: UINT, BaseVertexLocation: INT
1351     ) -> (),
1352     fn Draw(&mut self, VertexCount: UINT, StartVertexLocation: UINT) -> (),
1353     fn Map(
1354         &mut self, pResource: *mut ID3D11Resource, Subresource: UINT, MapType: D3D11_MAP,
1355         MapFlags: UINT, pMappedResource: *mut D3D11_MAPPED_SUBRESOURCE
1356     ) -> HRESULT,
1357     fn Unmap(&mut self, pResource: *mut ID3D11Resource, Subresource: UINT) -> (),
1358     fn PSSetConstantBuffers(
1359         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
1360     ) -> (),
1361     fn IASetInputLayout(&mut self, pInputLayout: *mut ID3D11InputLayout) -> (),
1362     fn IASetVertexBuffers(
1363         &mut self, StartSlot: UINT, NumBuffers: UINT, ppVertexBuffers: *const *mut ID3D11Buffer,
1364         pStrides: *const UINT, pOffsets: *const UINT
1365     ) -> (),
1366     fn IASetIndexBuffer(
1367         &mut self, pIndexBuffer: *mut ID3D11Buffer, Format: DXGI_FORMAT, Offset: UINT
1368     ) -> (),
1369     fn DrawIndexedInstanced(
1370         &mut self, IndexCountPerInstance: UINT, InstanceCount: UINT, StartIndexLocation: UINT,
1371         BaseVertexLocation: INT, StartInstanceLocation: UINT
1372     ) -> (),
1373     fn DrawInstanced(
1374         &mut self, VertexCountPerInstance: UINT, InstanceCount: UINT, StartVertexLocation: UINT,
1375         StartInstanceLocation: UINT
1376     ) -> (),
1377     fn GSSetConstantBuffers(
1378         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
1379     ) -> (),
1380     fn GSSetShader(
1381         &mut self, pShader: *mut ID3D11GeometryShader,
1382         ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
1383     ) -> (),
1384     fn IASetPrimitiveTopology(&mut self, Topology: D3D11_PRIMITIVE_TOPOLOGY) -> (),
1385     fn VSSetShaderResources(
1386         &mut self, StartSlot: UINT, NumViews: UINT,
1387         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
1388     ) -> (),
1389     fn VSSetSamplers(
1390         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
1391     ) -> (),
1392     fn Begin(&mut self, pAsync: *mut ID3D11Asynchronous) -> (),
1393     fn End(&mut self, pAsync: *mut ID3D11Asynchronous) -> (),
1394     fn GetData(
1395         &mut self,  pAsync: *mut ID3D11Asynchronous, pData: *mut c_void, DataSize: UINT,
1396         GetDataFlags: UINT
1397     ) -> HRESULT,
1398     fn SetPredication(
1399         &mut self, pPredicate: *mut ID3D11Predicate, PredicateValue: BOOL
1400     ) -> (),
1401     fn GSSetShaderResources(
1402         &mut self, StartSlot: UINT, NumViews: UINT,
1403         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
1404     ) -> (),
1405     fn GSSetSamplers(
1406         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
1407     ) -> (),
1408     fn OMSetRenderTargets(
1409         &mut self, NumViews: UINT, ppRenderTargetViews: *const *mut ID3D11RenderTargetView,
1410         pDepthStencilView: *mut ID3D11DepthStencilView
1411     ) -> (),
1412     fn OMSetRenderTargetsAndUnorderedAccessViews(
1413         &mut self, NumRTVs: UINT, ppRenderTargetViews: *const *mut ID3D11RenderTargetView,
1414         pDepthStencilView: *mut ID3D11DepthStencilView, UAVStartSlot: UINT, NumUAVs: UINT,
1415         ppUnorderedAccessViews: *const *mut ID3D11UnorderedAccessView,
1416         pUAVInitialCounts: *const UINT
1417     ) -> (),
1418     fn OMSetBlendState(
1419         &mut self, pBlendState: *mut ID3D11BlendState, BlendFactor: &[FLOAT; 4], SampleMask: UINT
1420     ) -> (),
1421     fn OMSetDepthStencilState(
1422         &mut self, pDepthStencilState: *mut ID3D11DepthStencilState, StencilRef: UINT
1423     ) -> (),
1424     fn SOSetTargets(
1425         &mut self, NumBuffers: UINT, ppSOTargets: *const *mut ID3D11Buffer, pOffsets: *const UINT
1426     ) -> (),
1427     fn DrawAuto(&mut self) -> (),
1428     fn DrawIndexedInstancedIndirect(
1429         &mut self, pBufferForArgs: *mut ID3D11Buffer, AlignedByteOffsetForArgs: UINT
1430     ) -> (),
1431     fn DrawInstancedIndirect(
1432         &mut self, pBufferForArgs: *mut ID3D11Buffer, AlignedByteOffsetForArgs: UINT
1433     ) -> (),
1434     fn Dispatch(
1435         &mut self, ThreadGroupCountX: UINT, ThreadGroupCountY: UINT, ThreadGroupCountZ: UINT
1436     ) -> (),
1437     fn DispatchIndirect(
1438         &mut self, pBufferForArgs: *mut ID3D11Buffer, AlignedByteOffsetForArgs: UINT
1439     ) -> (),
1440     fn RSSetState(&mut self, pRasterizerState: *mut ID3D11RasterizerState) -> (),
1441     fn RSSetViewports(&mut self, NumViewports: UINT, pViewports: *const D3D11_VIEWPORT) -> (),
1442     fn RSSetScissorRects(&mut self, NumRects: UINT, pRects: *const D3D11_RECT) -> (),
1443     fn CopySubresourceRegion(
1444         &mut self, pDstResource: *mut ID3D11Resource, DstSubresource: UINT, DstX: UINT, DstY: UINT,
1445         DstZ: UINT, pSrcResource: *mut ID3D11Resource, SrcSubresource: UINT,
1446         pSrcBox: *const D3D11_BOX
1447     ) -> (),
1448     fn CopyResource(
1449         &mut self, pDstResource: *mut ID3D11Resource, pSrcResource: *mut ID3D11Resource
1450     ) -> (),
1451     fn UpdateSubresource(
1452         &mut self, pDstResource: *mut ID3D11Resource, DstSubresource: UINT,
1453         pDstBox: *const D3D11_BOX, pSrcData: *const c_void, SrcRowPitch: UINT, SrcDepthPitch: UINT
1454     ) -> (),
1455     fn CopyStructureCount(
1456         &mut self, pDstBuffer: *mut ID3D11Buffer, DstAlignedByteOffset: UINT,
1457         pSrcView: *mut ID3D11UnorderedAccessView
1458     ) -> (),
1459     fn ClearRenderTargetView(
1460         &mut self, pRenderTargetView: *mut ID3D11RenderTargetView, ColorRGBA: &[FLOAT; 4]
1461     ) -> (),
1462     fn ClearUnorderedAccessViewUint(
1463         &mut self, pUnorderedAccessView: *mut ID3D11UnorderedAccessView, Values: &[UINT; 4]
1464     ) -> (),
1465     fn ClearUnorderedAccessViewFloat(
1466         &mut self, pUnorderedAccessView: *mut ID3D11UnorderedAccessView, Values: &[FLOAT; 4]
1467     ) -> (),
1468     fn ClearDepthStencilView(
1469         &mut self, pDepthStencilView: *mut ID3D11DepthStencilView, ClearFlags: UINT, Depth: FLOAT,
1470         Stencil: UINT8
1471     ) -> (),
1472     fn GenerateMips(&mut self, pShaderResourceView: *mut ID3D11ShaderResourceView) -> (),
1473     fn SetResourceMinLOD(&mut self, pResource: *mut ID3D11Resource, MinLOD: FLOAT) -> (),
1474     fn GetResourceMinLOD(&mut self, pResource: *mut ID3D11Resource) -> FLOAT,
1475     fn ResolveSubresource(
1476         &mut self, pDstResource: *mut ID3D11Resource, DstSubresource: UINT,
1477         pSrcResource: *mut ID3D11Resource, SrcSubresource: UINT, Format: DXGI_FORMAT
1478     ) -> (),
1479     fn ExecuteCommandList(
1480         &mut self, pCommandList: *mut ID3D11CommandList,
1481         RestoreContextState: BOOL
1482     ) -> (),
1483     fn HSSetShaderResources(
1484         &mut self, StartSlot: UINT, NumViews: UINT,
1485         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
1486     ) -> (),
1487     fn HSSetShader(
1488         &mut self, pHullShader: *mut ID3D11HullShader,
1489         ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
1490     ) -> (),
1491     fn HSSetSamplers(
1492         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
1493     ) -> (),
1494     fn HSSetConstantBuffers(
1495         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
1496     ) -> (),
1497     fn DSSetShaderResources(
1498         &mut self, StartSlot: UINT, NumViews: UINT,
1499         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
1500     ) -> (),
1501     fn DSSetShader(
1502         &mut self, pDomainShader: *mut ID3D11DomainShader,
1503         ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
1504     ) -> (),
1505     fn DSSetSamplers(
1506         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
1507     ) -> (),
1508     fn DSSetConstantBuffers(
1509         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
1510     ) -> (),
1511     fn CSSetShaderResources(
1512         &mut self, StartSlot: UINT, NumViews: UINT,
1513         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
1514     ) -> (),
1515     fn CSSetUnorderedAccessViews(
1516         &mut self, StartSlot: UINT, NumUAVs: UINT,
1517         ppUnorderedAccessViews: *const *mut ID3D11UnorderedAccessView
1518     ) -> (),
1519     fn CSSetShader(
1520         &mut self, pComputeShader: *mut ID3D11ComputeShader,
1521         ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
1522     ) -> (),
1523     fn CSSetSamplers(
1524         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
1525     ) -> (),
1526     fn CSSetConstantBuffers(
1527         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
1528     ) -> (),
1529     fn VSGetConstantBuffers(
1530         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
1531     ) -> (),
1532     fn PSGetShaderResources(
1533         &mut self, StartSlot: UINT, NumViews: UINT,
1534         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
1535     ) -> (),
1536     fn PSGetShader(
1537         &mut self, ppPixelShader: *mut *mut ID3D11PixelShader,
1538         ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
1539     ) -> (),
1540     fn PSGetSamplers(
1541         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
1542     ) -> (),
1543     fn VSGetShader(
1544         &mut self, ppVertexShader: *mut *mut ID3D11VertexShader,
1545         ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
1546     ) -> (),
1547     fn PSGetConstantBuffers(
1548         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
1549     ) -> (),
1550     fn IAGetInputLayout(&mut self, ppInputLayout: *mut *mut ID3D11InputLayout) -> (),
1551     fn IAGetVertexBuffers(
1552         &mut self, StartSlot: UINT, NumBuffers: UINT, ppVertexBuffers: *mut *mut ID3D11Buffer,
1553         pStrides: *mut UINT, pOffsets: *mut UINT
1554     ) -> (),
1555     fn IAGetIndexBuffer(
1556         &mut self, pIndexBuffer: *mut *mut ID3D11Buffer, Format: *mut DXGI_FORMAT,
1557         Offset: *mut UINT
1558     ) -> (),
1559     fn GSGetConstantBuffers(
1560         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
1561     ) -> (),
1562     fn GSGetShader(
1563         &mut self, ppGeometryShader: *mut *mut ID3D11GeometryShader,
1564         ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
1565     ) -> (),
1566     fn IAGetPrimitiveTopology(&mut self, pTopology: *mut D3D11_PRIMITIVE_TOPOLOGY) -> (),
1567     fn VSGetShaderResources(
1568         &mut self, StartSlot: UINT, NumViews: UINT,
1569         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
1570     ) -> (),
1571     fn VSGetSamplers(
1572         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
1573     ) -> (),
1574     fn GetPredication(
1575         &mut self, ppPredicate: *mut *mut ID3D11Predicate, pPredicateValue: *mut BOOL
1576     ) -> (),
1577     fn GSGetShaderResources(
1578         &mut self, StartSlot: UINT, NumViews: UINT,
1579         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
1580     ) -> (),
1581     fn GSGetSamplers(
1582         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
1583     ) -> (),
1584     fn OMGetRenderTargets(
1585         &mut self, NumViews: UINT, ppRenderTargetViews: *mut *mut ID3D11RenderTargetView,
1586         ppDepthStencilView: *mut *mut ID3D11DepthStencilView
1587     ) -> (),
1588     fn OMGetRenderTargetsAndUnorderedAccessViews(
1589         &mut self, NumRTVs: UINT, ppRenderTargetViews: *mut *mut ID3D11RenderTargetView,
1590         ppDepthStencilView: *mut *mut ID3D11DepthStencilView, UAVStartSlot: UINT,
1591         ppUnorderedAccessViews: *mut *mut ID3D11UnorderedAccessView
1592     ) -> (),
1593     fn OMGetBlendState(
1594         &mut self, ppBlendState: *mut *mut ID3D11BlendState, BlendFactor: &mut [FLOAT; 4],
1595         pSampleMask: *mut UINT
1596     ) -> (),
1597     fn OMGetDepthStencilState(
1598         &mut self, ppDepthStencilState: *mut *mut ID3D11DepthStencilState, pStencilRef: *mut UINT
1599     ) -> (),
1600     fn SOGetTargets(&mut self, NumBuffers: UINT, ppSOTargets: *mut *mut ID3D11Buffer) -> (),
1601     fn RSGetState(&mut self, ppRasterizerState: *mut *mut ID3D11RasterizerState) -> (),
1602     fn RSGetViewports(&mut self, pNumViewports: *mut UINT, pViewports: *mut D3D11_VIEWPORT) -> (),
1603     fn RSGetScissorRects(&mut self, pNumRects: *mut UINT, pRects: *mut D3D11_RECT) -> (),
1604     fn HSGetShaderResources(
1605         &mut self, StartSlot: UINT, NumViews: UINT,
1606         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
1607     ) -> (),
1608     fn HSGetShader(
1609         &mut self, ppHullShader: *mut *mut ID3D11HullShader,
1610         ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
1611     ) -> (),
1612     fn HSGetSamplers(
1613         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
1614     ) -> (),
1615     fn HSGetConstantBuffers(
1616         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
1617     ) -> (),
1618     fn DSGetShaderResources(
1619         &mut self, StartSlot: UINT, NumViews: UINT,
1620         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
1621     ) -> (),
1622     fn DSGetShader(
1623         &mut self, ppDomainShader: *mut *mut ID3D11DomainShader,
1624         ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
1625     ) -> (),
1626     fn DSGetSamplers(
1627         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
1628     ) -> (),
1629     fn DSGetConstantBuffers(
1630         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
1631     ) -> (),
1632     fn CSGetShaderResources(
1633         &mut self, StartSlot: UINT, NumViews: UINT,
1634         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
1635     ) -> (),
1636     fn CSGetUnorderedAccessViews(
1637         &mut self, StartSlot: UINT, NumUAVs: UINT,
1638         ppUnorderedAccessViews: *mut *mut ID3D11UnorderedAccessView
1639     ) -> (),
1640     fn CSGetShader(
1641         &mut self, ppComputeShader: *mut *mut ID3D11ComputeShader,
1642         ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
1643     ) -> (),
1644     fn CSGetSamplers(
1645         &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
1646     ) -> (),
1647     fn CSGetConstantBuffers(
1648         &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
1649     ) -> (),
1650     fn ClearState(&mut self) -> (),
1651     fn Flush(&mut self) -> (),
1652     fn GetType(&mut self) -> D3D11_DEVICE_CONTEXT_TYPE,
1653     fn GetContextFlags(&mut self) -> UINT,
1654     fn FinishCommandList(
1655         &mut self, RestoreDeferredContextState: BOOL, ppCommandList: *mut *mut ID3D11CommandList
1656     ) -> HRESULT
1657 }}
1658 STRUCT!{struct D3D11_VIDEO_DECODER_DESC {
1659     Guid: GUID,
1660     SampleWidth: UINT,
1661     SampleHeight: UINT,
1662     OutputFormat: DXGI_FORMAT,
1663 }}
1664 STRUCT!{struct D3D11_VIDEO_DECODER_CONFIG {
1665     guidConfigBitstreamEncryption: GUID,
1666     guidConfigMBcontrolEncryption: GUID,
1667     guidConfigResidDiffEncryption: GUID,
1668     ConfigBitstreamRaw: UINT,
1669     ConfigMBcontrolRasterOrder: UINT,
1670     ConfigResidDiffHost: UINT,
1671     ConfigSpatialResid8: UINT,
1672     ConfigResid8Subtraction: UINT,
1673     ConfigSpatialHost8or9Clipping: UINT,
1674     ConfigSpatialResidInterleaved: UINT,
1675     ConfigIntraResidUnsigned: UINT,
1676     ConfigResidDiffAccelerator: UINT,
1677     ConfigHostInverseScan: UINT,
1678     ConfigSpecificIDCT: UINT,
1679     Config4GroupedCoefs: UINT,
1680     ConfigMinRenderTargetBuffCount: USHORT,
1681     ConfigDecoderSpecific: USHORT,
1682 }}
1683 ENUM!{enum D3D11_VIDEO_DECODER_BUFFER_TYPE {
1684     D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
1685     D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1,
1686     D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2,
1687     D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3,
1688     D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4,
1689     D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5,
1690     D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6,
1691     D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7,
1692     D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8,
1693 }}
1694 STRUCT!{struct D3D11_AES_CTR_IV {
1695     IV: UINT64,
1696     Count: UINT64,
1697 }}
1698 STRUCT!{struct D3D11_ENCRYPTED_BLOCK_INFO {
1699     NumEncryptedBytesAtBeginning: UINT,
1700     NumBytesInSkipPattern: UINT,
1701     NumBytesInEncryptPattern: UINT,
1702 }}
1703 STRUCT!{struct D3D11_VIDEO_DECODER_BUFFER_DESC {
1704     BufferType: D3D11_VIDEO_DECODER_BUFFER_TYPE,
1705     BufferIndex: UINT,
1706     DataOffset: UINT,
1707     DataSize: UINT,
1708     FirstMBaddress: UINT,
1709     NumMBsInBuffer: UINT,
1710     Width: UINT,
1711     Height: UINT,
1712     Stride: UINT,
1713     ReservedBits: UINT,
1714     pIV: *mut c_void,
1715     IVSize: UINT,
1716     PartialEncryption: BOOL,
1717     EncryptedBlockInfo: D3D11_ENCRYPTED_BLOCK_INFO,
1718 }}
1719 STRUCT!{struct D3D11_VIDEO_DECODER_EXTENSION {
1720     Function: UINT,
1721     pPrivateInputData: *mut c_void,
1722     PrivateInputDataSize: UINT,
1723     pPrivateOutputData: *mut c_void,
1724     PrivateOutputDataSize: UINT,
1725     ResourceCount: UINT,
1726     ppResourceList: *mut *mut ID3D11Resource,
1727 }}
1728 RIDL!{interface ID3D11VideoDecoder(ID3D11VideoDecoderVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1729     fn GetCreationParameters(
1730         &mut self, pVideoDesc: *mut D3D11_VIDEO_DECODER_DESC,
1731         pConfig: *mut D3D11_VIDEO_DECODER_CONFIG
1732     ) -> HRESULT,
1733     fn GetDriverHandle(&mut self, pDriverHandle: *mut HANDLE) -> HRESULT
1734 }}
1735 FLAGS!{enum D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT {
1736     D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT = 0x1,
1737     D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT = 0x2,
1738 }}
1739 FLAGS!{enum D3D11_VIDEO_PROCESSOR_DEVICE_CAPS {
1740     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_LINEAR_SPACE = 0x1,
1741     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_xvYCC = 0x2,
1742     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_RGB_RANGE_CONVERSION = 0x4,
1743     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION = 0x8,
1744     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_NOMINAL_RANGE = 0x10,
1745 }}
1746 FLAGS!{enum D3D11_VIDEO_PROCESSOR_FEATURE_CAPS {
1747     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_FILL = 0x1,
1748     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_CONSTRICTION = 0x2,
1749     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LUMA_KEY = 0x4,
1750     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_PALETTE = 0x8,
1751     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LEGACY = 0x10,
1752     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_STEREO = 0x20,
1753     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ROTATION = 0x40,
1754     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_STREAM = 0x80,
1755     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_PIXEL_ASPECT_RATIO = 0x100,
1756     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_MIRROR = 0x200,
1757     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_SHADER_USAGE = 0x400,
1758 }}
1759 FLAGS!{enum D3D11_VIDEO_PROCESSOR_FILTER_CAPS {
1760     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS = 0x1,
1761     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST = 0x2,
1762     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE = 0x4,
1763     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION = 0x8,
1764     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION = 0x10,
1765     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT = 0x20,
1766     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_ANAMORPHIC_SCALING = 0x40,
1767     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_STEREO_ADJUSTMENT = 0x80,
1768 }}
1769 FLAGS!{enum D3D11_VIDEO_PROCESSOR_FORMAT_CAPS {
1770     D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_INTERLACED = 0x1,
1771     D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_PROCAMP = 0x2,
1772     D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_LUMA_KEY = 0x4,
1773     D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_PALETTE_INTERLACED = 0x8,
1774 }}
1775 FLAGS!{enum D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS {
1776     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DENOISE = 0x1,
1777     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DERINGING = 0x2,
1778     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_EDGE_ENHANCEMENT = 0x4,
1779     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_COLOR_CORRECTION = 0x8,
1780     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_FLESH_TONE_MAPPING = 0x10,
1781     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_IMAGE_STABILIZATION = 0x20,
1782     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_SUPER_RESOLUTION = 0x40,
1783     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_ANAMORPHIC_SCALING = 0x80,
1784 }}
1785 FLAGS!{enum D3D11_VIDEO_PROCESSOR_STEREO_CAPS {
1786     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_MONO_OFFSET = 0x1,
1787     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_ROW_INTERLEAVED = 0x2,
1788     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_COLUMN_INTERLEAVED = 0x4,
1789     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_CHECKERBOARD = 0x8,
1790     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_FLIP_MODE = 0x10,
1791 }}
1792 STRUCT!{struct D3D11_VIDEO_PROCESSOR_CAPS {
1793     DeviceCaps: UINT,
1794     FeatureCaps: UINT,
1795     FilterCaps: UINT,
1796     InputFormatCaps: UINT,
1797     AutoStreamCaps: UINT,
1798     StereoCaps: UINT,
1799     RateConversionCapsCount: UINT,
1800     MaxInputStreams: UINT,
1801     MaxStreamStates: UINT,
1802 }}
1803 FLAGS!{enum D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS {
1804     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BLEND = 0x1,
1805     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BOB = 0x2,
1806     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE = 0x4,
1807     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION = 0x8,
1808     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_INVERSE_TELECINE = 0x10,
1809     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_FRAME_RATE_CONVERSION = 0x20,
1810 }}
1811 FLAGS!{enum D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS {
1812     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32 = 0x1,
1813     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_22 = 0x2,
1814     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2224 = 0x4,
1815     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2332 = 0x8,
1816     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32322 = 0x10,
1817     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_55 = 0x20,
1818     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_64 = 0x40,
1819     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_87 = 0x80,
1820     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_222222222223 = 0x100,
1821     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_OTHER = 0x80000000,
1822 }}
1823 STRUCT!{struct D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS {
1824     PastFrames: UINT,
1825     FutureFrames: UINT,
1826     ProcessorCaps: UINT,
1827     ITelecineCaps: UINT,
1828     CustomRateCount: UINT,
1829 }}
1830 FLAGS!{enum D3D11_CONTENT_PROTECTION_CAPS {
1831     D3D11_CONTENT_PROTECTION_CAPS_SOFTWARE = 0x1,
1832     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE = 0x2,
1833     D3D11_CONTENT_PROTECTION_CAPS_PROTECTION_ALWAYS_ON = 0x4,
1834     D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION = 0x8,
1835     D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY = 0x10,
1836     D3D11_CONTENT_PROTECTION_CAPS_FRESHEN_SESSION_KEY = 0x20,
1837     D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK = 0x40,
1838     D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK_KEY = 0x80,
1839     D3D11_CONTENT_PROTECTION_CAPS_SEQUENTIAL_CTR_IV = 0x100,
1840     D3D11_CONTENT_PROTECTION_CAPS_ENCRYPT_SLICEDATA_ONLY = 0x200,
1841     D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT = 0x400,
1842     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_PROTECT_UNCOMPRESSED = 0x800,
1843     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_PROTECTED_MEMORY_PAGEABLE = 0x1000,
1844     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_TEARDOWN = 0x2000,
1845     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_DRM_COMMUNICATION = 0x4000,
1846 }}
1847 STRUCT!{struct D3D11_VIDEO_CONTENT_PROTECTION_CAPS {
1848     Caps: UINT,
1849     KeyExchangeTypeCount: UINT,
1850     BlockAlignmentSize: UINT,
1851     ProtectedMemorySize: ULONGLONG,
1852 }}
1853 STRUCT!{struct D3D11_VIDEO_PROCESSOR_CUSTOM_RATE {
1854     CustomRate: DXGI_RATIONAL,
1855     OutputFrames: UINT,
1856     InputInterlaced: BOOL,
1857     InputFramesOrFields: UINT,
1858 }}
1859 ENUM!{enum D3D11_VIDEO_PROCESSOR_FILTER {
1860     D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS = 0,
1861     D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST = 1,
1862     D3D11_VIDEO_PROCESSOR_FILTER_HUE = 2,
1863     D3D11_VIDEO_PROCESSOR_FILTER_SATURATION = 3,
1864     D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION = 4,
1865     D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT = 5,
1866     D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6,
1867     D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT = 7,
1868 }}
1869 STRUCT!{struct D3D11_VIDEO_PROCESSOR_FILTER_RANGE {
1870     Minimum: c_int,
1871     Maximum: c_int,
1872     Default: c_int,
1873     Multiplier: c_float,
1874 }}
1875 ENUM!{enum D3D11_VIDEO_FRAME_FORMAT {
1876     D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0,
1877     D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
1878     D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2,
1879 }}
1880 ENUM!{enum D3D11_VIDEO_USAGE {
1881     D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0,
1882     D3D11_VIDEO_USAGE_OPTIMAL_SPEED = 1,
1883     D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2,
1884 }}
1885 STRUCT!{struct D3D11_VIDEO_PROCESSOR_CONTENT_DESC {
1886     InputFrameFormat: D3D11_VIDEO_FRAME_FORMAT,
1887     InputFrameRate: DXGI_RATIONAL,
1888     InputWidth: UINT,
1889     InputHeight: UINT,
1890     OutputFrameRate: DXGI_RATIONAL,
1891     OutputWidth: UINT,
1892     OutputHeight: UINT,
1893     Usage: D3D11_VIDEO_USAGE,
1894 }}
1895 RIDL!{interface ID3D11VideoProcessorEnumerator(ID3D11VideoProcessorEnumeratorVtbl)
1896     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1897     fn GetVideoProcessorContentDesc(
1898         &mut self, pContentDesc: *mut D3D11_VIDEO_PROCESSOR_CONTENT_DESC
1899     ) -> HRESULT,
1900     fn CheckVideoProcessorFormat(&mut self, Format: DXGI_FORMAT, pFlags: *mut UINT) -> HRESULT,
1901     fn GetVideoProcessorCaps(&mut self, pCaps: *mut D3D11_VIDEO_PROCESSOR_CAPS) -> HRESULT,
1902     fn GetVideoProcessorRateConversionCaps(
1903         &mut self, TypeIndex: UINT, pCaps: *mut D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS
1904     ) -> HRESULT,
1905     fn GetVideoProcessorCustomRate(
1906         &mut self, TypeIndex: UINT, CustomRateIndex: UINT,
1907         pRate: *mut D3D11_VIDEO_PROCESSOR_CUSTOM_RATE
1908     ) -> HRESULT,
1909     fn GetVideoProcessorFilterRange(
1910         &mut self, Filter: D3D11_VIDEO_PROCESSOR_FILTER,
1911         Range: *mut D3D11_VIDEO_PROCESSOR_FILTER_RANGE
1912     ) -> HRESULT
1913 }}
1914 STRUCT!{struct D3D11_VIDEO_COLOR_RGBA {
1915     R: c_float,
1916     G: c_float,
1917     B: c_float,
1918     A: c_float,
1919 }}
1920 STRUCT!{struct D3D11_VIDEO_COLOR_YCbCrA {
1921     Y: c_float,
1922     Cb: c_float,
1923     Cr: c_float,
1924     A: c_float,
1925 }}
1926 STRUCT!{struct D3D11_VIDEO_COLOR {
1927     u: [c_float; 4],
1928 }}
1929 UNION!{D3D11_VIDEO_COLOR, u, YCbCr, YCbCr_mut, D3D11_VIDEO_COLOR_YCbCrA}
1930 UNION!{D3D11_VIDEO_COLOR, u, RGBA, RGBA_mut, D3D11_VIDEO_COLOR_RGBA}
1931 ENUM!{enum D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE {
1932     D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_UNDEFINED = 0,
1933     D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_16_235 = 1,
1934     D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_0_255 = 2,
1935 }}
1936 STRUCT!{struct D3D11_VIDEO_PROCESSOR_COLOR_SPACE {
1937     bitfield: UINT,
1938 }}
1939 BITFIELD!{D3D11_VIDEO_PROCESSOR_COLOR_SPACE bitfield: UINT [
1940     Usage set_Usage[0..1],
1941     RGB_Range set_RGB_Range[1..2],
1942     YCbCr_Matrix set_YCbCr_Matrix[2..3],
1943     YCbCr_xvYCC set_YCbCr_xvYCC[3..4],
1944     Nominal_Range set_Nominal_Range[4..6],
1945 ]}
1946 ENUM!{enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE {
1947     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0,
1948     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1,
1949     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2,
1950     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
1951 }}
1952 ENUM!{enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE {
1953     D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0,
1954     D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1,
1955     D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2,
1956 }}
1957 ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT {
1958     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0,
1959     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1,
1960     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2,
1961     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3,
1962     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4,
1963     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5,
1964     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6,
1965     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7,
1966 }}
1967 ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE {
1968     D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0,
1969     D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1,
1970     D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2,
1971 }}
1972 ENUM!{enum D3D11_VIDEO_PROCESSOR_ROTATION {
1973     D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY = 0,
1974     D3D11_VIDEO_PROCESSOR_ROTATION_90 = 1,
1975     D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2,
1976     D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3,
1977 }}
1978 STRUCT!{struct D3D11_VIDEO_PROCESSOR_STREAM {
1979     Enable: BOOL,
1980     OutputIndex: UINT,
1981     InputFrameOrField: UINT,
1982     PastFrames: UINT,
1983     FutureFrames: UINT,
1984     ppPastSurfaces: *mut *mut ID3D11VideoProcessorInputView,
1985     pInputSurface: *mut ID3D11VideoProcessorInputView,
1986     ppFutureSurfaces: *mut *mut ID3D11VideoProcessorInputView,
1987     ppPastSurfacesRight: *mut *mut ID3D11VideoProcessorInputView,
1988     pInputSurfaceRight: *mut ID3D11VideoProcessorInputView,
1989     ppFutureSurfacesRight: *mut *mut ID3D11VideoProcessorInputView,
1990 }}
1991 RIDL!{interface ID3D11VideoProcessor(ID3D11VideoProcessorVtbl)
1992     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1993     fn GetContentDesc(&mut self, pDesc: *mut D3D11_VIDEO_PROCESSOR_CONTENT_DESC) -> (),
1994     fn GetRateConversionCaps(
1995         &mut self, pCaps: *mut D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS
1996     ) -> ()
1997 }}
1998 STRUCT!{struct D3D11_OMAC {
1999     Omac: [BYTE; 16],
2000 }}
2001 ENUM!{enum D3D11_AUTHENTICATED_CHANNEL_TYPE {
2002     D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1,
2003     D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2,
2004     D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3,
2005 }}
2006 RIDL!{interface ID3D11AuthenticatedChannel(ID3D11AuthenticatedChannelVtbl)
2007     : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2008     fn GetCertificateSize(&mut self, pCertificateSize: *mut UINT) -> HRESULT,
2009     fn GetCertificate(&mut self, CertificateSize: UINT, pCertificate: *mut BYTE) -> HRESULT,
2010     fn GetChannelHandle(&mut self, pChannelHandle: *mut HANDLE) -> ()
2011 }}
2012 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_INPUT {
2013     QueryType: GUID,
2014     hChannel: HANDLE,
2015     SequenceNumber: UINT,
2016 }}
2017 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT {
2018     omac: D3D11_OMAC,
2019     QueryType: GUID,
2020     hChannel: HANDLE,
2021     SequenceNumber: UINT,
2022     ReturnCode: HRESULT,
2023 }}
2024 //FIXME bitfield
2025 STRUCT!{struct D3D11_AUTHENTICATED_PROTECTION_FLAGS {
2026     u: UINT,
2027 }}
2028 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_PROTECTION_OUTPUT {
2029     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2030     ProtectionFlags: D3D11_AUTHENTICATED_PROTECTION_FLAGS,
2031 }}
2032 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE_OUTPUT {
2033     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2034     ChannelType: D3D11_AUTHENTICATED_CHANNEL_TYPE,
2035 }}
2036 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE_OUTPUT {
2037     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2038     DeviceHandle: HANDLE,
2039 }}
2040 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_INPUT {
2041     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2042     DecoderHandle: HANDLE,
2043 }}
2044 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_OUTPUT {
2045     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2046     DecoderHandle: HANDLE,
2047     CryptoSessionHandle: HANDLE,
2048     DeviceHandle: HANDLE,
2049 }}
2050 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT_OUTPUT {
2051     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2052     RestrictedSharedResourceProcessCount: UINT,
2053 }}
2054 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_INPUT {
2055     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2056     ProcessIndex: UINT,
2057 }}
2058 ENUM!{enum D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE {
2059     DD3D11_PROCESSIDTYPE_UNKNOWN = 0,
2060     DD3D11_PROCESSIDTYPE_DWM = 1,
2061     DD3D11_PROCESSIDTYPE_HANDLE  = 2,
2062 }}
2063 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_OUTPUT {
2064     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2065     ProcessIndex: UINT,
2066     ProcessIdentifier: D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE,
2067     ProcessHandle: HANDLE,
2068 }}
2069 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT_OUTPUT {
2070     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2071     UnrestrictedProtectedSharedResourceCount: UINT,
2072 }}
2073 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_INPUT {
2074     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2075     DeviceHandle: HANDLE,
2076     CryptoSessionHandle: HANDLE,
2077 }}
2078 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_OUTPUT {
2079     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2080     DeviceHandle: HANDLE,
2081     CryptoSessionHandle: HANDLE,
2082     OutputIDCount: UINT,
2083 }}
2084 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_INPUT {
2085     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2086     DeviceHandle: HANDLE,
2087     CryptoSessionHandle: HANDLE,
2088     OutputIDIndex: UINT,
2089 }}
2090 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_OUTPUT {
2091     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2092     DeviceHandle: HANDLE,
2093     CryptoSessionHandle: HANDLE,
2094     OutputIDIndex: UINT,
2095     OutputID: UINT64,
2096 }}
2097 ENUM!{enum D3D11_BUS_TYPE {
2098     D3D11_BUS_TYPE_OTHER = 0,
2099     D3D11_BUS_TYPE_PCI = 0x1,
2100     D3D11_BUS_TYPE_PCIX = 0x2,
2101     D3D11_BUS_TYPE_PCIEXPRESS = 0x3,
2102     D3D11_BUS_TYPE_AGP = 0x4,
2103     D3D11_BUS_IMPL_MODIFIER_INSIDE_OF_CHIPSET = 0x10000,
2104     D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP = 0x20000,
2105     D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET = 0x30000,
2106     D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR = 0x40000,
2107     D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE = 0x50000,
2108     D3D11_BUS_IMPL_MODIFIER_NON_STANDARD = 0x80000000,
2109 }}
2110 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACESSIBILITY_OUTPUT {
2111     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2112     BusType: D3D11_BUS_TYPE,
2113     AccessibleInContiguousBlocks: BOOL,
2114     AccessibleInNonContiguousBlocks: BOOL,
2115 }}
2116 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_COUNT_OUTPUT {
2117     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2118     EncryptionGuidCount: UINT,
2119 }}
2120 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_INPUT {
2121     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2122     EncryptionGuidIndex: UINT,
2123 }}
2124 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_OUTPUT {
2125     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2126     EncryptionGuidIndex: UINT,
2127     EncryptionGuid: GUID,
2128 }}
2129 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CURRENT_ACCESSIBILITY_ENCRYPTION_OUTPUT {
2130     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2131     EncryptionGuid: GUID,
2132 }}
2133 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_INPUT {
2134     omac: D3D11_OMAC,
2135     ConfigureType: GUID,
2136     hChannel: HANDLE,
2137     SequenceNumber: UINT,
2138 }}
2139 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_OUTPUT {
2140     omac: D3D11_OMAC,
2141     ConfigureType: GUID,
2142     hChannel: HANDLE,
2143     SequenceNumber: UINT,
2144     ReturnCode: HRESULT,
2145 }}
2146 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE_INPUT {
2147     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2148     StartSequenceQuery: UINT,
2149     StartSequenceConfigure: UINT,
2150 }}
2151 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_PROTECTION_INPUT {
2152     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2153     Protections: D3D11_AUTHENTICATED_PROTECTION_FLAGS,
2154 }}
2155 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION_INPUT {
2156     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2157     DecoderHandle: HANDLE,
2158     CryptoSessionHandle: HANDLE,
2159     DeviceHandle: HANDLE,
2160 }}
2161 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE_INPUT {
2162     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2163     ProcessType: D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE,
2164     ProcessHandle: HANDLE,
2165     AllowAccess: BOOL,
2166 }}
2167 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_ACCESSIBLE_ENCRYPTION_INPUT {
2168     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2169     EncryptionGuid: GUID,
2170 }}
2171 RIDL!{interface ID3D11CryptoSession(ID3D11CryptoSessionVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2172     fn GetCryptoType(&mut self, pCryptoType: *mut GUID) -> (),
2173     fn GetDecoderProfile(&mut self, pDecoderProfile: *mut GUID) -> (),
2174     fn GetCertificateSize(&mut self, pCertificateSize: *mut UINT) -> HRESULT,
2175     fn GetCertificate(&mut self, CertificateSize: UINT, pCertificate: *mut BYTE) -> HRESULT,
2176     fn GetCryptoSessionHandle(&mut self, pCertificate: *mut HANDLE) -> ()
2177 }}
2178 ENUM!{enum D3D11_VDOV_DIMENSION {
2179     D3D11_VDOV_DIMENSION_UNKNOWN = 0,
2180     D3D11_VDOV_DIMENSION_TEXTURE2D = 1,
2181 }}
2182 STRUCT!{struct D3D11_TEX2D_VDOV {
2183     ArraySlice: UINT,
2184 }}
2185 STRUCT!{struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC {
2186     DecodeProfile: GUID,
2187     ViewDimension: D3D11_VDOV_DIMENSION,
2188     Texture2D: D3D11_TEX2D_VDOV,
2189 }}
2190 RIDL!{interface ID3D11VideoDecoderOutputView(ID3D11VideoDecoderOutputViewVtbl)
2191     : ID3D11View(ID3D11ViewVtbl) {
2192     fn GetDesc(&mut self, pDesc: *mut D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC) -> ()
2193 }}
2194 ENUM!{enum D3D11_VPIV_DIMENSION {
2195     D3D11_VPIV_DIMENSION_UNKNOWN = 0,
2196     D3D11_VPIV_DIMENSION_TEXTURE2D = 1,
2197 }}
2198 STRUCT!{struct D3D11_TEX2D_VPIV {
2199     MipSlice: UINT,
2200     ArraySlice: UINT,
2201 }}
2202 STRUCT!{struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC {
2203     FourCC: UINT,
2204     ViewDimension: D3D11_VPIV_DIMENSION,
2205     Texture2D: D3D11_TEX2D_VPIV,
2206 }}
2207 RIDL!{interface ID3D11VideoProcessorInputView(ID3D11VideoProcessorInputViewVtbl)
2208     : ID3D11View(ID3D11ViewVtbl) {
2209     fn GetDesc(&mut self, pDesc: *mut D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC) -> ()
2210 }}
2211 ENUM!{enum D3D11_VPOV_DIMENSION {
2212     D3D11_VPOV_DIMENSION_UNKNOWN = 0,
2213     D3D11_VPOV_DIMENSION_TEXTURE2D = 1,
2214     D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2,
2215 }}
2216 STRUCT!{struct D3D11_TEX2D_VPOV {
2217     MipSlice: UINT,
2218 }}
2219 STRUCT!{struct D3D11_TEX2D_ARRAY_VPOV {
2220     MipSlice: UINT,
2221     FirstArraySlice: UINT,
2222     ArraySize: UINT,
2223 }}
2224 STRUCT!{struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC {
2225     ViewDimension: D3D11_VPOV_DIMENSION,
2226     u: [UINT; 3],
2227 }}
2228 UNION!{D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_VPOV}
2229 UNION!{D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
2230     D3D11_TEX2D_ARRAY_VPOV}
2231 RIDL!{interface ID3D11VideoProcessorOutputView(ID3D11VideoProcessorOutputViewVtbl)
2232     : ID3D11View(ID3D11ViewVtbl) {
2233     fn GetDesc(&mut self, pDesc: *mut D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC) -> ()
2234 }}
2235 RIDL!{interface ID3D11VideoContext(ID3D11VideoContextVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2236     fn GetDecoderBuffer(
2237         &mut self, pDecoder: *mut ID3D11VideoDecoder, Type:  D3D11_VIDEO_DECODER_BUFFER_TYPE,
2238         pBufferSize: *mut UINT, ppBuffer: *mut *mut c_void
2239     ) -> HRESULT,
2240     fn ReleaseDecoderBuffer(
2241         &mut self, pDecoder: *mut ID3D11VideoDecoder, Type:  D3D11_VIDEO_DECODER_BUFFER_TYPE
2242     ) -> HRESULT,
2243     fn DecoderBeginFrame(
2244         &mut self, pDecoder: *mut ID3D11VideoDecoder, pView: *mut ID3D11VideoDecoderOutputView,
2245         ContentKeySize: UINT, pContentKey: *const c_void
2246     ) -> HRESULT,
2247     fn DecoderEndFrame(&mut self, pDecoder: *mut ID3D11VideoDecoder) -> HRESULT,
2248     fn SubmitDecoderBuffers(
2249         &mut self, pDecoder: *mut ID3D11VideoDecoder, NumBuffers: UINT,
2250         pBufferDesc: *const D3D11_VIDEO_DECODER_BUFFER_DESC
2251     ) -> HRESULT,
2252     fn DecoderExtension(
2253         &mut self, pDecoder: *mut ID3D11VideoDecoder,
2254         pExtensionData: *const D3D11_VIDEO_DECODER_EXTENSION
2255     ) -> HRESULT,
2256     fn VideoProcessorSetOutputTargetRect(
2257         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, Enable: BOOL, pRect: *const RECT
2258     ) -> (),
2259     fn VideoProcessorSetOutputBackgroundColor(
2260         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, YCbCr: BOOL, pRect: *const RECT
2261     ) -> (),
2262     fn VideoProcessorSetOutputColorSpace(
2263         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
2264         pColorSpace: *const D3D11_VIDEO_PROCESSOR_COLOR_SPACE
2265     ) -> HRESULT,
2266     fn VideoProcessorSetOutputAlphaFillMode(
2267         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
2268         AlphaFillMode: D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE, StreamIndex: UINT
2269     ) -> (),
2270     fn VideoProcessorSetOutputConstriction(
2271         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, Enable: BOOL, Size: SIZE
2272     ) -> (),
2273     fn VideoProcessorSetOutputStereoMode(
2274         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, Enable: BOOL
2275     ) -> (),
2276     fn VideoProcessorSetOutputExtension(
2277         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pExtensionGuid: *const GUID,
2278         DataSize: UINT, pData: *mut c_void
2279     ) -> HRESULT,
2280     fn VideoProcessorGetOutputTargetRect(
2281         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, Enabled: *mut BOOL, pRect: *mut RECT
2282     ) -> (),
2283     fn VideoProcessorGetOutputBackgroundColor(
2284         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pYCbCr: *mut BOOL,
2285         pColor: *mut D3D11_VIDEO_COLOR
2286     ) -> (),
2287     fn VideoProcessorGetOutputColorSpace(
2288         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
2289         pColorSpace: *mut D3D11_VIDEO_PROCESSOR_COLOR_SPACE
2290     ) -> (),
2291     fn VideoProcessorGetOutputAlphaFillMode(
2292         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
2293         pAlphaFillMode: *mut D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE, pStreamIndex: *mut UINT
2294     ) -> (),
2295     fn VideoProcessorGetOutputConstriction(
2296         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pEnabled: *mut BOOL,
2297         pSize: *mut SIZE
2298     ) -> (),
2299     fn VideoProcessorGetOutputStereoMode(
2300         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pEnabled: *mut BOOL
2301     ) -> (),
2302     fn VideoProcessorGetOutputExtension(
2303         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pExtensionGuid: *const GUID,
2304         DataSize: UINT, pData: *mut c_void
2305     ) -> HRESULT,
2306     fn VideoProcessorSetStreamFrameFormat(
2307         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2308         FrameFormat: D3D11_VIDEO_FRAME_FORMAT
2309     ) -> (),
2310     fn VideoProcessorSetStreamColorSpace(
2311         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2312         pColorSpace: *const D3D11_VIDEO_PROCESSOR_COLOR_SPACE
2313     ) -> (),
2314     fn VideoProcessorSetStreamOutputRate(
2315         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2316         OutputRate: D3D11_VIDEO_PROCESSOR_OUTPUT_RATE, RepeatFrame: BOOL,
2317         pCustomRate: *const DXGI_RATIONAL
2318     ) -> (),
2319     fn VideoProcessorSetStreamSourceRect(
2320         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
2321         pRect: *const RECT
2322     ) -> (),
2323     fn VideoProcessorSetStreamDestRect(
2324         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
2325         pRect: *const RECT
2326     ) -> (),
2327     fn VideoProcessorSetStreamAlpha(
2328         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
2329         Alpha: FLOAT
2330     ) -> (),
2331     fn VideoProcessorSetStreamPalette(
2332         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Count: UINT,
2333         pEntries: *const UINT
2334     ) -> (),
2335     fn VideoProcessorSetStreamPixelAspectRatio(
2336         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
2337         pSourceAspectRatio: *const DXGI_RATIONAL, pDestinationAspectRatio: *const DXGI_RATIONAL
2338     ) -> (),
2339     fn VideoProcessorSetStreamLumaKey(
2340         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
2341         Lower: FLOAT, Upper: FLOAT
2342     ) -> (),
2343     fn VideoProcessorSetStreamStereoFormat(
2344         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
2345         Format: D3D11_VIDEO_PROCESSOR_STEREO_FORMAT, LeftViewFrame0: BOOL, BaseViewFrame0: BOOL,
2346         FlipMode: D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE
2347     ) -> (),
2348     fn VideoProcessorSetStreamAutoProcessingMode(
2349         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL
2350     ) -> (),
2351     fn VideoProcessorSetStreamFilter(
2352         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2353         Filter: D3D11_VIDEO_PROCESSOR_FILTER, Enable: BOOL, Level: c_int
2354     ) -> (),
2355     fn VideoProcessorSetStreamExtension(
2356         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2357         pExtensionGuid: *const GUID, DataSize: UINT, pData: *mut c_void
2358     ) -> HRESULT,
2359     fn VideoProcessorGetStreamFrameFormat(
2360         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2361         pFrameFormat: *mut D3D11_VIDEO_FRAME_FORMAT
2362     ) -> (),
2363     fn VideoProcessorGetStreamColorSpace(
2364         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2365         pColorSpace: *mut D3D11_VIDEO_PROCESSOR_COLOR_SPACE
2366     ) -> (),
2367     fn VideoProcessorGetStreamOutputRate(
2368         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2369         pOutputRate: *mut D3D11_VIDEO_PROCESSOR_OUTPUT_RATE, pRepeatFrame: *mut BOOL,
2370         pCustomRate: *mut DXGI_RATIONAL
2371     ) -> (),
2372     fn VideoProcessorGetStreamSourceRect(
2373         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2374         pEnabled: *mut BOOL, pRect: *mut RECT
2375     ) -> (),
2376     fn VideoProcessorGetStreamDestRect(
2377         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2378         pEnabled: *mut BOOL, pRect: *mut RECT
2379     ) -> (),
2380     fn VideoProcessorGetStreamAlpha(
2381         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2382         pEnabled: *mut BOOL, pAlpha: *mut FLOAT
2383     ) -> (),
2384     fn VideoProcessorGetStreamPalette(
2385         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Count: UINT,
2386         pEntries: *mut UINT
2387     ) -> (),
2388     fn VideoProcessorGetStreamPixelAspectRatio(
2389         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2390         pEnabled: *mut BOOL, pSourceAspectRatio: *mut DXGI_RATIONAL,
2391         pDestinationAspectRatio: *mut DXGI_RATIONAL
2392     ) -> (),
2393     fn VideoProcessorGetStreamLumaKey(
2394         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2395         pEnabled: *mut BOOL, pLower: *mut FLOAT, pUpper: *mut FLOAT
2396     ) -> (),
2397     fn VideoProcessorGetStreamStereoFormat(
2398         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2399         pEnabled: *mut BOOL, pFormat: *mut D3D11_VIDEO_PROCESSOR_STEREO_FORMAT,
2400         pLeftViewFrame0: *mut BOOL, pBaseViewFrame0: *mut BOOL,
2401         pFlipMode: *mut D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE, MonoOffset: *mut c_int
2402     ) -> (),
2403     fn VideoProcessorGetStreamAutoProcessingMode(
2404         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2405         pEnabled: *mut BOOL
2406     ) -> (),
2407     fn VideoProcessorGetStreamFilter(
2408         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2409         Filter: D3D11_VIDEO_PROCESSOR_FILTER, pEnabled: *mut BOOL, pLevel: *mut c_int
2410     ) -> (),
2411     fn VideoProcessorGetStreamExtension(
2412         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2413         pExtensionGuid: *const GUID, DataSize: UINT, pData: *mut c_void
2414     ) -> HRESULT,
2415     fn VideoProcessorBlt(
2416         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
2417         pView: *mut ID3D11VideoProcessorOutputView, OutputFrame: UINT, StreamCount: UINT,
2418         pStreams: *const D3D11_VIDEO_PROCESSOR_STREAM
2419     ) -> HRESULT,
2420     fn NegotiateCryptoSessionKeyExchange(
2421         &mut self, pCryptoSession: *mut ID3D11CryptoSession, DataSize: UINT, pData: *mut c_void
2422     ) -> HRESULT,
2423     fn EncryptionBlt(
2424         &mut self, pCryptoSession: *mut ID3D11CryptoSession, pSrcSurface: *mut ID3D11Texture2D,
2425         pDstSurface: *mut ID3D11Texture2D, IVSize: UINT, pIV: *mut c_void
2426     ) -> HRESULT,
2427     fn DecryptionBlt(
2428         &mut self, pCryptoSession: *mut ID3D11CryptoSession, pSrcSurface: *mut ID3D11Texture2D,
2429         pDstSurface: *mut ID3D11Texture2D, pEncryptedBlockInfo: *mut D3D11_ENCRYPTED_BLOCK_INFO,
2430         ContentKeySize: UINT, pContentKey: *const c_void, IVSize: UINT, pIV: *mut c_void
2431     ) -> HRESULT,
2432     fn StartSessionKeyRefresh(
2433         &mut self, pCryptoSession: *mut ID3D11CryptoSession, RandomNumberSize: UINT,
2434         pRandomNumber: *mut c_void
2435     ) -> HRESULT,
2436     fn FinishSessionKeyRefresh(&mut self, pCryptoSession: *mut ID3D11CryptoSession) -> HRESULT,
2437     fn GetEncryptionBltKey(
2438         &mut self, pCryptoSession: *mut ID3D11CryptoSession, KeySize: UINT,
2439         pReadbackKey: *mut c_void
2440     ) -> HRESULT,
2441     fn NegotiateAuthenticatedChannelKeyExchange(
2442         &mut self, pChannel: *mut ID3D11AuthenticatedChannel, DataSize: UINT, pData: *mut c_void
2443     ) -> HRESULT,
2444     fn QueryAuthenticatedChannel(
2445         &mut self, pChannel: *mut ID3D11AuthenticatedChannel, InputSize: UINT,
2446         pInput: *const c_void, OutputSize: UINT, pOutput: *mut c_void
2447     ) -> HRESULT,
2448     fn ConfigureAuthenticatedChannel(
2449         &mut self, pChannel: *mut ID3D11AuthenticatedChannel, InputSize: UINT,
2450         pInput: *const c_void, pOutput: *mut D3D11_AUTHENTICATED_CONFIGURE_OUTPUT
2451     ) -> HRESULT,
2452     fn VideoProcessorSetStreamRotation(
2453         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
2454         Rotation: D3D11_VIDEO_PROCESSOR_ROTATION
2455     ) -> HRESULT,
2456     fn VideoProcessorGetStreamRotation(
2457         &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
2458         pEnable: *mut BOOL, pRotation: *mut D3D11_VIDEO_PROCESSOR_ROTATION
2459     ) -> HRESULT
2460 }}
2461 RIDL!{interface ID3D11VideoDevice(ID3D11VideoDeviceVtbl): IUnknown(IUnknownVtbl) {
2462     fn CreateVideoDecoder(
2463         &mut self, pVideoDesc: *const D3D11_VIDEO_DECODER_DESC,
2464         pConfig: *const D3D11_VIDEO_DECODER_CONFIG, ppDecoder: *mut *mut ID3D11VideoDecoder
2465     ) -> HRESULT,
2466     fn CreateVideoProcessor(
2467         &mut self, pEnum: *mut ID3D11VideoProcessorEnumerator, RateConversionIndex: UINT,
2468         ppVideoProcessor: *mut *mut ID3D11VideoProcessor
2469     ) -> HRESULT,
2470     fn CreateAuthenticatedChannel(
2471         &mut self, ChannelType: D3D11_AUTHENTICATED_CHANNEL_TYPE,
2472         ppAuthenticatedChannel: *mut *mut ID3D11AuthenticatedChannel
2473     ) -> HRESULT,
2474     fn CreateCryptoSession(
2475         &mut self, pCryptoType: *const GUID, pDecoderProfile: *const GUID,
2476         pKeyExchangeType: *const GUID, ppCryptoSession: *mut *mut ID3D11CryptoSession
2477     ) -> HRESULT,
2478     fn CreateVideoDecoderOutputView(
2479         &mut self, pResource: *mut ID3D11Resource,
2480         pDesc: *const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC,
2481         ppVDOVView: *mut *mut ID3D11VideoDecoderOutputView
2482     ) -> HRESULT,
2483     fn CreateVideoProcessorInputView(
2484         &mut self, pResource: *mut ID3D11Resource, pEnum: *mut ID3D11VideoProcessorEnumerator,
2485         pDesc: *const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC,
2486         ppVPIView: *mut *mut ID3D11VideoProcessorInputView
2487     ) -> HRESULT,
2488     fn CreateVideoProcessorOutputView(
2489         &mut self, pResource: *mut ID3D11Resource, pEnum: *mut ID3D11VideoProcessorEnumerator,
2490         pDesc: *const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC,
2491         ppVPOView: *mut *mut ID3D11VideoProcessorOutputView
2492     ) -> HRESULT,
2493     fn CreateVideoProcessorEnumerator(
2494         &mut self, pDesc: *const D3D11_VIDEO_PROCESSOR_CONTENT_DESC,
2495         ppEnum: *mut *mut ID3D11VideoProcessorEnumerator
2496     ) -> HRESULT,
2497     fn GetVideoDecoderProfileCount(&mut self) -> UINT,
2498     fn GetVideoDecoderProfile(&mut self, Index: UINT, pDecoderProfile: *mut GUID) -> HRESULT,
2499     fn CheckVideoDecoderFormat(
2500         &mut self, pDecoderProfile: *const GUID, Format: DXGI_FORMAT, pSupported: *mut BOOL
2501     ) -> HRESULT,
2502     fn GetVideoDecoderConfigCount(
2503         &mut self, pDesc: *const D3D11_VIDEO_DECODER_DESC, pCount: *mut UINT
2504     ) -> HRESULT,
2505     fn GetVideoDecoderConfig(
2506         &mut self, pDesc: *const D3D11_VIDEO_DECODER_DESC, Index: UINT,
2507         pConfig: *mut D3D11_VIDEO_DECODER_CONFIG
2508     ) -> HRESULT,
2509     fn GetContentProtectionCaps(
2510         &mut self, pCryptoType: *const GUID, pDecoderProfile: *const GUID,
2511         pCaps: *mut D3D11_VIDEO_CONTENT_PROTECTION_CAPS
2512     ) -> HRESULT,
2513     fn CheckCryptoKeyExchange(
2514         &mut self, pCryptoType: *const GUID, pDecoderProfile: *const GUID, Index: UINT,
2515         pKeyExchangeType: *mut GUID
2516     ) -> HRESULT,
2517     fn SetPrivateData( &mut self, guid: REFGUID, DataSize: UINT, pData: *const c_void) -> HRESULT,
2518     fn SetPrivateDataInterface(&mut self, guid: REFGUID, pData: *const IUnknown) -> HRESULT
2519 }}
2520 RIDL!{interface ID3D11Device(ID3D11DeviceVtbl): IUnknown(IUnknownVtbl) {
2521     fn CreateBuffer(
2522         &mut self, pDesc: *const D3D11_BUFFER_DESC, pInitialData: *const D3D11_SUBRESOURCE_DATA,
2523         ppBuffer: *mut *mut ID3D11Buffer
2524     ) -> HRESULT,
2525     fn CreateTexture1D(
2526         &mut self, pDesc: *const D3D11_TEXTURE1D_DESC, pInitialData: *const D3D11_SUBRESOURCE_DATA,
2527         ppTexture1D: *mut *mut ID3D11Texture1D
2528     ) ->  HRESULT,
2529     fn CreateTexture2D(
2530         &mut self, pDesc: *const D3D11_TEXTURE2D_DESC, pInitialData: *const D3D11_SUBRESOURCE_DATA,
2531         ppTexture2D: *mut *mut ID3D11Texture2D
2532     ) -> HRESULT,
2533     fn CreateTexture3D(
2534         &mut self, pDesc: *const D3D11_TEXTURE3D_DESC, pInitialData: *const D3D11_SUBRESOURCE_DATA,
2535         ppTexture3D: *mut *mut ID3D11Texture3D
2536     ) -> HRESULT,
2537     fn CreateShaderResourceView(
2538         &mut self, pResource: *mut ID3D11Resource, pDesc: *const D3D11_SHADER_RESOURCE_VIEW_DESC,
2539         ppSRView: *mut *mut ID3D11ShaderResourceView
2540     ) -> HRESULT,
2541     fn CreateUnorderedAccessView(
2542         &mut self, pResource: *mut ID3D11Resource, pDesc: *const D3D11_UNORDERED_ACCESS_VIEW_DESC,
2543         ppUAView: *mut *mut ID3D11UnorderedAccessView
2544     ) -> HRESULT,
2545     fn CreateRenderTargetView(
2546         &mut self, pResource: *mut ID3D11Resource, pDesc: *const D3D11_RENDER_TARGET_VIEW_DESC,
2547         ppRTView: *mut *mut ID3D11RenderTargetView
2548     ) -> HRESULT,
2549     fn CreateDepthStencilView(
2550         &mut self, pResource: *mut ID3D11Resource, pDesc: *const D3D11_DEPTH_STENCIL_VIEW_DESC,
2551         ppDepthStencilView: *mut *mut ID3D11DepthStencilView
2552     ) -> HRESULT,
2553     fn CreateInputLayout(
2554         &mut self, pInputElementDescs: *const D3D11_INPUT_ELEMENT_DESC, NumElements: UINT,
2555         pShaderBytecodeWithInputSignature: *const c_void, BytecodeLength: SIZE_T,
2556         ppInputLayout: *mut *mut ID3D11InputLayout
2557     ) -> HRESULT,
2558     fn CreateVertexShader(
2559         &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
2560         pClassLinkage: *mut ID3D11ClassLinkage, ppVertexShader: *mut *mut ID3D11VertexShader
2561     ) -> HRESULT,
2562     fn CreateGeometryShader(
2563         &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
2564         pClassLinkage: *mut ID3D11ClassLinkage, ppGeometryShader: *mut *mut ID3D11GeometryShader
2565     ) -> HRESULT,
2566     fn CreateGeometryShaderWithStreamOutput(
2567         &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
2568         pSODeclaration: *const D3D11_SO_DECLARATION_ENTRY, NumEntries: UINT,
2569         pBufferStrides: *const UINT, NumStrides: UINT, RasterizedStream: UINT,
2570         pClassLinkage: *mut ID3D11ClassLinkage, ppGeometryShader: *mut *mut ID3D11GeometryShader
2571     ) -> HRESULT,
2572     fn CreatePixelShader(
2573         &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
2574         pClassLinkage: *mut ID3D11ClassLinkage, ppPixelShader: *mut *mut ID3D11PixelShader
2575     ) -> HRESULT,
2576     fn CreateHullShader(
2577         &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
2578         pClassLinkage: *mut ID3D11ClassLinkage, ppHullShader: *mut *mut ID3D11HullShader
2579     ) -> HRESULT,
2580     fn CreateDomainShader(
2581         &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
2582         pClassLinkage: *mut ID3D11ClassLinkage, ppDomainShader: *mut *mut ID3D11DomainShader
2583     ) -> HRESULT,
2584     fn CreateComputeShader(
2585         &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
2586         pClassLinkage: *mut ID3D11ClassLinkage, ppComputeShader: *mut *mut ID3D11ComputeShader
2587     ) -> HRESULT,
2588     fn CreateClassLinkage(&mut self, ppLinkage: *mut *mut ID3D11ClassLinkage) -> HRESULT,
2589     fn CreateBlendState(
2590         &mut self, pBlendStateDesc: *const D3D11_BLEND_DESC,
2591         ppBlendState: *mut *mut ID3D11BlendState
2592     ) -> HRESULT,
2593     fn CreateDepthStencilState(
2594         &mut self, pDepthStencilDesc: *const D3D11_DEPTH_STENCIL_DESC,
2595         ppDepthStencilState: *mut *mut ID3D11DepthStencilState
2596     ) -> HRESULT,
2597     fn CreateRasterizerState(
2598         &mut self, pRasterizerDesc: *const D3D11_RASTERIZER_DESC,
2599         ppRasterizerState: *mut *mut ID3D11RasterizerState
2600     ) -> HRESULT,
2601     fn CreateSamplerState(
2602         &mut self, pSamplerDesc: *const D3D11_SAMPLER_DESC,
2603         ppSamplerState: *mut *mut ID3D11SamplerState
2604     ) -> HRESULT,
2605     fn CreateQuery(
2606         &mut self, pQueryDesc: *const D3D11_QUERY_DESC, ppQuery: *mut *mut ID3D11Query
2607     ) -> HRESULT,
2608     fn CreatePredicate(
2609         &mut self, pPredicateDesc: *const D3D11_QUERY_DESC, ppPredicate: *mut *mut ID3D11Predicate
2610     ) -> HRESULT,
2611     fn CreateCounter(
2612         &mut self, pCounterDesc: *const D3D11_COUNTER_DESC, ppCounter: *mut *mut ID3D11Counter
2613     ) -> HRESULT,
2614     fn CreateDeferredContext(
2615         &mut self, ContextFlags: UINT, ppDeferredContext: *mut *mut ID3D11DeviceContext
2616     ) -> HRESULT,
2617     fn OpenSharedResource(
2618         &mut self, hResource: HANDLE, ReturnedInterface: REFIID, ppResource: *mut *mut c_void
2619     ) -> HRESULT,
2620     fn CheckFormatSupport(
2621         &mut self, Format: DXGI_FORMAT, pFormatSupport: *mut UINT
2622     ) -> HRESULT,
2623     fn CheckMultisampleQualityLevels(
2624         &mut self, Format: DXGI_FORMAT, SampleCount: UINT, pNumQualityLevels: *mut UINT
2625     ) -> HRESULT,
2626     fn CheckCounterInfo(&mut self, pCounterInfo: *mut D3D11_COUNTER_INFO) -> (),
2627     fn CheckCounter(
2628         &mut self, pDesc: *const D3D11_COUNTER_DESC, pType: *mut D3D11_COUNTER_TYPE,
2629         pActiveCounters: *mut UINT, szName: LPSTR, pNameLength: *mut UINT, szUnits: LPSTR,
2630         pUnitsLength: *mut UINT, szDescription: LPSTR, pDescriptionLength: *mut UINT
2631     ) -> HRESULT,
2632     fn CheckFeatureSupport(
2633         &mut self, Feature: D3D11_FEATURE, pFeatureSupportData: *mut c_void,
2634         FeatureSupportDataSize: UINT
2635     ) -> HRESULT,
2636     fn GetPrivateData(
2637         &mut self, guid: REFGUID, pDataSize: *mut UINT, pData: *mut c_void
2638     ) -> HRESULT,
2639     fn SetPrivateData(
2640         &mut self, guid: REFGUID, DataSize: UINT, pData: *const c_void
2641     ) -> HRESULT,
2642     fn SetPrivateDataInterface(&mut self, guid: REFGUID, pData: *const IUnknown) -> HRESULT,
2643     fn GetFeatureLevel(&mut self) -> D3D_FEATURE_LEVEL,
2644     fn GetCreationFlags(&mut self) -> UINT,
2645     fn GetDeviceRemovedReason(&mut self) -> HRESULT,
2646     fn GetImmediateContext(&mut self, ppImmediateContext: *mut *mut ID3D11DeviceContext) -> (),
2647     fn SetExceptionMode(&mut self, RaiseFlags: UINT) -> HRESULT,
2648     fn GetExceptionMode(&mut self) -> UINT
2649 }}
2650 FLAGS!{enum D3D11_CREATE_DEVICE_FLAG {
2651     D3D11_CREATE_DEVICE_SINGLETHREADED = 0x1,
2652     D3D11_CREATE_DEVICE_DEBUG = 0x2,
2653     D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
2654     D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8,
2655     D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x20,
2656     D3D11_CREATE_DEVICE_DEBUGGABLE = 0x40,
2657     D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x80,
2658     D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
2659     D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x800,
2660 }}
2661 pub const D3D11_SDK_VERSION: DWORD = 7;
2662 
D3D11CalcSubresource(MipSlice: ::UINT, ArraySlice: ::UINT, MipLevels: ::UINT) -> ::UINT2663 pub fn D3D11CalcSubresource(MipSlice: ::UINT, ArraySlice: ::UINT, MipLevels: ::UINT) -> ::UINT {
2664     MipSlice + ArraySlice * MipLevels
2665 }
2666