1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use ctypes::{c_float, c_int, c_long, c_void};
7 use shared::basetsd::{SIZE_T, UINT64, UINT8};
8 use shared::dxgi::{DXGI_SWAP_CHAIN_DESC, IDXGIAdapter, IDXGISwapChain};
9 use shared::dxgiformat::DXGI_FORMAT;
10 use shared::dxgitype::{DXGI_RATIONAL, DXGI_SAMPLE_DESC};
11 use shared::guiddef::{GUID, REFGUID, REFIID};
12 use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT, HMODULE, INT, UINT, USHORT};
13 use shared::windef::{RECT, SIZE};
14 use um::d3dcommon::{
15     D3D_DRIVER_TYPE, D3D_FEATURE_LEVEL, D3D_PRIMITIVE, D3D_PRIMITIVE_TOPOLOGY, D3D_SRV_DIMENSION,
16 };
17 use um::unknwnbase::{IUnknown, IUnknownVtbl};
18 use um::winnt::{HANDLE, HRESULT, LPCSTR, LPSTR, ULONGLONG};
19 pub const D3D11_16BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xffff;
20 pub const D3D11_32BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xffffffff;
21 pub const D3D11_8BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xff;
22 pub const D3D11_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT: DWORD = 9;
23 pub const D3D11_CLIP_OR_CULL_DISTANCE_COUNT: DWORD = 8;
24 pub const D3D11_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT: DWORD = 2;
25 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT: DWORD = 14;
26 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS: DWORD = 4;
27 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT: DWORD = 32;
28 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT: DWORD = 15;
29 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT: DWORD = 16;
30 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS: DWORD = 4;
31 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT: DWORD = 15;
32 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST: DWORD = 1;
33 pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS: DWORD = 1;
34 pub const D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT: DWORD = 64;
35 pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS: DWORD = 4;
36 pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT: DWORD = 1;
37 pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST: DWORD = 1;
38 pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS: DWORD = 1;
39 pub const D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT: DWORD = 32;
40 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS: DWORD = 1;
41 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT: DWORD = 128;
42 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST: DWORD = 1;
43 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS: DWORD = 1;
44 pub const D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT: DWORD = 128;
45 pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS: DWORD = 1;
46 pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT: DWORD = 16;
47 pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST: DWORD = 1;
48 pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS: DWORD = 1;
49 pub const D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT: DWORD = 16;
50 pub const D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT: DWORD = 32;
51 pub const D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS: DWORD = 4;
52 pub const D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
53 pub const D3D11_COMMONSHADER_TEMP_REGISTER_COUNT: DWORD = 4096;
54 pub const D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST: DWORD = 3;
55 pub const D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS: DWORD = 3;
56 pub const D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX: DWORD = 10;
57 pub const D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN: c_long = -10;
58 pub const D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE: c_long = -8;
59 pub const D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE: DWORD = 7;
60 pub const D3D11_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 256;
61 pub const D3D11_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP: DWORD = 64;
62 pub const D3D11_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 240;
63 pub const D3D11_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP: DWORD = 68;
64 pub const D3D11_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 224;
65 pub const D3D11_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP: DWORD = 72;
66 pub const D3D11_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 208;
67 pub const D3D11_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP: DWORD = 76;
68 pub const D3D11_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 192;
69 pub const D3D11_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP: DWORD = 84;
70 pub const D3D11_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 176;
71 pub const D3D11_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP: DWORD = 92;
72 pub const D3D11_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 160;
73 pub const D3D11_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP: DWORD = 100;
74 pub const D3D11_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 144;
75 pub const D3D11_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP: DWORD = 112;
76 pub const D3D11_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 128;
77 pub const D3D11_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP: DWORD = 128;
78 pub const D3D11_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 112;
79 pub const D3D11_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP: DWORD = 144;
80 pub const D3D11_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 96;
81 pub const D3D11_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP: DWORD = 168;
82 pub const D3D11_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 80;
83 pub const D3D11_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP: DWORD = 204;
84 pub const D3D11_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 64;
85 pub const D3D11_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP: DWORD = 256;
86 pub const D3D11_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 48;
87 pub const D3D11_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP: DWORD = 340;
88 pub const D3D11_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 32;
89 pub const D3D11_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP: DWORD = 512;
90 pub const D3D11_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 16;
91 pub const D3D11_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP: DWORD = 768;
92 pub const D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION: DWORD = 1;
93 pub const D3D11_CS_4_X_RAW_UAV_BYTE_ALIGNMENT: DWORD = 256;
94 pub const D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP: DWORD = 768;
95 pub const D3D11_CS_4_X_THREAD_GROUP_MAX_X: DWORD = 768;
96 pub const D3D11_CS_4_X_THREAD_GROUP_MAX_Y: DWORD = 768;
97 pub const D3D11_CS_4_X_UAV_REGISTER_COUNT: DWORD = 1;
98 pub const D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION: DWORD = 65535;
99 pub const D3D11_CS_TGSM_REGISTER_COUNT: DWORD = 8192;
100 pub const D3D11_CS_TGSM_REGISTER_READS_PER_INST: DWORD = 1;
101 pub const D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS: DWORD = 1;
102 pub const D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS: DWORD = 1;
103 pub const D3D11_CS_THREADGROUPID_REGISTER_COMPONENTS: DWORD = 3;
104 pub const D3D11_CS_THREADGROUPID_REGISTER_COUNT: DWORD = 1;
105 pub const D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS: DWORD = 1;
106 pub const D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT: DWORD = 1;
107 pub const D3D11_CS_THREADIDINGROUP_REGISTER_COMPONENTS: DWORD = 3;
108 pub const D3D11_CS_THREADIDINGROUP_REGISTER_COUNT: DWORD = 1;
109 pub const D3D11_CS_THREADID_REGISTER_COMPONENTS: DWORD = 3;
110 pub const D3D11_CS_THREADID_REGISTER_COUNT: DWORD = 1;
111 pub const D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP: DWORD = 1024;
112 pub const D3D11_CS_THREAD_GROUP_MAX_X: DWORD = 1024;
113 pub const D3D11_CS_THREAD_GROUP_MAX_Y: DWORD = 1024;
114 pub const D3D11_CS_THREAD_GROUP_MAX_Z: DWORD = 64;
115 pub const D3D11_CS_THREAD_GROUP_MIN_X: DWORD = 1;
116 pub const D3D11_CS_THREAD_GROUP_MIN_Y: DWORD = 1;
117 pub const D3D11_CS_THREAD_GROUP_MIN_Z: DWORD = 1;
118 pub const D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL: DWORD = 16384;
119 pub const D3D11_DEFAULT_BLEND_FACTOR_ALPHA: FLOAT = 1.0;
120 pub const D3D11_DEFAULT_BLEND_FACTOR_BLUE: FLOAT = 1.0;
121 pub const D3D11_DEFAULT_BLEND_FACTOR_GREEN: FLOAT = 1.0;
122 pub const D3D11_DEFAULT_BLEND_FACTOR_RED: FLOAT = 1.0;
123 pub const D3D11_DEFAULT_BORDER_COLOR_COMPONENT: FLOAT = 0.0;
124 pub const D3D11_DEFAULT_DEPTH_BIAS: DWORD = 0;
125 pub const D3D11_DEFAULT_DEPTH_BIAS_CLAMP: FLOAT = 0.0;
126 pub const D3D11_DEFAULT_MAX_ANISOTROPY: DWORD = 16;
127 pub const D3D11_DEFAULT_MIP_LOD_BIAS: FLOAT = 0.0;
128 pub const D3D11_DEFAULT_RENDER_TARGET_ARRAY_INDEX: DWORD = 0;
129 pub const D3D11_DEFAULT_SAMPLE_MASK: DWORD = 0xffffffff;
130 pub const D3D11_DEFAULT_SCISSOR_ENDX: DWORD = 0;
131 pub const D3D11_DEFAULT_SCISSOR_ENDY: DWORD = 0;
132 pub const D3D11_DEFAULT_SCISSOR_STARTX: DWORD = 0;
133 pub const D3D11_DEFAULT_SCISSOR_STARTY: DWORD = 0;
134 pub const D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS: FLOAT = 0.0;
135 pub const D3D11_DEFAULT_STENCIL_READ_MASK: DWORD = 0xff;
136 pub const D3D11_DEFAULT_STENCIL_REFERENCE: DWORD = 0;
137 pub const D3D11_DEFAULT_STENCIL_WRITE_MASK: DWORD = 0xff;
138 pub const D3D11_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX: DWORD = 0;
139 pub const D3D11_DEFAULT_VIEWPORT_HEIGHT: DWORD = 0;
140 pub const D3D11_DEFAULT_VIEWPORT_MAX_DEPTH: FLOAT = 0.0;
141 pub const D3D11_DEFAULT_VIEWPORT_MIN_DEPTH: FLOAT = 0.0;
142 pub const D3D11_DEFAULT_VIEWPORT_TOPLEFTX: DWORD = 0;
143 pub const D3D11_DEFAULT_VIEWPORT_TOPLEFTY: DWORD = 0;
144 pub const D3D11_DEFAULT_VIEWPORT_WIDTH: DWORD = 0;
145 pub const D3D11_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: DWORD = 3968;
146 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS: DWORD = 4;
147 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
148 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COUNT: DWORD = 32;
149 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST: DWORD = 2;
150 pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS: DWORD = 1;
151 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS: DWORD = 3;
152 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
153 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT: DWORD = 1;
154 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST: DWORD = 2;
155 pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS: DWORD = 1;
156 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: DWORD = 4;
157 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
158 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT: DWORD = 32;
159 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: DWORD = 2;
160 pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: DWORD = 1;
161 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: DWORD = 1;
162 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
163 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: DWORD = 1;
164 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: DWORD = 2;
165 pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: DWORD = 1;
166 pub const D3D11_DS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
167 pub const D3D11_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
168 pub const D3D11_DS_OUTPUT_REGISTER_COUNT: DWORD = 32;
169 pub const D3D11_FLOAT16_FUSED_TOLERANCE_IN_ULP: FLOAT = 0.6;
170 pub const D3D11_FLOAT32_MAX: FLOAT = 3.402823466E+38;
171 pub const D3D11_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP: FLOAT = 0.6;
172 pub const D3D11_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR: FLOAT = 2.4;
173 pub const D3D11_FLOAT_TO_SRGB_EXPONENT_NUMERATOR: FLOAT = 1.0;
174 pub const D3D11_FLOAT_TO_SRGB_OFFSET: FLOAT = 0.055;
175 pub const D3D11_FLOAT_TO_SRGB_SCALE_1: FLOAT = 12.92;
176 pub const D3D11_FLOAT_TO_SRGB_SCALE_2: FLOAT = 1.055;
177 pub const D3D11_FLOAT_TO_SRGB_THRESHOLD: FLOAT = 0.0031308;
178 pub const D3D11_FTOI_INSTRUCTION_MAX_INPUT: FLOAT = 2147483647.999;
179 pub const D3D11_FTOI_INSTRUCTION_MIN_INPUT: FLOAT = -2147483648.999;
180 pub const D3D11_FTOU_INSTRUCTION_MAX_INPUT: FLOAT = 4294967295.999;
181 pub const D3D11_FTOU_INSTRUCTION_MIN_INPUT: FLOAT = 0.0;
182 pub const D3D11_GS_INPUT_INSTANCE_ID_READS_PER_INST: DWORD = 2;
183 pub const D3D11_GS_INPUT_INSTANCE_ID_READ_PORTS: DWORD = 1;
184 pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
185 pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
186 pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
187 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS: DWORD = 1;
188 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
189 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COUNT: DWORD = 1;
190 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST: DWORD = 2;
191 pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS: DWORD = 1;
192 pub const D3D11_GS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
193 pub const D3D11_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
194 pub const D3D11_GS_INPUT_REGISTER_COUNT: DWORD = 32;
195 pub const D3D11_GS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
196 pub const D3D11_GS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
197 pub const D3D11_GS_INPUT_REGISTER_VERTICES: DWORD = 32;
198 pub const D3D11_GS_MAX_INSTANCE_COUNT: DWORD = 32;
199 pub const D3D11_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES: DWORD = 1024;
200 pub const D3D11_GS_OUTPUT_ELEMENTS: DWORD = 32;
201 pub const D3D11_GS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
202 pub const D3D11_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
203 pub const D3D11_GS_OUTPUT_REGISTER_COUNT: DWORD = 32;
204 pub const D3D11_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT: DWORD = 32;
205 pub const D3D11_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT: DWORD = 32;
206 pub const D3D11_HS_CONTROL_POINT_REGISTER_COMPONENTS: DWORD = 4;
207 pub const D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
208 pub const D3D11_HS_CONTROL_POINT_REGISTER_READS_PER_INST: DWORD = 2;
209 pub const D3D11_HS_CONTROL_POINT_REGISTER_READ_PORTS: DWORD = 1;
210 pub const D3D11_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND: DWORD = 0xffffffff;
211 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
212 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
213 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
214 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST: DWORD = 2;
215 pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS: DWORD = 1;
216 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
217 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
218 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
219 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST: DWORD = 2;
220 pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS: DWORD = 1;
221 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: DWORD = 1;
222 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
223 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: DWORD = 1;
224 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: DWORD = 2;
225 pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: DWORD = 1;
226 pub const D3D11_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND: DWORD = 0xffffffff;
227 pub const D3D11_HS_MAXTESSFACTOR_LOWER_BOUND: FLOAT = 1.0;
228 pub const D3D11_HS_MAXTESSFACTOR_UPPER_BOUND: FLOAT = 64.0;
229 pub const D3D11_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: DWORD = 3968;
230 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS: DWORD = 1;
231 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
232 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT: DWORD = 1;
233 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST: DWORD = 2;
234 pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS: DWORD = 1;
235 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: DWORD = 4;
236 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
237 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT: DWORD = 32;
238 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: DWORD = 2;
239 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: DWORD = 1;
240 pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS: DWORD = 128;
241 pub const D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES: DWORD = 0;
242 pub const D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY: DWORD = 0;
243 pub const D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES: DWORD = 0;
244 pub const D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT: DWORD = 1;
245 pub const D3D11_IA_INSTANCE_ID_BIT_COUNT: DWORD = 32;
246 pub const D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT: DWORD = 32;
247 pub const D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT: DWORD = 32;
248 pub const D3D11_IA_PRIMITIVE_ID_BIT_COUNT: DWORD = 32;
249 pub const D3D11_IA_VERTEX_ID_BIT_COUNT: DWORD = 32;
250 pub const D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT: DWORD = 32;
251 pub const D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS: DWORD = 128;
252 pub const D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT: DWORD = 32;
253 pub const D3D11_INTEGER_DIVIDE_BY_ZERO_QUOTIENT: DWORD = 0xffffffff;
254 pub const D3D11_INTEGER_DIVIDE_BY_ZERO_REMAINDER: DWORD = 0xffffffff;
255 pub const D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL: DWORD = 0xffffffff;
256 pub const D3D11_KEEP_UNORDERED_ACCESS_VIEWS: DWORD = 0xffffffff;
257 pub const D3D11_LINEAR_GAMMA: FLOAT = 1.0;
258 pub const D3D11_MAJOR_VERSION: DWORD = 11;
259 pub const D3D11_MAX_BORDER_COLOR_COMPONENT: FLOAT = 1.0;
260 pub const D3D11_MAX_DEPTH: FLOAT = 1.0;
261 pub const D3D11_MAX_MAXANISOTROPY: DWORD = 16;
262 pub const D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT: DWORD = 32;
263 pub const D3D11_MAX_POSITION_VALUE: FLOAT = 3.402823466E+34;
264 pub const D3D11_MAX_TEXTURE_DIMENSION_2_TO_EXP: DWORD = 17;
265 pub const D3D11_MINOR_VERSION: DWORD = 0;
266 pub const D3D11_MIN_BORDER_COLOR_COMPONENT: FLOAT = 0.0;
267 pub const D3D11_MIN_DEPTH: FLOAT = 0.0;
268 pub const D3D11_MIN_MAXANISOTROPY: DWORD = 0;
269 pub const D3D11_MIP_LOD_BIAS_MAX: FLOAT = 15.99;
270 pub const D3D11_MIP_LOD_BIAS_MIN: FLOAT = -16.0;
271 pub const D3D11_MIP_LOD_FRACTIONAL_BIT_COUNT: DWORD = 8;
272 pub const D3D11_MIP_LOD_RANGE_BIT_COUNT: DWORD = 8;
273 pub const D3D11_MULTISAMPLE_ANTIALIAS_LINE_WIDTH: FLOAT = 1.4;
274 pub const D3D11_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT: DWORD = 0;
275 pub const D3D11_PIXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 15;
276 pub const D3D11_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 16;
277 pub const D3D11_PS_CS_UAV_REGISTER_COMPONENTS: DWORD = 1;
278 pub const D3D11_PS_CS_UAV_REGISTER_COUNT: DWORD = 8;
279 pub const D3D11_PS_CS_UAV_REGISTER_READS_PER_INST: DWORD = 1;
280 pub const D3D11_PS_CS_UAV_REGISTER_READ_PORTS: DWORD = 1;
281 pub const D3D11_PS_FRONTFACING_DEFAULT_VALUE: DWORD = 0xffffffff;
282 pub const D3D11_PS_FRONTFACING_FALSE_VALUE: DWORD = 0;
283 pub const D3D11_PS_FRONTFACING_TRUE_VALUE: DWORD = 0xffffffff;
284 pub const D3D11_PS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
285 pub const D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
286 pub const D3D11_PS_INPUT_REGISTER_COUNT: DWORD = 32;
287 pub const D3D11_PS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
288 pub const D3D11_PS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
289 pub const D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT: FLOAT = 0.0;
290 pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS: DWORD = 1;
291 pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
292 pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT: DWORD = 1;
293 pub const D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS: DWORD = 1;
294 pub const D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
295 pub const D3D11_PS_OUTPUT_MASK_REGISTER_COUNT: DWORD = 1;
296 pub const D3D11_PS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
297 pub const D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
298 pub const D3D11_PS_OUTPUT_REGISTER_COUNT: DWORD = 8;
299 pub const D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT: FLOAT = 0.5;
300 pub const D3D11_RAW_UAV_SRV_BYTE_ALIGNMENT: DWORD = 16;
301 pub const D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
302 pub const D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP: DWORD = 27;
303 pub const D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT: DWORD = 4096;
304 pub const D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
305 pub const D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: DWORD = 32;
306 pub const D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP: DWORD = 32;
307 pub const D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION: DWORD = 16384;
308 pub const D3D11_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT: DWORD = 1024;
309 pub const D3D11_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT: DWORD = 4096;
310 pub const D3D11_REQ_MAXANISOTROPY: DWORD = 16;
311 pub const D3D11_REQ_MIP_LEVELS: DWORD = 15;
312 pub const D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES: DWORD = 2048;
313 pub const D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
314 pub const D3D11_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH: DWORD = 16384;
315 pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM: DWORD = 128;
316 pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM: FLOAT = 0.25;
317 pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM: DWORD = 2048;
318 pub const D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP: DWORD = 20;
319 pub const D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
320 pub const D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION: DWORD = 2048;
321 pub const D3D11_REQ_TEXTURE1D_U_DIMENSION: DWORD = 16384;
322 pub const D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION: DWORD = 2048;
323 pub const D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION: DWORD = 16384;
324 pub const D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION: DWORD = 2048;
325 pub const D3D11_REQ_TEXTURECUBE_DIMENSION: DWORD = 16384;
326 pub const D3D11_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL: DWORD = 0;
327 pub const D3D11_SHADER_MAJOR_VERSION: DWORD = 5;
328 pub const D3D11_SHADER_MAX_INSTANCES: DWORD = 65535;
329 pub const D3D11_SHADER_MAX_INTERFACES: DWORD = 253;
330 pub const D3D11_SHADER_MAX_INTERFACE_CALL_SITES: DWORD = 4096;
331 pub const D3D11_SHADER_MAX_TYPES: DWORD = 65535;
332 pub const D3D11_SHADER_MINOR_VERSION: DWORD = 0;
333 pub const D3D11_SHIFT_INSTRUCTION_PAD_VALUE: DWORD = 0;
334 pub const D3D11_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT: DWORD = 5;
335 pub const D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT: DWORD = 8;
336 pub const D3D11_SO_BUFFER_MAX_STRIDE_IN_BYTES: DWORD = 2048;
337 pub const D3D11_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES: DWORD = 512;
338 pub const D3D11_SO_BUFFER_SLOT_COUNT: DWORD = 4;
339 pub const D3D11_SO_DDI_REGISTER_INDEX_DENOTING_GAP: DWORD = 0xffffffff;
340 pub const D3D11_SO_NO_RASTERIZED_STREAM: DWORD = 0xffffffff;
341 pub const D3D11_SO_OUTPUT_COMPONENT_COUNT: DWORD = 128;
342 pub const D3D11_SO_STREAM_COUNT: DWORD = 4;
343 pub const D3D11_SPEC_DATE_DAY: DWORD = 16;
344 pub const D3D11_SPEC_DATE_MONTH: DWORD = 0o5;
345 pub const D3D11_SPEC_DATE_YEAR: DWORD = 2011;
346 pub const D3D11_SPEC_VERSION: FLOAT = 1.07;
347 pub const D3D11_SRGB_GAMMA: FLOAT = 2.2;
348 pub const D3D11_SRGB_TO_FLOAT_DENOMINATOR_1: FLOAT = 12.92;
349 pub const D3D11_SRGB_TO_FLOAT_DENOMINATOR_2: FLOAT = 1.055;
350 pub const D3D11_SRGB_TO_FLOAT_EXPONENT: FLOAT = 2.4;
351 pub const D3D11_SRGB_TO_FLOAT_OFFSET: FLOAT = 0.055;
352 pub const D3D11_SRGB_TO_FLOAT_THRESHOLD: FLOAT = 0.04045;
353 pub const D3D11_SRGB_TO_FLOAT_TOLERANCE_IN_ULP: FLOAT = 0.5;
354 pub const D3D11_STANDARD_COMPONENT_BIT_COUNT: DWORD = 32;
355 pub const D3D11_STANDARD_COMPONENT_BIT_COUNT_DOUBLED: DWORD = 64;
356 pub const D3D11_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE: DWORD = 4;
357 pub const D3D11_STANDARD_PIXEL_COMPONENT_COUNT: DWORD = 128;
358 pub const D3D11_STANDARD_PIXEL_ELEMENT_COUNT: DWORD = 32;
359 pub const D3D11_STANDARD_VECTOR_SIZE: DWORD = 4;
360 pub const D3D11_STANDARD_VERTEX_ELEMENT_COUNT: DWORD = 32;
361 pub const D3D11_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT: DWORD = 64;
362 pub const D3D11_SUBPIXEL_FRACTIONAL_BIT_COUNT: DWORD = 8;
363 pub const D3D11_SUBTEXEL_FRACTIONAL_BIT_COUNT: DWORD = 8;
364 pub const D3D11_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR: DWORD = 64;
365 pub const D3D11_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR: DWORD = 64;
366 pub const D3D11_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR: DWORD = 63;
367 pub const D3D11_TESSELLATOR_MAX_TESSELLATION_FACTOR: DWORD = 64;
368 pub const D3D11_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR: DWORD = 2;
369 pub const D3D11_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR: DWORD = 1;
370 pub const D3D11_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR: DWORD = 1;
371 pub const D3D11_TEXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 16;
372 pub const D3D11_UNBOUND_MEMORY_ACCESS_RESULT: DWORD = 0;
373 pub const D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX: DWORD = 15;
374 pub const D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE: DWORD = 16;
375 pub const D3D11_VIEWPORT_BOUNDS_MAX: DWORD = 32767;
376 pub const D3D11_VIEWPORT_BOUNDS_MIN: c_long = -32768;
377 pub const D3D11_VS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
378 pub const D3D11_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
379 pub const D3D11_VS_INPUT_REGISTER_COUNT: DWORD = 32;
380 pub const D3D11_VS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
381 pub const D3D11_VS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
382 pub const D3D11_VS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
383 pub const D3D11_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
384 pub const D3D11_VS_OUTPUT_REGISTER_COUNT: DWORD = 32;
385 pub const D3D11_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT: DWORD = 10;
386 pub const D3D11_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: DWORD = 25;
387 pub const D3D11_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP: DWORD = 25;
388 pub const D3D11_1_UAV_SLOT_COUNT: DWORD = 64;
389 pub const D3D11_2_TILED_RESOURCE_TILE_SIZE_IN_BYTES: DWORD = 65536;
390 ENUM!{enum D3D11_INPUT_CLASSIFICATION {
391     D3D11_INPUT_PER_VERTEX_DATA = 0,
392     D3D11_INPUT_PER_INSTANCE_DATA = 1,
393 }}
394 pub const D3D11_APPEND_ALIGNED_ELEMENT: DWORD = 0xffffffff;
395 STRUCT!{struct D3D11_INPUT_ELEMENT_DESC {
396     SemanticName: LPCSTR,
397     SemanticIndex: UINT,
398     Format: DXGI_FORMAT,
399     InputSlot: UINT,
400     AlignedByteOffset: UINT,
401     InputSlotClass: D3D11_INPUT_CLASSIFICATION,
402     InstanceDataStepRate: UINT,
403 }}
404 ENUM!{enum D3D11_FILL_MODE {
405     D3D11_FILL_WIREFRAME = 2,
406     D3D11_FILL_SOLID = 3,
407 }}
408 pub type D3D11_PRIMITIVE_TOPOLOGY = D3D_PRIMITIVE_TOPOLOGY;
409 pub type D3D11_PRIMITIVE = D3D_PRIMITIVE;
410 ENUM!{enum D3D11_CULL_MODE {
411     D3D11_CULL_NONE = 1,
412     D3D11_CULL_FRONT = 2,
413     D3D11_CULL_BACK = 3,
414 }}
415 STRUCT!{struct D3D11_SO_DECLARATION_ENTRY {
416     Stream: UINT,
417     SemanticName: LPCSTR,
418     SemanticIndex: UINT,
419     StartComponent: BYTE,
420     ComponentCount: BYTE,
421     OutputSlot: BYTE,
422 }}
423 STRUCT!{struct D3D11_VIEWPORT {
424     TopLeftX: FLOAT,
425     TopLeftY: FLOAT,
426     Width: FLOAT,
427     Height: FLOAT,
428     MinDepth: FLOAT,
429     MaxDepth: FLOAT,
430 }}
431 STRUCT!{struct D3D11_DRAW_INSTANCED_INDIRECT_ARGS {
432     VertexCountPerInstance: UINT,
433     InstanceCount: UINT,
434     StartVertexLocation: UINT,
435     StartInstanceLocation: UINT,
436 }}
437 STRUCT!{struct D3D11_DRAW_INDEXED_INSTANCED_INDIRECT_ARGS {
438     IndexCountPerInstance: UINT,
439     InstanceCount: UINT,
440     StartIndexLocation: UINT,
441     BaseVertexLocation: INT,
442     StartInstanceLocation: UINT,
443 }}
444 ENUM!{enum D3D11_RESOURCE_DIMENSION {
445     D3D11_RESOURCE_DIMENSION_UNKNOWN = 0,
446     D3D11_RESOURCE_DIMENSION_BUFFER = 1,
447     D3D11_RESOURCE_DIMENSION_TEXTURE1D = 2,
448     D3D11_RESOURCE_DIMENSION_TEXTURE2D = 3,
449     D3D11_RESOURCE_DIMENSION_TEXTURE3D = 4,
450 }}
451 pub type D3D11_SRV_DIMENSION = D3D_SRV_DIMENSION;
452 ENUM!{enum D3D11_DSV_DIMENSION {
453     D3D11_DSV_DIMENSION_UNKNOWN = 0,
454     D3D11_DSV_DIMENSION_TEXTURE1D = 1,
455     D3D11_DSV_DIMENSION_TEXTURE1DARRAY = 2,
456     D3D11_DSV_DIMENSION_TEXTURE2D = 3,
457     D3D11_DSV_DIMENSION_TEXTURE2DARRAY = 4,
458     D3D11_DSV_DIMENSION_TEXTURE2DMS = 5,
459     D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
460 }}
461 ENUM!{enum D3D11_RTV_DIMENSION {
462     D3D11_RTV_DIMENSION_UNKNOWN = 0,
463     D3D11_RTV_DIMENSION_BUFFER = 1,
464     D3D11_RTV_DIMENSION_TEXTURE1D = 2,
465     D3D11_RTV_DIMENSION_TEXTURE1DARRAY = 3,
466     D3D11_RTV_DIMENSION_TEXTURE2D = 4,
467     D3D11_RTV_DIMENSION_TEXTURE2DARRAY = 5,
468     D3D11_RTV_DIMENSION_TEXTURE2DMS = 6,
469     D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
470     D3D11_RTV_DIMENSION_TEXTURE3D = 8,
471 }}
472 ENUM!{enum D3D11_UAV_DIMENSION {
473     D3D11_UAV_DIMENSION_UNKNOWN = 0,
474     D3D11_UAV_DIMENSION_BUFFER = 1,
475     D3D11_UAV_DIMENSION_TEXTURE1D = 2,
476     D3D11_UAV_DIMENSION_TEXTURE1DARRAY = 3,
477     D3D11_UAV_DIMENSION_TEXTURE2D = 4,
478     D3D11_UAV_DIMENSION_TEXTURE2DARRAY = 5,
479     D3D11_UAV_DIMENSION_TEXTURE3D = 8,
480 }}
481 ENUM!{enum D3D11_USAGE {
482     D3D11_USAGE_DEFAULT = 0,
483     D3D11_USAGE_IMMUTABLE = 1,
484     D3D11_USAGE_DYNAMIC = 2,
485     D3D11_USAGE_STAGING = 3,
486 }}
487 ENUM!{enum D3D11_BIND_FLAG {
488     D3D11_BIND_VERTEX_BUFFER = 0x1,
489     D3D11_BIND_INDEX_BUFFER = 0x2,
490     D3D11_BIND_CONSTANT_BUFFER = 0x4,
491     D3D11_BIND_SHADER_RESOURCE = 0x8,
492     D3D11_BIND_STREAM_OUTPUT = 0x10,
493     D3D11_BIND_RENDER_TARGET = 0x20,
494     D3D11_BIND_DEPTH_STENCIL = 0x40,
495     D3D11_BIND_UNORDERED_ACCESS = 0x80,
496     D3D11_BIND_DECODER = 0x200,
497     D3D11_BIND_VIDEO_ENCODER = 0x400,
498 }}
499 ENUM!{enum D3D11_CPU_ACCESS_FLAG {
500     D3D11_CPU_ACCESS_WRITE = 0x10000,
501     D3D11_CPU_ACCESS_READ = 0x20000,
502 }}
503 ENUM!{enum D3D11_RESOURCE_MISC_FLAG {
504     D3D11_RESOURCE_MISC_GENERATE_MIPS = 0x1,
505     D3D11_RESOURCE_MISC_SHARED = 0x2,
506     D3D11_RESOURCE_MISC_TEXTURECUBE = 0x4,
507     D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS = 0x10,
508     D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS = 0x20,
509     D3D11_RESOURCE_MISC_BUFFER_STRUCTURED = 0x40,
510     D3D11_RESOURCE_MISC_RESOURCE_CLAMP = 0x80,
511     D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x100,
512     D3D11_RESOURCE_MISC_GDI_COMPATIBLE = 0x200,
513     D3D11_RESOURCE_MISC_SHARED_NTHANDLE = 0x800,
514     D3D11_RESOURCE_MISC_RESTRICTED_CONTENT = 0x1000,
515     D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE = 0x2000,
516     D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER = 0x4000,
517     D3D11_RESOURCE_MISC_GUARDED = 0x8000,
518     D3D11_RESOURCE_MISC_TILE_POOL = 0x20000,
519     D3D11_RESOURCE_MISC_TILED = 0x40000,
520     D3D11_RESOURCE_MISC_HW_PROTECTED = 0x80000,
521 }}
522 ENUM!{enum D3D11_MAP {
523     D3D11_MAP_READ = 1,
524     D3D11_MAP_WRITE = 2,
525     D3D11_MAP_READ_WRITE = 3,
526     D3D11_MAP_WRITE_DISCARD = 4,
527     D3D11_MAP_WRITE_NO_OVERWRITE = 5,
528 }}
529 ENUM!{enum D3D11_MAP_FLAG {
530     D3D11_MAP_FLAG_DO_NOT_WAIT = 0x100000,
531 }}
532 ENUM!{enum D3D11_RAISE_FLAG {
533     D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR = 0x1,
534 }}
535 ENUM!{enum D3D11_CLEAR_FLAG {
536     D3D11_CLEAR_DEPTH = 0x1,
537     D3D11_CLEAR_STENCIL = 0x2,
538 }}
539 pub type D3D11_RECT = RECT;
540 STRUCT!{struct D3D11_BOX {
541     left: UINT,
542     top: UINT,
543     front: UINT,
544     right: UINT,
545     bottom: UINT,
546     back: UINT,
547 }}
548 RIDL!{#[uuid(0x1841e5c8, 0x16b0, 0x489b, 0xbc, 0xc8, 0x44, 0xcf, 0xb0, 0xd5, 0xde, 0xae)]
549 interface ID3D11DeviceChild(ID3D11DeviceChildVtbl): IUnknown(IUnknownVtbl) {
550     fn GetDevice(
551         ppDevice: *mut *mut ID3D11Device,
552     ) -> (),
553     fn GetPrivateData(
554         guid: REFGUID,
555         pDataSize: *mut UINT,
556         pData: *mut c_void,
557     ) -> HRESULT,
558     fn SetPrivateData(
559         guid: REFGUID,
560         DataSize: UINT,
561         pData: *const c_void,
562     ) -> HRESULT,
563     fn SetPrivateDataInterface(
564         guid: REFGUID,
565         pData: *const IUnknown,
566     ) -> HRESULT,
567 }}
568 ENUM!{enum D3D11_COMPARISON_FUNC {
569     D3D11_COMPARISON_NEVER = 1,
570     D3D11_COMPARISON_LESS = 2,
571     D3D11_COMPARISON_EQUAL = 3,
572     D3D11_COMPARISON_LESS_EQUAL = 4,
573     D3D11_COMPARISON_GREATER = 5,
574     D3D11_COMPARISON_NOT_EQUAL = 6,
575     D3D11_COMPARISON_GREATER_EQUAL = 7,
576     D3D11_COMPARISON_ALWAYS = 8,
577 }}
578 ENUM!{enum D3D11_DEPTH_WRITE_MASK {
579     D3D11_DEPTH_WRITE_MASK_ZERO = 0,
580     D3D11_DEPTH_WRITE_MASK_ALL = 1,
581 }}
582 ENUM!{enum D3D11_STENCIL_OP {
583     D3D11_STENCIL_OP_KEEP = 1,
584     D3D11_STENCIL_OP_ZERO = 2,
585     D3D11_STENCIL_OP_REPLACE = 3,
586     D3D11_STENCIL_OP_INCR_SAT = 4,
587     D3D11_STENCIL_OP_DECR_SAT = 5,
588     D3D11_STENCIL_OP_INVERT = 6,
589     D3D11_STENCIL_OP_INCR = 7,
590     D3D11_STENCIL_OP_DECR = 8,
591 }}
592 STRUCT!{struct D3D11_DEPTH_STENCILOP_DESC {
593     StencilFailOp: D3D11_STENCIL_OP,
594     StencilDepthFailOp: D3D11_STENCIL_OP,
595     StencilPassOp: D3D11_STENCIL_OP,
596     StencilFunc: D3D11_COMPARISON_FUNC,
597 }}
598 STRUCT!{struct D3D11_DEPTH_STENCIL_DESC {
599     DepthEnable: BOOL,
600     DepthWriteMask: D3D11_DEPTH_WRITE_MASK,
601     DepthFunc: D3D11_COMPARISON_FUNC,
602     StencilEnable: BOOL,
603     StencilReadMask: UINT8,
604     StencilWriteMask: UINT8,
605     FrontFace: D3D11_DEPTH_STENCILOP_DESC,
606     BackFace: D3D11_DEPTH_STENCILOP_DESC,
607 }}
608 RIDL!{#[uuid(0x03823efb, 0x8d8f, 0x4e1c, 0x9a, 0xa2, 0xf6, 0x4b, 0xb2, 0xcb, 0xfd, 0xf1)]
609 interface ID3D11DepthStencilState(ID3D11DepthStencilStateVtbl):
610     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
611     fn GetDesc(
612         pDesc: *mut D3D11_DEPTH_STENCIL_DESC,
613     ) -> (),
614 }}
615 ENUM!{enum D3D11_BLEND {
616     D3D11_BLEND_ZERO = 1,
617     D3D11_BLEND_ONE = 2,
618     D3D11_BLEND_SRC_COLOR = 3,
619     D3D11_BLEND_INV_SRC_COLOR = 4,
620     D3D11_BLEND_SRC_ALPHA = 5,
621     D3D11_BLEND_INV_SRC_ALPHA = 6,
622     D3D11_BLEND_DEST_ALPHA = 7,
623     D3D11_BLEND_INV_DEST_ALPHA = 8,
624     D3D11_BLEND_DEST_COLOR = 9,
625     D3D11_BLEND_INV_DEST_COLOR = 10,
626     D3D11_BLEND_SRC_ALPHA_SAT = 11,
627     D3D11_BLEND_BLEND_FACTOR = 14,
628     D3D11_BLEND_INV_BLEND_FACTOR = 15,
629     D3D11_BLEND_SRC1_COLOR = 16,
630     D3D11_BLEND_INV_SRC1_COLOR = 17,
631     D3D11_BLEND_SRC1_ALPHA = 18,
632     D3D11_BLEND_INV_SRC1_ALPHA = 19,
633 }}
634 ENUM!{enum D3D11_BLEND_OP {
635     D3D11_BLEND_OP_ADD = 1,
636     D3D11_BLEND_OP_SUBTRACT = 2,
637     D3D11_BLEND_OP_REV_SUBTRACT = 3,
638     D3D11_BLEND_OP_MIN = 4,
639     D3D11_BLEND_OP_MAX = 5,
640 }}
641 ENUM!{enum D3D11_COLOR_WRITE_ENABLE {
642     D3D11_COLOR_WRITE_ENABLE_RED = 1,
643     D3D11_COLOR_WRITE_ENABLE_GREEN = 2,
644     D3D11_COLOR_WRITE_ENABLE_BLUE = 4,
645     D3D11_COLOR_WRITE_ENABLE_ALPHA = 8,
646     D3D11_COLOR_WRITE_ENABLE_ALL = D3D11_COLOR_WRITE_ENABLE_RED | D3D11_COLOR_WRITE_ENABLE_GREEN
647         | D3D11_COLOR_WRITE_ENABLE_BLUE | D3D11_COLOR_WRITE_ENABLE_ALPHA,
648 }}
649 STRUCT!{struct D3D11_RENDER_TARGET_BLEND_DESC {
650     BlendEnable: BOOL,
651     SrcBlend: D3D11_BLEND,
652     DestBlend: D3D11_BLEND,
653     BlendOp: D3D11_BLEND_OP,
654     SrcBlendAlpha: D3D11_BLEND,
655     DestBlendAlpha: D3D11_BLEND,
656     BlendOpAlpha: D3D11_BLEND_OP,
657     RenderTargetWriteMask: UINT8,
658 }}
659 STRUCT!{struct D3D11_BLEND_DESC {
660     AlphaToCoverageEnable: BOOL,
661     IndependentBlendEnable: BOOL,
662     RenderTarget: [D3D11_RENDER_TARGET_BLEND_DESC; 8],
663 }}
664 RIDL!{#[uuid(0x75b68faa, 0x347d, 0x4159, 0x8f, 0x45, 0xa0, 0x64, 0x0f, 0x01, 0xcd, 0x9a)]
665 interface ID3D11BlendState(ID3D11BlendStateVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
666     fn GetDesc(
667         pDesc: *mut D3D11_BLEND_DESC,
668     ) -> (),
669 }}
670 STRUCT!{struct D3D11_RASTERIZER_DESC {
671     FillMode: D3D11_FILL_MODE,
672     CullMode: D3D11_CULL_MODE,
673     FrontCounterClockwise: BOOL,
674     DepthBias: INT,
675     DepthBiasClamp: FLOAT,
676     SlopeScaledDepthBias: FLOAT,
677     DepthClipEnable: BOOL,
678     ScissorEnable: BOOL,
679     MultisampleEnable: BOOL,
680     AntialiasedLineEnable: BOOL,
681 }}
682 RIDL!{#[uuid(0x9bb4ab81, 0xab1a, 0x4d8f, 0xb5, 0x06, 0xfc, 0x04, 0x20, 0x0b, 0x6e, 0xe7)]
683 interface ID3D11RasterizerState(ID3D11RasterizerStateVtbl):
684     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
685     fn GetDesc(
686         pDesc: *mut D3D11_RASTERIZER_DESC,
687     ) -> (),
688 }}
689 STRUCT!{struct D3D11_SUBRESOURCE_DATA {
690     pSysMem: *const c_void,
691     SysMemPitch: UINT,
692     SysMemSlicePitch: UINT,
693 }}
694 STRUCT!{struct D3D11_MAPPED_SUBRESOURCE {
695     pData: *mut c_void,
696     RowPitch: UINT,
697     DepthPitch: UINT,
698 }}
699 RIDL!{#[uuid(0xdc8e63f3, 0xd12b, 0x4952, 0xb4, 0x7b, 0x5e, 0x45, 0x02, 0x6a, 0x86, 0x2d)]
700 interface ID3D11Resource(ID3D11ResourceVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
701     fn GetType(
702         pResourceDimension: *mut D3D11_RESOURCE_DIMENSION,
703     ) -> (),
704     fn SetEvictionPriority(
705         EvictionPriority: UINT,
706     ) -> (),
707     fn GetEvictionPriority() -> UINT,
708 }}
709 STRUCT!{struct D3D11_BUFFER_DESC {
710     ByteWidth: UINT,
711     Usage: D3D11_USAGE,
712     BindFlags: UINT,
713     CPUAccessFlags: UINT,
714     MiscFlags: UINT,
715     StructureByteStride: UINT,
716 }}
717 RIDL!{#[uuid(0x48570b85, 0xd1ee, 0x4fcd, 0xa2, 0x50, 0xeb, 0x35, 0x07, 0x22, 0xb0, 0x37)]
718 interface ID3D11Buffer(ID3D11BufferVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
719     fn GetDesc(
720         pDesc: *mut D3D11_BUFFER_DESC,
721     ) -> (),
722 }}
723 STRUCT!{struct D3D11_TEXTURE1D_DESC {
724     Width: UINT,
725     MipLevels: UINT,
726     ArraySize: UINT,
727     Format: DXGI_FORMAT,
728     Usage: D3D11_USAGE,
729     BindFlags: UINT,
730     CPUAccessFlags: UINT,
731     MiscFlags: UINT,
732 }}
733 RIDL!{#[uuid(0xf8fb5c27, 0xc6b3, 0x4f75, 0xa4, 0xc8, 0x43, 0x9a, 0xf2, 0xef, 0x56, 0x4c)]
734 interface ID3D11Texture1D(ID3D11Texture1DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
735     fn GetDesc(
736         pDesc: *mut D3D11_TEXTURE1D_DESC,
737     ) -> (),
738 }}
739 STRUCT!{struct D3D11_TEXTURE2D_DESC {
740     Width: UINT,
741     Height: UINT,
742     MipLevels: UINT,
743     ArraySize: UINT,
744     Format: DXGI_FORMAT,
745     SampleDesc: DXGI_SAMPLE_DESC,
746     Usage: D3D11_USAGE,
747     BindFlags: UINT,
748     CPUAccessFlags: UINT,
749     MiscFlags: UINT,
750 }}
751 RIDL!{#[uuid(0x6f15aaf2, 0xd208, 0x4e89, 0x9a, 0xb4, 0x48, 0x95, 0x35, 0xd3, 0x4f, 0x9c)]
752 interface ID3D11Texture2D(ID3D11Texture2DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
753     fn GetDesc(
754         pDesc: *mut D3D11_TEXTURE2D_DESC,
755     ) -> (),
756 }}
757 STRUCT!{struct D3D11_TEXTURE3D_DESC {
758     Width: UINT,
759     Height: UINT,
760     Depth: UINT,
761     MipLevels: UINT,
762     Format: DXGI_FORMAT,
763     Usage: D3D11_USAGE,
764     BindFlags: UINT,
765     CPUAccessFlags: UINT,
766     MiscFlags: UINT,
767 }}
768 RIDL!{#[uuid(0x037e866e, 0xf56d, 0x4357, 0xa8, 0xaf, 0x9d, 0xab, 0xbe, 0x6e, 0x25, 0x0e)]
769 interface ID3D11Texture3D(ID3D11Texture3DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
770     fn GetDesc(
771         pDesc: *mut D3D11_TEXTURE3D_DESC,
772     ) -> (),
773 }}
774 ENUM!{enum D3D11_TEXTURECUBE_FACE {
775     D3D11_TEXTURECUBE_FACE_POSITIVE_X = 0,
776     D3D11_TEXTURECUBE_FACE_NEGATIVE_X = 1,
777     D3D11_TEXTURECUBE_FACE_POSITIVE_Y = 2,
778     D3D11_TEXTURECUBE_FACE_NEGATIVE_Y = 3,
779     D3D11_TEXTURECUBE_FACE_POSITIVE_Z = 4,
780     D3D11_TEXTURECUBE_FACE_NEGATIVE_Z = 5,
781 }}
782 RIDL!{#[uuid(0x839d1216, 0xbb2e, 0x412b, 0xb7, 0xf4, 0xa9, 0xdb, 0xeb, 0xe0, 0x8e, 0xd1)]
783 interface ID3D11View(ID3D11ViewVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
784     fn GetResource(
785         ppResource: *mut *mut ID3D11Resource,
786     ) -> (),
787 }}
788 UNION!{union D3D11_BUFFER_SRV_u1 {
789     [u32; 1],
790     FirstElement FirstElement_mut: UINT,
791     ElementOffset ElementOffset_mut: UINT,
792 }}
793 UNION!{union D3D11_BUFFER_SRV_u2 {
794     [u32; 1],
795     NumElements NumElements_mut: UINT,
796     ElementWidth ElementWidth_mut: UINT,
797 }}
798 STRUCT!{struct D3D11_BUFFER_SRV {
799     u1: D3D11_BUFFER_SRV_u1,
800     u2: D3D11_BUFFER_SRV_u2,
801 }}
802 ENUM!{enum D3D11_BUFFEREX_SRV_FLAG {
803     D3D11_BUFFEREX_SRV_FLAG_RAW = 0x1,
804 }}
805 STRUCT!{struct D3D11_BUFFEREX_SRV {
806     FirstElement: UINT,
807     NumElements: UINT,
808     Flags: UINT,
809 }}
810 STRUCT!{struct D3D11_TEX1D_SRV {
811     MostDetailedMip: UINT,
812     MipLevels: UINT,
813 }}
814 STRUCT!{struct D3D11_TEX1D_ARRAY_SRV {
815     MostDetailedMip: UINT,
816     MipLevels: UINT,
817     FirstArraySlice: UINT,
818     ArraySize: UINT,
819 }}
820 STRUCT!{struct D3D11_TEX2D_SRV {
821     MostDetailedMip: UINT,
822     MipLevels: UINT,
823 }}
824 STRUCT!{struct D3D11_TEX2D_ARRAY_SRV {
825     MostDetailedMip: UINT,
826     MipLevels: UINT,
827     FirstArraySlice: UINT,
828     ArraySize: UINT,
829 }}
830 STRUCT!{struct D3D11_TEX3D_SRV {
831     MostDetailedMip: UINT,
832     MipLevels: UINT,
833 }}
834 STRUCT!{struct D3D11_TEXCUBE_SRV {
835     MostDetailedMip: UINT,
836     MipLevels: UINT,
837 }}
838 STRUCT!{struct D3D11_TEXCUBE_ARRAY_SRV {
839     MostDetailedMip: UINT,
840     MipLevels: UINT,
841     First2DArrayFace: UINT,
842     NumCubes: UINT,
843 }}
844 STRUCT!{struct D3D11_TEX2DMS_SRV {
845     UnusedField_NothingToDefine: UINT,
846 }}
847 STRUCT!{struct D3D11_TEX2DMS_ARRAY_SRV {
848     FirstArraySlice: UINT,
849     ArraySize: UINT,
850 }}
851 UNION!{union D3D11_SHADER_RESOURCE_VIEW_DESC_u {
852     [u32; 4],
853     Buffer Buffer_mut: D3D11_BUFFER_SRV,
854     Texture1D Texture1D_mut: D3D11_TEX1D_SRV,
855     Texture1DArray Texture1DArray_mut: D3D11_TEX1D_ARRAY_SRV,
856     Texture2D Texture2D_mut: D3D11_TEX2D_SRV,
857     Texture2DArray Texture2DArray_mut: D3D11_TEX2D_ARRAY_SRV,
858     Texture2DMS Texture2DMS_mut: D3D11_TEX2DMS_SRV,
859     Texture2DMSArray Texture2DMSArray_mut: D3D11_TEX2DMS_ARRAY_SRV,
860     Texture3D Texture3D_mut: D3D11_TEX3D_SRV,
861     TextureCube TextureCube_mut: D3D11_TEXCUBE_SRV,
862     TextureCubeArray TextureCubeArray_mut: D3D11_TEXCUBE_ARRAY_SRV,
863     BufferEx BufferEx_mut: D3D11_BUFFEREX_SRV,
864 }}
865 STRUCT!{struct D3D11_SHADER_RESOURCE_VIEW_DESC {
866     Format: DXGI_FORMAT,
867     ViewDimension: D3D11_SRV_DIMENSION,
868     u: D3D11_SHADER_RESOURCE_VIEW_DESC_u,
869 }}
870 RIDL!{#[uuid(0xb0e06fe0, 0x8192, 0x4e1a, 0xb1, 0xca, 0x36, 0xd7, 0x41, 0x47, 0x10, 0xb2)]
871 interface ID3D11ShaderResourceView(ID3D11ShaderResourceViewVtbl): ID3D11View(ID3D11ViewVtbl) {
872     fn GetDesc(
873         pDesc: *mut D3D11_SHADER_RESOURCE_VIEW_DESC,
874     ) -> (),
875 }}
876 UNION!{union D3D11_BUFFER_RTV_u1 {
877     [u32; 1],
878     FirstElement FirstElement_mut: UINT,
879     ElementOffset ElementOffset_mut: UINT,
880 }}
881 UNION!{union D3D11_BUFFER_RTV_u2 {
882     [u32; 1],
883     NumElements NumElements_mut: UINT,
884     ElementWidth ElementWidth_mut: UINT,
885 }}
886 STRUCT!{struct D3D11_BUFFER_RTV {
887     u1: D3D11_BUFFER_RTV_u1,
888     u2: D3D11_BUFFER_RTV_u2,
889 }}
890 STRUCT!{struct D3D11_TEX1D_RTV {
891     MipSlice: UINT,
892 }}
893 STRUCT!{struct D3D11_TEX1D_ARRAY_RTV {
894     MipSlice: UINT,
895     FirstArraySlice: UINT,
896     ArraySize: UINT,
897 }}
898 STRUCT!{struct D3D11_TEX2D_RTV {
899     MipSlice: UINT,
900 }}
901 STRUCT!{struct D3D11_TEX2DMS_RTV {
902     UnusedField_NothingToDefine: UINT,
903 }}
904 STRUCT!{struct D3D11_TEX2D_ARRAY_RTV {
905     MipSlice: UINT,
906     FirstArraySlice: UINT,
907     ArraySize: UINT,
908 }}
909 STRUCT!{struct D3D11_TEX2DMS_ARRAY_RTV {
910     FirstArraySlice: UINT,
911     ArraySize: UINT,
912 }}
913 STRUCT!{struct D3D11_TEX3D_RTV {
914     MipSlice: UINT,
915     FirstWSlice: UINT,
916     WSize: UINT,
917 }}
918 UNION!{union D3D11_RENDER_TARGET_VIEW_DESC_u {
919     [u32; 3],
920     Buffer Buffer_mut: D3D11_BUFFER_RTV,
921     Texture1D Texture1D_mut: D3D11_TEX1D_RTV,
922     Texture1DArray Texture1DArray_mut: D3D11_TEX1D_ARRAY_RTV,
923     Texture2D Texture2D_mut: D3D11_TEX2D_RTV,
924     Texture2DArray Texture2DArray_mut: D3D11_TEX2D_ARRAY_RTV,
925     Texture2DMS Texture2DMS_mut: D3D11_TEX2DMS_RTV,
926     Texture2DMSArray Texture2DMSArray_mut: D3D11_TEX2DMS_ARRAY_RTV,
927     Texture3D Texture3D_mut: D3D11_TEX3D_RTV,
928 }}
929 STRUCT!{struct D3D11_RENDER_TARGET_VIEW_DESC {
930     Format: DXGI_FORMAT,
931     ViewDimension: D3D11_RTV_DIMENSION,
932     u: D3D11_RENDER_TARGET_VIEW_DESC_u,
933 }}
934 RIDL!{#[uuid(0xdfdba067, 0x0b8d, 0x4865, 0x87, 0x5b, 0xd7, 0xb4, 0x51, 0x6c, 0xc1, 0x64)]
935 interface ID3D11RenderTargetView(ID3D11RenderTargetViewVtbl): ID3D11View(ID3D11ViewVtbl) {
936     fn GetDesc(
937         pDesc: *mut D3D11_RENDER_TARGET_VIEW_DESC,
938     ) -> (),
939 }}
940 STRUCT!{struct D3D11_TEX1D_DSV {
941     MipSlice: UINT,
942 }}
943 STRUCT!{struct D3D11_TEX1D_ARRAY_DSV {
944     MipSlice: UINT,
945     FirstArraySlice: UINT,
946     ArraySize: UINT,
947 }}
948 STRUCT!{struct D3D11_TEX2D_DSV {
949     MipSlice: UINT,
950 }}
951 STRUCT!{struct D3D11_TEX2D_ARRAY_DSV {
952     MipSlice: UINT,
953     FirstArraySlice: UINT,
954     ArraySize: UINT,
955 }}
956 STRUCT!{struct D3D11_TEX2DMS_DSV {
957     UnusedField_NothingToDefine: UINT,
958 }}
959 STRUCT!{struct D3D11_TEX2DMS_ARRAY_DSV {
960     FirstArraySlice: UINT,
961     ArraySize: UINT,
962 }}
963 ENUM!{enum D3D11_DSV_FLAG {
964     D3D11_DSV_READ_ONLY_DEPTH = 0x1,
965     D3D11_DSV_READ_ONLY_STENCIL = 0x2,
966 }}
967 UNION!{union D3D11_DEPTH_STENCIL_VIEW_DESC_u {
968     [u32; 3],
969     Texture1D Texture1D_mut: D3D11_TEX1D_DSV,
970     Texture1DArray Texture1DArray_mut: D3D11_TEX1D_ARRAY_DSV,
971     Texture2D Texture2D_mut: D3D11_TEX2D_DSV,
972     Texture2DArray Texture2DArray_mut: D3D11_TEX2D_ARRAY_DSV,
973     Texture2DMS Texture2DMS_mut: D3D11_TEX2DMS_DSV,
974     Texture2DMSArray Texture2DMSArray_mut: D3D11_TEX2DMS_ARRAY_DSV,
975 }}
976 STRUCT!{struct D3D11_DEPTH_STENCIL_VIEW_DESC {
977     Format: DXGI_FORMAT,
978     ViewDimension: D3D11_DSV_DIMENSION,
979     Flags: UINT,
980     u: D3D11_DEPTH_STENCIL_VIEW_DESC_u,
981 }}
982 RIDL!{#[uuid(0x9fdac92a, 0x1876, 0x48c3, 0xaf, 0xad, 0x25, 0xb9, 0x4f, 0x84, 0xa9, 0xb6)]
983 interface ID3D11DepthStencilView(ID3D11DepthStencilViewVtbl): ID3D11View(ID3D11ViewVtbl) {
984     fn GetDesc(
985         pDesc: *mut D3D11_DEPTH_STENCIL_VIEW_DESC,
986     ) -> (),
987 }}
988 ENUM!{enum D3D11_BUFFER_UAV_FLAG {
989     D3D11_BUFFER_UAV_FLAG_RAW = 0x1,
990     D3D11_BUFFER_UAV_FLAG_APPEND = 0x2,
991     D3D11_BUFFER_UAV_FLAG_COUNTER = 0x4,
992 }}
993 STRUCT!{struct D3D11_BUFFER_UAV {
994     FirstElement: UINT,
995     NumElements: UINT,
996     Flags: UINT,
997 }}
998 STRUCT!{struct D3D11_TEX1D_UAV {
999     MipSlice: UINT,
1000 }}
1001 STRUCT!{struct D3D11_TEX1D_ARRAY_UAV {
1002     MipSlice: UINT,
1003     FirstArraySlice: UINT,
1004     ArraySize: UINT,
1005 }}
1006 STRUCT!{struct D3D11_TEX2D_UAV {
1007     MipSlice: UINT,
1008 }}
1009 STRUCT!{struct D3D11_TEX2D_ARRAY_UAV {
1010     MipSlice: UINT,
1011     FirstArraySlice: UINT,
1012     ArraySize: UINT,
1013 }}
1014 STRUCT!{struct D3D11_TEX3D_UAV {
1015     MipSlice: UINT,
1016     FirstWSlice: UINT,
1017     WSize: UINT,
1018 }}
1019 UNION!{union D3D11_UNORDERED_ACCESS_VIEW_DESC_u {
1020     [u32; 3],
1021     Buffer Buffer_mut: D3D11_BUFFER_UAV,
1022     Texture1D Texture1D_mut: D3D11_TEX1D_UAV,
1023     Texture1DArray Texture1DArray_mut: D3D11_TEX1D_ARRAY_UAV,
1024     Texture2D Texture2D_mut: D3D11_TEX2D_UAV,
1025     Texture2DArray Texture2DArray_mut: D3D11_TEX2D_ARRAY_UAV,
1026     Texture3D Texture3D_mut: D3D11_TEX3D_UAV,
1027 }}
1028 STRUCT!{struct D3D11_UNORDERED_ACCESS_VIEW_DESC {
1029     Format: DXGI_FORMAT,
1030     ViewDimension: D3D11_UAV_DIMENSION,
1031     u: D3D11_UNORDERED_ACCESS_VIEW_DESC_u,
1032 }}
1033 RIDL!{#[uuid(0x28acf509, 0x7f5c, 0x48f6, 0x86, 0x11, 0xf3, 0x16, 0x01, 0x0a, 0x63, 0x80)]
1034 interface ID3D11UnorderedAccessView(ID3D11UnorderedAccessViewVtbl): ID3D11View(ID3D11ViewVtbl) {
1035     fn GetDesc(
1036         pDesc: *mut D3D11_UNORDERED_ACCESS_VIEW_DESC,
1037     ) -> (),
1038 }}
1039 RIDL!{#[uuid(0x3b301d64, 0xd678, 0x4289, 0x88, 0x97, 0x22, 0xf8, 0x92, 0x8b, 0x72, 0xf3)]
1040 interface ID3D11VertexShader(ID3D11VertexShaderVtbl):
1041     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1042 RIDL!{#[uuid(0x8e5c6061, 0x628a, 0x4c8e, 0x82, 0x64, 0xbb, 0xe4, 0x5c, 0xb3, 0xd5, 0xdd)]
1043 interface ID3D11HullShader(ID3D11HullShaderVtbl):
1044     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1045 RIDL!{#[uuid(0xf582c508, 0x0f36, 0x490c, 0x99, 0x77, 0x31, 0xee, 0xce, 0x26, 0x8c, 0xfa)]
1046 interface ID3D11DomainShader(ID3D11DomainShaderVtbl):
1047     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1048 RIDL!{#[uuid(0x38325b96, 0xeffb, 0x4022, 0xba, 0x02, 0x2e, 0x79, 0x5b, 0x70, 0x27, 0x5c)]
1049 interface ID3D11GeometryShader(ID3D11GeometryShaderVtbl):
1050     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1051 RIDL!{#[uuid(0xea82e40d, 0x51dc, 0x4f33, 0x93, 0xd4, 0xdb, 0x7c, 0x91, 0x25, 0xae, 0x8c)]
1052 interface ID3D11PixelShader(ID3D11PixelShaderVtbl):
1053     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1054 RIDL!{#[uuid(0x4f5b196e, 0xc2bd, 0x495e, 0xbd, 0x01, 0x1f, 0xde, 0xd3, 0x8e, 0x49, 0x69)]
1055 interface ID3D11ComputeShader(ID3D11ComputeShaderVtbl):
1056     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1057 RIDL!{#[uuid(0xe4819ddc, 0x4cf0, 0x4025, 0xbd, 0x26, 0x5d, 0xe8, 0x2a, 0x3e, 0x07, 0xb7)]
1058 interface ID3D11InputLayout(ID3D11InputLayoutVtbl):
1059     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1060 ENUM!{enum D3D11_FILTER {
1061     D3D11_FILTER_MIN_MAG_MIP_POINT = 0,
1062     D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
1063     D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
1064     D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
1065     D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
1066     D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
1067     D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
1068     D3D11_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
1069     D3D11_FILTER_ANISOTROPIC = 0x55,
1070     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
1071     D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
1072     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
1073     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
1074     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
1075     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
1076     D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
1077     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
1078     D3D11_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
1079     D3D11_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
1080     D3D11_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
1081     D3D11_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
1082     D3D11_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
1083     D3D11_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
1084     D3D11_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
1085     D3D11_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
1086     D3D11_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
1087     D3D11_FILTER_MINIMUM_ANISOTROPIC = 0x155,
1088     D3D11_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
1089     D3D11_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
1090     D3D11_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
1091     D3D11_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
1092     D3D11_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
1093     D3D11_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
1094     D3D11_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
1095     D3D11_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
1096     D3D11_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5,
1097 }}
1098 ENUM!{enum D3D11_FILTER_TYPE {
1099     D3D11_FILTER_TYPE_POINT = 0,
1100     D3D11_FILTER_TYPE_LINEAR = 1,
1101 }}
1102 ENUM!{enum D3D11_FILTER_REDUCTION_TYPE {
1103     D3D11_FILTER_REDUCTION_TYPE_STANDARD = 0,
1104     D3D11_FILTER_REDUCTION_TYPE_COMPARISON = 1,
1105     D3D11_FILTER_REDUCTION_TYPE_MINIMUM = 2,
1106     D3D11_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
1107 }}
1108 pub const D3D11_FILTER_REDUCTION_TYPE_MASK: DWORD = 0x3;
1109 pub const D3D11_FILTER_REDUCTION_TYPE_SHIFT: DWORD = 7;
1110 pub const D3D11_FILTER_TYPE_MASK: DWORD = 0x3;
1111 pub const D3D11_MIN_FILTER_SHIFT: DWORD = 4;
1112 pub const D3D11_MAG_FILTER_SHIFT: DWORD = 2;
1113 pub const D3D11_MIP_FILTER_SHIFT: DWORD = 0;
1114 pub const D3D11_COMPARISON_FILTERING_BIT: DWORD = 0x80;
1115 pub const D3D11_ANISOTROPIC_FILTERING_BIT: DWORD = 0x40;
1116 ENUM!{enum D3D11_TEXTURE_ADDRESS_MODE {
1117     D3D11_TEXTURE_ADDRESS_WRAP = 1,
1118     D3D11_TEXTURE_ADDRESS_MIRROR = 2,
1119     D3D11_TEXTURE_ADDRESS_CLAMP = 3,
1120     D3D11_TEXTURE_ADDRESS_BORDER = 4,
1121     D3D11_TEXTURE_ADDRESS_MIRROR_ONCE = 5,
1122 }}
1123 STRUCT!{struct D3D11_SAMPLER_DESC {
1124     Filter: D3D11_FILTER,
1125     AddressU: D3D11_TEXTURE_ADDRESS_MODE,
1126     AddressV: D3D11_TEXTURE_ADDRESS_MODE,
1127     AddressW: D3D11_TEXTURE_ADDRESS_MODE,
1128     MipLODBias: FLOAT,
1129     MaxAnisotropy: UINT,
1130     ComparisonFunc: D3D11_COMPARISON_FUNC,
1131     BorderColor: [FLOAT; 4],
1132     MinLOD: FLOAT,
1133     MaxLOD: FLOAT,
1134 }}
1135 RIDL!{#[uuid(0xda6fea51, 0x564c, 0x4487, 0x98, 0x10, 0xf0, 0xd0, 0xf9, 0xb4, 0xe3, 0xa5)]
1136 interface ID3D11SamplerState(ID3D11SamplerStateVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1137     fn GetDesc(
1138         pDesc: *mut D3D11_SAMPLER_DESC,
1139     ) -> (),
1140 }}
1141 ENUM!{enum D3D11_FORMAT_SUPPORT {
1142     D3D11_FORMAT_SUPPORT_BUFFER = 0x1,
1143     D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER = 0x2,
1144     D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER = 0x4,
1145     D3D11_FORMAT_SUPPORT_SO_BUFFER = 0x8,
1146     D3D11_FORMAT_SUPPORT_TEXTURE1D = 0x10,
1147     D3D11_FORMAT_SUPPORT_TEXTURE2D = 0x20,
1148     D3D11_FORMAT_SUPPORT_TEXTURE3D = 0x40,
1149     D3D11_FORMAT_SUPPORT_TEXTURECUBE = 0x80,
1150     D3D11_FORMAT_SUPPORT_SHADER_LOAD = 0x100,
1151     D3D11_FORMAT_SUPPORT_SHADER_SAMPLE = 0x200,
1152     D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON = 0x400,
1153     D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT = 0x800,
1154     D3D11_FORMAT_SUPPORT_MIP = 0x1000,
1155     D3D11_FORMAT_SUPPORT_MIP_AUTOGEN = 0x2000,
1156     D3D11_FORMAT_SUPPORT_RENDER_TARGET = 0x4000,
1157     D3D11_FORMAT_SUPPORT_BLENDABLE = 0x8000,
1158     D3D11_FORMAT_SUPPORT_DEPTH_STENCIL = 0x10000,
1159     D3D11_FORMAT_SUPPORT_CPU_LOCKABLE = 0x20000,
1160     D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE = 0x40000,
1161     D3D11_FORMAT_SUPPORT_DISPLAY = 0x80000,
1162     D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT = 0x100000,
1163     D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET = 0x200000,
1164     D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD = 0x400000,
1165     D3D11_FORMAT_SUPPORT_SHADER_GATHER = 0x800000,
1166     D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST = 0x1000000,
1167     D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
1168     D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON = 0x4000000,
1169     D3D11_FORMAT_SUPPORT_DECODER_OUTPUT = 0x8000000,
1170     D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
1171     D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT = 0x20000000,
1172     D3D11_FORMAT_SUPPORT_VIDEO_ENCODER = 0x40000000,
1173 }}
1174 ENUM!{enum D3D11_FORMAT_SUPPORT2 {
1175     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
1176     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
1177     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
1178     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
1179     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
1180     D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
1181     D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
1182     D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
1183     D3D11_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
1184     D3D11_FORMAT_SUPPORT2_TILED = 0x200,
1185     D3D11_FORMAT_SUPPORT2_SHAREABLE = 0x400,
1186     D3D11_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
1187 }}
1188 RIDL!{#[uuid(0x4b35d0cd, 0x1e15, 0x4258, 0x9c, 0x98, 0x1b, 0x13, 0x33, 0xf6, 0xdd, 0x3b)]
1189 interface ID3D11Asynchronous(ID3D11AsynchronousVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1190     fn GetDataSize() -> UINT,
1191 }}
1192 ENUM!{enum D3D11_ASYNC_GETDATA_FLAG {
1193     D3D11_ASYNC_GETDATA_DONOTFLUSH = 0x1,
1194 }}
1195 ENUM!{enum D3D11_QUERY {
1196     D3D11_QUERY_EVENT = 0,
1197     D3D11_QUERY_OCCLUSION = D3D11_QUERY_EVENT + 1u32,
1198     D3D11_QUERY_TIMESTAMP = D3D11_QUERY_OCCLUSION + 1u32,
1199     D3D11_QUERY_TIMESTAMP_DISJOINT = D3D11_QUERY_TIMESTAMP + 1u32,
1200     D3D11_QUERY_PIPELINE_STATISTICS = D3D11_QUERY_TIMESTAMP_DISJOINT + 1u32,
1201     D3D11_QUERY_OCCLUSION_PREDICATE = D3D11_QUERY_PIPELINE_STATISTICS + 1u32,
1202     D3D11_QUERY_SO_STATISTICS = D3D11_QUERY_OCCLUSION_PREDICATE + 1u32,
1203     D3D11_QUERY_SO_OVERFLOW_PREDICATE = D3D11_QUERY_SO_STATISTICS + 1u32,
1204     D3D11_QUERY_SO_STATISTICS_STREAM0 = D3D11_QUERY_SO_OVERFLOW_PREDICATE + 1u32,
1205     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 = D3D11_QUERY_SO_STATISTICS_STREAM0 + 1u32,
1206     D3D11_QUERY_SO_STATISTICS_STREAM1 = D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 + 1u32,
1207     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 = D3D11_QUERY_SO_STATISTICS_STREAM1 + 1u32,
1208     D3D11_QUERY_SO_STATISTICS_STREAM2 = D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 + 1u32,
1209     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 = D3D11_QUERY_SO_STATISTICS_STREAM2 + 1u32,
1210     D3D11_QUERY_SO_STATISTICS_STREAM3 = D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 + 1u32,
1211     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 = D3D11_QUERY_SO_STATISTICS_STREAM3 + 1u32,
1212 }}
1213 ENUM!{enum D3D11_QUERY_MISC_FLAG {
1214     D3D11_QUERY_MISC_PREDICATEHINT = 0x1,
1215 }}
1216 STRUCT!{struct D3D11_QUERY_DESC {
1217     Query: D3D11_QUERY,
1218     MiscFlags: UINT,
1219 }}
1220 RIDL!{#[uuid(0xd6c00747, 0x87b7, 0x425e, 0xb8, 0x4d, 0x44, 0xd1, 0x08, 0x56, 0x0a, 0xfd)]
1221 interface ID3D11Query(ID3D11QueryVtbl): ID3D11Asynchronous(ID3D11AsynchronousVtbl) {
1222     fn GetDesc(
1223         pDesc: *mut D3D11_QUERY_DESC,
1224     ) -> (),
1225 }}
1226 RIDL!{#[uuid(0x9eb576dd, 0x9f77, 0x4d86, 0x81, 0xaa, 0x8b, 0xab, 0x5f, 0xe4, 0x90, 0xe2)]
1227 interface ID3D11Predicate(ID3D11PredicateVtbl): ID3D11Query(ID3D11QueryVtbl) {}}
1228 STRUCT!{struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT {
1229     Frequency: UINT64,
1230     Disjoint: BOOL,
1231 }}
1232 STRUCT!{struct D3D11_QUERY_DATA_PIPELINE_STATISTICS {
1233     IAVertices: UINT64,
1234     IAPrimitives: UINT64,
1235     VSInvocations: UINT64,
1236     GSInvocations: UINT64,
1237     GSPrimitives: UINT64,
1238     CInvocations: UINT64,
1239     CPrimitives: UINT64,
1240     PSInvocations: UINT64,
1241     HSInvocations: UINT64,
1242     DSInvocations: UINT64,
1243     CSInvocations: UINT64,
1244 }}
1245 STRUCT!{struct D3D11_QUERY_DATA_SO_STATISTICS {
1246     NumPrimitivesWritten: UINT64,
1247     PrimitivesStorageNeeded: UINT64,
1248 }}
1249 ENUM!{enum D3D11_COUNTER {
1250     D3D11_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000,
1251 }}
1252 ENUM!{enum D3D11_COUNTER_TYPE {
1253     D3D11_COUNTER_TYPE_FLOAT32 = 0,
1254     D3D11_COUNTER_TYPE_UINT16 = D3D11_COUNTER_TYPE_FLOAT32 + 1u32,
1255     D3D11_COUNTER_TYPE_UINT32 = D3D11_COUNTER_TYPE_UINT16 + 1u32,
1256     D3D11_COUNTER_TYPE_UINT64 = D3D11_COUNTER_TYPE_UINT32 + 1u32,
1257 }}
1258 STRUCT!{struct D3D11_COUNTER_DESC {
1259     Counter: D3D11_COUNTER,
1260     MiscFlags: UINT,
1261 }}
1262 STRUCT!{struct D3D11_COUNTER_INFO {
1263     LastDeviceDependentCounter: D3D11_COUNTER,
1264     NumSimultaneousCounters: UINT,
1265     NumDetectableParallelUnits: UINT8,
1266 }}
1267 RIDL!{#[uuid(0x6e8c49fb, 0xa371, 0x4770, 0xb4, 0x40, 0x29, 0x08, 0x60, 0x22, 0xb7, 0x41)]
1268 interface ID3D11Counter(ID3D11CounterVtbl): ID3D11Asynchronous(ID3D11AsynchronousVtbl) {
1269     fn GetDesc(
1270         pDesc: *mut D3D11_COUNTER_DESC,
1271     ) -> (),
1272 }}
1273 ENUM!{enum D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS {
1274     D3D11_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
1275     D3D11_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe,
1276 }}
1277 ENUM!{enum D3D11_DEVICE_CONTEXT_TYPE {
1278     D3D11_DEVICE_CONTEXT_IMMEDIATE = 0,
1279     D3D11_DEVICE_CONTEXT_DEFERRED = D3D11_DEVICE_CONTEXT_IMMEDIATE + 1u32,
1280 }}
1281 STRUCT!{struct D3D11_CLASS_INSTANCE_DESC {
1282     InstanceId: UINT,
1283     InstanceIndex: UINT,
1284     TypeId: UINT,
1285     ConstantBuffer: UINT,
1286     BaseConstantBufferOffset: UINT,
1287     BaseTexture: UINT,
1288     BaseSampler: UINT,
1289     Created: BOOL,
1290 }}
1291 RIDL!{#[uuid(0xa6cd7faa, 0xb0b7, 0x4a2f, 0x94, 0x36, 0x86, 0x62, 0xa6, 0x57, 0x97, 0xcb)]
1292 interface ID3D11ClassInstance(ID3D11ClassInstanceVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1293     fn GetClassLinkage(
1294         ppLinkage: *mut *mut ID3D11ClassLinkage,
1295     ) -> (),
1296     fn GetDesc(
1297         pDesc: *mut D3D11_CLASS_INSTANCE_DESC,
1298     ) -> (),
1299     fn GetInstanceName(
1300         pInstanceName: LPSTR,
1301         pBufferLength: *mut SIZE_T,
1302     ) -> (),
1303     fn GetTypeName(
1304         pTypeName: LPSTR,
1305         pBufferLength: *mut SIZE_T,
1306     ) -> (),
1307 }}
1308 RIDL!{#[uuid(0xddf57cba, 0x9543, 0x46e4, 0xa1, 0x2b, 0xf2, 0x07, 0xa0, 0xfe, 0x7f, 0xed)]
1309 interface ID3D11ClassLinkage(ID3D11ClassLinkageVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1310     fn GetClassInstance(
1311         GetClassInstance: LPCSTR,
1312         InstanceIndex: UINT,
1313         ppInstance: *mut *mut ID3D11ClassInstance,
1314     ) -> HRESULT,
1315     fn CreateClassInstance(
1316         pClassTypeName: LPCSTR,
1317         ConstantBufferOffset: UINT,
1318         ConstantVectorOffset: UINT,
1319         TextureOffset: UINT,
1320         SamplerOffset: UINT,
1321         ppInstance: *mut *mut ID3D11ClassInstance,
1322     ) -> HRESULT,
1323 }}
1324 RIDL!{#[uuid(0xa24bc4d1, 0x769e, 0x43f7, 0x80, 0x13, 0x98, 0xff, 0x56, 0x6c, 0x18, 0xe2)]
1325 interface ID3D11CommandList(ID3D11CommandListVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1326     fn GetContextFlags() -> UINT,
1327 }}
1328 ENUM!{enum D3D11_FEATURE {
1329     D3D11_FEATURE_THREADING = 0,
1330     D3D11_FEATURE_DOUBLES = D3D11_FEATURE_THREADING + 1u32,
1331     D3D11_FEATURE_FORMAT_SUPPORT = D3D11_FEATURE_DOUBLES + 1u32,
1332     D3D11_FEATURE_FORMAT_SUPPORT2 = D3D11_FEATURE_FORMAT_SUPPORT + 1u32,
1333     D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS = D3D11_FEATURE_FORMAT_SUPPORT2 + 1u32,
1334     D3D11_FEATURE_D3D11_OPTIONS = D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS + 1u32,
1335     D3D11_FEATURE_ARCHITECTURE_INFO = D3D11_FEATURE_D3D11_OPTIONS + 1u32,
1336     D3D11_FEATURE_D3D9_OPTIONS = D3D11_FEATURE_ARCHITECTURE_INFO + 1u32,
1337     D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT = D3D11_FEATURE_D3D9_OPTIONS + 1u32,
1338     D3D11_FEATURE_D3D9_SHADOW_SUPPORT = D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT + 1u32,
1339     D3D11_FEATURE_D3D11_OPTIONS1 = D3D11_FEATURE_D3D9_SHADOW_SUPPORT + 1u32,
1340     D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT = D3D11_FEATURE_D3D11_OPTIONS1 + 1u32,
1341     D3D11_FEATURE_MARKER_SUPPORT = D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT + 1u32,
1342     D3D11_FEATURE_D3D9_OPTIONS1 = D3D11_FEATURE_MARKER_SUPPORT + 1u32,
1343     D3D11_FEATURE_D3D11_OPTIONS2 = D3D11_FEATURE_D3D9_OPTIONS1 + 1u32,
1344     D3D11_FEATURE_D3D11_OPTIONS3 = D3D11_FEATURE_D3D11_OPTIONS2 + 1u32,
1345     D3D11_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = D3D11_FEATURE_D3D11_OPTIONS3 + 1u32,
1346 }}
1347 STRUCT!{struct D3D11_FEATURE_DATA_THREADING {
1348     DriverConcurrentCreates: BOOL,
1349     DriverCommandLists: BOOL,
1350 }}
1351 STRUCT!{struct D3D11_FEATURE_DATA_DOUBLES {
1352     DoublePrecisionFloatShaderOps: BOOL,
1353 }}
1354 STRUCT!{struct D3D11_FEATURE_DATA_FORMAT_SUPPORT {
1355     InFormat: DXGI_FORMAT,
1356     OutFormatSupport: UINT,
1357 }}
1358 STRUCT!{struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2 {
1359     InFormat: DXGI_FORMAT,
1360     OutFormatSupport2: UINT,
1361 }}
1362 STRUCT!{struct D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS {
1363     ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x: BOOL,
1364 }}
1365 STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS {
1366     OutputMergerLogicOp: BOOL,
1367     UAVOnlyRenderingForcedSampleCount: BOOL,
1368     DiscardAPIsSeenByDriver: BOOL,
1369     FlagsForUpdateAndCopySeenByDriver: BOOL,
1370     ClearView: BOOL,
1371     CopyWithOverlap: BOOL,
1372     ConstantBufferPartialUpdate: BOOL,
1373     ConstantBufferOffsetting: BOOL,
1374     MapNoOverwriteOnDynamicConstantBuffer: BOOL,
1375     MapNoOverwriteOnDynamicBufferSRV: BOOL,
1376     MultisampleRTVWithForcedSampleCountOne: BOOL,
1377     SAD4ShaderInstructions: BOOL,
1378     ExtendedDoublesShaderInstructions: BOOL,
1379     ExtendedResourceSharing: BOOL,
1380 }}
1381 STRUCT!{struct D3D11_FEATURE_DATA_ARCHITECTURE_INFO {
1382     TileBasedDeferredRenderer: BOOL,
1383 }}
1384 STRUCT!{struct D3D11_FEATURE_DATA_D3D9_OPTIONS {
1385     FullNonPow2TextureSupport: BOOL,
1386 }}
1387 STRUCT!{struct D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT {
1388     SupportsDepthAsTextureWithLessEqualComparisonFilter: BOOL,
1389 }}
1390 ENUM!{enum D3D11_SHADER_MIN_PRECISION_SUPPORT {
1391     D3D11_SHADER_MIN_PRECISION_10_BIT = 0x1,
1392     D3D11_SHADER_MIN_PRECISION_16_BIT = 0x2,
1393 }}
1394 STRUCT!{struct D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT {
1395     PixelShaderMinPrecision: UINT,
1396     AllOtherShaderStagesMinPrecision: UINT,
1397 }}
1398 ENUM!{enum D3D11_TILED_RESOURCES_TIER {
1399     D3D11_TILED_RESOURCES_NOT_SUPPORTED = 0,
1400     D3D11_TILED_RESOURCES_TIER_1 = 1,
1401     D3D11_TILED_RESOURCES_TIER_2 = 2,
1402     D3D11_TILED_RESOURCES_TIER_3 = 3,
1403 }}
1404 STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS1 {
1405     TiledResourcesTier: D3D11_TILED_RESOURCES_TIER,
1406     MinMaxFiltering: BOOL,
1407     ClearViewAlsoSupportsDepthOnlyFormats: BOOL,
1408     MapOnDefaultBuffers: BOOL,
1409 }}
1410 STRUCT!{struct D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT {
1411     SimpleInstancingSupported: BOOL,
1412 }}
1413 STRUCT!{struct D3D11_FEATURE_DATA_MARKER_SUPPORT {
1414     Profile: BOOL,
1415 }}
1416 STRUCT!{struct D3D11_FEATURE_DATA_D3D9_OPTIONS1 {
1417     FullNonPow2TextureSupported: BOOL,
1418     DepthAsTextureWithLessEqualComparisonFilterSupported: BOOL,
1419     SimpleInstancingSupported: BOOL,
1420     TextureCubeFaceRenderTargetWithNonCubeDepthStencilSupported: BOOL,
1421 }}
1422 ENUM!{enum D3D11_CONSERVATIVE_RASTERIZATION_TIER {
1423     D3D11_CONSERVATIVE_RASTERIZATION_NOT_SUPPORTED = 0,
1424     D3D11_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
1425     D3D11_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
1426     D3D11_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
1427 }}
1428 STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS2 {
1429     PSSpecifiedStencilRefSupported: BOOL,
1430     TypedUAVLoadAdditionalFormats: BOOL,
1431     ROVsSupported: BOOL,
1432     ConservativeRasterizationTier: D3D11_CONSERVATIVE_RASTERIZATION_TIER,
1433     TiledResourcesTier: D3D11_TILED_RESOURCES_TIER,
1434     MapOnDefaultTextures: BOOL,
1435     StandardSwizzle: BOOL,
1436     UnifiedMemoryArchitecture: BOOL,
1437 }}
1438 STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS3 {
1439     VPAndRTArrayIndexFromAnyShaderFeedingRasterizer: BOOL,
1440 }}
1441 STRUCT!{struct D3D11_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT {
1442     MaxGPUVirtualAddressBitsPerResource: UINT,
1443     MaxGPUVirtualAddressBitsPerProcess: UINT,
1444 }}
1445 RIDL!{#[uuid(0xc0bfa96c, 0xe089, 0x44fb, 0x8e, 0xaf, 0x26, 0xf8, 0x79, 0x61, 0x90, 0xda)]
1446 interface ID3D11DeviceContext(ID3D11DeviceContextVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1447     fn VSSetConstantBuffers(
1448         StartSlot: UINT,
1449         NumBuffers: UINT,
1450         ppConstantBuffers: *const *mut ID3D11Buffer,
1451     ) -> (),
1452     fn PSSetShaderResources(
1453         StartSlot: UINT,
1454         NumViews: UINT,
1455         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView,
1456     ) -> (),
1457     fn PSSetShader(
1458         pPixelShader: *mut ID3D11PixelShader,
1459         ppClassInstances: *const *mut ID3D11ClassInstance,
1460         NumClassInstances: UINT,
1461     ) -> (),
1462     fn PSSetSamplers(
1463         StartSlot: UINT,
1464         NumSamplers: UINT,
1465         ppSamplers: *const *mut ID3D11SamplerState,
1466     ) -> (),
1467     fn VSSetShader(
1468         pVertexShader: *mut ID3D11VertexShader,
1469         ppClassInstances: *const *mut ID3D11ClassInstance,
1470         NumClassInstances: UINT,
1471     ) -> (),
1472     fn DrawIndexed(
1473         IndexCount: UINT,
1474         StartIndexLocation: UINT,
1475         BaseVertexLocation: INT,
1476     ) -> (),
1477     fn Draw(
1478         VertexCount: UINT,
1479         StartVertexLocation: UINT,
1480     ) -> (),
1481     fn Map(
1482         pResource: *mut ID3D11Resource,
1483         Subresource: UINT,
1484         MapType: D3D11_MAP,
1485         MapFlags: UINT,
1486         pMappedResource: *mut D3D11_MAPPED_SUBRESOURCE,
1487     ) -> HRESULT,
1488     fn Unmap(
1489         pResource: *mut ID3D11Resource,
1490         Subresource: UINT,
1491     ) -> (),
1492     fn PSSetConstantBuffers(
1493         StartSlot: UINT,
1494         NumBuffers: UINT,
1495         ppConstantBuffers: *const *mut ID3D11Buffer,
1496     ) -> (),
1497     fn IASetInputLayout(
1498         pInputLayout: *mut ID3D11InputLayout,
1499     ) -> (),
1500     fn IASetVertexBuffers(
1501         StartSlot: UINT,
1502         NumBuffers: UINT,
1503         ppVertexBuffers: *const *mut ID3D11Buffer,
1504         pStrides: *const UINT,
1505         pOffsets: *const UINT,
1506     ) -> (),
1507     fn IASetIndexBuffer(
1508         pIndexBuffer: *mut ID3D11Buffer,
1509         Format: DXGI_FORMAT,
1510         Offset: UINT,
1511     ) -> (),
1512     fn DrawIndexedInstanced(
1513         IndexCountPerInstance: UINT,
1514         InstanceCount: UINT,
1515         StartIndexLocation: UINT,
1516         BaseVertexLocation: INT,
1517         StartInstanceLocation: UINT,
1518     ) -> (),
1519     fn DrawInstanced(
1520         VertexCountPerInstance: UINT,
1521         InstanceCount: UINT,
1522         StartVertexLocation: UINT,
1523         StartInstanceLocation: UINT,
1524     ) -> (),
1525     fn GSSetConstantBuffers(
1526         StartSlot: UINT,
1527         NumBuffers: UINT,
1528         ppConstantBuffers: *const *mut ID3D11Buffer,
1529     ) -> (),
1530     fn GSSetShader(
1531         pShader: *mut ID3D11GeometryShader,
1532         ppClassInstances: *const *mut ID3D11ClassInstance,
1533         NumClassInstances: UINT,
1534     ) -> (),
1535     fn IASetPrimitiveTopology(
1536         Topology: D3D11_PRIMITIVE_TOPOLOGY,
1537     ) -> (),
1538     fn VSSetShaderResources(
1539         StartSlot: UINT,
1540         NumViews: UINT,
1541         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView,
1542     ) -> (),
1543     fn VSSetSamplers(
1544         StartSlot: UINT,
1545         NumSamplers: UINT,
1546         ppSamplers: *const *mut ID3D11SamplerState,
1547     ) -> (),
1548     fn Begin(
1549         pAsync: *mut ID3D11Asynchronous,
1550     ) -> (),
1551     fn End(
1552         pAsync: *mut ID3D11Asynchronous,
1553     ) -> (),
1554     fn GetData(
1555         pAsync: *mut ID3D11Asynchronous,
1556         pData: *mut c_void,
1557         DataSize: UINT,
1558         GetDataFlags: UINT,
1559     ) -> HRESULT,
1560     fn SetPredication(
1561         pPredicate: *mut ID3D11Predicate,
1562         PredicateValue: BOOL,
1563     ) -> (),
1564     fn GSSetShaderResources(
1565         StartSlot: UINT,
1566         NumViews: UINT,
1567         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView,
1568     ) -> (),
1569     fn GSSetSamplers(
1570         StartSlot: UINT,
1571         NumSamplers: UINT,
1572         ppSamplers: *const *mut ID3D11SamplerState,
1573     ) -> (),
1574     fn OMSetRenderTargets(
1575         NumViews: UINT,
1576         ppRenderTargetViews: *const *mut ID3D11RenderTargetView,
1577         pDepthStencilView: *mut ID3D11DepthStencilView,
1578     ) -> (),
1579     fn OMSetRenderTargetsAndUnorderedAccessViews(
1580         NumRTVs: UINT,
1581         ppRenderTargetViews: *const *mut ID3D11RenderTargetView,
1582         pDepthStencilView: *mut ID3D11DepthStencilView,
1583         UAVStartSlot: UINT,
1584         NumUAVs: UINT,
1585         ppUnorderedAccessViews: *const *mut ID3D11UnorderedAccessView,
1586         pUAVInitialCounts: *const UINT,
1587     ) -> (),
1588     fn OMSetBlendState(
1589         pBlendState: *mut ID3D11BlendState,
1590         BlendFactor: &[FLOAT; 4],
1591         SampleMask: UINT,
1592     ) -> (),
1593     fn OMSetDepthStencilState(
1594         pDepthStencilState: *mut ID3D11DepthStencilState,
1595         StencilRef: UINT,
1596     ) -> (),
1597     fn SOSetTargets(
1598         NumBuffers: UINT,
1599         ppSOTargets: *const *mut ID3D11Buffer,
1600         pOffsets: *const UINT,
1601     ) -> (),
1602     fn DrawAuto() -> (),
1603     fn DrawIndexedInstancedIndirect(
1604         pBufferForArgs: *mut ID3D11Buffer,
1605         AlignedByteOffsetForArgs: UINT,
1606     ) -> (),
1607     fn DrawInstancedIndirect(
1608         pBufferForArgs: *mut ID3D11Buffer,
1609         AlignedByteOffsetForArgs: UINT,
1610     ) -> (),
1611     fn Dispatch(
1612         ThreadGroupCountX: UINT,
1613         ThreadGroupCountY: UINT,
1614         ThreadGroupCountZ: UINT,
1615     ) -> (),
1616     fn DispatchIndirect(
1617         pBufferForArgs: *mut ID3D11Buffer,
1618         AlignedByteOffsetForArgs: UINT,
1619     ) -> (),
1620     fn RSSetState(
1621         pRasterizerState: *mut ID3D11RasterizerState,
1622     ) -> (),
1623     fn RSSetViewports(
1624         NumViewports: UINT,
1625         pViewports: *const D3D11_VIEWPORT,
1626     ) -> (),
1627     fn RSSetScissorRects(
1628         NumRects: UINT,
1629         pRects: *const D3D11_RECT,
1630     ) -> (),
1631     fn CopySubresourceRegion(
1632         pDstResource: *mut ID3D11Resource,
1633         DstSubresource: UINT,
1634         DstX: UINT,
1635         DstY: UINT,
1636         DstZ: UINT,
1637         pSrcResource: *mut ID3D11Resource,
1638         SrcSubresource: UINT,
1639         pSrcBox: *const D3D11_BOX,
1640     ) -> (),
1641     fn CopyResource(
1642         pDstResource: *mut ID3D11Resource,
1643         pSrcResource: *mut ID3D11Resource,
1644     ) -> (),
1645     fn UpdateSubresource(
1646         pDstResource: *mut ID3D11Resource,
1647         DstSubresource: UINT,
1648         pDstBox: *const D3D11_BOX,
1649         pSrcData: *const c_void,
1650         SrcRowPitch: UINT,
1651         SrcDepthPitch: UINT,
1652     ) -> (),
1653     fn CopyStructureCount(
1654         pDstBuffer: *mut ID3D11Buffer,
1655         DstAlignedByteOffset: UINT,
1656         pSrcView: *mut ID3D11UnorderedAccessView,
1657     ) -> (),
1658     fn ClearRenderTargetView(
1659         pRenderTargetView: *mut ID3D11RenderTargetView,
1660         ColorRGBA: &[FLOAT; 4],
1661     ) -> (),
1662     fn ClearUnorderedAccessViewUint(
1663         pUnorderedAccessView: *mut ID3D11UnorderedAccessView,
1664         Values: &[UINT; 4],
1665     ) -> (),
1666     fn ClearUnorderedAccessViewFloat(
1667         pUnorderedAccessView: *mut ID3D11UnorderedAccessView,
1668         Values: &[FLOAT; 4],
1669     ) -> (),
1670     fn ClearDepthStencilView(
1671         pDepthStencilView: *mut ID3D11DepthStencilView,
1672         ClearFlags: UINT,
1673         Depth: FLOAT,
1674         Stencil: UINT8,
1675     ) -> (),
1676     fn GenerateMips(
1677         pShaderResourceView: *mut ID3D11ShaderResourceView,
1678     ) -> (),
1679     fn SetResourceMinLOD(
1680         pResource: *mut ID3D11Resource,
1681         MinLOD: FLOAT,
1682     ) -> (),
1683     fn GetResourceMinLOD(
1684         pResource: *mut ID3D11Resource,
1685     ) -> FLOAT,
1686     fn ResolveSubresource(
1687         pDstResource: *mut ID3D11Resource,
1688         DstSubresource: UINT,
1689         pSrcResource: *mut ID3D11Resource,
1690         SrcSubresource: UINT,
1691         Format: DXGI_FORMAT,
1692     ) -> (),
1693     fn ExecuteCommandList(
1694         pCommandList: *mut ID3D11CommandList,
1695         RestoreContextState: BOOL,
1696     ) -> (),
1697     fn HSSetShaderResources(
1698         StartSlot: UINT,
1699         NumViews: UINT,
1700         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView,
1701     ) -> (),
1702     fn HSSetShader(
1703         pHullShader: *mut ID3D11HullShader,
1704         ppClassInstances: *const *mut ID3D11ClassInstance,
1705         NumClassInstances: UINT,
1706     ) -> (),
1707     fn HSSetSamplers(
1708         StartSlot: UINT,
1709         NumSamplers: UINT,
1710         ppSamplers: *const *mut ID3D11SamplerState,
1711     ) -> (),
1712     fn HSSetConstantBuffers(
1713         StartSlot: UINT,
1714         NumBuffers: UINT,
1715         ppConstantBuffers: *const *mut ID3D11Buffer,
1716     ) -> (),
1717     fn DSSetShaderResources(
1718         StartSlot: UINT,
1719         NumViews: UINT,
1720         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView,
1721     ) -> (),
1722     fn DSSetShader(
1723         pDomainShader: *mut ID3D11DomainShader,
1724         ppClassInstances: *const *mut ID3D11ClassInstance,
1725         NumClassInstances: UINT,
1726     ) -> (),
1727     fn DSSetSamplers(
1728         StartSlot: UINT,
1729         NumSamplers: UINT,
1730         ppSamplers: *const *mut ID3D11SamplerState,
1731     ) -> (),
1732     fn DSSetConstantBuffers(
1733         StartSlot: UINT,
1734         NumBuffers: UINT,
1735         ppConstantBuffers: *const *mut ID3D11Buffer,
1736     ) -> (),
1737     fn CSSetShaderResources(
1738         StartSlot: UINT,
1739         NumViews: UINT,
1740         ppShaderResourceViews: *const *mut ID3D11ShaderResourceView,
1741     ) -> (),
1742     fn CSSetUnorderedAccessViews(
1743         StartSlot: UINT,
1744         NumUAVs: UINT,
1745         ppUnorderedAccessViews: *const *mut ID3D11UnorderedAccessView,
1746         pUAVInitialCounts: *const UINT,
1747     ) -> (),
1748     fn CSSetShader(
1749         pComputeShader: *mut ID3D11ComputeShader,
1750         ppClassInstances: *const *mut ID3D11ClassInstance,
1751         NumClassInstances: UINT,
1752     ) -> (),
1753     fn CSSetSamplers(
1754         StartSlot: UINT,
1755         NumSamplers: UINT,
1756         ppSamplers: *const *mut ID3D11SamplerState,
1757     ) -> (),
1758     fn CSSetConstantBuffers(
1759         StartSlot: UINT,
1760         NumBuffers: UINT,
1761         ppConstantBuffers: *const *mut ID3D11Buffer,
1762     ) -> (),
1763     fn VSGetConstantBuffers(
1764         StartSlot: UINT,
1765         NumBuffers: UINT,
1766         ppConstantBuffers: *mut *mut ID3D11Buffer,
1767     ) -> (),
1768     fn PSGetShaderResources(
1769         StartSlot: UINT,
1770         NumViews: UINT,
1771         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView,
1772     ) -> (),
1773     fn PSGetShader(
1774         ppPixelShader: *mut *mut ID3D11PixelShader,
1775         ppClassInstances: *mut *mut ID3D11ClassInstance,
1776         pNumClassInstances: *mut UINT,
1777     ) -> (),
1778     fn PSGetSamplers(
1779         StartSlot: UINT,
1780         NumSamplers: UINT,
1781         ppSamplers: *mut *mut ID3D11SamplerState,
1782     ) -> (),
1783     fn VSGetShader(
1784         ppVertexShader: *mut *mut ID3D11VertexShader,
1785         ppClassInstances: *mut *mut ID3D11ClassInstance,
1786         pNumClassInstances: *mut UINT,
1787     ) -> (),
1788     fn PSGetConstantBuffers(
1789         StartSlot: UINT,
1790         NumBuffers: UINT,
1791         ppConstantBuffers: *mut *mut ID3D11Buffer,
1792     ) -> (),
1793     fn IAGetInputLayout(
1794         ppInputLayout: *mut *mut ID3D11InputLayout,
1795     ) -> (),
1796     fn IAGetVertexBuffers(
1797         StartSlot: UINT,
1798         NumBuffers: UINT,
1799         ppVertexBuffers: *mut *mut ID3D11Buffer,
1800         pStrides: *mut UINT,
1801         pOffsets: *mut UINT,
1802     ) -> (),
1803     fn IAGetIndexBuffer(
1804         pIndexBuffer: *mut *mut ID3D11Buffer,
1805         Format: *mut DXGI_FORMAT,
1806         Offset: *mut UINT,
1807     ) -> (),
1808     fn GSGetConstantBuffers(
1809         StartSlot: UINT,
1810         NumBuffers: UINT,
1811         ppConstantBuffers: *mut *mut ID3D11Buffer,
1812     ) -> (),
1813     fn GSGetShader(
1814         ppGeometryShader: *mut *mut ID3D11GeometryShader,
1815         ppClassInstances: *mut *mut ID3D11ClassInstance,
1816         pNumClassInstances: *mut UINT,
1817     ) -> (),
1818     fn IAGetPrimitiveTopology(
1819         pTopology: *mut D3D11_PRIMITIVE_TOPOLOGY,
1820     ) -> (),
1821     fn VSGetShaderResources(
1822         StartSlot: UINT,
1823         NumViews: UINT,
1824         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView,
1825     ) -> (),
1826     fn VSGetSamplers(
1827         StartSlot: UINT,
1828         NumSamplers: UINT,
1829         ppSamplers: *mut *mut ID3D11SamplerState,
1830     ) -> (),
1831     fn GetPredication(
1832         ppPredicate: *mut *mut ID3D11Predicate,
1833         pPredicateValue: *mut BOOL,
1834     ) -> (),
1835     fn GSGetShaderResources(
1836         StartSlot: UINT,
1837         NumViews: UINT,
1838         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView,
1839     ) -> (),
1840     fn GSGetSamplers(
1841         StartSlot: UINT,
1842         NumSamplers: UINT,
1843         ppSamplers: *mut *mut ID3D11SamplerState,
1844     ) -> (),
1845     fn OMGetRenderTargets(
1846         NumViews: UINT,
1847         ppRenderTargetViews: *mut *mut ID3D11RenderTargetView,
1848         ppDepthStencilView: *mut *mut ID3D11DepthStencilView,
1849     ) -> (),
1850     fn OMGetRenderTargetsAndUnorderedAccessViews(
1851         NumRTVs: UINT,
1852         ppRenderTargetViews: *mut *mut ID3D11RenderTargetView,
1853         ppDepthStencilView: *mut *mut ID3D11DepthStencilView,
1854         UAVStartSlot: UINT,
1855         ppUnorderedAccessViews: *mut *mut ID3D11UnorderedAccessView,
1856     ) -> (),
1857     fn OMGetBlendState(
1858         ppBlendState: *mut *mut ID3D11BlendState,
1859         BlendFactor: &mut [FLOAT; 4],
1860         pSampleMask: *mut UINT,
1861     ) -> (),
1862     fn OMGetDepthStencilState(
1863         ppDepthStencilState: *mut *mut ID3D11DepthStencilState,
1864         pStencilRef: *mut UINT,
1865     ) -> (),
1866     fn SOGetTargets(
1867         NumBuffers: UINT,
1868         ppSOTargets: *mut *mut ID3D11Buffer,
1869     ) -> (),
1870     fn RSGetState(
1871         ppRasterizerState: *mut *mut ID3D11RasterizerState,
1872     ) -> (),
1873     fn RSGetViewports(
1874         pNumViewports: *mut UINT,
1875         pViewports: *mut D3D11_VIEWPORT,
1876     ) -> (),
1877     fn RSGetScissorRects(
1878         pNumRects: *mut UINT,
1879         pRects: *mut D3D11_RECT,
1880     ) -> (),
1881     fn HSGetShaderResources(
1882         StartSlot: UINT,
1883         NumViews: UINT,
1884         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView,
1885     ) -> (),
1886     fn HSGetShader(
1887         ppHullShader: *mut *mut ID3D11HullShader,
1888         ppClassInstances: *mut *mut ID3D11ClassInstance,
1889         pNumClassInstances: *mut UINT,
1890     ) -> (),
1891     fn HSGetSamplers(
1892         StartSlot: UINT,
1893         NumSamplers: UINT,
1894         ppSamplers: *mut *mut ID3D11SamplerState,
1895     ) -> (),
1896     fn HSGetConstantBuffers(
1897         StartSlot: UINT,
1898         NumBuffers: UINT,
1899         ppConstantBuffers: *mut *mut ID3D11Buffer,
1900     ) -> (),
1901     fn DSGetShaderResources(
1902         StartSlot: UINT,
1903         NumViews: UINT,
1904         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView,
1905     ) -> (),
1906     fn DSGetShader(
1907         ppDomainShader: *mut *mut ID3D11DomainShader,
1908         ppClassInstances: *mut *mut ID3D11ClassInstance,
1909         pNumClassInstances: *mut UINT,
1910     ) -> (),
1911     fn DSGetSamplers(
1912         StartSlot: UINT,
1913         NumSamplers: UINT,
1914         ppSamplers: *mut *mut ID3D11SamplerState,
1915     ) -> (),
1916     fn DSGetConstantBuffers(
1917         StartSlot: UINT,
1918         NumBuffers: UINT,
1919         ppConstantBuffers: *mut *mut ID3D11Buffer,
1920     ) -> (),
1921     fn CSGetShaderResources(
1922         StartSlot: UINT,
1923         NumViews: UINT,
1924         ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView,
1925     ) -> (),
1926     fn CSGetUnorderedAccessViews(
1927         StartSlot: UINT,
1928         NumUAVs: UINT,
1929         ppUnorderedAccessViews: *mut *mut ID3D11UnorderedAccessView,
1930     ) -> (),
1931     fn CSGetShader(
1932         ppComputeShader: *mut *mut ID3D11ComputeShader,
1933         ppClassInstances: *mut *mut ID3D11ClassInstance,
1934         pNumClassInstances: *mut UINT,
1935     ) -> (),
1936     fn CSGetSamplers(
1937         StartSlot: UINT,
1938         NumSamplers: UINT,
1939         ppSamplers: *mut *mut ID3D11SamplerState,
1940     ) -> (),
1941     fn CSGetConstantBuffers(
1942         StartSlot: UINT,
1943         NumBuffers: UINT,
1944         ppConstantBuffers: *mut *mut ID3D11Buffer,
1945     ) -> (),
1946     fn ClearState() -> (),
1947     fn Flush() -> (),
1948     fn GetType() -> D3D11_DEVICE_CONTEXT_TYPE,
1949     fn GetContextFlags() -> UINT,
1950     fn FinishCommandList(
1951         RestoreDeferredContextState: BOOL,
1952         ppCommandList: *mut *mut ID3D11CommandList,
1953     ) -> HRESULT,
1954 }}
1955 DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG2_MOCOMP,
1956     0xe6a9f44b, 0x61b0, 0x4563, 0x9e, 0xa4, 0x63, 0xd2, 0xa3, 0xc6, 0xfe, 0x66}
1957 DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG2_IDCT,
1958     0xbf22ad00, 0x03ea, 0x4690, 0x80, 0x77, 0x47, 0x33, 0x46, 0x20, 0x9b, 0x7e}
1959 DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG2_VLD,
1960     0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9}
1961 DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG1_VLD,
1962     0x6f3ec719, 0x3735, 0x42cc, 0x80, 0x63, 0x65, 0xcc, 0x3c, 0xb3, 0x66, 0x16}
1963 DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG2and1_VLD,
1964     0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60}
1965 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_MOCOMP_NOFGT,
1966     0x1b81be64, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1967 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_MOCOMP_FGT,
1968     0x1b81be65, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1969 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_IDCT_NOFGT,
1970     0x1b81be66, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1971 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_IDCT_FGT,
1972     0x1b81be67, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1973 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_NOFGT,
1974     0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1975 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_FGT,
1976     0x1b81be69, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1977 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_WITHFMOASO_NOFGT,
1978     0xd5f04ff9, 0x3418, 0x45d8, 0x95, 0x61, 0x32, 0xa7, 0x6a, 0xae, 0x2d, 0xdd}
1979 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_STEREO_PROGRESSIVE_NOFGT,
1980     0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d}
1981 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_STEREO_NOFGT,
1982     0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52}
1983 DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_MULTIVIEW_NOFGT,
1984     0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c}
1985 DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV8_POSTPROC,
1986     0x1b81be80, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1987 DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV8_MOCOMP,
1988     0x1b81be81, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1989 DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV9_POSTPROC,
1990     0x1b81be90, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1991 DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV9_MOCOMP,
1992     0x1b81be91, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1993 DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV9_IDCT,
1994     0x1b81be94, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1995 DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_POSTPROC,
1996     0x1b81bea0, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1997 DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_MOCOMP,
1998     0x1b81bea1, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1999 DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_IDCT,
2000     0x1b81bea2, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
2001 DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_VLD,
2002     0x1b81bea3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
2003 DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_D2010,
2004     0x1b81bea4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
2005 DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG4PT2_VLD_SIMPLE,
2006     0xefd64d74, 0xc9e8, 0x41d7, 0xa5, 0xe9, 0xe9, 0xb0, 0xe3, 0x9f, 0xa3, 0x19}
2007 DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_NOGMC,
2008     0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e}
2009 DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_GMC,
2010     0xab998b5b, 0x4258, 0x44a9, 0x9f, 0xeb, 0x94, 0xe5, 0x97, 0xa6, 0xba, 0xae}
2011 DEFINE_GUID!{D3D11_DECODER_PROFILE_HEVC_VLD_MAIN,
2012     0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0}
2013 DEFINE_GUID!{D3D11_DECODER_PROFILE_HEVC_VLD_MAIN10,
2014     0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13}
2015 DEFINE_GUID!{D3D11_DECODER_PROFILE_VP9_VLD_PROFILE0,
2016     0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e}
2017 DEFINE_GUID!{D3D11_DECODER_PROFILE_VP8_VLD,
2018     0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7}
2019 STRUCT!{struct D3D11_VIDEO_DECODER_DESC {
2020     Guid: GUID,
2021     SampleWidth: UINT,
2022     SampleHeight: UINT,
2023     OutputFormat: DXGI_FORMAT,
2024 }}
2025 STRUCT!{struct D3D11_VIDEO_DECODER_CONFIG {
2026     guidConfigBitstreamEncryption: GUID,
2027     guidConfigMBcontrolEncryption: GUID,
2028     guidConfigResidDiffEncryption: GUID,
2029     ConfigBitstreamRaw: UINT,
2030     ConfigMBcontrolRasterOrder: UINT,
2031     ConfigResidDiffHost: UINT,
2032     ConfigSpatialResid8: UINT,
2033     ConfigResid8Subtraction: UINT,
2034     ConfigSpatialHost8or9Clipping: UINT,
2035     ConfigSpatialResidInterleaved: UINT,
2036     ConfigIntraResidUnsigned: UINT,
2037     ConfigResidDiffAccelerator: UINT,
2038     ConfigHostInverseScan: UINT,
2039     ConfigSpecificIDCT: UINT,
2040     Config4GroupedCoefs: UINT,
2041     ConfigMinRenderTargetBuffCount: USHORT,
2042     ConfigDecoderSpecific: USHORT,
2043 }}
2044 ENUM!{enum D3D11_VIDEO_DECODER_BUFFER_TYPE {
2045     D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
2046     D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1,
2047     D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2,
2048     D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3,
2049     D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4,
2050     D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5,
2051     D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6,
2052     D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7,
2053     D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8,
2054 }}
2055 STRUCT!{struct D3D11_AES_CTR_IV {
2056     IV: UINT64,
2057     Count: UINT64,
2058 }}
2059 STRUCT!{struct D3D11_ENCRYPTED_BLOCK_INFO {
2060     NumEncryptedBytesAtBeginning: UINT,
2061     NumBytesInSkipPattern: UINT,
2062     NumBytesInEncryptPattern: UINT,
2063 }}
2064 STRUCT!{struct D3D11_VIDEO_DECODER_BUFFER_DESC {
2065     BufferType: D3D11_VIDEO_DECODER_BUFFER_TYPE,
2066     BufferIndex: UINT,
2067     DataOffset: UINT,
2068     DataSize: UINT,
2069     FirstMBaddress: UINT,
2070     NumMBsInBuffer: UINT,
2071     Width: UINT,
2072     Height: UINT,
2073     Stride: UINT,
2074     ReservedBits: UINT,
2075     pIV: *mut c_void,
2076     IVSize: UINT,
2077     PartialEncryption: BOOL,
2078     EncryptedBlockInfo: D3D11_ENCRYPTED_BLOCK_INFO,
2079 }}
2080 STRUCT!{struct D3D11_VIDEO_DECODER_EXTENSION {
2081     Function: UINT,
2082     pPrivateInputData: *mut c_void,
2083     PrivateInputDataSize: UINT,
2084     pPrivateOutputData: *mut c_void,
2085     PrivateOutputDataSize: UINT,
2086     ResourceCount: UINT,
2087     ppResourceList: *mut *mut ID3D11Resource,
2088 }}
2089 RIDL!{#[uuid(0x3c9c5b51, 0x995d, 0x48d1, 0x9b, 0x8d, 0xfa, 0x5c, 0xae, 0xde, 0xd6, 0x5c)]
2090 interface ID3D11VideoDecoder(ID3D11VideoDecoderVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2091     fn GetCreationParameters(
2092         pVideoDesc: *mut D3D11_VIDEO_DECODER_DESC,
2093         pConfig: *mut D3D11_VIDEO_DECODER_CONFIG,
2094     ) -> HRESULT,
2095     fn GetDriverHandle(
2096         pDriverHandle: *mut HANDLE,
2097     ) -> HRESULT,
2098 }}
2099 ENUM!{enum D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT {
2100     D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT = 0x1,
2101     D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT = 0x2,
2102 }}
2103 ENUM!{enum D3D11_VIDEO_PROCESSOR_DEVICE_CAPS {
2104     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_LINEAR_SPACE = 0x1,
2105     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_xvYCC = 0x2,
2106     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_RGB_RANGE_CONVERSION = 0x4,
2107     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION = 0x8,
2108     D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_NOMINAL_RANGE = 0x10,
2109 }}
2110 ENUM!{enum D3D11_VIDEO_PROCESSOR_FEATURE_CAPS {
2111     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_FILL = 0x1,
2112     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_CONSTRICTION = 0x2,
2113     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LUMA_KEY = 0x4,
2114     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_PALETTE = 0x8,
2115     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LEGACY = 0x10,
2116     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_STEREO = 0x20,
2117     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ROTATION = 0x40,
2118     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_STREAM = 0x80,
2119     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_PIXEL_ASPECT_RATIO = 0x100,
2120     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_MIRROR = 0x200,
2121     D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_SHADER_USAGE = 0x400,
2122 }}
2123 ENUM!{enum D3D11_VIDEO_PROCESSOR_FILTER_CAPS {
2124     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS = 0x1,
2125     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST = 0x2,
2126     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE = 0x4,
2127     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION = 0x8,
2128     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION = 0x10,
2129     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT = 0x20,
2130     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_ANAMORPHIC_SCALING = 0x40,
2131     D3D11_VIDEO_PROCESSOR_FILTER_CAPS_STEREO_ADJUSTMENT = 0x80,
2132 }}
2133 ENUM!{enum D3D11_VIDEO_PROCESSOR_FORMAT_CAPS {
2134     D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_INTERLACED = 0x1,
2135     D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_PROCAMP = 0x2,
2136     D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_LUMA_KEY = 0x4,
2137     D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_PALETTE_INTERLACED = 0x8,
2138 }}
2139 ENUM!{enum D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS {
2140     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DENOISE = 0x1,
2141     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DERINGING = 0x2,
2142     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_EDGE_ENHANCEMENT = 0x4,
2143     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_COLOR_CORRECTION = 0x8,
2144     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_FLESH_TONE_MAPPING = 0x10,
2145     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_IMAGE_STABILIZATION = 0x20,
2146     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_SUPER_RESOLUTION = 0x40,
2147     D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_ANAMORPHIC_SCALING = 0x80,
2148 }}
2149 ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_CAPS {
2150     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_MONO_OFFSET = 0x1,
2151     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_ROW_INTERLEAVED = 0x2,
2152     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_COLUMN_INTERLEAVED = 0x4,
2153     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_CHECKERBOARD = 0x8,
2154     D3D11_VIDEO_PROCESSOR_STEREO_CAPS_FLIP_MODE = 0x10,
2155 }}
2156 STRUCT!{struct D3D11_VIDEO_PROCESSOR_CAPS {
2157     DeviceCaps: UINT,
2158     FeatureCaps: UINT,
2159     FilterCaps: UINT,
2160     InputFormatCaps: UINT,
2161     AutoStreamCaps: UINT,
2162     StereoCaps: UINT,
2163     RateConversionCapsCount: UINT,
2164     MaxInputStreams: UINT,
2165     MaxStreamStates: UINT,
2166 }}
2167 ENUM!{enum D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS {
2168     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BLEND = 0x1,
2169     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BOB = 0x2,
2170     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE = 0x4,
2171     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION = 0x8,
2172     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_INVERSE_TELECINE = 0x10,
2173     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_FRAME_RATE_CONVERSION = 0x20,
2174 }}
2175 ENUM!{enum D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS {
2176     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32 = 0x1,
2177     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_22 = 0x2,
2178     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2224 = 0x4,
2179     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2332 = 0x8,
2180     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32322 = 0x10,
2181     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_55 = 0x20,
2182     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_64 = 0x40,
2183     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_87 = 0x80,
2184     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_222222222223 = 0x100,
2185     D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_OTHER = 0x80000000,
2186 }}
2187 STRUCT!{struct D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS {
2188     PastFrames: UINT,
2189     FutureFrames: UINT,
2190     ProcessorCaps: UINT,
2191     ITelecineCaps: UINT,
2192     CustomRateCount: UINT,
2193 }}
2194 ENUM!{enum D3D11_CONTENT_PROTECTION_CAPS {
2195     D3D11_CONTENT_PROTECTION_CAPS_SOFTWARE = 0x1,
2196     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE = 0x2,
2197     D3D11_CONTENT_PROTECTION_CAPS_PROTECTION_ALWAYS_ON = 0x4,
2198     D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION = 0x8,
2199     D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY = 0x10,
2200     D3D11_CONTENT_PROTECTION_CAPS_FRESHEN_SESSION_KEY = 0x20,
2201     D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK = 0x40,
2202     D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK_KEY = 0x80,
2203     D3D11_CONTENT_PROTECTION_CAPS_SEQUENTIAL_CTR_IV = 0x100,
2204     D3D11_CONTENT_PROTECTION_CAPS_ENCRYPT_SLICEDATA_ONLY = 0x200,
2205     D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT = 0x400,
2206     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_PROTECT_UNCOMPRESSED = 0x800,
2207     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_PROTECTED_MEMORY_PAGEABLE = 0x1000,
2208     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_TEARDOWN = 0x2000,
2209     D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_DRM_COMMUNICATION = 0x4000,
2210 }}
2211 DEFINE_GUID!{D3D11_CRYPTO_TYPE_AES128_CTR,
2212     0x9b6bd711, 0x4f74, 0x41c9, 0x9e, 0x7b, 0x0b, 0xe2, 0xd7, 0xd9, 0x3b, 0x4f}
2213 DEFINE_GUID!{D3D11_DECODER_ENCRYPTION_HW_CENC,
2214     0x89d6ac4f, 0x09f2, 0x4229, 0xb2, 0xcd, 0x37, 0x74, 0x0a, 0x6d, 0xfd, 0x81}
2215 DEFINE_GUID!{D3D11_KEY_EXCHANGE_HW_PROTECTION,
2216     0xb1170d8a, 0x628d, 0x4da3, 0xad, 0x3b, 0x82, 0xdd, 0xb0, 0x8b, 0x49, 0x70}
2217 STRUCT!{struct D3D11_VIDEO_CONTENT_PROTECTION_CAPS {
2218     Caps: UINT,
2219     KeyExchangeTypeCount: UINT,
2220     BlockAlignmentSize: UINT,
2221     ProtectedMemorySize: ULONGLONG,
2222 }}
2223 STRUCT!{struct D3D11_VIDEO_PROCESSOR_CUSTOM_RATE {
2224     CustomRate: DXGI_RATIONAL,
2225     OutputFrames: UINT,
2226     InputInterlaced: BOOL,
2227     InputFramesOrFields: UINT,
2228 }}
2229 ENUM!{enum D3D11_VIDEO_PROCESSOR_FILTER {
2230     D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS = 0,
2231     D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST = 1,
2232     D3D11_VIDEO_PROCESSOR_FILTER_HUE = 2,
2233     D3D11_VIDEO_PROCESSOR_FILTER_SATURATION = 3,
2234     D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION = 4,
2235     D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT = 5,
2236     D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6,
2237     D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT = 7,
2238 }}
2239 STRUCT!{struct D3D11_VIDEO_PROCESSOR_FILTER_RANGE {
2240     Minimum: c_int,
2241     Maximum: c_int,
2242     Default: c_int,
2243     Multiplier: c_float,
2244 }}
2245 ENUM!{enum D3D11_VIDEO_FRAME_FORMAT {
2246     D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0,
2247     D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
2248     D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2,
2249 }}
2250 ENUM!{enum D3D11_VIDEO_USAGE {
2251     D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0,
2252     D3D11_VIDEO_USAGE_OPTIMAL_SPEED = 1,
2253     D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2,
2254 }}
2255 STRUCT!{struct D3D11_VIDEO_PROCESSOR_CONTENT_DESC {
2256     InputFrameFormat: D3D11_VIDEO_FRAME_FORMAT,
2257     InputFrameRate: DXGI_RATIONAL,
2258     InputWidth: UINT,
2259     InputHeight: UINT,
2260     OutputFrameRate: DXGI_RATIONAL,
2261     OutputWidth: UINT,
2262     OutputHeight: UINT,
2263     Usage: D3D11_VIDEO_USAGE,
2264 }}
2265 RIDL!{#[uuid(0x31627037, 0x53ab, 0x4200, 0x90, 0x61, 0x05, 0xfa, 0xa9, 0xab, 0x45, 0xf9)]
2266 interface ID3D11VideoProcessorEnumerator(ID3D11VideoProcessorEnumeratorVtbl):
2267     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2268     fn GetVideoProcessorContentDesc(
2269         pContentDesc: *mut D3D11_VIDEO_PROCESSOR_CONTENT_DESC,
2270     ) -> HRESULT,
2271     fn CheckVideoProcessorFormat(
2272         Format: DXGI_FORMAT,
2273         pFlags: *mut UINT,
2274     ) -> HRESULT,
2275     fn GetVideoProcessorCaps(
2276         pCaps: *mut D3D11_VIDEO_PROCESSOR_CAPS,
2277     ) -> HRESULT,
2278     fn GetVideoProcessorRateConversionCaps(
2279         TypeIndex: UINT,
2280         pCaps: *mut D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS,
2281     ) -> HRESULT,
2282     fn GetVideoProcessorCustomRate(
2283         TypeIndex: UINT,
2284         CustomRateIndex: UINT,
2285         pRate: *mut D3D11_VIDEO_PROCESSOR_CUSTOM_RATE,
2286     ) -> HRESULT,
2287     fn GetVideoProcessorFilterRange(
2288         Filter: D3D11_VIDEO_PROCESSOR_FILTER,
2289         Range: *mut D3D11_VIDEO_PROCESSOR_FILTER_RANGE,
2290     ) -> HRESULT,
2291 }}
2292 STRUCT!{struct D3D11_VIDEO_COLOR_RGBA {
2293     R: c_float,
2294     G: c_float,
2295     B: c_float,
2296     A: c_float,
2297 }}
2298 STRUCT!{struct D3D11_VIDEO_COLOR_YCbCrA {
2299     Y: c_float,
2300     Cb: c_float,
2301     Cr: c_float,
2302     A: c_float,
2303 }}
2304 UNION!{union D3D11_VIDEO_COLOR {
2305     [f32; 4],
2306     YCbCr YCbCr_mut: D3D11_VIDEO_COLOR_YCbCrA,
2307     RGBA RGBA_mut: D3D11_VIDEO_COLOR_RGBA,
2308 }}
2309 ENUM!{enum D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE {
2310     D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_UNDEFINED = 0,
2311     D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_16_235 = 1,
2312     D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_0_255 = 2,
2313 }}
2314 STRUCT!{struct D3D11_VIDEO_PROCESSOR_COLOR_SPACE {
2315     bitfield: UINT,
2316 }}
2317 BITFIELD!{D3D11_VIDEO_PROCESSOR_COLOR_SPACE bitfield: UINT [
2318     Usage set_Usage[0..1],
2319     RGB_Range set_RGB_Range[1..2],
2320     YCbCr_Matrix set_YCbCr_Matrix[2..3],
2321     YCbCr_xvYCC set_YCbCr_xvYCC[3..4],
2322     Nominal_Range set_Nominal_Range[4..6],
2323 ]}
2324 ENUM!{enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE {
2325     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0,
2326     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1,
2327     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2,
2328     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
2329 }}
2330 ENUM!{enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE {
2331     D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0,
2332     D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1,
2333     D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2,
2334 }}
2335 ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT {
2336     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0,
2337     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1,
2338     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2,
2339     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3,
2340     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4,
2341     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5,
2342     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6,
2343     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7,
2344 }}
2345 ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE {
2346     D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0,
2347     D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1,
2348     D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2,
2349 }}
2350 ENUM!{enum D3D11_VIDEO_PROCESSOR_ROTATION {
2351     D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY = 0,
2352     D3D11_VIDEO_PROCESSOR_ROTATION_90 = 1,
2353     D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2,
2354     D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3,
2355 }}
2356 STRUCT!{struct D3D11_VIDEO_PROCESSOR_STREAM {
2357     Enable: BOOL,
2358     OutputIndex: UINT,
2359     InputFrameOrField: UINT,
2360     PastFrames: UINT,
2361     FutureFrames: UINT,
2362     ppPastSurfaces: *mut *mut ID3D11VideoProcessorInputView,
2363     pInputSurface: *mut ID3D11VideoProcessorInputView,
2364     ppFutureSurfaces: *mut *mut ID3D11VideoProcessorInputView,
2365     ppPastSurfacesRight: *mut *mut ID3D11VideoProcessorInputView,
2366     pInputSurfaceRight: *mut ID3D11VideoProcessorInputView,
2367     ppFutureSurfacesRight: *mut *mut ID3D11VideoProcessorInputView,
2368 }}
2369 RIDL!{#[uuid(0x1d7b0652, 0x185f, 0x41c6, 0x85, 0xce, 0x0c, 0x5b, 0xe3, 0xd4, 0xae, 0x6c)]
2370 interface ID3D11VideoProcessor(ID3D11VideoProcessorVtbl):
2371     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2372     fn GetContentDesc(
2373         pDesc: *mut D3D11_VIDEO_PROCESSOR_CONTENT_DESC,
2374     ) -> (),
2375     fn GetRateConversionCaps(
2376         pCaps: *mut D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS,
2377     ) -> (),
2378 }}
2379 STRUCT!{struct D3D11_OMAC {
2380     Omac: [BYTE; 16],
2381 }}
2382 ENUM!{enum D3D11_AUTHENTICATED_CHANNEL_TYPE {
2383     D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1,
2384     D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2,
2385     D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3,
2386 }}
2387 RIDL!{#[uuid(0x3015a308, 0xdcbd, 0x47aa, 0xa7, 0x47, 0x19, 0x24, 0x86, 0xd1, 0x4d, 0x4a)]
2388 interface ID3D11AuthenticatedChannel(ID3D11AuthenticatedChannelVtbl):
2389     ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2390     fn GetCertificateSize(
2391         pCertificateSize: *mut UINT,
2392     ) -> HRESULT,
2393     fn GetCertificate(
2394         CertificateSize: UINT,
2395         pCertificate: *mut BYTE,
2396     ) -> HRESULT,
2397     fn GetChannelHandle(
2398         pChannelHandle: *mut HANDLE,
2399     ) -> (),
2400 }}
2401 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_PROTECTION,
2402     0xa84eb584, 0xc495, 0x48aa, 0xb9, 0x4d, 0x8b, 0xd2, 0xd6, 0xfb, 0xce, 0x05}
2403 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE,
2404     0xbc1b18a5, 0xb1fb, 0x42ab, 0xbd, 0x94, 0xb5, 0x82, 0x8b, 0x4b, 0xf7, 0xbe}
2405 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE,
2406     0xec1c539d, 0x8cff, 0x4e2a, 0xbc, 0xc4, 0xf5, 0x69, 0x2f, 0x99, 0xf4, 0x80}
2407 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION,
2408     0x2634499e, 0xd018, 0x4d74, 0xac, 0x17, 0x7f, 0x72, 0x40, 0x59, 0x52, 0x8d}
2409 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT,
2410     0x0db207b3, 0x9450, 0x46a6, 0x82, 0xde, 0x1b, 0x96, 0xd4, 0x4f, 0x9c, 0xf2}
2411 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS,
2412     0x649bbadb, 0xf0f4, 0x4639, 0xa1, 0x5b, 0x24, 0x39, 0x3f, 0xc3, 0xab, 0xac}
2413 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT,
2414     0x012f0bd6, 0xe662, 0x4474, 0xbe, 0xfd, 0xaa, 0x53, 0xe5, 0x14, 0x3c, 0x6d}
2415 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT,
2416     0x2c042b5e, 0x8c07, 0x46d5, 0xaa, 0xbe, 0x8f, 0x75, 0xcb, 0xad, 0x4c, 0x31}
2417 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_OUTPUT_ID,
2418     0x839ddca3, 0x9b4e, 0x41e4, 0xb0, 0x53, 0x89, 0x2b, 0xd2, 0xa1, 0x1e, 0xe7}
2419 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ATTRIBUTES,
2420     0x6214d9d2, 0x432c, 0x4abb, 0x9f, 0xce, 0x21, 0x6e, 0xea, 0x26, 0x9e, 0x3b}
2421 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_ENCRYPTION_WHEN_ACCESSIBLE_GUID_COUNT,
2422     0xb30f7066, 0x203c, 0x4b07, 0x93, 0xfc, 0xce, 0xaa, 0xfd, 0x61, 0x24, 0x1e}
2423 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_ENCRYPTION_WHEN_ACCESSIBLE_GUID,
2424     0xf83a5958, 0xe986, 0x4bda, 0xbe, 0xb0, 0x41, 0x1f, 0x6a, 0x7a, 0x01, 0xb7}
2425 DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_CURRENT_ENCRYPTION_WHEN_ACCESSIBLE,
2426     0xec1791c7, 0xdad3, 0x4f15, 0x9e, 0xc3, 0xfa, 0xa9, 0x3d, 0x60, 0xd4, 0xf0}
2427 DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE,
2428     0x06114bdb, 0x3523, 0x470a, 0x8d, 0xca, 0xfb, 0xc2, 0x84, 0x51, 0x54, 0xf0}
2429 DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_PROTECTION,
2430     0x50455658, 0x3f47, 0x4362, 0xbf, 0x99, 0xbf, 0xdf, 0xcd, 0xe9, 0xed, 0x29}
2431 DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION,
2432     0x6346cc54, 0x2cfc, 0x4ad4, 0x82, 0x24, 0xd1, 0x58, 0x37, 0xde, 0x77, 0x00}
2433 DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE,
2434     0x0772d047, 0x1b40, 0x48e8, 0x9c, 0xa6, 0xb5, 0xf5, 0x10, 0xde, 0x9f, 0x01}
2435 DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_ENCRYPTION_WHEN_ACCESSIBLE,
2436     0x41fff286, 0x6ae0, 0x4d43, 0x9d, 0x55, 0xa4, 0x6e, 0x9e, 0xfd, 0x15, 0x8a}
2437 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_INPUT {
2438     QueryType: GUID,
2439     hChannel: HANDLE,
2440     SequenceNumber: UINT,
2441 }}
2442 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT {
2443     omac: D3D11_OMAC,
2444     QueryType: GUID,
2445     hChannel: HANDLE,
2446     SequenceNumber: UINT,
2447     ReturnCode: HRESULT,
2448 }}
2449 //FIXME bitfield
2450 STRUCT!{struct D3D11_AUTHENTICATED_PROTECTION_FLAGS {
2451     u: UINT,
2452 }}
2453 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_PROTECTION_OUTPUT {
2454     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2455     ProtectionFlags: D3D11_AUTHENTICATED_PROTECTION_FLAGS,
2456 }}
2457 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE_OUTPUT {
2458     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2459     ChannelType: D3D11_AUTHENTICATED_CHANNEL_TYPE,
2460 }}
2461 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE_OUTPUT {
2462     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2463     DeviceHandle: HANDLE,
2464 }}
2465 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_INPUT {
2466     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2467     DecoderHandle: HANDLE,
2468 }}
2469 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_OUTPUT {
2470     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2471     DecoderHandle: HANDLE,
2472     CryptoSessionHandle: HANDLE,
2473     DeviceHandle: HANDLE,
2474 }}
2475 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT_OUTPUT {
2476     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2477     RestrictedSharedResourceProcessCount: UINT,
2478 }}
2479 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_INPUT {
2480     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2481     ProcessIndex: UINT,
2482 }}
2483 ENUM!{enum D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE {
2484     DD3D11_PROCESSIDTYPE_UNKNOWN = 0,
2485     DD3D11_PROCESSIDTYPE_DWM = 1,
2486     DD3D11_PROCESSIDTYPE_HANDLE = 2,
2487 }}
2488 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_OUTPUT {
2489     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2490     ProcessIndex: UINT,
2491     ProcessIdentifier: D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE,
2492     ProcessHandle: HANDLE,
2493 }}
2494 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT_OUTPUT {
2495     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2496     UnrestrictedProtectedSharedResourceCount: UINT,
2497 }}
2498 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_INPUT {
2499     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2500     DeviceHandle: HANDLE,
2501     CryptoSessionHandle: HANDLE,
2502 }}
2503 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_OUTPUT {
2504     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2505     DeviceHandle: HANDLE,
2506     CryptoSessionHandle: HANDLE,
2507     OutputIDCount: UINT,
2508 }}
2509 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_INPUT {
2510     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2511     DeviceHandle: HANDLE,
2512     CryptoSessionHandle: HANDLE,
2513     OutputIDIndex: UINT,
2514 }}
2515 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_OUTPUT {
2516     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2517     DeviceHandle: HANDLE,
2518     CryptoSessionHandle: HANDLE,
2519     OutputIDIndex: UINT,
2520     OutputID: UINT64,
2521 }}
2522 ENUM!{enum D3D11_BUS_TYPE {
2523     D3D11_BUS_TYPE_OTHER = 0,
2524     D3D11_BUS_TYPE_PCI = 0x1,
2525     D3D11_BUS_TYPE_PCIX = 0x2,
2526     D3D11_BUS_TYPE_PCIEXPRESS = 0x3,
2527     D3D11_BUS_TYPE_AGP = 0x4,
2528     D3D11_BUS_IMPL_MODIFIER_INSIDE_OF_CHIPSET = 0x10000,
2529     D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP = 0x20000,
2530     D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET = 0x30000,
2531     D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR = 0x40000,
2532     D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE = 0x50000,
2533     D3D11_BUS_IMPL_MODIFIER_NON_STANDARD = 0x80000000,
2534 }}
2535 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACESSIBILITY_OUTPUT {
2536     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2537     BusType: D3D11_BUS_TYPE,
2538     AccessibleInContiguousBlocks: BOOL,
2539     AccessibleInNonContiguousBlocks: BOOL,
2540 }}
2541 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_COUNT_OUTPUT {
2542     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2543     EncryptionGuidCount: UINT,
2544 }}
2545 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_INPUT {
2546     Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2547     EncryptionGuidIndex: UINT,
2548 }}
2549 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_OUTPUT {
2550     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2551     EncryptionGuidIndex: UINT,
2552     EncryptionGuid: GUID,
2553 }}
2554 STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CURRENT_ACCESSIBILITY_ENCRYPTION_OUTPUT {
2555     Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2556     EncryptionGuid: GUID,
2557 }}
2558 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_INPUT {
2559     omac: D3D11_OMAC,
2560     ConfigureType: GUID,
2561     hChannel: HANDLE,
2562     SequenceNumber: UINT,
2563 }}
2564 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_OUTPUT {
2565     omac: D3D11_OMAC,
2566     ConfigureType: GUID,
2567     hChannel: HANDLE,
2568     SequenceNumber: UINT,
2569     ReturnCode: HRESULT,
2570 }}
2571 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE_INPUT {
2572     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2573     StartSequenceQuery: UINT,
2574     StartSequenceConfigure: UINT,
2575 }}
2576 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_PROTECTION_INPUT {
2577     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2578     Protections: D3D11_AUTHENTICATED_PROTECTION_FLAGS,
2579 }}
2580 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION_INPUT {
2581     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2582     DecoderHandle: HANDLE,
2583     CryptoSessionHandle: HANDLE,
2584     DeviceHandle: HANDLE,
2585 }}
2586 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE_INPUT {
2587     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2588     ProcessType: D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE,
2589     ProcessHandle: HANDLE,
2590     AllowAccess: BOOL,
2591 }}
2592 STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_ACCESSIBLE_ENCRYPTION_INPUT {
2593     Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2594     EncryptionGuid: GUID,
2595 }}
2596 DEFINE_GUID!{D3D11_KEY_EXCHANGE_RSAES_OAEP,
2597     0xc1949895, 0xd72a, 0x4a1d, 0x8e, 0x5d, 0xed, 0x85, 0x7d, 0x17, 0x15, 0x20}
2598 RIDL!{#[uuid(0x9b32f9ad, 0xbdcc, 0x40a6, 0xa3, 0x9d, 0xd5, 0xc8, 0x65, 0x84, 0x57, 0x20)]
2599 interface ID3D11CryptoSession(ID3D11CryptoSessionVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2600     fn GetCryptoType(
2601         pCryptoType: *mut GUID,
2602     ) -> (),
2603     fn GetDecoderProfile(
2604         pDecoderProfile: *mut GUID,
2605     ) -> (),
2606     fn GetCertificateSize(
2607         pCertificateSize: *mut UINT,
2608     ) -> HRESULT,
2609     fn GetCertificate(
2610         CertificateSize: UINT,
2611         pCertificate: *mut BYTE,
2612     ) -> HRESULT,
2613     fn GetCryptoSessionHandle(
2614         pCertificate: *mut HANDLE,
2615     ) -> (),
2616 }}
2617 ENUM!{enum D3D11_VDOV_DIMENSION {
2618     D3D11_VDOV_DIMENSION_UNKNOWN = 0,
2619     D3D11_VDOV_DIMENSION_TEXTURE2D = 1,
2620 }}
2621 STRUCT!{struct D3D11_TEX2D_VDOV {
2622     ArraySlice: UINT,
2623 }}
2624 STRUCT!{struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC {
2625     DecodeProfile: GUID,
2626     ViewDimension: D3D11_VDOV_DIMENSION,
2627     Texture2D: D3D11_TEX2D_VDOV,
2628 }}
2629 RIDL!{#[uuid(0xc2931aea, 0x2a85, 0x4f20, 0x86, 0x0f, 0xfb, 0xa1, 0xfd, 0x25, 0x6e, 0x18)]
2630 interface ID3D11VideoDecoderOutputView(ID3D11VideoDecoderOutputViewVtbl):
2631     ID3D11View(ID3D11ViewVtbl) {
2632     fn GetDesc(
2633         pDesc: *mut D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC,
2634     ) -> (),
2635 }}
2636 ENUM!{enum D3D11_VPIV_DIMENSION {
2637     D3D11_VPIV_DIMENSION_UNKNOWN = 0,
2638     D3D11_VPIV_DIMENSION_TEXTURE2D = 1,
2639 }}
2640 STRUCT!{struct D3D11_TEX2D_VPIV {
2641     MipSlice: UINT,
2642     ArraySlice: UINT,
2643 }}
2644 STRUCT!{struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC {
2645     FourCC: UINT,
2646     ViewDimension: D3D11_VPIV_DIMENSION,
2647     Texture2D: D3D11_TEX2D_VPIV,
2648 }}
2649 RIDL!{#[uuid(0x11ec5a5f, 0x51dc, 0x4945, 0xab, 0x34, 0x6e, 0x8c, 0x21, 0x30, 0x0e, 0xa5)]
2650 interface ID3D11VideoProcessorInputView(ID3D11VideoProcessorInputViewVtbl):
2651     ID3D11View(ID3D11ViewVtbl) {
2652     fn GetDesc(
2653         pDesc: *mut D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC,
2654     ) -> (),
2655 }}
2656 ENUM!{enum D3D11_VPOV_DIMENSION {
2657     D3D11_VPOV_DIMENSION_UNKNOWN = 0,
2658     D3D11_VPOV_DIMENSION_TEXTURE2D = 1,
2659     D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2,
2660 }}
2661 STRUCT!{struct D3D11_TEX2D_VPOV {
2662     MipSlice: UINT,
2663 }}
2664 STRUCT!{struct D3D11_TEX2D_ARRAY_VPOV {
2665     MipSlice: UINT,
2666     FirstArraySlice: UINT,
2667     ArraySize: UINT,
2668 }}
2669 UNION!{union D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC_u {
2670     [u32; 3],
2671     Texture2D Texture2D_mut: D3D11_TEX2D_VPOV,
2672     Texture2DArray Texture2DArray_mut: D3D11_TEX2D_ARRAY_VPOV,
2673 }}
2674 STRUCT!{struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC {
2675     ViewDimension: D3D11_VPOV_DIMENSION,
2676     u: D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC_u,
2677 }}
2678 RIDL!{#[uuid(0xa048285e, 0x25a9, 0x4527, 0xbd, 0x93, 0xd6, 0x8b, 0x68, 0xc4, 0x42, 0x54)]
2679 interface ID3D11VideoProcessorOutputView(ID3D11VideoProcessorOutputViewVtbl):
2680     ID3D11View(ID3D11ViewVtbl) {
2681     fn GetDesc(
2682         pDesc: *mut D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC,
2683     ) -> (),
2684 }}
2685 RIDL!{#[uuid(0x61f21c45, 0x3c0e, 0x4a74, 0x9c, 0xea, 0x67, 0x10, 0x0d, 0x9a, 0xd5, 0xe4)]
2686 interface ID3D11VideoContext(ID3D11VideoContextVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2687     fn GetDecoderBuffer(
2688         pDecoder: *mut ID3D11VideoDecoder,
2689         Type: D3D11_VIDEO_DECODER_BUFFER_TYPE,
2690         pBufferSize: *mut UINT,
2691         ppBuffer: *mut *mut c_void,
2692     ) -> HRESULT,
2693     fn ReleaseDecoderBuffer(
2694         pDecoder: *mut ID3D11VideoDecoder,
2695         Type: D3D11_VIDEO_DECODER_BUFFER_TYPE,
2696     ) -> HRESULT,
2697     fn DecoderBeginFrame(
2698         pDecoder: *mut ID3D11VideoDecoder,
2699         pView: *mut ID3D11VideoDecoderOutputView,
2700         ContentKeySize: UINT,
2701         pContentKey: *const c_void,
2702     ) -> HRESULT,
2703     fn DecoderEndFrame(
2704         pDecoder: *mut ID3D11VideoDecoder,
2705     ) -> HRESULT,
2706     fn SubmitDecoderBuffers(
2707         pDecoder: *mut ID3D11VideoDecoder,
2708         NumBuffers: UINT,
2709         pBufferDesc: *const D3D11_VIDEO_DECODER_BUFFER_DESC,
2710     ) -> HRESULT,
2711     fn DecoderExtension(
2712         pDecoder: *mut ID3D11VideoDecoder,
2713         pExtensionData: *const D3D11_VIDEO_DECODER_EXTENSION,
2714     ) -> HRESULT,
2715     fn VideoProcessorSetOutputTargetRect(
2716         pVideoProcessor: *mut ID3D11VideoProcessor,
2717         Enable: BOOL,
2718         pRect: *const RECT,
2719     ) -> (),
2720     fn VideoProcessorSetOutputBackgroundColor(
2721         pVideoProcessor: *mut ID3D11VideoProcessor,
2722         YCbCr: BOOL,
2723         pRect: *const RECT,
2724     ) -> (),
2725     fn VideoProcessorSetOutputColorSpace(
2726         pVideoProcessor: *mut ID3D11VideoProcessor,
2727         pColorSpace: *const D3D11_VIDEO_PROCESSOR_COLOR_SPACE,
2728     ) -> HRESULT,
2729     fn VideoProcessorSetOutputAlphaFillMode(
2730         pVideoProcessor: *mut ID3D11VideoProcessor,
2731         AlphaFillMode: D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE,
2732         StreamIndex: UINT,
2733     ) -> (),
2734     fn VideoProcessorSetOutputConstriction(
2735         pVideoProcessor: *mut ID3D11VideoProcessor,
2736         Enable: BOOL,
2737         Size: SIZE,
2738     ) -> (),
2739     fn VideoProcessorSetOutputStereoMode(
2740         pVideoProcessor: *mut ID3D11VideoProcessor,
2741         Enable: BOOL,
2742     ) -> (),
2743     fn VideoProcessorSetOutputExtension(
2744         pVideoProcessor: *mut ID3D11VideoProcessor,
2745         pExtensionGuid: *const GUID,
2746         DataSize: UINT,
2747         pData: *mut c_void,
2748     ) -> HRESULT,
2749     fn VideoProcessorGetOutputTargetRect(
2750         pVideoProcessor: *mut ID3D11VideoProcessor,
2751         Enabled: *mut BOOL,
2752         pRect: *mut RECT,
2753     ) -> (),
2754     fn VideoProcessorGetOutputBackgroundColor(
2755         pVideoProcessor: *mut ID3D11VideoProcessor,
2756         pYCbCr: *mut BOOL,
2757         pColor: *mut D3D11_VIDEO_COLOR,
2758     ) -> (),
2759     fn VideoProcessorGetOutputColorSpace(
2760         pVideoProcessor: *mut ID3D11VideoProcessor,
2761         pColorSpace: *mut D3D11_VIDEO_PROCESSOR_COLOR_SPACE,
2762     ) -> (),
2763     fn VideoProcessorGetOutputAlphaFillMode(
2764         pVideoProcessor: *mut ID3D11VideoProcessor,
2765         pAlphaFillMode: *mut D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE,
2766         pStreamIndex: *mut UINT,
2767     ) -> (),
2768     fn VideoProcessorGetOutputConstriction(
2769         pVideoProcessor: *mut ID3D11VideoProcessor,
2770         pEnabled: *mut BOOL,
2771         pSize: *mut SIZE,
2772     ) -> (),
2773     fn VideoProcessorGetOutputStereoMode(
2774         pVideoProcessor: *mut ID3D11VideoProcessor,
2775         pEnabled: *mut BOOL,
2776     ) -> (),
2777     fn VideoProcessorGetOutputExtension(
2778         pVideoProcessor: *mut ID3D11VideoProcessor,
2779         pExtensionGuid: *const GUID,
2780         DataSize: UINT,
2781         pData: *mut c_void,
2782     ) -> HRESULT,
2783     fn VideoProcessorSetStreamFrameFormat(
2784         pVideoProcessor: *mut ID3D11VideoProcessor,
2785         StreamIndex: UINT,
2786         FrameFormat: D3D11_VIDEO_FRAME_FORMAT,
2787     ) -> (),
2788     fn VideoProcessorSetStreamColorSpace(
2789         pVideoProcessor: *mut ID3D11VideoProcessor,
2790         StreamIndex: UINT,
2791         pColorSpace: *const D3D11_VIDEO_PROCESSOR_COLOR_SPACE,
2792     ) -> (),
2793     fn VideoProcessorSetStreamOutputRate(
2794         pVideoProcessor: *mut ID3D11VideoProcessor,
2795         StreamIndex: UINT,
2796         OutputRate: D3D11_VIDEO_PROCESSOR_OUTPUT_RATE,
2797         RepeatFrame: BOOL,
2798         pCustomRate: *const DXGI_RATIONAL,
2799     ) -> (),
2800     fn VideoProcessorSetStreamSourceRect(
2801         pVideoProcessor: *mut ID3D11VideoProcessor,
2802         StreamIndex: UINT,
2803         Enable: BOOL,
2804         pRect: *const RECT,
2805     ) -> (),
2806     fn VideoProcessorSetStreamDestRect(
2807         pVideoProcessor: *mut ID3D11VideoProcessor,
2808         StreamIndex: UINT,
2809         Enable: BOOL,
2810         pRect: *const RECT,
2811     ) -> (),
2812     fn VideoProcessorSetStreamAlpha(
2813         pVideoProcessor: *mut ID3D11VideoProcessor,
2814         StreamIndex: UINT,
2815         Enable: BOOL,
2816         Alpha: FLOAT,
2817     ) -> (),
2818     fn VideoProcessorSetStreamPalette(
2819         pVideoProcessor: *mut ID3D11VideoProcessor,
2820         StreamIndex: UINT,
2821         Count: UINT,
2822         pEntries: *const UINT,
2823     ) -> (),
2824     fn VideoProcessorSetStreamPixelAspectRatio(
2825         pVideoProcessor: *mut ID3D11VideoProcessor,
2826         StreamIndex: UINT,
2827         Enable: BOOL,
2828         pSourceAspectRatio: *const DXGI_RATIONAL,
2829         pDestinationAspectRatio: *const DXGI_RATIONAL,
2830     ) -> (),
2831     fn VideoProcessorSetStreamLumaKey(
2832         pVideoProcessor: *mut ID3D11VideoProcessor,
2833         StreamIndex: UINT,
2834         Enable: BOOL,
2835         Lower: FLOAT,
2836         Upper: FLOAT,
2837     ) -> (),
2838     fn VideoProcessorSetStreamStereoFormat(
2839         pVideoProcessor: *mut ID3D11VideoProcessor,
2840         StreamIndex: UINT,
2841         Enable: BOOL,
2842         Format: D3D11_VIDEO_PROCESSOR_STEREO_FORMAT,
2843         LeftViewFrame0: BOOL,
2844         BaseViewFrame0: BOOL,
2845         FlipMode: D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE,
2846     ) -> (),
2847     fn VideoProcessorSetStreamAutoProcessingMode(
2848         pVideoProcessor: *mut ID3D11VideoProcessor,
2849         StreamIndex: UINT,
2850         Enable: BOOL,
2851     ) -> (),
2852     fn VideoProcessorSetStreamFilter(
2853         pVideoProcessor: *mut ID3D11VideoProcessor,
2854         StreamIndex: UINT,
2855         Filter: D3D11_VIDEO_PROCESSOR_FILTER,
2856         Enable: BOOL,
2857         Level: c_int,
2858     ) -> (),
2859     fn VideoProcessorSetStreamExtension(
2860         pVideoProcessor: *mut ID3D11VideoProcessor,
2861         StreamIndex: UINT,
2862         pExtensionGuid: *const GUID,
2863         DataSize: UINT,
2864         pData: *mut c_void,
2865     ) -> HRESULT,
2866     fn VideoProcessorGetStreamFrameFormat(
2867         pVideoProcessor: *mut ID3D11VideoProcessor,
2868         StreamIndex: UINT,
2869         pFrameFormat: *mut D3D11_VIDEO_FRAME_FORMAT,
2870     ) -> (),
2871     fn VideoProcessorGetStreamColorSpace(
2872         pVideoProcessor: *mut ID3D11VideoProcessor,
2873         StreamIndex: UINT,
2874         pColorSpace: *mut D3D11_VIDEO_PROCESSOR_COLOR_SPACE,
2875     ) -> (),
2876     fn VideoProcessorGetStreamOutputRate(
2877         pVideoProcessor: *mut ID3D11VideoProcessor,
2878         StreamIndex: UINT,
2879         pOutputRate: *mut D3D11_VIDEO_PROCESSOR_OUTPUT_RATE,
2880         pRepeatFrame: *mut BOOL,
2881         pCustomRate: *mut DXGI_RATIONAL,
2882     ) -> (),
2883     fn VideoProcessorGetStreamSourceRect(
2884         pVideoProcessor: *mut ID3D11VideoProcessor,
2885         StreamIndex: UINT,
2886         pEnabled: *mut BOOL,
2887         pRect: *mut RECT,
2888     ) -> (),
2889     fn VideoProcessorGetStreamDestRect(
2890         pVideoProcessor: *mut ID3D11VideoProcessor,
2891         StreamIndex: UINT,
2892         pEnabled: *mut BOOL,
2893         pRect: *mut RECT,
2894     ) -> (),
2895     fn VideoProcessorGetStreamAlpha(
2896         pVideoProcessor: *mut ID3D11VideoProcessor,
2897         StreamIndex: UINT,
2898         pEnabled: *mut BOOL,
2899         pAlpha: *mut FLOAT,
2900     ) -> (),
2901     fn VideoProcessorGetStreamPalette(
2902         pVideoProcessor: *mut ID3D11VideoProcessor,
2903         StreamIndex: UINT,
2904         Count: UINT,
2905         pEntries: *mut UINT,
2906     ) -> (),
2907     fn VideoProcessorGetStreamPixelAspectRatio(
2908         pVideoProcessor: *mut ID3D11VideoProcessor,
2909         StreamIndex: UINT,
2910         pEnabled: *mut BOOL,
2911         pSourceAspectRatio: *mut DXGI_RATIONAL,
2912         pDestinationAspectRatio: *mut DXGI_RATIONAL,
2913     ) -> (),
2914     fn VideoProcessorGetStreamLumaKey(
2915         pVideoProcessor: *mut ID3D11VideoProcessor,
2916         StreamIndex: UINT,
2917         pEnabled: *mut BOOL,
2918         pLower: *mut FLOAT,
2919         pUpper: *mut FLOAT,
2920     ) -> (),
2921     fn VideoProcessorGetStreamStereoFormat(
2922         pVideoProcessor: *mut ID3D11VideoProcessor,
2923         StreamIndex: UINT,
2924         pEnabled: *mut BOOL,
2925         pFormat: *mut D3D11_VIDEO_PROCESSOR_STEREO_FORMAT,
2926         pLeftViewFrame0: *mut BOOL,
2927         pBaseViewFrame0: *mut BOOL,
2928         pFlipMode: *mut D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE,
2929         MonoOffset: *mut c_int,
2930     ) -> (),
2931     fn VideoProcessorGetStreamAutoProcessingMode(
2932         pVideoProcessor: *mut ID3D11VideoProcessor,
2933         StreamIndex: UINT,
2934         pEnabled: *mut BOOL,
2935     ) -> (),
2936     fn VideoProcessorGetStreamFilter(
2937         pVideoProcessor: *mut ID3D11VideoProcessor,
2938         StreamIndex: UINT,
2939         Filter: D3D11_VIDEO_PROCESSOR_FILTER,
2940         pEnabled: *mut BOOL,
2941         pLevel: *mut c_int,
2942     ) -> (),
2943     fn VideoProcessorGetStreamExtension(
2944         pVideoProcessor: *mut ID3D11VideoProcessor,
2945         StreamIndex: UINT,
2946         pExtensionGuid: *const GUID,
2947         DataSize: UINT,
2948         pData: *mut c_void,
2949     ) -> HRESULT,
2950     fn VideoProcessorBlt(
2951         pVideoProcessor: *mut ID3D11VideoProcessor,
2952         pView: *mut ID3D11VideoProcessorOutputView,
2953         OutputFrame: UINT,
2954         StreamCount: UINT,
2955         pStreams: *const D3D11_VIDEO_PROCESSOR_STREAM,
2956     ) -> HRESULT,
2957     fn NegotiateCryptoSessionKeyExchange(
2958         pCryptoSession: *mut ID3D11CryptoSession,
2959         DataSize: UINT,
2960         pData: *mut c_void,
2961     ) -> HRESULT,
2962     fn EncryptionBlt(
2963         pCryptoSession: *mut ID3D11CryptoSession,
2964         pSrcSurface: *mut ID3D11Texture2D,
2965         pDstSurface: *mut ID3D11Texture2D,
2966         IVSize: UINT,
2967         pIV: *mut c_void,
2968     ) -> HRESULT,
2969     fn DecryptionBlt(
2970         pCryptoSession: *mut ID3D11CryptoSession,
2971         pSrcSurface: *mut ID3D11Texture2D,
2972         pDstSurface: *mut ID3D11Texture2D,
2973         pEncryptedBlockInfo: *mut D3D11_ENCRYPTED_BLOCK_INFO,
2974         ContentKeySize: UINT,
2975         pContentKey: *const c_void,
2976         IVSize: UINT,
2977         pIV: *mut c_void,
2978     ) -> HRESULT,
2979     fn StartSessionKeyRefresh(
2980         pCryptoSession: *mut ID3D11CryptoSession,
2981         RandomNumberSize: UINT,
2982         pRandomNumber: *mut c_void,
2983     ) -> HRESULT,
2984     fn FinishSessionKeyRefresh(
2985         pCryptoSession: *mut ID3D11CryptoSession,
2986     ) -> HRESULT,
2987     fn GetEncryptionBltKey(
2988         pCryptoSession: *mut ID3D11CryptoSession,
2989         KeySize: UINT,
2990         pReadbackKey: *mut c_void,
2991     ) -> HRESULT,
2992     fn NegotiateAuthenticatedChannelKeyExchange(
2993         pChannel: *mut ID3D11AuthenticatedChannel,
2994         DataSize: UINT,
2995         pData: *mut c_void,
2996     ) -> HRESULT,
2997     fn QueryAuthenticatedChannel(
2998         pChannel: *mut ID3D11AuthenticatedChannel,
2999         InputSize: UINT,
3000         pInput: *const c_void,
3001         OutputSize: UINT,
3002         pOutput: *mut c_void,
3003     ) -> HRESULT,
3004     fn ConfigureAuthenticatedChannel(
3005         pChannel: *mut ID3D11AuthenticatedChannel,
3006         InputSize: UINT,
3007         pInput: *const c_void,
3008         pOutput: *mut D3D11_AUTHENTICATED_CONFIGURE_OUTPUT,
3009     ) -> HRESULT,
3010     fn VideoProcessorSetStreamRotation(
3011         pVideoProcessor: *mut ID3D11VideoProcessor,
3012         StreamIndex: UINT,
3013         Enable: BOOL,
3014         Rotation: D3D11_VIDEO_PROCESSOR_ROTATION,
3015     ) -> HRESULT,
3016     fn VideoProcessorGetStreamRotation(
3017         pVideoProcessor: *mut ID3D11VideoProcessor,
3018         StreamIndex: UINT,
3019         pEnable: *mut BOOL,
3020         pRotation: *mut D3D11_VIDEO_PROCESSOR_ROTATION,
3021     ) -> HRESULT,
3022 }}
3023 RIDL!{#[uuid(0x10ec4d5b, 0x975a, 0x4689, 0xb9, 0xe4, 0xd0, 0xaa, 0xc3, 0x0f, 0xe3, 0x33)]
3024 interface ID3D11VideoDevice(ID3D11VideoDeviceVtbl): IUnknown(IUnknownVtbl) {
3025     fn CreateVideoDecoder(
3026         pVideoDesc: *const D3D11_VIDEO_DECODER_DESC,
3027         pConfig: *const D3D11_VIDEO_DECODER_CONFIG,
3028         ppDecoder: *mut *mut ID3D11VideoDecoder,
3029     ) -> HRESULT,
3030     fn CreateVideoProcessor(
3031         pEnum: *mut ID3D11VideoProcessorEnumerator,
3032         RateConversionIndex: UINT,
3033         ppVideoProcessor: *mut *mut ID3D11VideoProcessor,
3034     ) -> HRESULT,
3035     fn CreateAuthenticatedChannel(
3036         ChannelType: D3D11_AUTHENTICATED_CHANNEL_TYPE,
3037         ppAuthenticatedChannel: *mut *mut ID3D11AuthenticatedChannel,
3038     ) -> HRESULT,
3039     fn CreateCryptoSession(
3040         pCryptoType: *const GUID,
3041         pDecoderProfile: *const GUID,
3042         pKeyExchangeType: *const GUID,
3043         ppCryptoSession: *mut *mut ID3D11CryptoSession,
3044     ) -> HRESULT,
3045     fn CreateVideoDecoderOutputView(
3046         pResource: *mut ID3D11Resource,
3047         pDesc: *const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC,
3048         ppVDOVView: *mut *mut ID3D11VideoDecoderOutputView,
3049     ) -> HRESULT,
3050     fn CreateVideoProcessorInputView(
3051         pResource: *mut ID3D11Resource,
3052         pEnum: *mut ID3D11VideoProcessorEnumerator,
3053         pDesc: *const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC,
3054         ppVPIView: *mut *mut ID3D11VideoProcessorInputView,
3055     ) -> HRESULT,
3056     fn CreateVideoProcessorOutputView(
3057         pResource: *mut ID3D11Resource,
3058         pEnum: *mut ID3D11VideoProcessorEnumerator,
3059         pDesc: *const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC,
3060         ppVPOView: *mut *mut ID3D11VideoProcessorOutputView,
3061     ) -> HRESULT,
3062     fn CreateVideoProcessorEnumerator(
3063         pDesc: *const D3D11_VIDEO_PROCESSOR_CONTENT_DESC,
3064         ppEnum: *mut *mut ID3D11VideoProcessorEnumerator,
3065     ) -> HRESULT,
3066     fn GetVideoDecoderProfileCount() -> UINT,
3067     fn GetVideoDecoderProfile(
3068         Index: UINT,
3069         pDecoderProfile: *mut GUID,
3070     ) -> HRESULT,
3071     fn CheckVideoDecoderFormat(
3072         pDecoderProfile: *const GUID,
3073         Format: DXGI_FORMAT,
3074         pSupported: *mut BOOL,
3075     ) -> HRESULT,
3076     fn GetVideoDecoderConfigCount(
3077         pDesc: *const D3D11_VIDEO_DECODER_DESC,
3078         pCount: *mut UINT,
3079     ) -> HRESULT,
3080     fn GetVideoDecoderConfig(
3081         pDesc: *const D3D11_VIDEO_DECODER_DESC,
3082         Index: UINT,
3083         pConfig: *mut D3D11_VIDEO_DECODER_CONFIG,
3084     ) -> HRESULT,
3085     fn GetContentProtectionCaps(
3086         pCryptoType: *const GUID,
3087         pDecoderProfile: *const GUID,
3088         pCaps: *mut D3D11_VIDEO_CONTENT_PROTECTION_CAPS,
3089     ) -> HRESULT,
3090     fn CheckCryptoKeyExchange(
3091         pCryptoType: *const GUID,
3092         pDecoderProfile: *const GUID,
3093         Index: UINT,
3094         pKeyExchangeType: *mut GUID,
3095     ) -> HRESULT,
3096     fn SetPrivateData(
3097         guid: REFGUID,
3098         DataSize: UINT,
3099         pData: *const c_void,
3100     ) -> HRESULT,
3101     fn SetPrivateDataInterface(
3102         guid: REFGUID,
3103         pData: *const IUnknown,
3104     ) -> HRESULT,
3105 }}
3106 RIDL!{#[uuid(0xdb6f6ddb, 0xac77, 0x4e88, 0x82, 0x53, 0x81, 0x9d, 0xf9, 0xbb, 0xf1, 0x40)]
3107 interface ID3D11Device(ID3D11DeviceVtbl): IUnknown(IUnknownVtbl) {
3108     fn CreateBuffer(
3109         pDesc: *const D3D11_BUFFER_DESC,
3110         pInitialData: *const D3D11_SUBRESOURCE_DATA,
3111         ppBuffer: *mut *mut ID3D11Buffer,
3112     ) -> HRESULT,
3113     fn CreateTexture1D(
3114         pDesc: *const D3D11_TEXTURE1D_DESC,
3115         pInitialData: *const D3D11_SUBRESOURCE_DATA,
3116         ppTexture1D: *mut *mut ID3D11Texture1D,
3117     ) -> HRESULT,
3118     fn CreateTexture2D(
3119         pDesc: *const D3D11_TEXTURE2D_DESC,
3120         pInitialData: *const D3D11_SUBRESOURCE_DATA,
3121         ppTexture2D: *mut *mut ID3D11Texture2D,
3122     ) -> HRESULT,
3123     fn CreateTexture3D(
3124         pDesc: *const D3D11_TEXTURE3D_DESC,
3125         pInitialData: *const D3D11_SUBRESOURCE_DATA,
3126         ppTexture3D: *mut *mut ID3D11Texture3D,
3127     ) -> HRESULT,
3128     fn CreateShaderResourceView(
3129         pResource: *mut ID3D11Resource,
3130         pDesc: *const D3D11_SHADER_RESOURCE_VIEW_DESC,
3131         ppSRView: *mut *mut ID3D11ShaderResourceView,
3132     ) -> HRESULT,
3133     fn CreateUnorderedAccessView(
3134         pResource: *mut ID3D11Resource,
3135         pDesc: *const D3D11_UNORDERED_ACCESS_VIEW_DESC,
3136         ppUAView: *mut *mut ID3D11UnorderedAccessView,
3137     ) -> HRESULT,
3138     fn CreateRenderTargetView(
3139         pResource: *mut ID3D11Resource,
3140         pDesc: *const D3D11_RENDER_TARGET_VIEW_DESC,
3141         ppRTView: *mut *mut ID3D11RenderTargetView,
3142     ) -> HRESULT,
3143     fn CreateDepthStencilView(
3144         pResource: *mut ID3D11Resource,
3145         pDesc: *const D3D11_DEPTH_STENCIL_VIEW_DESC,
3146         ppDepthStencilView: *mut *mut ID3D11DepthStencilView,
3147     ) -> HRESULT,
3148     fn CreateInputLayout(
3149         pInputElementDescs: *const D3D11_INPUT_ELEMENT_DESC,
3150         NumElements: UINT,
3151         pShaderBytecodeWithInputSignature: *const c_void,
3152         BytecodeLength: SIZE_T,
3153         ppInputLayout: *mut *mut ID3D11InputLayout,
3154     ) -> HRESULT,
3155     fn CreateVertexShader(
3156         pShaderBytecode: *const c_void,
3157         BytecodeLength: SIZE_T,
3158         pClassLinkage: *mut ID3D11ClassLinkage,
3159         ppVertexShader: *mut *mut ID3D11VertexShader,
3160     ) -> HRESULT,
3161     fn CreateGeometryShader(
3162         pShaderBytecode: *const c_void,
3163         BytecodeLength: SIZE_T,
3164         pClassLinkage: *mut ID3D11ClassLinkage,
3165         ppGeometryShader: *mut *mut ID3D11GeometryShader,
3166     ) -> HRESULT,
3167     fn CreateGeometryShaderWithStreamOutput(
3168         pShaderBytecode: *const c_void,
3169         BytecodeLength: SIZE_T,
3170         pSODeclaration: *const D3D11_SO_DECLARATION_ENTRY,
3171         NumEntries: UINT,
3172         pBufferStrides: *const UINT,
3173         NumStrides: UINT,
3174         RasterizedStream: UINT,
3175         pClassLinkage: *mut ID3D11ClassLinkage,
3176         ppGeometryShader: *mut *mut ID3D11GeometryShader,
3177     ) -> HRESULT,
3178     fn CreatePixelShader(
3179         pShaderBytecode: *const c_void,
3180         BytecodeLength: SIZE_T,
3181         pClassLinkage: *mut ID3D11ClassLinkage,
3182         ppPixelShader: *mut *mut ID3D11PixelShader,
3183     ) -> HRESULT,
3184     fn CreateHullShader(
3185         pShaderBytecode: *const c_void,
3186         BytecodeLength: SIZE_T,
3187         pClassLinkage: *mut ID3D11ClassLinkage,
3188         ppHullShader: *mut *mut ID3D11HullShader,
3189     ) -> HRESULT,
3190     fn CreateDomainShader(
3191         pShaderBytecode: *const c_void,
3192         BytecodeLength: SIZE_T,
3193         pClassLinkage: *mut ID3D11ClassLinkage,
3194         ppDomainShader: *mut *mut ID3D11DomainShader,
3195     ) -> HRESULT,
3196     fn CreateComputeShader(
3197         pShaderBytecode: *const c_void,
3198         BytecodeLength: SIZE_T,
3199         pClassLinkage: *mut ID3D11ClassLinkage,
3200         ppComputeShader: *mut *mut ID3D11ComputeShader,
3201     ) -> HRESULT,
3202     fn CreateClassLinkage(
3203         ppLinkage: *mut *mut ID3D11ClassLinkage,
3204     ) -> HRESULT,
3205     fn CreateBlendState(
3206         pBlendStateDesc: *const D3D11_BLEND_DESC,
3207         ppBlendState: *mut *mut ID3D11BlendState,
3208     ) -> HRESULT,
3209     fn CreateDepthStencilState(
3210         pDepthStencilDesc: *const D3D11_DEPTH_STENCIL_DESC,
3211         ppDepthStencilState: *mut *mut ID3D11DepthStencilState,
3212     ) -> HRESULT,
3213     fn CreateRasterizerState(
3214         pRasterizerDesc: *const D3D11_RASTERIZER_DESC,
3215         ppRasterizerState: *mut *mut ID3D11RasterizerState,
3216     ) -> HRESULT,
3217     fn CreateSamplerState(
3218         pSamplerDesc: *const D3D11_SAMPLER_DESC,
3219         ppSamplerState: *mut *mut ID3D11SamplerState,
3220     ) -> HRESULT,
3221     fn CreateQuery(
3222         pQueryDesc: *const D3D11_QUERY_DESC,
3223         ppQuery: *mut *mut ID3D11Query,
3224     ) -> HRESULT,
3225     fn CreatePredicate(
3226         pPredicateDesc: *const D3D11_QUERY_DESC,
3227         ppPredicate: *mut *mut ID3D11Predicate,
3228     ) -> HRESULT,
3229     fn CreateCounter(
3230         pCounterDesc: *const D3D11_COUNTER_DESC,
3231         ppCounter: *mut *mut ID3D11Counter,
3232     ) -> HRESULT,
3233     fn CreateDeferredContext(
3234         ContextFlags: UINT,
3235         ppDeferredContext: *mut *mut ID3D11DeviceContext,
3236     ) -> HRESULT,
3237     fn OpenSharedResource(
3238         hResource: HANDLE,
3239         ReturnedInterface: REFIID,
3240         ppResource: *mut *mut c_void,
3241     ) -> HRESULT,
3242     fn CheckFormatSupport(
3243         Format: DXGI_FORMAT,
3244         pFormatSupport: *mut UINT,
3245     ) -> HRESULT,
3246     fn CheckMultisampleQualityLevels(
3247         Format: DXGI_FORMAT,
3248         SampleCount: UINT,
3249         pNumQualityLevels: *mut UINT,
3250     ) -> HRESULT,
3251     fn CheckCounterInfo(
3252         pCounterInfo: *mut D3D11_COUNTER_INFO,
3253     ) -> (),
3254     fn CheckCounter(
3255         pDesc: *const D3D11_COUNTER_DESC,
3256         pType: *mut D3D11_COUNTER_TYPE,
3257         pActiveCounters: *mut UINT,
3258         szName: LPSTR,
3259         pNameLength: *mut UINT,
3260         szUnits: LPSTR,
3261         pUnitsLength: *mut UINT,
3262         szDescription: LPSTR,
3263         pDescriptionLength: *mut UINT,
3264     ) -> HRESULT,
3265     fn CheckFeatureSupport(
3266         Feature: D3D11_FEATURE,
3267         pFeatureSupportData: *mut c_void,
3268         FeatureSupportDataSize: UINT,
3269     ) -> HRESULT,
3270     fn GetPrivateData(
3271         guid: REFGUID,
3272         pDataSize: *mut UINT,
3273         pData: *mut c_void,
3274     ) -> HRESULT,
3275     fn SetPrivateData(
3276         guid: REFGUID,
3277         DataSize: UINT,
3278         pData: *const c_void,
3279     ) -> HRESULT,
3280     fn SetPrivateDataInterface(
3281         guid: REFGUID,
3282         pData: *const IUnknown,
3283     ) -> HRESULT,
3284     fn GetFeatureLevel() -> D3D_FEATURE_LEVEL,
3285     fn GetCreationFlags() -> UINT,
3286     fn GetDeviceRemovedReason() -> HRESULT,
3287     fn GetImmediateContext(
3288         ppImmediateContext: *mut *mut ID3D11DeviceContext,
3289     ) -> (),
3290     fn SetExceptionMode(
3291         RaiseFlags: UINT,
3292     ) -> HRESULT,
3293     fn GetExceptionMode() -> UINT,
3294 }}
3295 ENUM!{enum D3D11_CREATE_DEVICE_FLAG {
3296     D3D11_CREATE_DEVICE_SINGLETHREADED = 0x1,
3297     D3D11_CREATE_DEVICE_DEBUG = 0x2,
3298     D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
3299     D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8,
3300     D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x20,
3301     D3D11_CREATE_DEVICE_DEBUGGABLE = 0x40,
3302     D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x80,
3303     D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
3304     D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x800,
3305 }}
3306 pub const D3D11_SDK_VERSION: DWORD = 7;
3307 #[inline]
D3D11CalcSubresource(MipSlice: UINT, ArraySlice: UINT, MipLevels: UINT) -> UINT3308 pub fn D3D11CalcSubresource(MipSlice: UINT, ArraySlice: UINT, MipLevels: UINT) -> UINT {
3309     MipSlice + ArraySlice * MipLevels
3310 }
3311 extern "system" {
D3D11CreateDevice( pAdapter: *mut IDXGIAdapter, DriverType: D3D_DRIVER_TYPE, Software: HMODULE, Flags: UINT, pFeatureLevels: *const D3D_FEATURE_LEVEL, FeatureLevels: UINT, SDKVersion: UINT, ppDevice: *mut *mut ID3D11Device, pFeatureLevel: *mut D3D_FEATURE_LEVEL, ppImmediateContext: *mut *mut ID3D11DeviceContext, ) -> HRESULT3312     pub fn D3D11CreateDevice(
3313         pAdapter: *mut IDXGIAdapter,
3314         DriverType: D3D_DRIVER_TYPE,
3315         Software: HMODULE,
3316         Flags: UINT,
3317         pFeatureLevels: *const D3D_FEATURE_LEVEL,
3318         FeatureLevels: UINT,
3319         SDKVersion: UINT,
3320         ppDevice: *mut *mut ID3D11Device,
3321         pFeatureLevel: *mut D3D_FEATURE_LEVEL,
3322         ppImmediateContext: *mut *mut ID3D11DeviceContext,
3323     ) -> HRESULT;
D3D11CreateDeviceAndSwapChain( pAdapter: *mut IDXGIAdapter, DriverType: D3D_DRIVER_TYPE, Software: HMODULE, Flags: UINT, pFeatureLevels: *const D3D_FEATURE_LEVEL, FeatureLevels: UINT, SDKVersion: UINT, pSwapChainDesc: *const DXGI_SWAP_CHAIN_DESC, ppSwapChain: *mut *mut IDXGISwapChain, ppDevice: *mut *mut ID3D11Device, pFeatureLevel: *mut D3D_FEATURE_LEVEL, ppImmediateContext: *mut *mut ID3D11DeviceContext, ) -> HRESULT3324     pub fn D3D11CreateDeviceAndSwapChain(
3325         pAdapter: *mut IDXGIAdapter,
3326         DriverType: D3D_DRIVER_TYPE,
3327         Software: HMODULE,
3328         Flags: UINT,
3329         pFeatureLevels: *const D3D_FEATURE_LEVEL,
3330         FeatureLevels: UINT,
3331         SDKVersion: UINT,
3332         pSwapChainDesc: *const DXGI_SWAP_CHAIN_DESC,
3333         ppSwapChain: *mut *mut IDXGISwapChain,
3334         ppDevice: *mut *mut ID3D11Device,
3335         pFeatureLevel: *mut D3D_FEATURE_LEVEL,
3336         ppImmediateContext: *mut *mut ID3D11DeviceContext,
3337     ) -> HRESULT;
3338 }
3339 DEFINE_GUID!{IID_ID3D11DeviceChild,
3340     0x1841e5c8, 0x16b0, 0x489b, 0xbc, 0xc8, 0x44, 0xcf, 0xb0, 0xd5, 0xde, 0xae}
3341 DEFINE_GUID!{IID_ID3D11DepthStencilState,
3342     0x03823efb, 0x8d8f, 0x4e1c, 0x9a, 0xa2, 0xf6, 0x4b, 0xb2, 0xcb, 0xfd, 0xf1}
3343 DEFINE_GUID!{IID_ID3D11BlendState,
3344     0x75b68faa, 0x347d, 0x4159, 0x8f, 0x45, 0xa0, 0x64, 0x0f, 0x01, 0xcd, 0x9a}
3345 DEFINE_GUID!{IID_ID3D11RasterizerState,
3346     0x9bb4ab81, 0xab1a, 0x4d8f, 0xb5, 0x06, 0xfc, 0x04, 0x20, 0x0b, 0x6e, 0xe7}
3347 DEFINE_GUID!{IID_ID3D11Resource,
3348     0xdc8e63f3, 0xd12b, 0x4952, 0xb4, 0x7b, 0x5e, 0x45, 0x02, 0x6a, 0x86, 0x2d}
3349 DEFINE_GUID!{IID_ID3D11Buffer,
3350     0x48570b85, 0xd1ee, 0x4fcd, 0xa2, 0x50, 0xeb, 0x35, 0x07, 0x22, 0xb0, 0x37}
3351 DEFINE_GUID!{IID_ID3D11Texture1D,
3352     0xf8fb5c27, 0xc6b3, 0x4f75, 0xa4, 0xc8, 0x43, 0x9a, 0xf2, 0xef, 0x56, 0x4c}
3353 DEFINE_GUID!{IID_ID3D11Texture2D,
3354     0x6f15aaf2, 0xd208, 0x4e89, 0x9a, 0xb4, 0x48, 0x95, 0x35, 0xd3, 0x4f, 0x9c}
3355 DEFINE_GUID!{IID_ID3D11Texture3D,
3356     0x037e866e, 0xf56d, 0x4357, 0xa8, 0xaf, 0x9d, 0xab, 0xbe, 0x6e, 0x25, 0x0e}
3357 DEFINE_GUID!{IID_ID3D11View,
3358     0x839d1216, 0xbb2e, 0x412b, 0xb7, 0xf4, 0xa9, 0xdb, 0xeb, 0xe0, 0x8e, 0xd1}
3359 DEFINE_GUID!{IID_ID3D11ShaderResourceView,
3360     0xb0e06fe0, 0x8192, 0x4e1a, 0xb1, 0xca, 0x36, 0xd7, 0x41, 0x47, 0x10, 0xb2}
3361 DEFINE_GUID!{IID_ID3D11RenderTargetView,
3362     0xdfdba067, 0x0b8d, 0x4865, 0x87, 0x5b, 0xd7, 0xb4, 0x51, 0x6c, 0xc1, 0x64}
3363 DEFINE_GUID!{IID_ID3D11DepthStencilView,
3364     0x9fdac92a, 0x1876, 0x48c3, 0xaf, 0xad, 0x25, 0xb9, 0x4f, 0x84, 0xa9, 0xb6}
3365 DEFINE_GUID!{IID_ID3D11UnorderedAccessView,
3366     0x28acf509, 0x7f5c, 0x48f6, 0x86, 0x11, 0xf3, 0x16, 0x01, 0x0a, 0x63, 0x80}
3367 DEFINE_GUID!{IID_ID3D11VertexShader,
3368     0x3b301d64, 0xd678, 0x4289, 0x88, 0x97, 0x22, 0xf8, 0x92, 0x8b, 0x72, 0xf3}
3369 DEFINE_GUID!{IID_ID3D11HullShader,
3370     0x8e5c6061, 0x628a, 0x4c8e, 0x82, 0x64, 0xbb, 0xe4, 0x5c, 0xb3, 0xd5, 0xdd}
3371 DEFINE_GUID!{IID_ID3D11DomainShader,
3372     0xf582c508, 0x0f36, 0x490c, 0x99, 0x77, 0x31, 0xee, 0xce, 0x26, 0x8c, 0xfa}
3373 DEFINE_GUID!{IID_ID3D11GeometryShader,
3374     0x38325b96, 0xeffb, 0x4022, 0xba, 0x02, 0x2e, 0x79, 0x5b, 0x70, 0x27, 0x5c}
3375 DEFINE_GUID!{IID_ID3D11PixelShader,
3376     0xea82e40d, 0x51dc, 0x4f33, 0x93, 0xd4, 0xdb, 0x7c, 0x91, 0x25, 0xae, 0x8c}
3377 DEFINE_GUID!{IID_ID3D11ComputeShader,
3378     0x4f5b196e, 0xc2bd, 0x495e, 0xbd, 0x01, 0x1f, 0xde, 0xd3, 0x8e, 0x49, 0x69}
3379 DEFINE_GUID!{IID_ID3D11InputLayout,
3380     0xe4819ddc, 0x4cf0, 0x4025, 0xbd, 0x26, 0x5d, 0xe8, 0x2a, 0x3e, 0x07, 0xb7}
3381 DEFINE_GUID!{IID_ID3D11SamplerState,
3382     0xda6fea51, 0x564c, 0x4487, 0x98, 0x10, 0xf0, 0xd0, 0xf9, 0xb4, 0xe3, 0xa5}
3383 DEFINE_GUID!{IID_ID3D11Asynchronous,
3384     0x4b35d0cd, 0x1e15, 0x4258, 0x9c, 0x98, 0x1b, 0x13, 0x33, 0xf6, 0xdd, 0x3b}
3385 DEFINE_GUID!{IID_ID3D11Query,
3386     0xd6c00747, 0x87b7, 0x425e, 0xb8, 0x4d, 0x44, 0xd1, 0x08, 0x56, 0x0a, 0xfd}
3387 DEFINE_GUID!{IID_ID3D11Predicate,
3388     0x9eb576dd, 0x9f77, 0x4d86, 0x81, 0xaa, 0x8b, 0xab, 0x5f, 0xe4, 0x90, 0xe2}
3389 DEFINE_GUID!{IID_ID3D11Counter,
3390     0x6e8c49fb, 0xa371, 0x4770, 0xb4, 0x40, 0x29, 0x08, 0x60, 0x22, 0xb7, 0x41}
3391 DEFINE_GUID!{IID_ID3D11ClassInstance,
3392     0xa6cd7faa, 0xb0b7, 0x4a2f, 0x94, 0x36, 0x86, 0x62, 0xa6, 0x57, 0x97, 0xcb}
3393 DEFINE_GUID!{IID_ID3D11ClassLinkage,
3394     0xddf57cba, 0x9543, 0x46e4, 0xa1, 0x2b, 0xf2, 0x07, 0xa0, 0xfe, 0x7f, 0xed}
3395 DEFINE_GUID!{IID_ID3D11CommandList,
3396     0xa24bc4d1, 0x769e, 0x43f7, 0x80, 0x13, 0x98, 0xff, 0x56, 0x6c, 0x18, 0xe2}
3397 DEFINE_GUID!{IID_ID3D11DeviceContext,
3398     0xc0bfa96c, 0xe089, 0x44fb, 0x8e, 0xaf, 0x26, 0xf8, 0x79, 0x61, 0x90, 0xda}
3399 DEFINE_GUID!{IID_ID3D11VideoDecoder,
3400     0x3c9c5b51, 0x995d, 0x48d1, 0x9b, 0x8d, 0xfa, 0x5c, 0xae, 0xde, 0xd6, 0x5c}
3401 DEFINE_GUID!{IID_ID3D11VideoProcessorEnumerator,
3402     0x31627037, 0x53ab, 0x4200, 0x90, 0x61, 0x05, 0xfa, 0xa9, 0xab, 0x45, 0xf9}
3403 DEFINE_GUID!{IID_ID3D11VideoProcessor,
3404     0x1d7b0652, 0x185f, 0x41c6, 0x85, 0xce, 0x0c, 0x5b, 0xe3, 0xd4, 0xae, 0x6c}
3405 DEFINE_GUID!{IID_ID3D11AuthenticatedChannel,
3406     0x3015a308, 0xdcbd, 0x47aa, 0xa7, 0x47, 0x19, 0x24, 0x86, 0xd1, 0x4d, 0x4a}
3407 DEFINE_GUID!{IID_ID3D11CryptoSession,
3408     0x9b32f9ad, 0xbdcc, 0x40a6, 0xa3, 0x9d, 0xd5, 0xc8, 0x65, 0x84, 0x57, 0x20}
3409 DEFINE_GUID!{IID_ID3D11VideoDecoderOutputView,
3410     0xc2931aea, 0x2a85, 0x4f20, 0x86, 0x0f, 0xfb, 0xa1, 0xfd, 0x25, 0x6e, 0x18}
3411 DEFINE_GUID!{IID_ID3D11VideoProcessorInputView,
3412     0x11ec5a5f, 0x51dc, 0x4945, 0xab, 0x34, 0x6e, 0x8c, 0x21, 0x30, 0x0e, 0xa5}
3413 DEFINE_GUID!{IID_ID3D11VideoProcessorOutputView,
3414     0xa048285e, 0x25a9, 0x4527, 0xbd, 0x93, 0xd6, 0x8b, 0x68, 0xc4, 0x42, 0x54}
3415 DEFINE_GUID!{IID_ID3D11VideoContext,
3416     0x61f21c45, 0x3c0e, 0x4a74, 0x9c, 0xea, 0x67, 0x10, 0x0d, 0x9a, 0xd5, 0xe4}
3417 DEFINE_GUID!{IID_ID3D11VideoDevice,
3418     0x10ec4d5b, 0x975a, 0x4689, 0xb9, 0xe4, 0xd0, 0xaa, 0xc3, 0x0f, 0xe3, 0x33}
3419 DEFINE_GUID!{IID_ID3D11Device,
3420     0xdb6f6ddb, 0xac77, 0x4e88, 0x82, 0x53, 0x81, 0x9d, 0xf9, 0xbb, 0xf1, 0x40}
3421