winapi_ui_automation/um/
d3d11.rs

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.
6use ctypes::{c_float, c_int, c_long, c_void};
7use shared::basetsd::{SIZE_T, UINT64, UINT8};
8use shared::dxgi::{DXGI_SWAP_CHAIN_DESC, IDXGIAdapter, IDXGISwapChain};
9use shared::dxgiformat::DXGI_FORMAT;
10use shared::dxgitype::{DXGI_RATIONAL, DXGI_SAMPLE_DESC};
11use shared::guiddef::{GUID, REFGUID, REFIID};
12use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT, HMODULE, INT, UINT, USHORT};
13use shared::windef::{RECT, SIZE};
14use um::d3dcommon::{
15    D3D_DRIVER_TYPE, D3D_FEATURE_LEVEL, D3D_PRIMITIVE, D3D_PRIMITIVE_TOPOLOGY, D3D_SRV_DIMENSION,
16};
17use um::unknwnbase::{IUnknown, IUnknownVtbl};
18use um::winnt::{HANDLE, HRESULT, LPCSTR, LPSTR, ULONGLONG};
19pub const D3D11_16BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xffff;
20pub const D3D11_32BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xffffffff;
21pub const D3D11_8BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xff;
22pub const D3D11_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT: DWORD = 9;
23pub const D3D11_CLIP_OR_CULL_DISTANCE_COUNT: DWORD = 8;
24pub const D3D11_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT: DWORD = 2;
25pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT: DWORD = 14;
26pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS: DWORD = 4;
27pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT: DWORD = 32;
28pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT: DWORD = 15;
29pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT: DWORD = 16;
30pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS: DWORD = 4;
31pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT: DWORD = 15;
32pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST: DWORD = 1;
33pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS: DWORD = 1;
34pub const D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT: DWORD = 64;
35pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS: DWORD = 4;
36pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT: DWORD = 1;
37pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST: DWORD = 1;
38pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS: DWORD = 1;
39pub const D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT: DWORD = 32;
40pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS: DWORD = 1;
41pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT: DWORD = 128;
42pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST: DWORD = 1;
43pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS: DWORD = 1;
44pub const D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT: DWORD = 128;
45pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS: DWORD = 1;
46pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT: DWORD = 16;
47pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST: DWORD = 1;
48pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS: DWORD = 1;
49pub const D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT: DWORD = 16;
50pub const D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT: DWORD = 32;
51pub const D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS: DWORD = 4;
52pub const D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
53pub const D3D11_COMMONSHADER_TEMP_REGISTER_COUNT: DWORD = 4096;
54pub const D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST: DWORD = 3;
55pub const D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS: DWORD = 3;
56pub const D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX: DWORD = 10;
57pub const D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN: c_long = -10;
58pub const D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE: c_long = -8;
59pub const D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE: DWORD = 7;
60pub const D3D11_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 256;
61pub const D3D11_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP: DWORD = 64;
62pub const D3D11_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 240;
63pub const D3D11_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP: DWORD = 68;
64pub const D3D11_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 224;
65pub const D3D11_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP: DWORD = 72;
66pub const D3D11_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 208;
67pub const D3D11_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP: DWORD = 76;
68pub const D3D11_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 192;
69pub const D3D11_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP: DWORD = 84;
70pub const D3D11_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 176;
71pub const D3D11_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP: DWORD = 92;
72pub const D3D11_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 160;
73pub const D3D11_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP: DWORD = 100;
74pub const D3D11_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 144;
75pub const D3D11_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP: DWORD = 112;
76pub const D3D11_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 128;
77pub const D3D11_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP: DWORD = 128;
78pub const D3D11_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 112;
79pub const D3D11_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP: DWORD = 144;
80pub const D3D11_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 96;
81pub const D3D11_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP: DWORD = 168;
82pub const D3D11_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 80;
83pub const D3D11_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP: DWORD = 204;
84pub const D3D11_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 64;
85pub const D3D11_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP: DWORD = 256;
86pub const D3D11_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 48;
87pub const D3D11_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP: DWORD = 340;
88pub const D3D11_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 32;
89pub const D3D11_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP: DWORD = 512;
90pub const D3D11_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 16;
91pub const D3D11_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP: DWORD = 768;
92pub const D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION: DWORD = 1;
93pub const D3D11_CS_4_X_RAW_UAV_BYTE_ALIGNMENT: DWORD = 256;
94pub const D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP: DWORD = 768;
95pub const D3D11_CS_4_X_THREAD_GROUP_MAX_X: DWORD = 768;
96pub const D3D11_CS_4_X_THREAD_GROUP_MAX_Y: DWORD = 768;
97pub const D3D11_CS_4_X_UAV_REGISTER_COUNT: DWORD = 1;
98pub const D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION: DWORD = 65535;
99pub const D3D11_CS_TGSM_REGISTER_COUNT: DWORD = 8192;
100pub const D3D11_CS_TGSM_REGISTER_READS_PER_INST: DWORD = 1;
101pub const D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS: DWORD = 1;
102pub const D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS: DWORD = 1;
103pub const D3D11_CS_THREADGROUPID_REGISTER_COMPONENTS: DWORD = 3;
104pub const D3D11_CS_THREADGROUPID_REGISTER_COUNT: DWORD = 1;
105pub const D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS: DWORD = 1;
106pub const D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT: DWORD = 1;
107pub const D3D11_CS_THREADIDINGROUP_REGISTER_COMPONENTS: DWORD = 3;
108pub const D3D11_CS_THREADIDINGROUP_REGISTER_COUNT: DWORD = 1;
109pub const D3D11_CS_THREADID_REGISTER_COMPONENTS: DWORD = 3;
110pub const D3D11_CS_THREADID_REGISTER_COUNT: DWORD = 1;
111pub const D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP: DWORD = 1024;
112pub const D3D11_CS_THREAD_GROUP_MAX_X: DWORD = 1024;
113pub const D3D11_CS_THREAD_GROUP_MAX_Y: DWORD = 1024;
114pub const D3D11_CS_THREAD_GROUP_MAX_Z: DWORD = 64;
115pub const D3D11_CS_THREAD_GROUP_MIN_X: DWORD = 1;
116pub const D3D11_CS_THREAD_GROUP_MIN_Y: DWORD = 1;
117pub const D3D11_CS_THREAD_GROUP_MIN_Z: DWORD = 1;
118pub const D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL: DWORD = 16384;
119pub const D3D11_DEFAULT_BLEND_FACTOR_ALPHA: FLOAT = 1.0;
120pub const D3D11_DEFAULT_BLEND_FACTOR_BLUE: FLOAT = 1.0;
121pub const D3D11_DEFAULT_BLEND_FACTOR_GREEN: FLOAT = 1.0;
122pub const D3D11_DEFAULT_BLEND_FACTOR_RED: FLOAT = 1.0;
123pub const D3D11_DEFAULT_BORDER_COLOR_COMPONENT: FLOAT = 0.0;
124pub const D3D11_DEFAULT_DEPTH_BIAS: DWORD = 0;
125pub const D3D11_DEFAULT_DEPTH_BIAS_CLAMP: FLOAT = 0.0;
126pub const D3D11_DEFAULT_MAX_ANISOTROPY: DWORD = 16;
127pub const D3D11_DEFAULT_MIP_LOD_BIAS: FLOAT = 0.0;
128pub const D3D11_DEFAULT_RENDER_TARGET_ARRAY_INDEX: DWORD = 0;
129pub const D3D11_DEFAULT_SAMPLE_MASK: DWORD = 0xffffffff;
130pub const D3D11_DEFAULT_SCISSOR_ENDX: DWORD = 0;
131pub const D3D11_DEFAULT_SCISSOR_ENDY: DWORD = 0;
132pub const D3D11_DEFAULT_SCISSOR_STARTX: DWORD = 0;
133pub const D3D11_DEFAULT_SCISSOR_STARTY: DWORD = 0;
134pub const D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS: FLOAT = 0.0;
135pub const D3D11_DEFAULT_STENCIL_READ_MASK: DWORD = 0xff;
136pub const D3D11_DEFAULT_STENCIL_REFERENCE: DWORD = 0;
137pub const D3D11_DEFAULT_STENCIL_WRITE_MASK: DWORD = 0xff;
138pub const D3D11_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX: DWORD = 0;
139pub const D3D11_DEFAULT_VIEWPORT_HEIGHT: DWORD = 0;
140pub const D3D11_DEFAULT_VIEWPORT_MAX_DEPTH: FLOAT = 0.0;
141pub const D3D11_DEFAULT_VIEWPORT_MIN_DEPTH: FLOAT = 0.0;
142pub const D3D11_DEFAULT_VIEWPORT_TOPLEFTX: DWORD = 0;
143pub const D3D11_DEFAULT_VIEWPORT_TOPLEFTY: DWORD = 0;
144pub const D3D11_DEFAULT_VIEWPORT_WIDTH: DWORD = 0;
145pub const D3D11_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: DWORD = 3968;
146pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS: DWORD = 4;
147pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
148pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COUNT: DWORD = 32;
149pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST: DWORD = 2;
150pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS: DWORD = 1;
151pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS: DWORD = 3;
152pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
153pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT: DWORD = 1;
154pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST: DWORD = 2;
155pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS: DWORD = 1;
156pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: DWORD = 4;
157pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
158pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT: DWORD = 32;
159pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: DWORD = 2;
160pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: DWORD = 1;
161pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: DWORD = 1;
162pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
163pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: DWORD = 1;
164pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: DWORD = 2;
165pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: DWORD = 1;
166pub const D3D11_DS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
167pub const D3D11_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
168pub const D3D11_DS_OUTPUT_REGISTER_COUNT: DWORD = 32;
169pub const D3D11_FLOAT16_FUSED_TOLERANCE_IN_ULP: FLOAT = 0.6;
170pub const D3D11_FLOAT32_MAX: FLOAT = 3.402823466E+38;
171pub const D3D11_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP: FLOAT = 0.6;
172pub const D3D11_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR: FLOAT = 2.4;
173pub const D3D11_FLOAT_TO_SRGB_EXPONENT_NUMERATOR: FLOAT = 1.0;
174pub const D3D11_FLOAT_TO_SRGB_OFFSET: FLOAT = 0.055;
175pub const D3D11_FLOAT_TO_SRGB_SCALE_1: FLOAT = 12.92;
176pub const D3D11_FLOAT_TO_SRGB_SCALE_2: FLOAT = 1.055;
177pub const D3D11_FLOAT_TO_SRGB_THRESHOLD: FLOAT = 0.0031308;
178pub const D3D11_FTOI_INSTRUCTION_MAX_INPUT: FLOAT = 2147483647.999;
179pub const D3D11_FTOI_INSTRUCTION_MIN_INPUT: FLOAT = -2147483648.999;
180pub const D3D11_FTOU_INSTRUCTION_MAX_INPUT: FLOAT = 4294967295.999;
181pub const D3D11_FTOU_INSTRUCTION_MIN_INPUT: FLOAT = 0.0;
182pub const D3D11_GS_INPUT_INSTANCE_ID_READS_PER_INST: DWORD = 2;
183pub const D3D11_GS_INPUT_INSTANCE_ID_READ_PORTS: DWORD = 1;
184pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
185pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
186pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
187pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS: DWORD = 1;
188pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
189pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COUNT: DWORD = 1;
190pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST: DWORD = 2;
191pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS: DWORD = 1;
192pub const D3D11_GS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
193pub const D3D11_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
194pub const D3D11_GS_INPUT_REGISTER_COUNT: DWORD = 32;
195pub const D3D11_GS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
196pub const D3D11_GS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
197pub const D3D11_GS_INPUT_REGISTER_VERTICES: DWORD = 32;
198pub const D3D11_GS_MAX_INSTANCE_COUNT: DWORD = 32;
199pub const D3D11_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES: DWORD = 1024;
200pub const D3D11_GS_OUTPUT_ELEMENTS: DWORD = 32;
201pub const D3D11_GS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
202pub const D3D11_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
203pub const D3D11_GS_OUTPUT_REGISTER_COUNT: DWORD = 32;
204pub const D3D11_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT: DWORD = 32;
205pub const D3D11_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT: DWORD = 32;
206pub const D3D11_HS_CONTROL_POINT_REGISTER_COMPONENTS: DWORD = 4;
207pub const D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
208pub const D3D11_HS_CONTROL_POINT_REGISTER_READS_PER_INST: DWORD = 2;
209pub const D3D11_HS_CONTROL_POINT_REGISTER_READ_PORTS: DWORD = 1;
210pub const D3D11_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND: DWORD = 0xffffffff;
211pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
212pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
213pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
214pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST: DWORD = 2;
215pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS: DWORD = 1;
216pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
217pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
218pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
219pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST: DWORD = 2;
220pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS: DWORD = 1;
221pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: DWORD = 1;
222pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
223pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: DWORD = 1;
224pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: DWORD = 2;
225pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: DWORD = 1;
226pub const D3D11_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND: DWORD = 0xffffffff;
227pub const D3D11_HS_MAXTESSFACTOR_LOWER_BOUND: FLOAT = 1.0;
228pub const D3D11_HS_MAXTESSFACTOR_UPPER_BOUND: FLOAT = 64.0;
229pub const D3D11_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: DWORD = 3968;
230pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS: DWORD = 1;
231pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
232pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT: DWORD = 1;
233pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST: DWORD = 2;
234pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS: DWORD = 1;
235pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: DWORD = 4;
236pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
237pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT: DWORD = 32;
238pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: DWORD = 2;
239pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: DWORD = 1;
240pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS: DWORD = 128;
241pub const D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES: DWORD = 0;
242pub const D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY: DWORD = 0;
243pub const D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES: DWORD = 0;
244pub const D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT: DWORD = 1;
245pub const D3D11_IA_INSTANCE_ID_BIT_COUNT: DWORD = 32;
246pub const D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT: DWORD = 32;
247pub const D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT: DWORD = 32;
248pub const D3D11_IA_PRIMITIVE_ID_BIT_COUNT: DWORD = 32;
249pub const D3D11_IA_VERTEX_ID_BIT_COUNT: DWORD = 32;
250pub const D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT: DWORD = 32;
251pub const D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS: DWORD = 128;
252pub const D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT: DWORD = 32;
253pub const D3D11_INTEGER_DIVIDE_BY_ZERO_QUOTIENT: DWORD = 0xffffffff;
254pub const D3D11_INTEGER_DIVIDE_BY_ZERO_REMAINDER: DWORD = 0xffffffff;
255pub const D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL: DWORD = 0xffffffff;
256pub const D3D11_KEEP_UNORDERED_ACCESS_VIEWS: DWORD = 0xffffffff;
257pub const D3D11_LINEAR_GAMMA: FLOAT = 1.0;
258pub const D3D11_MAJOR_VERSION: DWORD = 11;
259pub const D3D11_MAX_BORDER_COLOR_COMPONENT: FLOAT = 1.0;
260pub const D3D11_MAX_DEPTH: FLOAT = 1.0;
261pub const D3D11_MAX_MAXANISOTROPY: DWORD = 16;
262pub const D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT: DWORD = 32;
263pub const D3D11_MAX_POSITION_VALUE: FLOAT = 3.402823466E+34;
264pub const D3D11_MAX_TEXTURE_DIMENSION_2_TO_EXP: DWORD = 17;
265pub const D3D11_MINOR_VERSION: DWORD = 0;
266pub const D3D11_MIN_BORDER_COLOR_COMPONENT: FLOAT = 0.0;
267pub const D3D11_MIN_DEPTH: FLOAT = 0.0;
268pub const D3D11_MIN_MAXANISOTROPY: DWORD = 0;
269pub const D3D11_MIP_LOD_BIAS_MAX: FLOAT = 15.99;
270pub const D3D11_MIP_LOD_BIAS_MIN: FLOAT = -16.0;
271pub const D3D11_MIP_LOD_FRACTIONAL_BIT_COUNT: DWORD = 8;
272pub const D3D11_MIP_LOD_RANGE_BIT_COUNT: DWORD = 8;
273pub const D3D11_MULTISAMPLE_ANTIALIAS_LINE_WIDTH: FLOAT = 1.4;
274pub const D3D11_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT: DWORD = 0;
275pub const D3D11_PIXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 15;
276pub const D3D11_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 16;
277pub const D3D11_PS_CS_UAV_REGISTER_COMPONENTS: DWORD = 1;
278pub const D3D11_PS_CS_UAV_REGISTER_COUNT: DWORD = 8;
279pub const D3D11_PS_CS_UAV_REGISTER_READS_PER_INST: DWORD = 1;
280pub const D3D11_PS_CS_UAV_REGISTER_READ_PORTS: DWORD = 1;
281pub const D3D11_PS_FRONTFACING_DEFAULT_VALUE: DWORD = 0xffffffff;
282pub const D3D11_PS_FRONTFACING_FALSE_VALUE: DWORD = 0;
283pub const D3D11_PS_FRONTFACING_TRUE_VALUE: DWORD = 0xffffffff;
284pub const D3D11_PS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
285pub const D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
286pub const D3D11_PS_INPUT_REGISTER_COUNT: DWORD = 32;
287pub const D3D11_PS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
288pub const D3D11_PS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
289pub const D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT: FLOAT = 0.0;
290pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS: DWORD = 1;
291pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
292pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT: DWORD = 1;
293pub const D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS: DWORD = 1;
294pub const D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
295pub const D3D11_PS_OUTPUT_MASK_REGISTER_COUNT: DWORD = 1;
296pub const D3D11_PS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
297pub const D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
298pub const D3D11_PS_OUTPUT_REGISTER_COUNT: DWORD = 8;
299pub const D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT: FLOAT = 0.5;
300pub const D3D11_RAW_UAV_SRV_BYTE_ALIGNMENT: DWORD = 16;
301pub const D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
302pub const D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP: DWORD = 27;
303pub const D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT: DWORD = 4096;
304pub const D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
305pub const D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: DWORD = 32;
306pub const D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP: DWORD = 32;
307pub const D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION: DWORD = 16384;
308pub const D3D11_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT: DWORD = 1024;
309pub const D3D11_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT: DWORD = 4096;
310pub const D3D11_REQ_MAXANISOTROPY: DWORD = 16;
311pub const D3D11_REQ_MIP_LEVELS: DWORD = 15;
312pub const D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES: DWORD = 2048;
313pub const D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
314pub const D3D11_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH: DWORD = 16384;
315pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM: DWORD = 128;
316pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM: FLOAT = 0.25;
317pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM: DWORD = 2048;
318pub const D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP: DWORD = 20;
319pub const D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
320pub const D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION: DWORD = 2048;
321pub const D3D11_REQ_TEXTURE1D_U_DIMENSION: DWORD = 16384;
322pub const D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION: DWORD = 2048;
323pub const D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION: DWORD = 16384;
324pub const D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION: DWORD = 2048;
325pub const D3D11_REQ_TEXTURECUBE_DIMENSION: DWORD = 16384;
326pub const D3D11_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL: DWORD = 0;
327pub const D3D11_SHADER_MAJOR_VERSION: DWORD = 5;
328pub const D3D11_SHADER_MAX_INSTANCES: DWORD = 65535;
329pub const D3D11_SHADER_MAX_INTERFACES: DWORD = 253;
330pub const D3D11_SHADER_MAX_INTERFACE_CALL_SITES: DWORD = 4096;
331pub const D3D11_SHADER_MAX_TYPES: DWORD = 65535;
332pub const D3D11_SHADER_MINOR_VERSION: DWORD = 0;
333pub const D3D11_SHIFT_INSTRUCTION_PAD_VALUE: DWORD = 0;
334pub const D3D11_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT: DWORD = 5;
335pub const D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT: DWORD = 8;
336pub const D3D11_SO_BUFFER_MAX_STRIDE_IN_BYTES: DWORD = 2048;
337pub const D3D11_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES: DWORD = 512;
338pub const D3D11_SO_BUFFER_SLOT_COUNT: DWORD = 4;
339pub const D3D11_SO_DDI_REGISTER_INDEX_DENOTING_GAP: DWORD = 0xffffffff;
340pub const D3D11_SO_NO_RASTERIZED_STREAM: DWORD = 0xffffffff;
341pub const D3D11_SO_OUTPUT_COMPONENT_COUNT: DWORD = 128;
342pub const D3D11_SO_STREAM_COUNT: DWORD = 4;
343pub const D3D11_SPEC_DATE_DAY: DWORD = 16;
344pub const D3D11_SPEC_DATE_MONTH: DWORD = 0o5;
345pub const D3D11_SPEC_DATE_YEAR: DWORD = 2011;
346pub const D3D11_SPEC_VERSION: FLOAT = 1.07;
347pub const D3D11_SRGB_GAMMA: FLOAT = 2.2;
348pub const D3D11_SRGB_TO_FLOAT_DENOMINATOR_1: FLOAT = 12.92;
349pub const D3D11_SRGB_TO_FLOAT_DENOMINATOR_2: FLOAT = 1.055;
350pub const D3D11_SRGB_TO_FLOAT_EXPONENT: FLOAT = 2.4;
351pub const D3D11_SRGB_TO_FLOAT_OFFSET: FLOAT = 0.055;
352pub const D3D11_SRGB_TO_FLOAT_THRESHOLD: FLOAT = 0.04045;
353pub const D3D11_SRGB_TO_FLOAT_TOLERANCE_IN_ULP: FLOAT = 0.5;
354pub const D3D11_STANDARD_COMPONENT_BIT_COUNT: DWORD = 32;
355pub const D3D11_STANDARD_COMPONENT_BIT_COUNT_DOUBLED: DWORD = 64;
356pub const D3D11_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE: DWORD = 4;
357pub const D3D11_STANDARD_PIXEL_COMPONENT_COUNT: DWORD = 128;
358pub const D3D11_STANDARD_PIXEL_ELEMENT_COUNT: DWORD = 32;
359pub const D3D11_STANDARD_VECTOR_SIZE: DWORD = 4;
360pub const D3D11_STANDARD_VERTEX_ELEMENT_COUNT: DWORD = 32;
361pub const D3D11_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT: DWORD = 64;
362pub const D3D11_SUBPIXEL_FRACTIONAL_BIT_COUNT: DWORD = 8;
363pub const D3D11_SUBTEXEL_FRACTIONAL_BIT_COUNT: DWORD = 8;
364pub const D3D11_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR: DWORD = 64;
365pub const D3D11_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR: DWORD = 64;
366pub const D3D11_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR: DWORD = 63;
367pub const D3D11_TESSELLATOR_MAX_TESSELLATION_FACTOR: DWORD = 64;
368pub const D3D11_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR: DWORD = 2;
369pub const D3D11_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR: DWORD = 1;
370pub const D3D11_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR: DWORD = 1;
371pub const D3D11_TEXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 16;
372pub const D3D11_UNBOUND_MEMORY_ACCESS_RESULT: DWORD = 0;
373pub const D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX: DWORD = 15;
374pub const D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE: DWORD = 16;
375pub const D3D11_VIEWPORT_BOUNDS_MAX: DWORD = 32767;
376pub const D3D11_VIEWPORT_BOUNDS_MIN: c_long = -32768;
377pub const D3D11_VS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
378pub const D3D11_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
379pub const D3D11_VS_INPUT_REGISTER_COUNT: DWORD = 32;
380pub const D3D11_VS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
381pub const D3D11_VS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
382pub const D3D11_VS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
383pub const D3D11_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
384pub const D3D11_VS_OUTPUT_REGISTER_COUNT: DWORD = 32;
385pub const D3D11_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT: DWORD = 10;
386pub const D3D11_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: DWORD = 25;
387pub const D3D11_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP: DWORD = 25;
388pub const D3D11_1_UAV_SLOT_COUNT: DWORD = 64;
389pub const D3D11_2_TILED_RESOURCE_TILE_SIZE_IN_BYTES: DWORD = 65536;
390ENUM!{enum D3D11_INPUT_CLASSIFICATION {
391    D3D11_INPUT_PER_VERTEX_DATA = 0,
392    D3D11_INPUT_PER_INSTANCE_DATA = 1,
393}}
394pub const D3D11_APPEND_ALIGNED_ELEMENT: DWORD = 0xffffffff;
395STRUCT!{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}}
404ENUM!{enum D3D11_FILL_MODE {
405    D3D11_FILL_WIREFRAME = 2,
406    D3D11_FILL_SOLID = 3,
407}}
408pub type D3D11_PRIMITIVE_TOPOLOGY = D3D_PRIMITIVE_TOPOLOGY;
409pub type D3D11_PRIMITIVE = D3D_PRIMITIVE;
410ENUM!{enum D3D11_CULL_MODE {
411    D3D11_CULL_NONE = 1,
412    D3D11_CULL_FRONT = 2,
413    D3D11_CULL_BACK = 3,
414}}
415STRUCT!{struct D3D11_SO_DECLARATION_ENTRY {
416    Stream: UINT,
417    SemanticName: LPCSTR,
418    SemanticIndex: UINT,
419    StartComponent: BYTE,
420    ComponentCount: BYTE,
421    OutputSlot: BYTE,
422}}
423STRUCT!{struct D3D11_VIEWPORT {
424    TopLeftX: FLOAT,
425    TopLeftY: FLOAT,
426    Width: FLOAT,
427    Height: FLOAT,
428    MinDepth: FLOAT,
429    MaxDepth: FLOAT,
430}}
431STRUCT!{struct D3D11_DRAW_INSTANCED_INDIRECT_ARGS {
432    VertexCountPerInstance: UINT,
433    InstanceCount: UINT,
434    StartVertexLocation: UINT,
435    StartInstanceLocation: UINT,
436}}
437STRUCT!{struct D3D11_DRAW_INDEXED_INSTANCED_INDIRECT_ARGS {
438    IndexCountPerInstance: UINT,
439    InstanceCount: UINT,
440    StartIndexLocation: UINT,
441    BaseVertexLocation: INT,
442    StartInstanceLocation: UINT,
443}}
444ENUM!{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}}
451pub type D3D11_SRV_DIMENSION = D3D_SRV_DIMENSION;
452ENUM!{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}}
461ENUM!{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}}
472ENUM!{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}}
481ENUM!{enum D3D11_USAGE {
482    D3D11_USAGE_DEFAULT = 0,
483    D3D11_USAGE_IMMUTABLE = 1,
484    D3D11_USAGE_DYNAMIC = 2,
485    D3D11_USAGE_STAGING = 3,
486}}
487ENUM!{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}}
499ENUM!{enum D3D11_CPU_ACCESS_FLAG {
500    D3D11_CPU_ACCESS_WRITE = 0x10000,
501    D3D11_CPU_ACCESS_READ = 0x20000,
502}}
503ENUM!{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}}
522ENUM!{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}}
529ENUM!{enum D3D11_MAP_FLAG {
530    D3D11_MAP_FLAG_DO_NOT_WAIT = 0x100000,
531}}
532ENUM!{enum D3D11_RAISE_FLAG {
533    D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR = 0x1,
534}}
535ENUM!{enum D3D11_CLEAR_FLAG {
536    D3D11_CLEAR_DEPTH = 0x1,
537    D3D11_CLEAR_STENCIL = 0x2,
538}}
539pub type D3D11_RECT = RECT;
540STRUCT!{struct D3D11_BOX {
541    left: UINT,
542    top: UINT,
543    front: UINT,
544    right: UINT,
545    bottom: UINT,
546    back: UINT,
547}}
548RIDL!{#[uuid(0x1841e5c8, 0x16b0, 0x489b, 0xbc, 0xc8, 0x44, 0xcf, 0xb0, 0xd5, 0xde, 0xae)]
549interface 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}}
568ENUM!{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}}
578ENUM!{enum D3D11_DEPTH_WRITE_MASK {
579    D3D11_DEPTH_WRITE_MASK_ZERO = 0,
580    D3D11_DEPTH_WRITE_MASK_ALL = 1,
581}}
582ENUM!{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}}
592STRUCT!{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}}
598STRUCT!{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}}
608RIDL!{#[uuid(0x03823efb, 0x8d8f, 0x4e1c, 0x9a, 0xa2, 0xf6, 0x4b, 0xb2, 0xcb, 0xfd, 0xf1)]
609interface ID3D11DepthStencilState(ID3D11DepthStencilStateVtbl):
610    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
611    fn GetDesc(
612        pDesc: *mut D3D11_DEPTH_STENCIL_DESC,
613    ) -> (),
614}}
615ENUM!{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}}
634ENUM!{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}}
641ENUM!{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}}
649STRUCT!{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}}
659STRUCT!{struct D3D11_BLEND_DESC {
660    AlphaToCoverageEnable: BOOL,
661    IndependentBlendEnable: BOOL,
662    RenderTarget: [D3D11_RENDER_TARGET_BLEND_DESC; 8],
663}}
664RIDL!{#[uuid(0x75b68faa, 0x347d, 0x4159, 0x8f, 0x45, 0xa0, 0x64, 0x0f, 0x01, 0xcd, 0x9a)]
665interface ID3D11BlendState(ID3D11BlendStateVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
666    fn GetDesc(
667        pDesc: *mut D3D11_BLEND_DESC,
668    ) -> (),
669}}
670STRUCT!{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}}
682RIDL!{#[uuid(0x9bb4ab81, 0xab1a, 0x4d8f, 0xb5, 0x06, 0xfc, 0x04, 0x20, 0x0b, 0x6e, 0xe7)]
683interface ID3D11RasterizerState(ID3D11RasterizerStateVtbl):
684    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
685    fn GetDesc(
686        pDesc: *mut D3D11_RASTERIZER_DESC,
687    ) -> (),
688}}
689STRUCT!{struct D3D11_SUBRESOURCE_DATA {
690    pSysMem: *const c_void,
691    SysMemPitch: UINT,
692    SysMemSlicePitch: UINT,
693}}
694STRUCT!{struct D3D11_MAPPED_SUBRESOURCE {
695    pData: *mut c_void,
696    RowPitch: UINT,
697    DepthPitch: UINT,
698}}
699RIDL!{#[uuid(0xdc8e63f3, 0xd12b, 0x4952, 0xb4, 0x7b, 0x5e, 0x45, 0x02, 0x6a, 0x86, 0x2d)]
700interface 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}}
709STRUCT!{struct D3D11_BUFFER_DESC {
710    ByteWidth: UINT,
711    Usage: D3D11_USAGE,
712    BindFlags: UINT,
713    CPUAccessFlags: UINT,
714    MiscFlags: UINT,
715    StructureByteStride: UINT,
716}}
717RIDL!{#[uuid(0x48570b85, 0xd1ee, 0x4fcd, 0xa2, 0x50, 0xeb, 0x35, 0x07, 0x22, 0xb0, 0x37)]
718interface ID3D11Buffer(ID3D11BufferVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
719    fn GetDesc(
720        pDesc: *mut D3D11_BUFFER_DESC,
721    ) -> (),
722}}
723STRUCT!{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}}
733RIDL!{#[uuid(0xf8fb5c27, 0xc6b3, 0x4f75, 0xa4, 0xc8, 0x43, 0x9a, 0xf2, 0xef, 0x56, 0x4c)]
734interface ID3D11Texture1D(ID3D11Texture1DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
735    fn GetDesc(
736        pDesc: *mut D3D11_TEXTURE1D_DESC,
737    ) -> (),
738}}
739STRUCT!{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}}
751RIDL!{#[uuid(0x6f15aaf2, 0xd208, 0x4e89, 0x9a, 0xb4, 0x48, 0x95, 0x35, 0xd3, 0x4f, 0x9c)]
752interface ID3D11Texture2D(ID3D11Texture2DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
753    fn GetDesc(
754        pDesc: *mut D3D11_TEXTURE2D_DESC,
755    ) -> (),
756}}
757STRUCT!{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}}
768RIDL!{#[uuid(0x037e866e, 0xf56d, 0x4357, 0xa8, 0xaf, 0x9d, 0xab, 0xbe, 0x6e, 0x25, 0x0e)]
769interface ID3D11Texture3D(ID3D11Texture3DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
770    fn GetDesc(
771        pDesc: *mut D3D11_TEXTURE3D_DESC,
772    ) -> (),
773}}
774ENUM!{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}}
782RIDL!{#[uuid(0x839d1216, 0xbb2e, 0x412b, 0xb7, 0xf4, 0xa9, 0xdb, 0xeb, 0xe0, 0x8e, 0xd1)]
783interface ID3D11View(ID3D11ViewVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
784    fn GetResource(
785        ppResource: *mut *mut ID3D11Resource,
786    ) -> (),
787}}
788UNION!{union D3D11_BUFFER_SRV_u1 {
789    [u32; 1],
790    FirstElement FirstElement_mut: UINT,
791    ElementOffset ElementOffset_mut: UINT,
792}}
793UNION!{union D3D11_BUFFER_SRV_u2 {
794    [u32; 1],
795    NumElements NumElements_mut: UINT,
796    ElementWidth ElementWidth_mut: UINT,
797}}
798STRUCT!{struct D3D11_BUFFER_SRV {
799    u1: D3D11_BUFFER_SRV_u1,
800    u2: D3D11_BUFFER_SRV_u2,
801}}
802ENUM!{enum D3D11_BUFFEREX_SRV_FLAG {
803    D3D11_BUFFEREX_SRV_FLAG_RAW = 0x1,
804}}
805STRUCT!{struct D3D11_BUFFEREX_SRV {
806    FirstElement: UINT,
807    NumElements: UINT,
808    Flags: UINT,
809}}
810STRUCT!{struct D3D11_TEX1D_SRV {
811    MostDetailedMip: UINT,
812    MipLevels: UINT,
813}}
814STRUCT!{struct D3D11_TEX1D_ARRAY_SRV {
815    MostDetailedMip: UINT,
816    MipLevels: UINT,
817    FirstArraySlice: UINT,
818    ArraySize: UINT,
819}}
820STRUCT!{struct D3D11_TEX2D_SRV {
821    MostDetailedMip: UINT,
822    MipLevels: UINT,
823}}
824STRUCT!{struct D3D11_TEX2D_ARRAY_SRV {
825    MostDetailedMip: UINT,
826    MipLevels: UINT,
827    FirstArraySlice: UINT,
828    ArraySize: UINT,
829}}
830STRUCT!{struct D3D11_TEX3D_SRV {
831    MostDetailedMip: UINT,
832    MipLevels: UINT,
833}}
834STRUCT!{struct D3D11_TEXCUBE_SRV {
835    MostDetailedMip: UINT,
836    MipLevels: UINT,
837}}
838STRUCT!{struct D3D11_TEXCUBE_ARRAY_SRV {
839    MostDetailedMip: UINT,
840    MipLevels: UINT,
841    First2DArrayFace: UINT,
842    NumCubes: UINT,
843}}
844STRUCT!{struct D3D11_TEX2DMS_SRV {
845    UnusedField_NothingToDefine: UINT,
846}}
847STRUCT!{struct D3D11_TEX2DMS_ARRAY_SRV {
848    FirstArraySlice: UINT,
849    ArraySize: UINT,
850}}
851UNION!{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}}
865STRUCT!{struct D3D11_SHADER_RESOURCE_VIEW_DESC {
866    Format: DXGI_FORMAT,
867    ViewDimension: D3D11_SRV_DIMENSION,
868    u: D3D11_SHADER_RESOURCE_VIEW_DESC_u,
869}}
870RIDL!{#[uuid(0xb0e06fe0, 0x8192, 0x4e1a, 0xb1, 0xca, 0x36, 0xd7, 0x41, 0x47, 0x10, 0xb2)]
871interface ID3D11ShaderResourceView(ID3D11ShaderResourceViewVtbl): ID3D11View(ID3D11ViewVtbl) {
872    fn GetDesc(
873        pDesc: *mut D3D11_SHADER_RESOURCE_VIEW_DESC,
874    ) -> (),
875}}
876UNION!{union D3D11_BUFFER_RTV_u1 {
877    [u32; 1],
878    FirstElement FirstElement_mut: UINT,
879    ElementOffset ElementOffset_mut: UINT,
880}}
881UNION!{union D3D11_BUFFER_RTV_u2 {
882    [u32; 1],
883    NumElements NumElements_mut: UINT,
884    ElementWidth ElementWidth_mut: UINT,
885}}
886STRUCT!{struct D3D11_BUFFER_RTV {
887    u1: D3D11_BUFFER_RTV_u1,
888    u2: D3D11_BUFFER_RTV_u2,
889}}
890STRUCT!{struct D3D11_TEX1D_RTV {
891    MipSlice: UINT,
892}}
893STRUCT!{struct D3D11_TEX1D_ARRAY_RTV {
894    MipSlice: UINT,
895    FirstArraySlice: UINT,
896    ArraySize: UINT,
897}}
898STRUCT!{struct D3D11_TEX2D_RTV {
899    MipSlice: UINT,
900}}
901STRUCT!{struct D3D11_TEX2DMS_RTV {
902    UnusedField_NothingToDefine: UINT,
903}}
904STRUCT!{struct D3D11_TEX2D_ARRAY_RTV {
905    MipSlice: UINT,
906    FirstArraySlice: UINT,
907    ArraySize: UINT,
908}}
909STRUCT!{struct D3D11_TEX2DMS_ARRAY_RTV {
910    FirstArraySlice: UINT,
911    ArraySize: UINT,
912}}
913STRUCT!{struct D3D11_TEX3D_RTV {
914    MipSlice: UINT,
915    FirstWSlice: UINT,
916    WSize: UINT,
917}}
918UNION!{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}}
929STRUCT!{struct D3D11_RENDER_TARGET_VIEW_DESC {
930    Format: DXGI_FORMAT,
931    ViewDimension: D3D11_RTV_DIMENSION,
932    u: D3D11_RENDER_TARGET_VIEW_DESC_u,
933}}
934RIDL!{#[uuid(0xdfdba067, 0x0b8d, 0x4865, 0x87, 0x5b, 0xd7, 0xb4, 0x51, 0x6c, 0xc1, 0x64)]
935interface ID3D11RenderTargetView(ID3D11RenderTargetViewVtbl): ID3D11View(ID3D11ViewVtbl) {
936    fn GetDesc(
937        pDesc: *mut D3D11_RENDER_TARGET_VIEW_DESC,
938    ) -> (),
939}}
940STRUCT!{struct D3D11_TEX1D_DSV {
941    MipSlice: UINT,
942}}
943STRUCT!{struct D3D11_TEX1D_ARRAY_DSV {
944    MipSlice: UINT,
945    FirstArraySlice: UINT,
946    ArraySize: UINT,
947}}
948STRUCT!{struct D3D11_TEX2D_DSV {
949    MipSlice: UINT,
950}}
951STRUCT!{struct D3D11_TEX2D_ARRAY_DSV {
952    MipSlice: UINT,
953    FirstArraySlice: UINT,
954    ArraySize: UINT,
955}}
956STRUCT!{struct D3D11_TEX2DMS_DSV {
957    UnusedField_NothingToDefine: UINT,
958}}
959STRUCT!{struct D3D11_TEX2DMS_ARRAY_DSV {
960    FirstArraySlice: UINT,
961    ArraySize: UINT,
962}}
963ENUM!{enum D3D11_DSV_FLAG {
964    D3D11_DSV_READ_ONLY_DEPTH = 0x1,
965    D3D11_DSV_READ_ONLY_STENCIL = 0x2,
966}}
967UNION!{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}}
976STRUCT!{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}}
982RIDL!{#[uuid(0x9fdac92a, 0x1876, 0x48c3, 0xaf, 0xad, 0x25, 0xb9, 0x4f, 0x84, 0xa9, 0xb6)]
983interface ID3D11DepthStencilView(ID3D11DepthStencilViewVtbl): ID3D11View(ID3D11ViewVtbl) {
984    fn GetDesc(
985        pDesc: *mut D3D11_DEPTH_STENCIL_VIEW_DESC,
986    ) -> (),
987}}
988ENUM!{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}}
993STRUCT!{struct D3D11_BUFFER_UAV {
994    FirstElement: UINT,
995    NumElements: UINT,
996    Flags: UINT,
997}}
998STRUCT!{struct D3D11_TEX1D_UAV {
999    MipSlice: UINT,
1000}}
1001STRUCT!{struct D3D11_TEX1D_ARRAY_UAV {
1002    MipSlice: UINT,
1003    FirstArraySlice: UINT,
1004    ArraySize: UINT,
1005}}
1006STRUCT!{struct D3D11_TEX2D_UAV {
1007    MipSlice: UINT,
1008}}
1009STRUCT!{struct D3D11_TEX2D_ARRAY_UAV {
1010    MipSlice: UINT,
1011    FirstArraySlice: UINT,
1012    ArraySize: UINT,
1013}}
1014STRUCT!{struct D3D11_TEX3D_UAV {
1015    MipSlice: UINT,
1016    FirstWSlice: UINT,
1017    WSize: UINT,
1018}}
1019UNION!{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}}
1028STRUCT!{struct D3D11_UNORDERED_ACCESS_VIEW_DESC {
1029    Format: DXGI_FORMAT,
1030    ViewDimension: D3D11_UAV_DIMENSION,
1031    u: D3D11_UNORDERED_ACCESS_VIEW_DESC_u,
1032}}
1033RIDL!{#[uuid(0x28acf509, 0x7f5c, 0x48f6, 0x86, 0x11, 0xf3, 0x16, 0x01, 0x0a, 0x63, 0x80)]
1034interface ID3D11UnorderedAccessView(ID3D11UnorderedAccessViewVtbl): ID3D11View(ID3D11ViewVtbl) {
1035    fn GetDesc(
1036        pDesc: *mut D3D11_UNORDERED_ACCESS_VIEW_DESC,
1037    ) -> (),
1038}}
1039RIDL!{#[uuid(0x3b301d64, 0xd678, 0x4289, 0x88, 0x97, 0x22, 0xf8, 0x92, 0x8b, 0x72, 0xf3)]
1040interface ID3D11VertexShader(ID3D11VertexShaderVtbl):
1041    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1042RIDL!{#[uuid(0x8e5c6061, 0x628a, 0x4c8e, 0x82, 0x64, 0xbb, 0xe4, 0x5c, 0xb3, 0xd5, 0xdd)]
1043interface ID3D11HullShader(ID3D11HullShaderVtbl):
1044    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1045RIDL!{#[uuid(0xf582c508, 0x0f36, 0x490c, 0x99, 0x77, 0x31, 0xee, 0xce, 0x26, 0x8c, 0xfa)]
1046interface ID3D11DomainShader(ID3D11DomainShaderVtbl):
1047    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1048RIDL!{#[uuid(0x38325b96, 0xeffb, 0x4022, 0xba, 0x02, 0x2e, 0x79, 0x5b, 0x70, 0x27, 0x5c)]
1049interface ID3D11GeometryShader(ID3D11GeometryShaderVtbl):
1050    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1051RIDL!{#[uuid(0xea82e40d, 0x51dc, 0x4f33, 0x93, 0xd4, 0xdb, 0x7c, 0x91, 0x25, 0xae, 0x8c)]
1052interface ID3D11PixelShader(ID3D11PixelShaderVtbl):
1053    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1054RIDL!{#[uuid(0x4f5b196e, 0xc2bd, 0x495e, 0xbd, 0x01, 0x1f, 0xde, 0xd3, 0x8e, 0x49, 0x69)]
1055interface ID3D11ComputeShader(ID3D11ComputeShaderVtbl):
1056    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1057RIDL!{#[uuid(0xe4819ddc, 0x4cf0, 0x4025, 0xbd, 0x26, 0x5d, 0xe8, 0x2a, 0x3e, 0x07, 0xb7)]
1058interface ID3D11InputLayout(ID3D11InputLayoutVtbl):
1059    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
1060ENUM!{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}}
1098ENUM!{enum D3D11_FILTER_TYPE {
1099    D3D11_FILTER_TYPE_POINT = 0,
1100    D3D11_FILTER_TYPE_LINEAR = 1,
1101}}
1102ENUM!{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}}
1108pub const D3D11_FILTER_REDUCTION_TYPE_MASK: DWORD = 0x3;
1109pub const D3D11_FILTER_REDUCTION_TYPE_SHIFT: DWORD = 7;
1110pub const D3D11_FILTER_TYPE_MASK: DWORD = 0x3;
1111pub const D3D11_MIN_FILTER_SHIFT: DWORD = 4;
1112pub const D3D11_MAG_FILTER_SHIFT: DWORD = 2;
1113pub const D3D11_MIP_FILTER_SHIFT: DWORD = 0;
1114pub const D3D11_COMPARISON_FILTERING_BIT: DWORD = 0x80;
1115pub const D3D11_ANISOTROPIC_FILTERING_BIT: DWORD = 0x40;
1116ENUM!{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}}
1123STRUCT!{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}}
1135RIDL!{#[uuid(0xda6fea51, 0x564c, 0x4487, 0x98, 0x10, 0xf0, 0xd0, 0xf9, 0xb4, 0xe3, 0xa5)]
1136interface ID3D11SamplerState(ID3D11SamplerStateVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1137    fn GetDesc(
1138        pDesc: *mut D3D11_SAMPLER_DESC,
1139    ) -> (),
1140}}
1141ENUM!{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}}
1174ENUM!{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}}
1188RIDL!{#[uuid(0x4b35d0cd, 0x1e15, 0x4258, 0x9c, 0x98, 0x1b, 0x13, 0x33, 0xf6, 0xdd, 0x3b)]
1189interface ID3D11Asynchronous(ID3D11AsynchronousVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1190    fn GetDataSize() -> UINT,
1191}}
1192ENUM!{enum D3D11_ASYNC_GETDATA_FLAG {
1193    D3D11_ASYNC_GETDATA_DONOTFLUSH = 0x1,
1194}}
1195ENUM!{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}}
1213ENUM!{enum D3D11_QUERY_MISC_FLAG {
1214    D3D11_QUERY_MISC_PREDICATEHINT = 0x1,
1215}}
1216STRUCT!{struct D3D11_QUERY_DESC {
1217    Query: D3D11_QUERY,
1218    MiscFlags: UINT,
1219}}
1220RIDL!{#[uuid(0xd6c00747, 0x87b7, 0x425e, 0xb8, 0x4d, 0x44, 0xd1, 0x08, 0x56, 0x0a, 0xfd)]
1221interface ID3D11Query(ID3D11QueryVtbl): ID3D11Asynchronous(ID3D11AsynchronousVtbl) {
1222    fn GetDesc(
1223        pDesc: *mut D3D11_QUERY_DESC,
1224    ) -> (),
1225}}
1226RIDL!{#[uuid(0x9eb576dd, 0x9f77, 0x4d86, 0x81, 0xaa, 0x8b, 0xab, 0x5f, 0xe4, 0x90, 0xe2)]
1227interface ID3D11Predicate(ID3D11PredicateVtbl): ID3D11Query(ID3D11QueryVtbl) {}}
1228STRUCT!{struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT {
1229    Frequency: UINT64,
1230    Disjoint: BOOL,
1231}}
1232STRUCT!{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}}
1245STRUCT!{struct D3D11_QUERY_DATA_SO_STATISTICS {
1246    NumPrimitivesWritten: UINT64,
1247    PrimitivesStorageNeeded: UINT64,
1248}}
1249ENUM!{enum D3D11_COUNTER {
1250    D3D11_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000,
1251}}
1252ENUM!{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}}
1258STRUCT!{struct D3D11_COUNTER_DESC {
1259    Counter: D3D11_COUNTER,
1260    MiscFlags: UINT,
1261}}
1262STRUCT!{struct D3D11_COUNTER_INFO {
1263    LastDeviceDependentCounter: D3D11_COUNTER,
1264    NumSimultaneousCounters: UINT,
1265    NumDetectableParallelUnits: UINT8,
1266}}
1267RIDL!{#[uuid(0x6e8c49fb, 0xa371, 0x4770, 0xb4, 0x40, 0x29, 0x08, 0x60, 0x22, 0xb7, 0x41)]
1268interface ID3D11Counter(ID3D11CounterVtbl): ID3D11Asynchronous(ID3D11AsynchronousVtbl) {
1269    fn GetDesc(
1270        pDesc: *mut D3D11_COUNTER_DESC,
1271    ) -> (),
1272}}
1273ENUM!{enum D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS {
1274    D3D11_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
1275    D3D11_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe,
1276}}
1277ENUM!{enum D3D11_DEVICE_CONTEXT_TYPE {
1278    D3D11_DEVICE_CONTEXT_IMMEDIATE = 0,
1279    D3D11_DEVICE_CONTEXT_DEFERRED = D3D11_DEVICE_CONTEXT_IMMEDIATE + 1u32,
1280}}
1281STRUCT!{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}}
1291RIDL!{#[uuid(0xa6cd7faa, 0xb0b7, 0x4a2f, 0x94, 0x36, 0x86, 0x62, 0xa6, 0x57, 0x97, 0xcb)]
1292interface 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}}
1308RIDL!{#[uuid(0xddf57cba, 0x9543, 0x46e4, 0xa1, 0x2b, 0xf2, 0x07, 0xa0, 0xfe, 0x7f, 0xed)]
1309interface 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}}
1324RIDL!{#[uuid(0xa24bc4d1, 0x769e, 0x43f7, 0x80, 0x13, 0x98, 0xff, 0x56, 0x6c, 0x18, 0xe2)]
1325interface ID3D11CommandList(ID3D11CommandListVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1326    fn GetContextFlags() -> UINT,
1327}}
1328ENUM!{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}}
1347STRUCT!{struct D3D11_FEATURE_DATA_THREADING {
1348    DriverConcurrentCreates: BOOL,
1349    DriverCommandLists: BOOL,
1350}}
1351STRUCT!{struct D3D11_FEATURE_DATA_DOUBLES {
1352    DoublePrecisionFloatShaderOps: BOOL,
1353}}
1354STRUCT!{struct D3D11_FEATURE_DATA_FORMAT_SUPPORT {
1355    InFormat: DXGI_FORMAT,
1356    OutFormatSupport: UINT,
1357}}
1358STRUCT!{struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2 {
1359    InFormat: DXGI_FORMAT,
1360    OutFormatSupport2: UINT,
1361}}
1362STRUCT!{struct D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS {
1363    ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x: BOOL,
1364}}
1365STRUCT!{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}}
1381STRUCT!{struct D3D11_FEATURE_DATA_ARCHITECTURE_INFO {
1382    TileBasedDeferredRenderer: BOOL,
1383}}
1384STRUCT!{struct D3D11_FEATURE_DATA_D3D9_OPTIONS {
1385    FullNonPow2TextureSupport: BOOL,
1386}}
1387STRUCT!{struct D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT {
1388    SupportsDepthAsTextureWithLessEqualComparisonFilter: BOOL,
1389}}
1390ENUM!{enum D3D11_SHADER_MIN_PRECISION_SUPPORT {
1391    D3D11_SHADER_MIN_PRECISION_10_BIT = 0x1,
1392    D3D11_SHADER_MIN_PRECISION_16_BIT = 0x2,
1393}}
1394STRUCT!{struct D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT {
1395    PixelShaderMinPrecision: UINT,
1396    AllOtherShaderStagesMinPrecision: UINT,
1397}}
1398ENUM!{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}}
1404STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS1 {
1405    TiledResourcesTier: D3D11_TILED_RESOURCES_TIER,
1406    MinMaxFiltering: BOOL,
1407    ClearViewAlsoSupportsDepthOnlyFormats: BOOL,
1408    MapOnDefaultBuffers: BOOL,
1409}}
1410STRUCT!{struct D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT {
1411    SimpleInstancingSupported: BOOL,
1412}}
1413STRUCT!{struct D3D11_FEATURE_DATA_MARKER_SUPPORT {
1414    Profile: BOOL,
1415}}
1416STRUCT!{struct D3D11_FEATURE_DATA_D3D9_OPTIONS1 {
1417    FullNonPow2TextureSupported: BOOL,
1418    DepthAsTextureWithLessEqualComparisonFilterSupported: BOOL,
1419    SimpleInstancingSupported: BOOL,
1420    TextureCubeFaceRenderTargetWithNonCubeDepthStencilSupported: BOOL,
1421}}
1422ENUM!{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}}
1428STRUCT!{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}}
1438STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS3 {
1439    VPAndRTArrayIndexFromAnyShaderFeedingRasterizer: BOOL,
1440}}
1441STRUCT!{struct D3D11_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT {
1442    MaxGPUVirtualAddressBitsPerResource: UINT,
1443    MaxGPUVirtualAddressBitsPerProcess: UINT,
1444}}
1445RIDL!{#[uuid(0xc0bfa96c, 0xe089, 0x44fb, 0x8e, 0xaf, 0x26, 0xf8, 0x79, 0x61, 0x90, 0xda)]
1446interface 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        NumUAVs: UINT,
1856        ppUnorderedAccessViews: *mut *mut ID3D11UnorderedAccessView,
1857    ) -> (),
1858    fn OMGetBlendState(
1859        ppBlendState: *mut *mut ID3D11BlendState,
1860        BlendFactor: &mut [FLOAT; 4],
1861        pSampleMask: *mut UINT,
1862    ) -> (),
1863    fn OMGetDepthStencilState(
1864        ppDepthStencilState: *mut *mut ID3D11DepthStencilState,
1865        pStencilRef: *mut UINT,
1866    ) -> (),
1867    fn SOGetTargets(
1868        NumBuffers: UINT,
1869        ppSOTargets: *mut *mut ID3D11Buffer,
1870    ) -> (),
1871    fn RSGetState(
1872        ppRasterizerState: *mut *mut ID3D11RasterizerState,
1873    ) -> (),
1874    fn RSGetViewports(
1875        pNumViewports: *mut UINT,
1876        pViewports: *mut D3D11_VIEWPORT,
1877    ) -> (),
1878    fn RSGetScissorRects(
1879        pNumRects: *mut UINT,
1880        pRects: *mut D3D11_RECT,
1881    ) -> (),
1882    fn HSGetShaderResources(
1883        StartSlot: UINT,
1884        NumViews: UINT,
1885        ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView,
1886    ) -> (),
1887    fn HSGetShader(
1888        ppHullShader: *mut *mut ID3D11HullShader,
1889        ppClassInstances: *mut *mut ID3D11ClassInstance,
1890        pNumClassInstances: *mut UINT,
1891    ) -> (),
1892    fn HSGetSamplers(
1893        StartSlot: UINT,
1894        NumSamplers: UINT,
1895        ppSamplers: *mut *mut ID3D11SamplerState,
1896    ) -> (),
1897    fn HSGetConstantBuffers(
1898        StartSlot: UINT,
1899        NumBuffers: UINT,
1900        ppConstantBuffers: *mut *mut ID3D11Buffer,
1901    ) -> (),
1902    fn DSGetShaderResources(
1903        StartSlot: UINT,
1904        NumViews: UINT,
1905        ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView,
1906    ) -> (),
1907    fn DSGetShader(
1908        ppDomainShader: *mut *mut ID3D11DomainShader,
1909        ppClassInstances: *mut *mut ID3D11ClassInstance,
1910        pNumClassInstances: *mut UINT,
1911    ) -> (),
1912    fn DSGetSamplers(
1913        StartSlot: UINT,
1914        NumSamplers: UINT,
1915        ppSamplers: *mut *mut ID3D11SamplerState,
1916    ) -> (),
1917    fn DSGetConstantBuffers(
1918        StartSlot: UINT,
1919        NumBuffers: UINT,
1920        ppConstantBuffers: *mut *mut ID3D11Buffer,
1921    ) -> (),
1922    fn CSGetShaderResources(
1923        StartSlot: UINT,
1924        NumViews: UINT,
1925        ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView,
1926    ) -> (),
1927    fn CSGetUnorderedAccessViews(
1928        StartSlot: UINT,
1929        NumUAVs: UINT,
1930        ppUnorderedAccessViews: *mut *mut ID3D11UnorderedAccessView,
1931    ) -> (),
1932    fn CSGetShader(
1933        ppComputeShader: *mut *mut ID3D11ComputeShader,
1934        ppClassInstances: *mut *mut ID3D11ClassInstance,
1935        pNumClassInstances: *mut UINT,
1936    ) -> (),
1937    fn CSGetSamplers(
1938        StartSlot: UINT,
1939        NumSamplers: UINT,
1940        ppSamplers: *mut *mut ID3D11SamplerState,
1941    ) -> (),
1942    fn CSGetConstantBuffers(
1943        StartSlot: UINT,
1944        NumBuffers: UINT,
1945        ppConstantBuffers: *mut *mut ID3D11Buffer,
1946    ) -> (),
1947    fn ClearState() -> (),
1948    fn Flush() -> (),
1949    fn GetType() -> D3D11_DEVICE_CONTEXT_TYPE,
1950    fn GetContextFlags() -> UINT,
1951    fn FinishCommandList(
1952        RestoreDeferredContextState: BOOL,
1953        ppCommandList: *mut *mut ID3D11CommandList,
1954    ) -> HRESULT,
1955}}
1956DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG2_MOCOMP,
1957    0xe6a9f44b, 0x61b0, 0x4563, 0x9e, 0xa4, 0x63, 0xd2, 0xa3, 0xc6, 0xfe, 0x66}
1958DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG2_IDCT,
1959    0xbf22ad00, 0x03ea, 0x4690, 0x80, 0x77, 0x47, 0x33, 0x46, 0x20, 0x9b, 0x7e}
1960DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG2_VLD,
1961    0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9}
1962DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG1_VLD,
1963    0x6f3ec719, 0x3735, 0x42cc, 0x80, 0x63, 0x65, 0xcc, 0x3c, 0xb3, 0x66, 0x16}
1964DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG2and1_VLD,
1965    0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60}
1966DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_MOCOMP_NOFGT,
1967    0x1b81be64, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1968DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_MOCOMP_FGT,
1969    0x1b81be65, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1970DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_IDCT_NOFGT,
1971    0x1b81be66, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1972DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_IDCT_FGT,
1973    0x1b81be67, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1974DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_NOFGT,
1975    0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1976DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_FGT,
1977    0x1b81be69, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1978DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_WITHFMOASO_NOFGT,
1979    0xd5f04ff9, 0x3418, 0x45d8, 0x95, 0x61, 0x32, 0xa7, 0x6a, 0xae, 0x2d, 0xdd}
1980DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_STEREO_PROGRESSIVE_NOFGT,
1981    0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d}
1982DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_STEREO_NOFGT,
1983    0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52}
1984DEFINE_GUID!{D3D11_DECODER_PROFILE_H264_VLD_MULTIVIEW_NOFGT,
1985    0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c}
1986DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV8_POSTPROC,
1987    0x1b81be80, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1988DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV8_MOCOMP,
1989    0x1b81be81, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1990DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV9_POSTPROC,
1991    0x1b81be90, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1992DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV9_MOCOMP,
1993    0x1b81be91, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1994DEFINE_GUID!{D3D11_DECODER_PROFILE_WMV9_IDCT,
1995    0x1b81be94, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1996DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_POSTPROC,
1997    0x1b81bea0, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
1998DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_MOCOMP,
1999    0x1b81bea1, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
2000DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_IDCT,
2001    0x1b81bea2, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
2002DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_VLD,
2003    0x1b81bea3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
2004DEFINE_GUID!{D3D11_DECODER_PROFILE_VC1_D2010,
2005    0x1b81bea4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5}
2006DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG4PT2_VLD_SIMPLE,
2007    0xefd64d74, 0xc9e8, 0x41d7, 0xa5, 0xe9, 0xe9, 0xb0, 0xe3, 0x9f, 0xa3, 0x19}
2008DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_NOGMC,
2009    0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e}
2010DEFINE_GUID!{D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_GMC,
2011    0xab998b5b, 0x4258, 0x44a9, 0x9f, 0xeb, 0x94, 0xe5, 0x97, 0xa6, 0xba, 0xae}
2012DEFINE_GUID!{D3D11_DECODER_PROFILE_HEVC_VLD_MAIN,
2013    0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0}
2014DEFINE_GUID!{D3D11_DECODER_PROFILE_HEVC_VLD_MAIN10,
2015    0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13}
2016DEFINE_GUID!{D3D11_DECODER_PROFILE_VP9_VLD_PROFILE0,
2017    0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e}
2018DEFINE_GUID!{D3D11_DECODER_PROFILE_VP8_VLD,
2019    0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7}
2020STRUCT!{struct D3D11_VIDEO_DECODER_DESC {
2021    Guid: GUID,
2022    SampleWidth: UINT,
2023    SampleHeight: UINT,
2024    OutputFormat: DXGI_FORMAT,
2025}}
2026STRUCT!{struct D3D11_VIDEO_DECODER_CONFIG {
2027    guidConfigBitstreamEncryption: GUID,
2028    guidConfigMBcontrolEncryption: GUID,
2029    guidConfigResidDiffEncryption: GUID,
2030    ConfigBitstreamRaw: UINT,
2031    ConfigMBcontrolRasterOrder: UINT,
2032    ConfigResidDiffHost: UINT,
2033    ConfigSpatialResid8: UINT,
2034    ConfigResid8Subtraction: UINT,
2035    ConfigSpatialHost8or9Clipping: UINT,
2036    ConfigSpatialResidInterleaved: UINT,
2037    ConfigIntraResidUnsigned: UINT,
2038    ConfigResidDiffAccelerator: UINT,
2039    ConfigHostInverseScan: UINT,
2040    ConfigSpecificIDCT: UINT,
2041    Config4GroupedCoefs: UINT,
2042    ConfigMinRenderTargetBuffCount: USHORT,
2043    ConfigDecoderSpecific: USHORT,
2044}}
2045ENUM!{enum D3D11_VIDEO_DECODER_BUFFER_TYPE {
2046    D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
2047    D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1,
2048    D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2,
2049    D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3,
2050    D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4,
2051    D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5,
2052    D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6,
2053    D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7,
2054    D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8,
2055}}
2056STRUCT!{struct D3D11_AES_CTR_IV {
2057    IV: UINT64,
2058    Count: UINT64,
2059}}
2060STRUCT!{struct D3D11_ENCRYPTED_BLOCK_INFO {
2061    NumEncryptedBytesAtBeginning: UINT,
2062    NumBytesInSkipPattern: UINT,
2063    NumBytesInEncryptPattern: UINT,
2064}}
2065STRUCT!{struct D3D11_VIDEO_DECODER_BUFFER_DESC {
2066    BufferType: D3D11_VIDEO_DECODER_BUFFER_TYPE,
2067    BufferIndex: UINT,
2068    DataOffset: UINT,
2069    DataSize: UINT,
2070    FirstMBaddress: UINT,
2071    NumMBsInBuffer: UINT,
2072    Width: UINT,
2073    Height: UINT,
2074    Stride: UINT,
2075    ReservedBits: UINT,
2076    pIV: *mut c_void,
2077    IVSize: UINT,
2078    PartialEncryption: BOOL,
2079    EncryptedBlockInfo: D3D11_ENCRYPTED_BLOCK_INFO,
2080}}
2081STRUCT!{struct D3D11_VIDEO_DECODER_EXTENSION {
2082    Function: UINT,
2083    pPrivateInputData: *mut c_void,
2084    PrivateInputDataSize: UINT,
2085    pPrivateOutputData: *mut c_void,
2086    PrivateOutputDataSize: UINT,
2087    ResourceCount: UINT,
2088    ppResourceList: *mut *mut ID3D11Resource,
2089}}
2090RIDL!{#[uuid(0x3c9c5b51, 0x995d, 0x48d1, 0x9b, 0x8d, 0xfa, 0x5c, 0xae, 0xde, 0xd6, 0x5c)]
2091interface ID3D11VideoDecoder(ID3D11VideoDecoderVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2092    fn GetCreationParameters(
2093        pVideoDesc: *mut D3D11_VIDEO_DECODER_DESC,
2094        pConfig: *mut D3D11_VIDEO_DECODER_CONFIG,
2095    ) -> HRESULT,
2096    fn GetDriverHandle(
2097        pDriverHandle: *mut HANDLE,
2098    ) -> HRESULT,
2099}}
2100ENUM!{enum D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT {
2101    D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT = 0x1,
2102    D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT = 0x2,
2103}}
2104ENUM!{enum D3D11_VIDEO_PROCESSOR_DEVICE_CAPS {
2105    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_LINEAR_SPACE = 0x1,
2106    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_xvYCC = 0x2,
2107    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_RGB_RANGE_CONVERSION = 0x4,
2108    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION = 0x8,
2109    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_NOMINAL_RANGE = 0x10,
2110}}
2111ENUM!{enum D3D11_VIDEO_PROCESSOR_FEATURE_CAPS {
2112    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_FILL = 0x1,
2113    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_CONSTRICTION = 0x2,
2114    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LUMA_KEY = 0x4,
2115    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_PALETTE = 0x8,
2116    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LEGACY = 0x10,
2117    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_STEREO = 0x20,
2118    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ROTATION = 0x40,
2119    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_STREAM = 0x80,
2120    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_PIXEL_ASPECT_RATIO = 0x100,
2121    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_MIRROR = 0x200,
2122    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_SHADER_USAGE = 0x400,
2123}}
2124ENUM!{enum D3D11_VIDEO_PROCESSOR_FILTER_CAPS {
2125    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS = 0x1,
2126    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST = 0x2,
2127    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE = 0x4,
2128    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION = 0x8,
2129    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION = 0x10,
2130    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT = 0x20,
2131    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_ANAMORPHIC_SCALING = 0x40,
2132    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_STEREO_ADJUSTMENT = 0x80,
2133}}
2134ENUM!{enum D3D11_VIDEO_PROCESSOR_FORMAT_CAPS {
2135    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_INTERLACED = 0x1,
2136    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_PROCAMP = 0x2,
2137    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_LUMA_KEY = 0x4,
2138    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_PALETTE_INTERLACED = 0x8,
2139}}
2140ENUM!{enum D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS {
2141    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DENOISE = 0x1,
2142    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DERINGING = 0x2,
2143    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_EDGE_ENHANCEMENT = 0x4,
2144    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_COLOR_CORRECTION = 0x8,
2145    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_FLESH_TONE_MAPPING = 0x10,
2146    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_IMAGE_STABILIZATION = 0x20,
2147    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_SUPER_RESOLUTION = 0x40,
2148    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_ANAMORPHIC_SCALING = 0x80,
2149}}
2150ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_CAPS {
2151    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_MONO_OFFSET = 0x1,
2152    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_ROW_INTERLEAVED = 0x2,
2153    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_COLUMN_INTERLEAVED = 0x4,
2154    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_CHECKERBOARD = 0x8,
2155    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_FLIP_MODE = 0x10,
2156}}
2157STRUCT!{struct D3D11_VIDEO_PROCESSOR_CAPS {
2158    DeviceCaps: UINT,
2159    FeatureCaps: UINT,
2160    FilterCaps: UINT,
2161    InputFormatCaps: UINT,
2162    AutoStreamCaps: UINT,
2163    StereoCaps: UINT,
2164    RateConversionCapsCount: UINT,
2165    MaxInputStreams: UINT,
2166    MaxStreamStates: UINT,
2167}}
2168ENUM!{enum D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS {
2169    D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BLEND = 0x1,
2170    D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BOB = 0x2,
2171    D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE = 0x4,
2172    D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION = 0x8,
2173    D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_INVERSE_TELECINE = 0x10,
2174    D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_FRAME_RATE_CONVERSION = 0x20,
2175}}
2176ENUM!{enum D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS {
2177    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32 = 0x1,
2178    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_22 = 0x2,
2179    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2224 = 0x4,
2180    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2332 = 0x8,
2181    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32322 = 0x10,
2182    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_55 = 0x20,
2183    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_64 = 0x40,
2184    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_87 = 0x80,
2185    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_222222222223 = 0x100,
2186    D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_OTHER = 0x80000000,
2187}}
2188STRUCT!{struct D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS {
2189    PastFrames: UINT,
2190    FutureFrames: UINT,
2191    ProcessorCaps: UINT,
2192    ITelecineCaps: UINT,
2193    CustomRateCount: UINT,
2194}}
2195ENUM!{enum D3D11_CONTENT_PROTECTION_CAPS {
2196    D3D11_CONTENT_PROTECTION_CAPS_SOFTWARE = 0x1,
2197    D3D11_CONTENT_PROTECTION_CAPS_HARDWARE = 0x2,
2198    D3D11_CONTENT_PROTECTION_CAPS_PROTECTION_ALWAYS_ON = 0x4,
2199    D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION = 0x8,
2200    D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY = 0x10,
2201    D3D11_CONTENT_PROTECTION_CAPS_FRESHEN_SESSION_KEY = 0x20,
2202    D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK = 0x40,
2203    D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK_KEY = 0x80,
2204    D3D11_CONTENT_PROTECTION_CAPS_SEQUENTIAL_CTR_IV = 0x100,
2205    D3D11_CONTENT_PROTECTION_CAPS_ENCRYPT_SLICEDATA_ONLY = 0x200,
2206    D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT = 0x400,
2207    D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_PROTECT_UNCOMPRESSED = 0x800,
2208    D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_PROTECTED_MEMORY_PAGEABLE = 0x1000,
2209    D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_TEARDOWN = 0x2000,
2210    D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_DRM_COMMUNICATION = 0x4000,
2211}}
2212DEFINE_GUID!{D3D11_CRYPTO_TYPE_AES128_CTR,
2213    0x9b6bd711, 0x4f74, 0x41c9, 0x9e, 0x7b, 0x0b, 0xe2, 0xd7, 0xd9, 0x3b, 0x4f}
2214DEFINE_GUID!{D3D11_DECODER_ENCRYPTION_HW_CENC,
2215    0x89d6ac4f, 0x09f2, 0x4229, 0xb2, 0xcd, 0x37, 0x74, 0x0a, 0x6d, 0xfd, 0x81}
2216DEFINE_GUID!{D3D11_KEY_EXCHANGE_HW_PROTECTION,
2217    0xb1170d8a, 0x628d, 0x4da3, 0xad, 0x3b, 0x82, 0xdd, 0xb0, 0x8b, 0x49, 0x70}
2218STRUCT!{struct D3D11_VIDEO_CONTENT_PROTECTION_CAPS {
2219    Caps: UINT,
2220    KeyExchangeTypeCount: UINT,
2221    BlockAlignmentSize: UINT,
2222    ProtectedMemorySize: ULONGLONG,
2223}}
2224STRUCT!{struct D3D11_VIDEO_PROCESSOR_CUSTOM_RATE {
2225    CustomRate: DXGI_RATIONAL,
2226    OutputFrames: UINT,
2227    InputInterlaced: BOOL,
2228    InputFramesOrFields: UINT,
2229}}
2230ENUM!{enum D3D11_VIDEO_PROCESSOR_FILTER {
2231    D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS = 0,
2232    D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST = 1,
2233    D3D11_VIDEO_PROCESSOR_FILTER_HUE = 2,
2234    D3D11_VIDEO_PROCESSOR_FILTER_SATURATION = 3,
2235    D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION = 4,
2236    D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT = 5,
2237    D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6,
2238    D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT = 7,
2239}}
2240STRUCT!{struct D3D11_VIDEO_PROCESSOR_FILTER_RANGE {
2241    Minimum: c_int,
2242    Maximum: c_int,
2243    Default: c_int,
2244    Multiplier: c_float,
2245}}
2246ENUM!{enum D3D11_VIDEO_FRAME_FORMAT {
2247    D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0,
2248    D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
2249    D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2,
2250}}
2251ENUM!{enum D3D11_VIDEO_USAGE {
2252    D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0,
2253    D3D11_VIDEO_USAGE_OPTIMAL_SPEED = 1,
2254    D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2,
2255}}
2256STRUCT!{struct D3D11_VIDEO_PROCESSOR_CONTENT_DESC {
2257    InputFrameFormat: D3D11_VIDEO_FRAME_FORMAT,
2258    InputFrameRate: DXGI_RATIONAL,
2259    InputWidth: UINT,
2260    InputHeight: UINT,
2261    OutputFrameRate: DXGI_RATIONAL,
2262    OutputWidth: UINT,
2263    OutputHeight: UINT,
2264    Usage: D3D11_VIDEO_USAGE,
2265}}
2266RIDL!{#[uuid(0x31627037, 0x53ab, 0x4200, 0x90, 0x61, 0x05, 0xfa, 0xa9, 0xab, 0x45, 0xf9)]
2267interface ID3D11VideoProcessorEnumerator(ID3D11VideoProcessorEnumeratorVtbl):
2268    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2269    fn GetVideoProcessorContentDesc(
2270        pContentDesc: *mut D3D11_VIDEO_PROCESSOR_CONTENT_DESC,
2271    ) -> HRESULT,
2272    fn CheckVideoProcessorFormat(
2273        Format: DXGI_FORMAT,
2274        pFlags: *mut UINT,
2275    ) -> HRESULT,
2276    fn GetVideoProcessorCaps(
2277        pCaps: *mut D3D11_VIDEO_PROCESSOR_CAPS,
2278    ) -> HRESULT,
2279    fn GetVideoProcessorRateConversionCaps(
2280        TypeIndex: UINT,
2281        pCaps: *mut D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS,
2282    ) -> HRESULT,
2283    fn GetVideoProcessorCustomRate(
2284        TypeIndex: UINT,
2285        CustomRateIndex: UINT,
2286        pRate: *mut D3D11_VIDEO_PROCESSOR_CUSTOM_RATE,
2287    ) -> HRESULT,
2288    fn GetVideoProcessorFilterRange(
2289        Filter: D3D11_VIDEO_PROCESSOR_FILTER,
2290        Range: *mut D3D11_VIDEO_PROCESSOR_FILTER_RANGE,
2291    ) -> HRESULT,
2292}}
2293STRUCT!{struct D3D11_VIDEO_COLOR_RGBA {
2294    R: c_float,
2295    G: c_float,
2296    B: c_float,
2297    A: c_float,
2298}}
2299STRUCT!{struct D3D11_VIDEO_COLOR_YCbCrA {
2300    Y: c_float,
2301    Cb: c_float,
2302    Cr: c_float,
2303    A: c_float,
2304}}
2305UNION!{union D3D11_VIDEO_COLOR {
2306    [f32; 4],
2307    YCbCr YCbCr_mut: D3D11_VIDEO_COLOR_YCbCrA,
2308    RGBA RGBA_mut: D3D11_VIDEO_COLOR_RGBA,
2309}}
2310ENUM!{enum D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE {
2311    D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_UNDEFINED = 0,
2312    D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_16_235 = 1,
2313    D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_0_255 = 2,
2314}}
2315STRUCT!{struct D3D11_VIDEO_PROCESSOR_COLOR_SPACE {
2316    bitfield: UINT,
2317}}
2318BITFIELD!{D3D11_VIDEO_PROCESSOR_COLOR_SPACE bitfield: UINT [
2319    Usage set_Usage[0..1],
2320    RGB_Range set_RGB_Range[1..2],
2321    YCbCr_Matrix set_YCbCr_Matrix[2..3],
2322    YCbCr_xvYCC set_YCbCr_xvYCC[3..4],
2323    Nominal_Range set_Nominal_Range[4..6],
2324]}
2325ENUM!{enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE {
2326    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0,
2327    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1,
2328    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2,
2329    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
2330}}
2331ENUM!{enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE {
2332    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0,
2333    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1,
2334    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2,
2335}}
2336ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT {
2337    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0,
2338    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1,
2339    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2,
2340    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3,
2341    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4,
2342    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5,
2343    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6,
2344    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7,
2345}}
2346ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE {
2347    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0,
2348    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1,
2349    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2,
2350}}
2351ENUM!{enum D3D11_VIDEO_PROCESSOR_ROTATION {
2352    D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY = 0,
2353    D3D11_VIDEO_PROCESSOR_ROTATION_90 = 1,
2354    D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2,
2355    D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3,
2356}}
2357STRUCT!{struct D3D11_VIDEO_PROCESSOR_STREAM {
2358    Enable: BOOL,
2359    OutputIndex: UINT,
2360    InputFrameOrField: UINT,
2361    PastFrames: UINT,
2362    FutureFrames: UINT,
2363    ppPastSurfaces: *mut *mut ID3D11VideoProcessorInputView,
2364    pInputSurface: *mut ID3D11VideoProcessorInputView,
2365    ppFutureSurfaces: *mut *mut ID3D11VideoProcessorInputView,
2366    ppPastSurfacesRight: *mut *mut ID3D11VideoProcessorInputView,
2367    pInputSurfaceRight: *mut ID3D11VideoProcessorInputView,
2368    ppFutureSurfacesRight: *mut *mut ID3D11VideoProcessorInputView,
2369}}
2370RIDL!{#[uuid(0x1d7b0652, 0x185f, 0x41c6, 0x85, 0xce, 0x0c, 0x5b, 0xe3, 0xd4, 0xae, 0x6c)]
2371interface ID3D11VideoProcessor(ID3D11VideoProcessorVtbl):
2372    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2373    fn GetContentDesc(
2374        pDesc: *mut D3D11_VIDEO_PROCESSOR_CONTENT_DESC,
2375    ) -> (),
2376    fn GetRateConversionCaps(
2377        pCaps: *mut D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS,
2378    ) -> (),
2379}}
2380STRUCT!{struct D3D11_OMAC {
2381    Omac: [BYTE; 16],
2382}}
2383ENUM!{enum D3D11_AUTHENTICATED_CHANNEL_TYPE {
2384    D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1,
2385    D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2,
2386    D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3,
2387}}
2388RIDL!{#[uuid(0x3015a308, 0xdcbd, 0x47aa, 0xa7, 0x47, 0x19, 0x24, 0x86, 0xd1, 0x4d, 0x4a)]
2389interface ID3D11AuthenticatedChannel(ID3D11AuthenticatedChannelVtbl):
2390    ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2391    fn GetCertificateSize(
2392        pCertificateSize: *mut UINT,
2393    ) -> HRESULT,
2394    fn GetCertificate(
2395        CertificateSize: UINT,
2396        pCertificate: *mut BYTE,
2397    ) -> HRESULT,
2398    fn GetChannelHandle(
2399        pChannelHandle: *mut HANDLE,
2400    ) -> (),
2401}}
2402DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_PROTECTION,
2403    0xa84eb584, 0xc495, 0x48aa, 0xb9, 0x4d, 0x8b, 0xd2, 0xd6, 0xfb, 0xce, 0x05}
2404DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE,
2405    0xbc1b18a5, 0xb1fb, 0x42ab, 0xbd, 0x94, 0xb5, 0x82, 0x8b, 0x4b, 0xf7, 0xbe}
2406DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE,
2407    0xec1c539d, 0x8cff, 0x4e2a, 0xbc, 0xc4, 0xf5, 0x69, 0x2f, 0x99, 0xf4, 0x80}
2408DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION,
2409    0x2634499e, 0xd018, 0x4d74, 0xac, 0x17, 0x7f, 0x72, 0x40, 0x59, 0x52, 0x8d}
2410DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT,
2411    0x0db207b3, 0x9450, 0x46a6, 0x82, 0xde, 0x1b, 0x96, 0xd4, 0x4f, 0x9c, 0xf2}
2412DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS,
2413    0x649bbadb, 0xf0f4, 0x4639, 0xa1, 0x5b, 0x24, 0x39, 0x3f, 0xc3, 0xab, 0xac}
2414DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT,
2415    0x012f0bd6, 0xe662, 0x4474, 0xbe, 0xfd, 0xaa, 0x53, 0xe5, 0x14, 0x3c, 0x6d}
2416DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT,
2417    0x2c042b5e, 0x8c07, 0x46d5, 0xaa, 0xbe, 0x8f, 0x75, 0xcb, 0xad, 0x4c, 0x31}
2418DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_OUTPUT_ID,
2419    0x839ddca3, 0x9b4e, 0x41e4, 0xb0, 0x53, 0x89, 0x2b, 0xd2, 0xa1, 0x1e, 0xe7}
2420DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ATTRIBUTES,
2421    0x6214d9d2, 0x432c, 0x4abb, 0x9f, 0xce, 0x21, 0x6e, 0xea, 0x26, 0x9e, 0x3b}
2422DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_ENCRYPTION_WHEN_ACCESSIBLE_GUID_COUNT,
2423    0xb30f7066, 0x203c, 0x4b07, 0x93, 0xfc, 0xce, 0xaa, 0xfd, 0x61, 0x24, 0x1e}
2424DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_ENCRYPTION_WHEN_ACCESSIBLE_GUID,
2425    0xf83a5958, 0xe986, 0x4bda, 0xbe, 0xb0, 0x41, 0x1f, 0x6a, 0x7a, 0x01, 0xb7}
2426DEFINE_GUID!{D3D11_AUTHENTICATED_QUERY_CURRENT_ENCRYPTION_WHEN_ACCESSIBLE,
2427    0xec1791c7, 0xdad3, 0x4f15, 0x9e, 0xc3, 0xfa, 0xa9, 0x3d, 0x60, 0xd4, 0xf0}
2428DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE,
2429    0x06114bdb, 0x3523, 0x470a, 0x8d, 0xca, 0xfb, 0xc2, 0x84, 0x51, 0x54, 0xf0}
2430DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_PROTECTION,
2431    0x50455658, 0x3f47, 0x4362, 0xbf, 0x99, 0xbf, 0xdf, 0xcd, 0xe9, 0xed, 0x29}
2432DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION,
2433    0x6346cc54, 0x2cfc, 0x4ad4, 0x82, 0x24, 0xd1, 0x58, 0x37, 0xde, 0x77, 0x00}
2434DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE,
2435    0x0772d047, 0x1b40, 0x48e8, 0x9c, 0xa6, 0xb5, 0xf5, 0x10, 0xde, 0x9f, 0x01}
2436DEFINE_GUID!{D3D11_AUTHENTICATED_CONFIGURE_ENCRYPTION_WHEN_ACCESSIBLE,
2437    0x41fff286, 0x6ae0, 0x4d43, 0x9d, 0x55, 0xa4, 0x6e, 0x9e, 0xfd, 0x15, 0x8a}
2438STRUCT!{struct D3D11_AUTHENTICATED_QUERY_INPUT {
2439    QueryType: GUID,
2440    hChannel: HANDLE,
2441    SequenceNumber: UINT,
2442}}
2443STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT {
2444    omac: D3D11_OMAC,
2445    QueryType: GUID,
2446    hChannel: HANDLE,
2447    SequenceNumber: UINT,
2448    ReturnCode: HRESULT,
2449}}
2450//FIXME bitfield
2451STRUCT!{struct D3D11_AUTHENTICATED_PROTECTION_FLAGS {
2452    u: UINT,
2453}}
2454STRUCT!{struct D3D11_AUTHENTICATED_QUERY_PROTECTION_OUTPUT {
2455    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2456    ProtectionFlags: D3D11_AUTHENTICATED_PROTECTION_FLAGS,
2457}}
2458STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE_OUTPUT {
2459    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2460    ChannelType: D3D11_AUTHENTICATED_CHANNEL_TYPE,
2461}}
2462STRUCT!{struct D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE_OUTPUT {
2463    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2464    DeviceHandle: HANDLE,
2465}}
2466STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_INPUT {
2467    Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2468    DecoderHandle: HANDLE,
2469}}
2470STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_OUTPUT {
2471    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2472    DecoderHandle: HANDLE,
2473    CryptoSessionHandle: HANDLE,
2474    DeviceHandle: HANDLE,
2475}}
2476STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT_OUTPUT {
2477    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2478    RestrictedSharedResourceProcessCount: UINT,
2479}}
2480STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_INPUT {
2481    Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2482    ProcessIndex: UINT,
2483}}
2484ENUM!{enum D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE {
2485    D3D11_PROCESSIDTYPE_UNKNOWN = 0,
2486    D3D11_PROCESSIDTYPE_DWM = 1,
2487    D3D11_PROCESSIDTYPE_HANDLE = 2,
2488}}
2489STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_OUTPUT {
2490    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2491    ProcessIndex: UINT,
2492    ProcessIdentifier: D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE,
2493    ProcessHandle: HANDLE,
2494}}
2495STRUCT!{struct D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT_OUTPUT {
2496    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2497    UnrestrictedProtectedSharedResourceCount: UINT,
2498}}
2499STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_INPUT {
2500    Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2501    DeviceHandle: HANDLE,
2502    CryptoSessionHandle: HANDLE,
2503}}
2504STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_OUTPUT {
2505    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2506    DeviceHandle: HANDLE,
2507    CryptoSessionHandle: HANDLE,
2508    OutputIDCount: UINT,
2509}}
2510STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_INPUT {
2511    Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2512    DeviceHandle: HANDLE,
2513    CryptoSessionHandle: HANDLE,
2514    OutputIDIndex: UINT,
2515}}
2516STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_OUTPUT {
2517    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2518    DeviceHandle: HANDLE,
2519    CryptoSessionHandle: HANDLE,
2520    OutputIDIndex: UINT,
2521    OutputID: UINT64,
2522}}
2523ENUM!{enum D3D11_BUS_TYPE {
2524    D3D11_BUS_TYPE_OTHER = 0,
2525    D3D11_BUS_TYPE_PCI = 0x1,
2526    D3D11_BUS_TYPE_PCIX = 0x2,
2527    D3D11_BUS_TYPE_PCIEXPRESS = 0x3,
2528    D3D11_BUS_TYPE_AGP = 0x4,
2529    D3D11_BUS_IMPL_MODIFIER_INSIDE_OF_CHIPSET = 0x10000,
2530    D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP = 0x20000,
2531    D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET = 0x30000,
2532    D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR = 0x40000,
2533    D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE = 0x50000,
2534    D3D11_BUS_IMPL_MODIFIER_NON_STANDARD = 0x80000000,
2535}}
2536STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACESSIBILITY_OUTPUT {
2537    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2538    BusType: D3D11_BUS_TYPE,
2539    AccessibleInContiguousBlocks: BOOL,
2540    AccessibleInNonContiguousBlocks: BOOL,
2541}}
2542STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_COUNT_OUTPUT {
2543    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2544    EncryptionGuidCount: UINT,
2545}}
2546STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_INPUT {
2547    Input: D3D11_AUTHENTICATED_QUERY_INPUT,
2548    EncryptionGuidIndex: UINT,
2549}}
2550STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_OUTPUT {
2551    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2552    EncryptionGuidIndex: UINT,
2553    EncryptionGuid: GUID,
2554}}
2555STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CURRENT_ACCESSIBILITY_ENCRYPTION_OUTPUT {
2556    Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
2557    EncryptionGuid: GUID,
2558}}
2559STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_INPUT {
2560    omac: D3D11_OMAC,
2561    ConfigureType: GUID,
2562    hChannel: HANDLE,
2563    SequenceNumber: UINT,
2564}}
2565STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_OUTPUT {
2566    omac: D3D11_OMAC,
2567    ConfigureType: GUID,
2568    hChannel: HANDLE,
2569    SequenceNumber: UINT,
2570    ReturnCode: HRESULT,
2571}}
2572STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE_INPUT {
2573    Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2574    StartSequenceQuery: UINT,
2575    StartSequenceConfigure: UINT,
2576}}
2577STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_PROTECTION_INPUT {
2578    Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2579    Protections: D3D11_AUTHENTICATED_PROTECTION_FLAGS,
2580}}
2581STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION_INPUT {
2582    Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2583    DecoderHandle: HANDLE,
2584    CryptoSessionHandle: HANDLE,
2585    DeviceHandle: HANDLE,
2586}}
2587STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE_INPUT {
2588    Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2589    ProcessType: D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE,
2590    ProcessHandle: HANDLE,
2591    AllowAccess: BOOL,
2592}}
2593STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_ACCESSIBLE_ENCRYPTION_INPUT {
2594    Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
2595    EncryptionGuid: GUID,
2596}}
2597DEFINE_GUID!{D3D11_KEY_EXCHANGE_RSAES_OAEP,
2598    0xc1949895, 0xd72a, 0x4a1d, 0x8e, 0x5d, 0xed, 0x85, 0x7d, 0x17, 0x15, 0x20}
2599RIDL!{#[uuid(0x9b32f9ad, 0xbdcc, 0x40a6, 0xa3, 0x9d, 0xd5, 0xc8, 0x65, 0x84, 0x57, 0x20)]
2600interface ID3D11CryptoSession(ID3D11CryptoSessionVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2601    fn GetCryptoType(
2602        pCryptoType: *mut GUID,
2603    ) -> (),
2604    fn GetDecoderProfile(
2605        pDecoderProfile: *mut GUID,
2606    ) -> (),
2607    fn GetCertificateSize(
2608        pCertificateSize: *mut UINT,
2609    ) -> HRESULT,
2610    fn GetCertificate(
2611        CertificateSize: UINT,
2612        pCertificate: *mut BYTE,
2613    ) -> HRESULT,
2614    fn GetCryptoSessionHandle(
2615        pCertificate: *mut HANDLE,
2616    ) -> (),
2617}}
2618ENUM!{enum D3D11_VDOV_DIMENSION {
2619    D3D11_VDOV_DIMENSION_UNKNOWN = 0,
2620    D3D11_VDOV_DIMENSION_TEXTURE2D = 1,
2621}}
2622STRUCT!{struct D3D11_TEX2D_VDOV {
2623    ArraySlice: UINT,
2624}}
2625STRUCT!{struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC {
2626    DecodeProfile: GUID,
2627    ViewDimension: D3D11_VDOV_DIMENSION,
2628    Texture2D: D3D11_TEX2D_VDOV,
2629}}
2630RIDL!{#[uuid(0xc2931aea, 0x2a85, 0x4f20, 0x86, 0x0f, 0xfb, 0xa1, 0xfd, 0x25, 0x6e, 0x18)]
2631interface ID3D11VideoDecoderOutputView(ID3D11VideoDecoderOutputViewVtbl):
2632    ID3D11View(ID3D11ViewVtbl) {
2633    fn GetDesc(
2634        pDesc: *mut D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC,
2635    ) -> (),
2636}}
2637ENUM!{enum D3D11_VPIV_DIMENSION {
2638    D3D11_VPIV_DIMENSION_UNKNOWN = 0,
2639    D3D11_VPIV_DIMENSION_TEXTURE2D = 1,
2640}}
2641STRUCT!{struct D3D11_TEX2D_VPIV {
2642    MipSlice: UINT,
2643    ArraySlice: UINT,
2644}}
2645STRUCT!{struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC {
2646    FourCC: UINT,
2647    ViewDimension: D3D11_VPIV_DIMENSION,
2648    Texture2D: D3D11_TEX2D_VPIV,
2649}}
2650RIDL!{#[uuid(0x11ec5a5f, 0x51dc, 0x4945, 0xab, 0x34, 0x6e, 0x8c, 0x21, 0x30, 0x0e, 0xa5)]
2651interface ID3D11VideoProcessorInputView(ID3D11VideoProcessorInputViewVtbl):
2652    ID3D11View(ID3D11ViewVtbl) {
2653    fn GetDesc(
2654        pDesc: *mut D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC,
2655    ) -> (),
2656}}
2657ENUM!{enum D3D11_VPOV_DIMENSION {
2658    D3D11_VPOV_DIMENSION_UNKNOWN = 0,
2659    D3D11_VPOV_DIMENSION_TEXTURE2D = 1,
2660    D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2,
2661}}
2662STRUCT!{struct D3D11_TEX2D_VPOV {
2663    MipSlice: UINT,
2664}}
2665STRUCT!{struct D3D11_TEX2D_ARRAY_VPOV {
2666    MipSlice: UINT,
2667    FirstArraySlice: UINT,
2668    ArraySize: UINT,
2669}}
2670UNION!{union D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC_u {
2671    [u32; 3],
2672    Texture2D Texture2D_mut: D3D11_TEX2D_VPOV,
2673    Texture2DArray Texture2DArray_mut: D3D11_TEX2D_ARRAY_VPOV,
2674}}
2675STRUCT!{struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC {
2676    ViewDimension: D3D11_VPOV_DIMENSION,
2677    u: D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC_u,
2678}}
2679RIDL!{#[uuid(0xa048285e, 0x25a9, 0x4527, 0xbd, 0x93, 0xd6, 0x8b, 0x68, 0xc4, 0x42, 0x54)]
2680interface ID3D11VideoProcessorOutputView(ID3D11VideoProcessorOutputViewVtbl):
2681    ID3D11View(ID3D11ViewVtbl) {
2682    fn GetDesc(
2683        pDesc: *mut D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC,
2684    ) -> (),
2685}}
2686RIDL!{#[uuid(0x61f21c45, 0x3c0e, 0x4a74, 0x9c, 0xea, 0x67, 0x10, 0x0d, 0x9a, 0xd5, 0xe4)]
2687interface ID3D11VideoContext(ID3D11VideoContextVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
2688    fn GetDecoderBuffer(
2689        pDecoder: *mut ID3D11VideoDecoder,
2690        Type: D3D11_VIDEO_DECODER_BUFFER_TYPE,
2691        pBufferSize: *mut UINT,
2692        ppBuffer: *mut *mut c_void,
2693    ) -> HRESULT,
2694    fn ReleaseDecoderBuffer(
2695        pDecoder: *mut ID3D11VideoDecoder,
2696        Type: D3D11_VIDEO_DECODER_BUFFER_TYPE,
2697    ) -> HRESULT,
2698    fn DecoderBeginFrame(
2699        pDecoder: *mut ID3D11VideoDecoder,
2700        pView: *mut ID3D11VideoDecoderOutputView,
2701        ContentKeySize: UINT,
2702        pContentKey: *const c_void,
2703    ) -> HRESULT,
2704    fn DecoderEndFrame(
2705        pDecoder: *mut ID3D11VideoDecoder,
2706    ) -> HRESULT,
2707    fn SubmitDecoderBuffers(
2708        pDecoder: *mut ID3D11VideoDecoder,
2709        NumBuffers: UINT,
2710        pBufferDesc: *const D3D11_VIDEO_DECODER_BUFFER_DESC,
2711    ) -> HRESULT,
2712    fn DecoderExtension(
2713        pDecoder: *mut ID3D11VideoDecoder,
2714        pExtensionData: *const D3D11_VIDEO_DECODER_EXTENSION,
2715    ) -> HRESULT,
2716    fn VideoProcessorSetOutputTargetRect(
2717        pVideoProcessor: *mut ID3D11VideoProcessor,
2718        Enable: BOOL,
2719        pRect: *const RECT,
2720    ) -> (),
2721    fn VideoProcessorSetOutputBackgroundColor(
2722        pVideoProcessor: *mut ID3D11VideoProcessor,
2723        YCbCr: BOOL,
2724        pRect: *const RECT,
2725    ) -> (),
2726    fn VideoProcessorSetOutputColorSpace(
2727        pVideoProcessor: *mut ID3D11VideoProcessor,
2728        pColorSpace: *const D3D11_VIDEO_PROCESSOR_COLOR_SPACE,
2729    ) -> HRESULT,
2730    fn VideoProcessorSetOutputAlphaFillMode(
2731        pVideoProcessor: *mut ID3D11VideoProcessor,
2732        AlphaFillMode: D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE,
2733        StreamIndex: UINT,
2734    ) -> (),
2735    fn VideoProcessorSetOutputConstriction(
2736        pVideoProcessor: *mut ID3D11VideoProcessor,
2737        Enable: BOOL,
2738        Size: SIZE,
2739    ) -> (),
2740    fn VideoProcessorSetOutputStereoMode(
2741        pVideoProcessor: *mut ID3D11VideoProcessor,
2742        Enable: BOOL,
2743    ) -> (),
2744    fn VideoProcessorSetOutputExtension(
2745        pVideoProcessor: *mut ID3D11VideoProcessor,
2746        pExtensionGuid: *const GUID,
2747        DataSize: UINT,
2748        pData: *mut c_void,
2749    ) -> HRESULT,
2750    fn VideoProcessorGetOutputTargetRect(
2751        pVideoProcessor: *mut ID3D11VideoProcessor,
2752        Enabled: *mut BOOL,
2753        pRect: *mut RECT,
2754    ) -> (),
2755    fn VideoProcessorGetOutputBackgroundColor(
2756        pVideoProcessor: *mut ID3D11VideoProcessor,
2757        pYCbCr: *mut BOOL,
2758        pColor: *mut D3D11_VIDEO_COLOR,
2759    ) -> (),
2760    fn VideoProcessorGetOutputColorSpace(
2761        pVideoProcessor: *mut ID3D11VideoProcessor,
2762        pColorSpace: *mut D3D11_VIDEO_PROCESSOR_COLOR_SPACE,
2763    ) -> (),
2764    fn VideoProcessorGetOutputAlphaFillMode(
2765        pVideoProcessor: *mut ID3D11VideoProcessor,
2766        pAlphaFillMode: *mut D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE,
2767        pStreamIndex: *mut UINT,
2768    ) -> (),
2769    fn VideoProcessorGetOutputConstriction(
2770        pVideoProcessor: *mut ID3D11VideoProcessor,
2771        pEnabled: *mut BOOL,
2772        pSize: *mut SIZE,
2773    ) -> (),
2774    fn VideoProcessorGetOutputStereoMode(
2775        pVideoProcessor: *mut ID3D11VideoProcessor,
2776        pEnabled: *mut BOOL,
2777    ) -> (),
2778    fn VideoProcessorGetOutputExtension(
2779        pVideoProcessor: *mut ID3D11VideoProcessor,
2780        pExtensionGuid: *const GUID,
2781        DataSize: UINT,
2782        pData: *mut c_void,
2783    ) -> HRESULT,
2784    fn VideoProcessorSetStreamFrameFormat(
2785        pVideoProcessor: *mut ID3D11VideoProcessor,
2786        StreamIndex: UINT,
2787        FrameFormat: D3D11_VIDEO_FRAME_FORMAT,
2788    ) -> (),
2789    fn VideoProcessorSetStreamColorSpace(
2790        pVideoProcessor: *mut ID3D11VideoProcessor,
2791        StreamIndex: UINT,
2792        pColorSpace: *const D3D11_VIDEO_PROCESSOR_COLOR_SPACE,
2793    ) -> (),
2794    fn VideoProcessorSetStreamOutputRate(
2795        pVideoProcessor: *mut ID3D11VideoProcessor,
2796        StreamIndex: UINT,
2797        OutputRate: D3D11_VIDEO_PROCESSOR_OUTPUT_RATE,
2798        RepeatFrame: BOOL,
2799        pCustomRate: *const DXGI_RATIONAL,
2800    ) -> (),
2801    fn VideoProcessorSetStreamSourceRect(
2802        pVideoProcessor: *mut ID3D11VideoProcessor,
2803        StreamIndex: UINT,
2804        Enable: BOOL,
2805        pRect: *const RECT,
2806    ) -> (),
2807    fn VideoProcessorSetStreamDestRect(
2808        pVideoProcessor: *mut ID3D11VideoProcessor,
2809        StreamIndex: UINT,
2810        Enable: BOOL,
2811        pRect: *const RECT,
2812    ) -> (),
2813    fn VideoProcessorSetStreamAlpha(
2814        pVideoProcessor: *mut ID3D11VideoProcessor,
2815        StreamIndex: UINT,
2816        Enable: BOOL,
2817        Alpha: FLOAT,
2818    ) -> (),
2819    fn VideoProcessorSetStreamPalette(
2820        pVideoProcessor: *mut ID3D11VideoProcessor,
2821        StreamIndex: UINT,
2822        Count: UINT,
2823        pEntries: *const UINT,
2824    ) -> (),
2825    fn VideoProcessorSetStreamPixelAspectRatio(
2826        pVideoProcessor: *mut ID3D11VideoProcessor,
2827        StreamIndex: UINT,
2828        Enable: BOOL,
2829        pSourceAspectRatio: *const DXGI_RATIONAL,
2830        pDestinationAspectRatio: *const DXGI_RATIONAL,
2831    ) -> (),
2832    fn VideoProcessorSetStreamLumaKey(
2833        pVideoProcessor: *mut ID3D11VideoProcessor,
2834        StreamIndex: UINT,
2835        Enable: BOOL,
2836        Lower: FLOAT,
2837        Upper: FLOAT,
2838    ) -> (),
2839    fn VideoProcessorSetStreamStereoFormat(
2840        pVideoProcessor: *mut ID3D11VideoProcessor,
2841        StreamIndex: UINT,
2842        Enable: BOOL,
2843        Format: D3D11_VIDEO_PROCESSOR_STEREO_FORMAT,
2844        LeftViewFrame0: BOOL,
2845        BaseViewFrame0: BOOL,
2846        FlipMode: D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE,
2847    ) -> (),
2848    fn VideoProcessorSetStreamAutoProcessingMode(
2849        pVideoProcessor: *mut ID3D11VideoProcessor,
2850        StreamIndex: UINT,
2851        Enable: BOOL,
2852    ) -> (),
2853    fn VideoProcessorSetStreamFilter(
2854        pVideoProcessor: *mut ID3D11VideoProcessor,
2855        StreamIndex: UINT,
2856        Filter: D3D11_VIDEO_PROCESSOR_FILTER,
2857        Enable: BOOL,
2858        Level: c_int,
2859    ) -> (),
2860    fn VideoProcessorSetStreamExtension(
2861        pVideoProcessor: *mut ID3D11VideoProcessor,
2862        StreamIndex: UINT,
2863        pExtensionGuid: *const GUID,
2864        DataSize: UINT,
2865        pData: *mut c_void,
2866    ) -> HRESULT,
2867    fn VideoProcessorGetStreamFrameFormat(
2868        pVideoProcessor: *mut ID3D11VideoProcessor,
2869        StreamIndex: UINT,
2870        pFrameFormat: *mut D3D11_VIDEO_FRAME_FORMAT,
2871    ) -> (),
2872    fn VideoProcessorGetStreamColorSpace(
2873        pVideoProcessor: *mut ID3D11VideoProcessor,
2874        StreamIndex: UINT,
2875        pColorSpace: *mut D3D11_VIDEO_PROCESSOR_COLOR_SPACE,
2876    ) -> (),
2877    fn VideoProcessorGetStreamOutputRate(
2878        pVideoProcessor: *mut ID3D11VideoProcessor,
2879        StreamIndex: UINT,
2880        pOutputRate: *mut D3D11_VIDEO_PROCESSOR_OUTPUT_RATE,
2881        pRepeatFrame: *mut BOOL,
2882        pCustomRate: *mut DXGI_RATIONAL,
2883    ) -> (),
2884    fn VideoProcessorGetStreamSourceRect(
2885        pVideoProcessor: *mut ID3D11VideoProcessor,
2886        StreamIndex: UINT,
2887        pEnabled: *mut BOOL,
2888        pRect: *mut RECT,
2889    ) -> (),
2890    fn VideoProcessorGetStreamDestRect(
2891        pVideoProcessor: *mut ID3D11VideoProcessor,
2892        StreamIndex: UINT,
2893        pEnabled: *mut BOOL,
2894        pRect: *mut RECT,
2895    ) -> (),
2896    fn VideoProcessorGetStreamAlpha(
2897        pVideoProcessor: *mut ID3D11VideoProcessor,
2898        StreamIndex: UINT,
2899        pEnabled: *mut BOOL,
2900        pAlpha: *mut FLOAT,
2901    ) -> (),
2902    fn VideoProcessorGetStreamPalette(
2903        pVideoProcessor: *mut ID3D11VideoProcessor,
2904        StreamIndex: UINT,
2905        Count: UINT,
2906        pEntries: *mut UINT,
2907    ) -> (),
2908    fn VideoProcessorGetStreamPixelAspectRatio(
2909        pVideoProcessor: *mut ID3D11VideoProcessor,
2910        StreamIndex: UINT,
2911        pEnabled: *mut BOOL,
2912        pSourceAspectRatio: *mut DXGI_RATIONAL,
2913        pDestinationAspectRatio: *mut DXGI_RATIONAL,
2914    ) -> (),
2915    fn VideoProcessorGetStreamLumaKey(
2916        pVideoProcessor: *mut ID3D11VideoProcessor,
2917        StreamIndex: UINT,
2918        pEnabled: *mut BOOL,
2919        pLower: *mut FLOAT,
2920        pUpper: *mut FLOAT,
2921    ) -> (),
2922    fn VideoProcessorGetStreamStereoFormat(
2923        pVideoProcessor: *mut ID3D11VideoProcessor,
2924        StreamIndex: UINT,
2925        pEnabled: *mut BOOL,
2926        pFormat: *mut D3D11_VIDEO_PROCESSOR_STEREO_FORMAT,
2927        pLeftViewFrame0: *mut BOOL,
2928        pBaseViewFrame0: *mut BOOL,
2929        pFlipMode: *mut D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE,
2930        MonoOffset: *mut c_int,
2931    ) -> (),
2932    fn VideoProcessorGetStreamAutoProcessingMode(
2933        pVideoProcessor: *mut ID3D11VideoProcessor,
2934        StreamIndex: UINT,
2935        pEnabled: *mut BOOL,
2936    ) -> (),
2937    fn VideoProcessorGetStreamFilter(
2938        pVideoProcessor: *mut ID3D11VideoProcessor,
2939        StreamIndex: UINT,
2940        Filter: D3D11_VIDEO_PROCESSOR_FILTER,
2941        pEnabled: *mut BOOL,
2942        pLevel: *mut c_int,
2943    ) -> (),
2944    fn VideoProcessorGetStreamExtension(
2945        pVideoProcessor: *mut ID3D11VideoProcessor,
2946        StreamIndex: UINT,
2947        pExtensionGuid: *const GUID,
2948        DataSize: UINT,
2949        pData: *mut c_void,
2950    ) -> HRESULT,
2951    fn VideoProcessorBlt(
2952        pVideoProcessor: *mut ID3D11VideoProcessor,
2953        pView: *mut ID3D11VideoProcessorOutputView,
2954        OutputFrame: UINT,
2955        StreamCount: UINT,
2956        pStreams: *const D3D11_VIDEO_PROCESSOR_STREAM,
2957    ) -> HRESULT,
2958    fn NegotiateCryptoSessionKeyExchange(
2959        pCryptoSession: *mut ID3D11CryptoSession,
2960        DataSize: UINT,
2961        pData: *mut c_void,
2962    ) -> HRESULT,
2963    fn EncryptionBlt(
2964        pCryptoSession: *mut ID3D11CryptoSession,
2965        pSrcSurface: *mut ID3D11Texture2D,
2966        pDstSurface: *mut ID3D11Texture2D,
2967        IVSize: UINT,
2968        pIV: *mut c_void,
2969    ) -> HRESULT,
2970    fn DecryptionBlt(
2971        pCryptoSession: *mut ID3D11CryptoSession,
2972        pSrcSurface: *mut ID3D11Texture2D,
2973        pDstSurface: *mut ID3D11Texture2D,
2974        pEncryptedBlockInfo: *mut D3D11_ENCRYPTED_BLOCK_INFO,
2975        ContentKeySize: UINT,
2976        pContentKey: *const c_void,
2977        IVSize: UINT,
2978        pIV: *mut c_void,
2979    ) -> HRESULT,
2980    fn StartSessionKeyRefresh(
2981        pCryptoSession: *mut ID3D11CryptoSession,
2982        RandomNumberSize: UINT,
2983        pRandomNumber: *mut c_void,
2984    ) -> HRESULT,
2985    fn FinishSessionKeyRefresh(
2986        pCryptoSession: *mut ID3D11CryptoSession,
2987    ) -> HRESULT,
2988    fn GetEncryptionBltKey(
2989        pCryptoSession: *mut ID3D11CryptoSession,
2990        KeySize: UINT,
2991        pReadbackKey: *mut c_void,
2992    ) -> HRESULT,
2993    fn NegotiateAuthenticatedChannelKeyExchange(
2994        pChannel: *mut ID3D11AuthenticatedChannel,
2995        DataSize: UINT,
2996        pData: *mut c_void,
2997    ) -> HRESULT,
2998    fn QueryAuthenticatedChannel(
2999        pChannel: *mut ID3D11AuthenticatedChannel,
3000        InputSize: UINT,
3001        pInput: *const c_void,
3002        OutputSize: UINT,
3003        pOutput: *mut c_void,
3004    ) -> HRESULT,
3005    fn ConfigureAuthenticatedChannel(
3006        pChannel: *mut ID3D11AuthenticatedChannel,
3007        InputSize: UINT,
3008        pInput: *const c_void,
3009        pOutput: *mut D3D11_AUTHENTICATED_CONFIGURE_OUTPUT,
3010    ) -> HRESULT,
3011    fn VideoProcessorSetStreamRotation(
3012        pVideoProcessor: *mut ID3D11VideoProcessor,
3013        StreamIndex: UINT,
3014        Enable: BOOL,
3015        Rotation: D3D11_VIDEO_PROCESSOR_ROTATION,
3016    ) -> HRESULT,
3017    fn VideoProcessorGetStreamRotation(
3018        pVideoProcessor: *mut ID3D11VideoProcessor,
3019        StreamIndex: UINT,
3020        pEnable: *mut BOOL,
3021        pRotation: *mut D3D11_VIDEO_PROCESSOR_ROTATION,
3022    ) -> HRESULT,
3023}}
3024RIDL!{#[uuid(0x10ec4d5b, 0x975a, 0x4689, 0xb9, 0xe4, 0xd0, 0xaa, 0xc3, 0x0f, 0xe3, 0x33)]
3025interface ID3D11VideoDevice(ID3D11VideoDeviceVtbl): IUnknown(IUnknownVtbl) {
3026    fn CreateVideoDecoder(
3027        pVideoDesc: *const D3D11_VIDEO_DECODER_DESC,
3028        pConfig: *const D3D11_VIDEO_DECODER_CONFIG,
3029        ppDecoder: *mut *mut ID3D11VideoDecoder,
3030    ) -> HRESULT,
3031    fn CreateVideoProcessor(
3032        pEnum: *mut ID3D11VideoProcessorEnumerator,
3033        RateConversionIndex: UINT,
3034        ppVideoProcessor: *mut *mut ID3D11VideoProcessor,
3035    ) -> HRESULT,
3036    fn CreateAuthenticatedChannel(
3037        ChannelType: D3D11_AUTHENTICATED_CHANNEL_TYPE,
3038        ppAuthenticatedChannel: *mut *mut ID3D11AuthenticatedChannel,
3039    ) -> HRESULT,
3040    fn CreateCryptoSession(
3041        pCryptoType: *const GUID,
3042        pDecoderProfile: *const GUID,
3043        pKeyExchangeType: *const GUID,
3044        ppCryptoSession: *mut *mut ID3D11CryptoSession,
3045    ) -> HRESULT,
3046    fn CreateVideoDecoderOutputView(
3047        pResource: *mut ID3D11Resource,
3048        pDesc: *const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC,
3049        ppVDOVView: *mut *mut ID3D11VideoDecoderOutputView,
3050    ) -> HRESULT,
3051    fn CreateVideoProcessorInputView(
3052        pResource: *mut ID3D11Resource,
3053        pEnum: *mut ID3D11VideoProcessorEnumerator,
3054        pDesc: *const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC,
3055        ppVPIView: *mut *mut ID3D11VideoProcessorInputView,
3056    ) -> HRESULT,
3057    fn CreateVideoProcessorOutputView(
3058        pResource: *mut ID3D11Resource,
3059        pEnum: *mut ID3D11VideoProcessorEnumerator,
3060        pDesc: *const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC,
3061        ppVPOView: *mut *mut ID3D11VideoProcessorOutputView,
3062    ) -> HRESULT,
3063    fn CreateVideoProcessorEnumerator(
3064        pDesc: *const D3D11_VIDEO_PROCESSOR_CONTENT_DESC,
3065        ppEnum: *mut *mut ID3D11VideoProcessorEnumerator,
3066    ) -> HRESULT,
3067    fn GetVideoDecoderProfileCount() -> UINT,
3068    fn GetVideoDecoderProfile(
3069        Index: UINT,
3070        pDecoderProfile: *mut GUID,
3071    ) -> HRESULT,
3072    fn CheckVideoDecoderFormat(
3073        pDecoderProfile: *const GUID,
3074        Format: DXGI_FORMAT,
3075        pSupported: *mut BOOL,
3076    ) -> HRESULT,
3077    fn GetVideoDecoderConfigCount(
3078        pDesc: *const D3D11_VIDEO_DECODER_DESC,
3079        pCount: *mut UINT,
3080    ) -> HRESULT,
3081    fn GetVideoDecoderConfig(
3082        pDesc: *const D3D11_VIDEO_DECODER_DESC,
3083        Index: UINT,
3084        pConfig: *mut D3D11_VIDEO_DECODER_CONFIG,
3085    ) -> HRESULT,
3086    fn GetContentProtectionCaps(
3087        pCryptoType: *const GUID,
3088        pDecoderProfile: *const GUID,
3089        pCaps: *mut D3D11_VIDEO_CONTENT_PROTECTION_CAPS,
3090    ) -> HRESULT,
3091    fn CheckCryptoKeyExchange(
3092        pCryptoType: *const GUID,
3093        pDecoderProfile: *const GUID,
3094        Index: UINT,
3095        pKeyExchangeType: *mut GUID,
3096    ) -> HRESULT,
3097    fn SetPrivateData(
3098        guid: REFGUID,
3099        DataSize: UINT,
3100        pData: *const c_void,
3101    ) -> HRESULT,
3102    fn SetPrivateDataInterface(
3103        guid: REFGUID,
3104        pData: *const IUnknown,
3105    ) -> HRESULT,
3106}}
3107RIDL!{#[uuid(0xdb6f6ddb, 0xac77, 0x4e88, 0x82, 0x53, 0x81, 0x9d, 0xf9, 0xbb, 0xf1, 0x40)]
3108interface ID3D11Device(ID3D11DeviceVtbl): IUnknown(IUnknownVtbl) {
3109    fn CreateBuffer(
3110        pDesc: *const D3D11_BUFFER_DESC,
3111        pInitialData: *const D3D11_SUBRESOURCE_DATA,
3112        ppBuffer: *mut *mut ID3D11Buffer,
3113    ) -> HRESULT,
3114    fn CreateTexture1D(
3115        pDesc: *const D3D11_TEXTURE1D_DESC,
3116        pInitialData: *const D3D11_SUBRESOURCE_DATA,
3117        ppTexture1D: *mut *mut ID3D11Texture1D,
3118    ) -> HRESULT,
3119    fn CreateTexture2D(
3120        pDesc: *const D3D11_TEXTURE2D_DESC,
3121        pInitialData: *const D3D11_SUBRESOURCE_DATA,
3122        ppTexture2D: *mut *mut ID3D11Texture2D,
3123    ) -> HRESULT,
3124    fn CreateTexture3D(
3125        pDesc: *const D3D11_TEXTURE3D_DESC,
3126        pInitialData: *const D3D11_SUBRESOURCE_DATA,
3127        ppTexture3D: *mut *mut ID3D11Texture3D,
3128    ) -> HRESULT,
3129    fn CreateShaderResourceView(
3130        pResource: *mut ID3D11Resource,
3131        pDesc: *const D3D11_SHADER_RESOURCE_VIEW_DESC,
3132        ppSRView: *mut *mut ID3D11ShaderResourceView,
3133    ) -> HRESULT,
3134    fn CreateUnorderedAccessView(
3135        pResource: *mut ID3D11Resource,
3136        pDesc: *const D3D11_UNORDERED_ACCESS_VIEW_DESC,
3137        ppUAView: *mut *mut ID3D11UnorderedAccessView,
3138    ) -> HRESULT,
3139    fn CreateRenderTargetView(
3140        pResource: *mut ID3D11Resource,
3141        pDesc: *const D3D11_RENDER_TARGET_VIEW_DESC,
3142        ppRTView: *mut *mut ID3D11RenderTargetView,
3143    ) -> HRESULT,
3144    fn CreateDepthStencilView(
3145        pResource: *mut ID3D11Resource,
3146        pDesc: *const D3D11_DEPTH_STENCIL_VIEW_DESC,
3147        ppDepthStencilView: *mut *mut ID3D11DepthStencilView,
3148    ) -> HRESULT,
3149    fn CreateInputLayout(
3150        pInputElementDescs: *const D3D11_INPUT_ELEMENT_DESC,
3151        NumElements: UINT,
3152        pShaderBytecodeWithInputSignature: *const c_void,
3153        BytecodeLength: SIZE_T,
3154        ppInputLayout: *mut *mut ID3D11InputLayout,
3155    ) -> HRESULT,
3156    fn CreateVertexShader(
3157        pShaderBytecode: *const c_void,
3158        BytecodeLength: SIZE_T,
3159        pClassLinkage: *mut ID3D11ClassLinkage,
3160        ppVertexShader: *mut *mut ID3D11VertexShader,
3161    ) -> HRESULT,
3162    fn CreateGeometryShader(
3163        pShaderBytecode: *const c_void,
3164        BytecodeLength: SIZE_T,
3165        pClassLinkage: *mut ID3D11ClassLinkage,
3166        ppGeometryShader: *mut *mut ID3D11GeometryShader,
3167    ) -> HRESULT,
3168    fn CreateGeometryShaderWithStreamOutput(
3169        pShaderBytecode: *const c_void,
3170        BytecodeLength: SIZE_T,
3171        pSODeclaration: *const D3D11_SO_DECLARATION_ENTRY,
3172        NumEntries: UINT,
3173        pBufferStrides: *const UINT,
3174        NumStrides: UINT,
3175        RasterizedStream: UINT,
3176        pClassLinkage: *mut ID3D11ClassLinkage,
3177        ppGeometryShader: *mut *mut ID3D11GeometryShader,
3178    ) -> HRESULT,
3179    fn CreatePixelShader(
3180        pShaderBytecode: *const c_void,
3181        BytecodeLength: SIZE_T,
3182        pClassLinkage: *mut ID3D11ClassLinkage,
3183        ppPixelShader: *mut *mut ID3D11PixelShader,
3184    ) -> HRESULT,
3185    fn CreateHullShader(
3186        pShaderBytecode: *const c_void,
3187        BytecodeLength: SIZE_T,
3188        pClassLinkage: *mut ID3D11ClassLinkage,
3189        ppHullShader: *mut *mut ID3D11HullShader,
3190    ) -> HRESULT,
3191    fn CreateDomainShader(
3192        pShaderBytecode: *const c_void,
3193        BytecodeLength: SIZE_T,
3194        pClassLinkage: *mut ID3D11ClassLinkage,
3195        ppDomainShader: *mut *mut ID3D11DomainShader,
3196    ) -> HRESULT,
3197    fn CreateComputeShader(
3198        pShaderBytecode: *const c_void,
3199        BytecodeLength: SIZE_T,
3200        pClassLinkage: *mut ID3D11ClassLinkage,
3201        ppComputeShader: *mut *mut ID3D11ComputeShader,
3202    ) -> HRESULT,
3203    fn CreateClassLinkage(
3204        ppLinkage: *mut *mut ID3D11ClassLinkage,
3205    ) -> HRESULT,
3206    fn CreateBlendState(
3207        pBlendStateDesc: *const D3D11_BLEND_DESC,
3208        ppBlendState: *mut *mut ID3D11BlendState,
3209    ) -> HRESULT,
3210    fn CreateDepthStencilState(
3211        pDepthStencilDesc: *const D3D11_DEPTH_STENCIL_DESC,
3212        ppDepthStencilState: *mut *mut ID3D11DepthStencilState,
3213    ) -> HRESULT,
3214    fn CreateRasterizerState(
3215        pRasterizerDesc: *const D3D11_RASTERIZER_DESC,
3216        ppRasterizerState: *mut *mut ID3D11RasterizerState,
3217    ) -> HRESULT,
3218    fn CreateSamplerState(
3219        pSamplerDesc: *const D3D11_SAMPLER_DESC,
3220        ppSamplerState: *mut *mut ID3D11SamplerState,
3221    ) -> HRESULT,
3222    fn CreateQuery(
3223        pQueryDesc: *const D3D11_QUERY_DESC,
3224        ppQuery: *mut *mut ID3D11Query,
3225    ) -> HRESULT,
3226    fn CreatePredicate(
3227        pPredicateDesc: *const D3D11_QUERY_DESC,
3228        ppPredicate: *mut *mut ID3D11Predicate,
3229    ) -> HRESULT,
3230    fn CreateCounter(
3231        pCounterDesc: *const D3D11_COUNTER_DESC,
3232        ppCounter: *mut *mut ID3D11Counter,
3233    ) -> HRESULT,
3234    fn CreateDeferredContext(
3235        ContextFlags: UINT,
3236        ppDeferredContext: *mut *mut ID3D11DeviceContext,
3237    ) -> HRESULT,
3238    fn OpenSharedResource(
3239        hResource: HANDLE,
3240        ReturnedInterface: REFIID,
3241        ppResource: *mut *mut c_void,
3242    ) -> HRESULT,
3243    fn CheckFormatSupport(
3244        Format: DXGI_FORMAT,
3245        pFormatSupport: *mut UINT,
3246    ) -> HRESULT,
3247    fn CheckMultisampleQualityLevels(
3248        Format: DXGI_FORMAT,
3249        SampleCount: UINT,
3250        pNumQualityLevels: *mut UINT,
3251    ) -> HRESULT,
3252    fn CheckCounterInfo(
3253        pCounterInfo: *mut D3D11_COUNTER_INFO,
3254    ) -> (),
3255    fn CheckCounter(
3256        pDesc: *const D3D11_COUNTER_DESC,
3257        pType: *mut D3D11_COUNTER_TYPE,
3258        pActiveCounters: *mut UINT,
3259        szName: LPSTR,
3260        pNameLength: *mut UINT,
3261        szUnits: LPSTR,
3262        pUnitsLength: *mut UINT,
3263        szDescription: LPSTR,
3264        pDescriptionLength: *mut UINT,
3265    ) -> HRESULT,
3266    fn CheckFeatureSupport(
3267        Feature: D3D11_FEATURE,
3268        pFeatureSupportData: *mut c_void,
3269        FeatureSupportDataSize: UINT,
3270    ) -> HRESULT,
3271    fn GetPrivateData(
3272        guid: REFGUID,
3273        pDataSize: *mut UINT,
3274        pData: *mut c_void,
3275    ) -> HRESULT,
3276    fn SetPrivateData(
3277        guid: REFGUID,
3278        DataSize: UINT,
3279        pData: *const c_void,
3280    ) -> HRESULT,
3281    fn SetPrivateDataInterface(
3282        guid: REFGUID,
3283        pData: *const IUnknown,
3284    ) -> HRESULT,
3285    fn GetFeatureLevel() -> D3D_FEATURE_LEVEL,
3286    fn GetCreationFlags() -> UINT,
3287    fn GetDeviceRemovedReason() -> HRESULT,
3288    fn GetImmediateContext(
3289        ppImmediateContext: *mut *mut ID3D11DeviceContext,
3290    ) -> (),
3291    fn SetExceptionMode(
3292        RaiseFlags: UINT,
3293    ) -> HRESULT,
3294    fn GetExceptionMode() -> UINT,
3295}}
3296ENUM!{enum D3D11_CREATE_DEVICE_FLAG {
3297    D3D11_CREATE_DEVICE_SINGLETHREADED = 0x1,
3298    D3D11_CREATE_DEVICE_DEBUG = 0x2,
3299    D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
3300    D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8,
3301    D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x20,
3302    D3D11_CREATE_DEVICE_DEBUGGABLE = 0x40,
3303    D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x80,
3304    D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
3305    D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x800,
3306}}
3307pub const D3D11_SDK_VERSION: DWORD = 7;
3308#[inline]
3309pub fn D3D11CalcSubresource(MipSlice: UINT, ArraySlice: UINT, MipLevels: UINT) -> UINT {
3310    MipSlice + ArraySlice * MipLevels
3311}
3312extern "system" {
3313    pub fn D3D11CreateDevice(
3314        pAdapter: *mut IDXGIAdapter,
3315        DriverType: D3D_DRIVER_TYPE,
3316        Software: HMODULE,
3317        Flags: UINT,
3318        pFeatureLevels: *const D3D_FEATURE_LEVEL,
3319        FeatureLevels: UINT,
3320        SDKVersion: UINT,
3321        ppDevice: *mut *mut ID3D11Device,
3322        pFeatureLevel: *mut D3D_FEATURE_LEVEL,
3323        ppImmediateContext: *mut *mut ID3D11DeviceContext,
3324    ) -> HRESULT;
3325    pub fn D3D11CreateDeviceAndSwapChain(
3326        pAdapter: *mut IDXGIAdapter,
3327        DriverType: D3D_DRIVER_TYPE,
3328        Software: HMODULE,
3329        Flags: UINT,
3330        pFeatureLevels: *const D3D_FEATURE_LEVEL,
3331        FeatureLevels: UINT,
3332        SDKVersion: UINT,
3333        pSwapChainDesc: *const DXGI_SWAP_CHAIN_DESC,
3334        ppSwapChain: *mut *mut IDXGISwapChain,
3335        ppDevice: *mut *mut ID3D11Device,
3336        pFeatureLevel: *mut D3D_FEATURE_LEVEL,
3337        ppImmediateContext: *mut *mut ID3D11DeviceContext,
3338    ) -> HRESULT;
3339}
3340DEFINE_GUID!{IID_ID3D11DeviceChild,
3341    0x1841e5c8, 0x16b0, 0x489b, 0xbc, 0xc8, 0x44, 0xcf, 0xb0, 0xd5, 0xde, 0xae}
3342DEFINE_GUID!{IID_ID3D11DepthStencilState,
3343    0x03823efb, 0x8d8f, 0x4e1c, 0x9a, 0xa2, 0xf6, 0x4b, 0xb2, 0xcb, 0xfd, 0xf1}
3344DEFINE_GUID!{IID_ID3D11BlendState,
3345    0x75b68faa, 0x347d, 0x4159, 0x8f, 0x45, 0xa0, 0x64, 0x0f, 0x01, 0xcd, 0x9a}
3346DEFINE_GUID!{IID_ID3D11RasterizerState,
3347    0x9bb4ab81, 0xab1a, 0x4d8f, 0xb5, 0x06, 0xfc, 0x04, 0x20, 0x0b, 0x6e, 0xe7}
3348DEFINE_GUID!{IID_ID3D11Resource,
3349    0xdc8e63f3, 0xd12b, 0x4952, 0xb4, 0x7b, 0x5e, 0x45, 0x02, 0x6a, 0x86, 0x2d}
3350DEFINE_GUID!{IID_ID3D11Buffer,
3351    0x48570b85, 0xd1ee, 0x4fcd, 0xa2, 0x50, 0xeb, 0x35, 0x07, 0x22, 0xb0, 0x37}
3352DEFINE_GUID!{IID_ID3D11Texture1D,
3353    0xf8fb5c27, 0xc6b3, 0x4f75, 0xa4, 0xc8, 0x43, 0x9a, 0xf2, 0xef, 0x56, 0x4c}
3354DEFINE_GUID!{IID_ID3D11Texture2D,
3355    0x6f15aaf2, 0xd208, 0x4e89, 0x9a, 0xb4, 0x48, 0x95, 0x35, 0xd3, 0x4f, 0x9c}
3356DEFINE_GUID!{IID_ID3D11Texture3D,
3357    0x037e866e, 0xf56d, 0x4357, 0xa8, 0xaf, 0x9d, 0xab, 0xbe, 0x6e, 0x25, 0x0e}
3358DEFINE_GUID!{IID_ID3D11View,
3359    0x839d1216, 0xbb2e, 0x412b, 0xb7, 0xf4, 0xa9, 0xdb, 0xeb, 0xe0, 0x8e, 0xd1}
3360DEFINE_GUID!{IID_ID3D11ShaderResourceView,
3361    0xb0e06fe0, 0x8192, 0x4e1a, 0xb1, 0xca, 0x36, 0xd7, 0x41, 0x47, 0x10, 0xb2}
3362DEFINE_GUID!{IID_ID3D11RenderTargetView,
3363    0xdfdba067, 0x0b8d, 0x4865, 0x87, 0x5b, 0xd7, 0xb4, 0x51, 0x6c, 0xc1, 0x64}
3364DEFINE_GUID!{IID_ID3D11DepthStencilView,
3365    0x9fdac92a, 0x1876, 0x48c3, 0xaf, 0xad, 0x25, 0xb9, 0x4f, 0x84, 0xa9, 0xb6}
3366DEFINE_GUID!{IID_ID3D11UnorderedAccessView,
3367    0x28acf509, 0x7f5c, 0x48f6, 0x86, 0x11, 0xf3, 0x16, 0x01, 0x0a, 0x63, 0x80}
3368DEFINE_GUID!{IID_ID3D11VertexShader,
3369    0x3b301d64, 0xd678, 0x4289, 0x88, 0x97, 0x22, 0xf8, 0x92, 0x8b, 0x72, 0xf3}
3370DEFINE_GUID!{IID_ID3D11HullShader,
3371    0x8e5c6061, 0x628a, 0x4c8e, 0x82, 0x64, 0xbb, 0xe4, 0x5c, 0xb3, 0xd5, 0xdd}
3372DEFINE_GUID!{IID_ID3D11DomainShader,
3373    0xf582c508, 0x0f36, 0x490c, 0x99, 0x77, 0x31, 0xee, 0xce, 0x26, 0x8c, 0xfa}
3374DEFINE_GUID!{IID_ID3D11GeometryShader,
3375    0x38325b96, 0xeffb, 0x4022, 0xba, 0x02, 0x2e, 0x79, 0x5b, 0x70, 0x27, 0x5c}
3376DEFINE_GUID!{IID_ID3D11PixelShader,
3377    0xea82e40d, 0x51dc, 0x4f33, 0x93, 0xd4, 0xdb, 0x7c, 0x91, 0x25, 0xae, 0x8c}
3378DEFINE_GUID!{IID_ID3D11ComputeShader,
3379    0x4f5b196e, 0xc2bd, 0x495e, 0xbd, 0x01, 0x1f, 0xde, 0xd3, 0x8e, 0x49, 0x69}
3380DEFINE_GUID!{IID_ID3D11InputLayout,
3381    0xe4819ddc, 0x4cf0, 0x4025, 0xbd, 0x26, 0x5d, 0xe8, 0x2a, 0x3e, 0x07, 0xb7}
3382DEFINE_GUID!{IID_ID3D11SamplerState,
3383    0xda6fea51, 0x564c, 0x4487, 0x98, 0x10, 0xf0, 0xd0, 0xf9, 0xb4, 0xe3, 0xa5}
3384DEFINE_GUID!{IID_ID3D11Asynchronous,
3385    0x4b35d0cd, 0x1e15, 0x4258, 0x9c, 0x98, 0x1b, 0x13, 0x33, 0xf6, 0xdd, 0x3b}
3386DEFINE_GUID!{IID_ID3D11Query,
3387    0xd6c00747, 0x87b7, 0x425e, 0xb8, 0x4d, 0x44, 0xd1, 0x08, 0x56, 0x0a, 0xfd}
3388DEFINE_GUID!{IID_ID3D11Predicate,
3389    0x9eb576dd, 0x9f77, 0x4d86, 0x81, 0xaa, 0x8b, 0xab, 0x5f, 0xe4, 0x90, 0xe2}
3390DEFINE_GUID!{IID_ID3D11Counter,
3391    0x6e8c49fb, 0xa371, 0x4770, 0xb4, 0x40, 0x29, 0x08, 0x60, 0x22, 0xb7, 0x41}
3392DEFINE_GUID!{IID_ID3D11ClassInstance,
3393    0xa6cd7faa, 0xb0b7, 0x4a2f, 0x94, 0x36, 0x86, 0x62, 0xa6, 0x57, 0x97, 0xcb}
3394DEFINE_GUID!{IID_ID3D11ClassLinkage,
3395    0xddf57cba, 0x9543, 0x46e4, 0xa1, 0x2b, 0xf2, 0x07, 0xa0, 0xfe, 0x7f, 0xed}
3396DEFINE_GUID!{IID_ID3D11CommandList,
3397    0xa24bc4d1, 0x769e, 0x43f7, 0x80, 0x13, 0x98, 0xff, 0x56, 0x6c, 0x18, 0xe2}
3398DEFINE_GUID!{IID_ID3D11DeviceContext,
3399    0xc0bfa96c, 0xe089, 0x44fb, 0x8e, 0xaf, 0x26, 0xf8, 0x79, 0x61, 0x90, 0xda}
3400DEFINE_GUID!{IID_ID3D11VideoDecoder,
3401    0x3c9c5b51, 0x995d, 0x48d1, 0x9b, 0x8d, 0xfa, 0x5c, 0xae, 0xde, 0xd6, 0x5c}
3402DEFINE_GUID!{IID_ID3D11VideoProcessorEnumerator,
3403    0x31627037, 0x53ab, 0x4200, 0x90, 0x61, 0x05, 0xfa, 0xa9, 0xab, 0x45, 0xf9}
3404DEFINE_GUID!{IID_ID3D11VideoProcessor,
3405    0x1d7b0652, 0x185f, 0x41c6, 0x85, 0xce, 0x0c, 0x5b, 0xe3, 0xd4, 0xae, 0x6c}
3406DEFINE_GUID!{IID_ID3D11AuthenticatedChannel,
3407    0x3015a308, 0xdcbd, 0x47aa, 0xa7, 0x47, 0x19, 0x24, 0x86, 0xd1, 0x4d, 0x4a}
3408DEFINE_GUID!{IID_ID3D11CryptoSession,
3409    0x9b32f9ad, 0xbdcc, 0x40a6, 0xa3, 0x9d, 0xd5, 0xc8, 0x65, 0x84, 0x57, 0x20}
3410DEFINE_GUID!{IID_ID3D11VideoDecoderOutputView,
3411    0xc2931aea, 0x2a85, 0x4f20, 0x86, 0x0f, 0xfb, 0xa1, 0xfd, 0x25, 0x6e, 0x18}
3412DEFINE_GUID!{IID_ID3D11VideoProcessorInputView,
3413    0x11ec5a5f, 0x51dc, 0x4945, 0xab, 0x34, 0x6e, 0x8c, 0x21, 0x30, 0x0e, 0xa5}
3414DEFINE_GUID!{IID_ID3D11VideoProcessorOutputView,
3415    0xa048285e, 0x25a9, 0x4527, 0xbd, 0x93, 0xd6, 0x8b, 0x68, 0xc4, 0x42, 0x54}
3416DEFINE_GUID!{IID_ID3D11VideoContext,
3417    0x61f21c45, 0x3c0e, 0x4a74, 0x9c, 0xea, 0x67, 0x10, 0x0d, 0x9a, 0xd5, 0xe4}
3418DEFINE_GUID!{IID_ID3D11VideoDevice,
3419    0x10ec4d5b, 0x975a, 0x4689, 0xb9, 0xe4, 0xd0, 0xaa, 0xc3, 0x0f, 0xe3, 0x33}
3420DEFINE_GUID!{IID_ID3D11Device,
3421    0xdb6f6ddb, 0xac77, 0x4e88, 0x82, 0x53, 0x81, 0x9d, 0xf9, 0xbb, 0xf1, 0x40}