1 // Copyright © 2015, Dmitry Roschin
2 // Licensed under the MIT License <LICENSE.md>
3 pub const D3D12_16BIT_INDEX_STRIP_CUT_VALUE: ::UINT = 0xffff;
4 pub const D3D12_32BIT_INDEX_STRIP_CUT_VALUE: ::UINT = 0xffffffff;
5 pub const D3D12_8BIT_INDEX_STRIP_CUT_VALUE: ::UINT = 0xff;
6 pub const D3D12_ANISOTROPIC_FILTERING_BIT: ::UINT = 0x40;
7 pub const D3D12_APPEND_ALIGNED_ELEMENT: ::UINT = 0xffffffff;
8 pub const D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT: ::UINT = 9;
9 pub const D3D12_CLIP_OR_CULL_DISTANCE_COUNT: ::UINT = 8;
10 pub const D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT: ::UINT = 2;
11 pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT: ::UINT = 14;
12 pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS: ::UINT = 4;
13 pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT: ::UINT = 32;
14 pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT: ::UINT = 15;
15 pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT: ::UINT = 16;
16 pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS: ::UINT = 4;
17 pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT: ::UINT = 15;
18 pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST: ::UINT = 1;
19 pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS: ::UINT = 1;
20 pub const D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT: ::UINT = 64;
21 pub const D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS: ::UINT = 4;
22 pub const D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT: ::UINT = 1;
23 pub const D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST: ::UINT = 1;
24 pub const D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS: ::UINT = 1;
25 pub const D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT: ::UINT = 32;
26 pub const D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS: ::UINT = 1;
27 pub const D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT: ::UINT = 128;
28 pub const D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST: ::UINT = 1;
29 pub const D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS: ::UINT = 1;
30 pub const D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT: ::UINT = 128;
31 pub const D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS: ::UINT = 1;
32 pub const D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT: ::UINT = 16;
33 pub const D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST: ::UINT = 1;
34 pub const D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS: ::UINT = 1;
35 pub const D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT: ::UINT = 16;
36 pub const D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT: ::UINT = 32;
37 pub const D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS: ::UINT = 4;
38 pub const D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
39 pub const D3D12_COMMONSHADER_TEMP_REGISTER_COUNT: ::UINT = 4096;
40 pub const D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST: ::UINT = 3;
41 pub const D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS: ::UINT = 3;
42 pub const D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX: ::UINT = 10;
43 pub const D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN: ::INT = -10;
44 pub const D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE: ::INT = -8;
45 pub const D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE: ::UINT = 7;
46 pub const D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT: ::UINT = 256;
47 pub const D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 256;
48 pub const D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP: ::UINT = 64;
49 pub const D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 240;
50 pub const D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP: ::UINT = 68;
51 pub const D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 224;
52 pub const D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP: ::UINT = 72;
53 pub const D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 208;
54 pub const D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP: ::UINT = 76;
55 pub const D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 192;
56 pub const D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP: ::UINT = 84;
57 pub const D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 176;
58 pub const D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP: ::UINT = 92;
59 pub const D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 160;
60 pub const D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP: ::UINT = 100;
61 pub const D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 144;
62 pub const D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP: ::UINT = 112;
63 pub const D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 128;
64 pub const D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP: ::UINT = 128;
65 pub const D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 112;
66 pub const D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP: ::UINT = 144;
67 pub const D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 96;
68 pub const D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP: ::UINT = 168;
69 pub const D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 80;
70 pub const D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP: ::UINT = 204;
71 pub const D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 64;
72 pub const D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP: ::UINT = 256;
73 pub const D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 48;
74 pub const D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP: ::UINT = 340;
75 pub const D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 32;
76 pub const D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP: ::UINT = 512;
77 pub const D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 16;
78 pub const D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP: ::UINT = 768;
79 pub const D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION: ::UINT = 1;
80 pub const D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT: ::UINT = 256;
81 pub const D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP: ::UINT = 768;
82 pub const D3D12_CS_4_X_THREAD_GROUP_MAX_X: ::UINT = 768;
83 pub const D3D12_CS_4_X_THREAD_GROUP_MAX_Y: ::UINT = 768;
84 pub const D3D12_CS_4_X_UAV_REGISTER_COUNT: ::UINT = 1;
85 pub const D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION: ::UINT = 65535;
86 pub const D3D12_CS_TGSM_REGISTER_COUNT: ::UINT = 8192;
87 pub const D3D12_CS_TGSM_REGISTER_READS_PER_INST: ::UINT = 1;
88 pub const D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS: ::UINT = 1;
89 pub const D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS: ::UINT = 1;
90 pub const D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS: ::UINT = 3;
91 pub const D3D12_CS_THREADGROUPID_REGISTER_COUNT: ::UINT = 1;
92 pub const D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS: ::UINT = 1;
93 pub const D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT: ::UINT = 1;
94 pub const D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS: ::UINT = 3;
95 pub const D3D12_CS_THREADIDINGROUP_REGISTER_COUNT: ::UINT = 1;
96 pub const D3D12_CS_THREADID_REGISTER_COMPONENTS: ::UINT = 3;
97 pub const D3D12_CS_THREADID_REGISTER_COUNT: ::UINT = 1;
98 pub const D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP: ::UINT = 1024;
99 pub const D3D12_CS_THREAD_GROUP_MAX_X: ::UINT = 1024;
100 pub const D3D12_CS_THREAD_GROUP_MAX_Y: ::UINT = 1024;
101 pub const D3D12_CS_THREAD_GROUP_MAX_Z: ::UINT = 64;
102 pub const D3D12_CS_THREAD_GROUP_MIN_X: ::UINT = 1;
103 pub const D3D12_CS_THREAD_GROUP_MIN_Y: ::UINT = 1;
104 pub const D3D12_CS_THREAD_GROUP_MIN_Z: ::UINT = 1;
105 pub const D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL: ::UINT = 16384;
106 pub const D3D12_DEFAULT_BLEND_FACTOR_ALPHA: ::FLOAT = 1.0;
107 pub const D3D12_DEFAULT_BLEND_FACTOR_BLUE: ::FLOAT = 1.0;
108 pub const D3D12_DEFAULT_BLEND_FACTOR_GREEN: ::FLOAT = 1.0;
109 pub const D3D12_DEFAULT_BLEND_FACTOR_RED: ::FLOAT = 1.0;
110 pub const D3D12_DEFAULT_BORDER_COLOR_COMPONENT: ::FLOAT = 0.0;
111 pub const D3D12_DEFAULT_DEPTH_BIAS: ::UINT = 0;
112 pub const D3D12_DEFAULT_DEPTH_BIAS_CLAMP: ::FLOAT = 0.0;
113 pub const D3D12_DEFAULT_MAX_ANISOTROPY: ::UINT = 16;
114 pub const D3D12_DEFAULT_MIP_LOD_BIAS: ::FLOAT = 0.0;
115 pub const D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT: ::UINT = 4194304;
116 pub const D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX: ::UINT = 0;
117 pub const D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT: ::UINT = 65536;
118 pub const D3D12_DEFAULT_SAMPLE_MASK: ::UINT = 0xffffffff;
119 pub const D3D12_DEFAULT_SCISSOR_ENDX: ::UINT = 0;
120 pub const D3D12_DEFAULT_SCISSOR_ENDY: ::UINT = 0;
121 pub const D3D12_DEFAULT_SCISSOR_STARTX: ::UINT = 0;
122 pub const D3D12_DEFAULT_SCISSOR_STARTY: ::UINT = 0;
123 pub const D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS: ::FLOAT = 0.0;
124 pub const D3D12_DEFAULT_STENCIL_READ_MASK: ::UINT = 0xff;
125 pub const D3D12_DEFAULT_STENCIL_REFERENCE: ::UINT = 0;
126 pub const D3D12_DEFAULT_STENCIL_WRITE_MASK: ::UINT = 0xff;
127 pub const D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX: ::UINT = 0;
128 pub const D3D12_DEFAULT_VIEWPORT_HEIGHT: ::UINT = 0;
129 pub const D3D12_DEFAULT_VIEWPORT_MAX_DEPTH: ::FLOAT = 0.0;
130 pub const D3D12_DEFAULT_VIEWPORT_MIN_DEPTH: ::FLOAT = 0.0;
131 pub const D3D12_DEFAULT_VIEWPORT_TOPLEFTX: ::UINT = 0;
132 pub const D3D12_DEFAULT_VIEWPORT_TOPLEFTY: ::UINT = 0;
133 pub const D3D12_DEFAULT_VIEWPORT_WIDTH: ::UINT = 0;
134 pub const D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND: ::UINT = 0xffffffff;
135 pub const D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END: ::UINT = 0xfffffff7;
136 pub const D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START: ::UINT = 0xfffffff0;
137 pub const D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: ::UINT = 3968;
138 pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS: ::UINT = 4;
139 pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
140 pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT: ::UINT = 32;
141 pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST: ::UINT = 2;
142 pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS: ::UINT = 1;
143 pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS: ::UINT = 3;
144 pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
145 pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT: ::UINT = 1;
146 pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST: ::UINT = 2;
147 pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS: ::UINT = 1;
148 pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: ::UINT = 4;
149 pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
150 pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT: ::UINT = 32;
151 pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: ::UINT = 2;
152 pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: ::UINT = 1;
153 pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: ::UINT = 1;
154 pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
155 pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: ::UINT = 1;
156 pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: ::UINT = 2;
157 pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: ::UINT = 1;
158 pub const D3D12_DS_OUTPUT_REGISTER_COMPONENTS: ::UINT = 4;
159 pub const D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
160 pub const D3D12_DS_OUTPUT_REGISTER_COUNT: ::UINT = 32;
161 pub const D3D12_FILTER_REDUCTION_TYPE_MASK: ::UINT = 0x3;
162 pub const D3D12_FILTER_REDUCTION_TYPE_SHIFT: ::UINT = 7;
163 pub const D3D12_FILTER_TYPE_MASK: ::UINT = 0x3;
164 pub const D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP: ::DOUBLE = 0.6;
165 pub const D3D12_FLOAT32_MAX: ::FLOAT = 3.402823466e+38;
166 pub const D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP: ::FLOAT = 0.6;
167 pub const D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR: ::FLOAT = 2.4;
168 pub const D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR: ::FLOAT = 1.0;
169 pub const D3D12_FLOAT_TO_SRGB_OFFSET: ::FLOAT = 0.055;
170 pub const D3D12_FLOAT_TO_SRGB_SCALE_1: ::FLOAT = 12.92;
171 pub const D3D12_FLOAT_TO_SRGB_SCALE_2: ::FLOAT = 1.055;
172 pub const D3D12_FLOAT_TO_SRGB_THRESHOLD: ::FLOAT = 0.0031308;
173 pub const D3D12_FTOI_INSTRUCTION_MAX_INPUT: ::FLOAT = 2147483647.999;
174 pub const D3D12_FTOI_INSTRUCTION_MIN_INPUT: ::FLOAT = -2147483648.999;
175 pub const D3D12_FTOU_INSTRUCTION_MAX_INPUT: ::FLOAT = 4294967295.999;
176 pub const D3D12_FTOU_INSTRUCTION_MIN_INPUT: ::FLOAT = 0.0;
177 pub const D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST: ::UINT = 2;
178 pub const D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS: ::UINT = 1;
179 pub const D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS: ::UINT = 1;
180 pub const D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
181 pub const D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT: ::UINT = 1;
182 pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS: ::UINT = 1;
183 pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
184 pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT: ::UINT = 1;
185 pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST: ::UINT = 2;
186 pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS: ::UINT = 1;
187 pub const D3D12_GS_INPUT_REGISTER_COMPONENTS: ::UINT = 4;
188 pub const D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
189 pub const D3D12_GS_INPUT_REGISTER_COUNT: ::UINT = 32;
190 pub const D3D12_GS_INPUT_REGISTER_READS_PER_INST: ::UINT = 2;
191 pub const D3D12_GS_INPUT_REGISTER_READ_PORTS: ::UINT = 1;
192 pub const D3D12_GS_INPUT_REGISTER_VERTICES: ::UINT = 32;
193 pub const D3D12_GS_MAX_INSTANCE_COUNT: ::UINT = 32;
194 pub const D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES: ::UINT = 1024;
195 pub const D3D12_GS_OUTPUT_ELEMENTS: ::UINT = 32;
196 pub const D3D12_GS_OUTPUT_REGISTER_COMPONENTS: ::UINT = 4;
197 pub const D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
198 pub const D3D12_GS_OUTPUT_REGISTER_COUNT: ::UINT = 32;
199 pub const D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT: ::UINT = 32;
200 pub const D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT: ::UINT = 32;
201 pub const D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS: ::UINT = 4;
202 pub const D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
203 pub const D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST: ::UINT = 2;
204 pub const D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS: ::UINT = 1;
205 pub const D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND: ::UINT = 0xffffffff;
206 pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS: ::UINT = 1;
207 pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
208 pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT: ::UINT = 1;
209 pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST: ::UINT = 2;
210 pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS: ::UINT = 1;
211 pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS: ::UINT = 1;
212 pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
213 pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT: ::UINT = 1;
214 pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST: ::UINT = 2;
215 pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS: ::UINT = 1;
216 pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: ::UINT = 1;
217 pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
218 pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: ::UINT = 1;
219 pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: ::UINT = 2;
220 pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: ::UINT = 1;
221 pub const D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND: ::UINT = 0xffffffff;
222 pub const D3D12_HS_MAXTESSFACTOR_LOWER_BOUND: ::FLOAT = 1.0;
223 pub const D3D12_HS_MAXTESSFACTOR_UPPER_BOUND: ::FLOAT = 64.0;
224 pub const D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: ::UINT = 3968;
225 pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS: ::UINT = 1;
226 pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
227 pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT: ::UINT = 1;
228 pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST: ::UINT = 2;
229 pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS: ::UINT = 1;
230 pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: ::UINT = 4;
231 pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
232 pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT: ::UINT = 32;
233 pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: ::UINT = 2;
234 pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: ::UINT = 1;
235 pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS: ::UINT = 128;
236 pub const D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES: ::UINT = 0;
237 pub const D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY: ::UINT = 0;
238 pub const D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES: ::UINT = 0;
239 pub const D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT: ::UINT = 1;
240 pub const D3D12_IA_INSTANCE_ID_BIT_COUNT: ::UINT = 32;
241 pub const D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT: ::UINT = 32;
242 pub const D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT: ::UINT = 32;
243 pub const D3D12_IA_PRIMITIVE_ID_BIT_COUNT: ::UINT = 32;
244 pub const D3D12_IA_VERTEX_ID_BIT_COUNT: ::UINT = 32;
245 pub const D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT: ::UINT = 32;
246 pub const D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS: ::UINT = 128;
247 pub const D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT: ::UINT = 32;
248 pub const D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT: ::UINT = 0xffffffff;
249 pub const D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER: ::UINT = 0xffffffff;
250 pub const D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL: ::UINT = 0xffffffff;
251 pub const D3D12_KEEP_UNORDERED_ACCESS_VIEWS: ::UINT = 0xffffffff;
252 pub const D3D12_LINEAR_GAMMA: ::FLOAT = 1.0;
253 pub const D3D12_MAG_FILTER_SHIFT: ::UINT = 2;
254 pub const D3D12_MAJOR_VERSION: ::UINT = 12;
255 pub const D3D12_MAX_BORDER_COLOR_COMPONENT: ::FLOAT = 1.0;
256 pub const D3D12_MAX_DEPTH: ::FLOAT = 1.0;
257 pub const D3D12_MAX_LIVE_STATIC_SAMPLERS: ::UINT = 2032;
258 pub const D3D12_MAX_MAXANISOTROPY: ::UINT = 16;
259 pub const D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT: ::UINT = 32;
260 pub const D3D12_MAX_POSITION_VALUE: ::FLOAT = 3.402823466e+34;
261 pub const D3D12_MAX_ROOT_COST: ::UINT = 64;
262 pub const D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1: ::UINT = 1000000;
263 pub const D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2: ::UINT = 1000000;
264 pub const D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE: ::UINT = 2048;
265 pub const D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP: ::UINT = 17;
266 pub const D3D12_MINOR_VERSION: ::UINT = 0;
267 pub const D3D12_MIN_BORDER_COLOR_COMPONENT: ::FLOAT = 0.0;
268 pub const D3D12_MIN_DEPTH: ::FLOAT = 0.0;
269 pub const D3D12_MIN_FILTER_SHIFT: ::UINT = 4;
270 pub const D3D12_MIN_MAXANISOTROPY: ::UINT = 0;
271 pub const D3D12_MIP_FILTER_SHIFT: ::UINT = 0;
272 pub const D3D12_MIP_LOD_BIAS_MAX: ::FLOAT = 15.99;
273 pub const D3D12_MIP_LOD_BIAS_MIN: ::FLOAT = -16.0;
274 pub const D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT: ::UINT = 8;
275 pub const D3D12_MIP_LOD_RANGE_BIT_COUNT: ::UINT = 8;
276 pub const D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH: ::FLOAT = 1.4;
277 pub const D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT: ::UINT = 0;
278 pub const D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END: ::UINT = 0xffffffff;
279 pub const D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START: ::UINT = 0xfffffff8;
280 pub const D3D12_PACKED_TILE: ::UINT = 0xffffffff;
281 pub const D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT: ::UINT = 15;
282 pub const D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT: ::UINT = 16;
283 pub const D3D12_PS_CS_UAV_REGISTER_COMPONENTS: ::UINT = 1;
284 pub const D3D12_PS_CS_UAV_REGISTER_COUNT: ::UINT = 8;
285 pub const D3D12_PS_CS_UAV_REGISTER_READS_PER_INST: ::UINT = 1;
286 pub const D3D12_PS_CS_UAV_REGISTER_READ_PORTS: ::UINT = 1;
287 pub const D3D12_PS_FRONTFACING_DEFAULT_VALUE: ::UINT = 0xffffffff;
288 pub const D3D12_PS_FRONTFACING_FALSE_VALUE: ::UINT = 0;
289 pub const D3D12_PS_FRONTFACING_TRUE_VALUE: ::UINT = 0xffffffff;
290 pub const D3D12_PS_INPUT_REGISTER_COMPONENTS: ::UINT = 4;
291 pub const D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
292 pub const D3D12_PS_INPUT_REGISTER_COUNT: ::UINT = 32;
293 pub const D3D12_PS_INPUT_REGISTER_READS_PER_INST: ::UINT = 2;
294 pub const D3D12_PS_INPUT_REGISTER_READ_PORTS: ::UINT = 1;
295 pub const D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT: ::FLOAT = 0.0;
296 pub const D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS: ::UINT = 1;
297 pub const D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
298 pub const D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT: ::UINT = 1;
299 pub const D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS: ::UINT = 1;
300 pub const D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
301 pub const D3D12_PS_OUTPUT_MASK_REGISTER_COUNT: ::UINT = 1;
302 pub const D3D12_PS_OUTPUT_REGISTER_COMPONENTS: ::UINT = 4;
303 pub const D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
304 pub const D3D12_PS_OUTPUT_REGISTER_COUNT: ::UINT = 8;
305 pub const D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT: ::FLOAT = 0.5;
306 pub const D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT: ::UINT = 16;
307 pub const D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE: ::UINT = 4096;
308 pub const D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP: ::UINT = 27;
309 pub const D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT: ::UINT = 4096;
310 pub const D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE: ::UINT = 4096;
311 pub const D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: ::UINT = 32;
312 pub const D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP: ::UINT = 32;
313 pub const D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION: ::UINT = 16384;
314 pub const D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT: ::UINT = 1024;
315 pub const D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT: ::UINT = 4096;
316 pub const D3D12_REQ_MAXANISOTROPY: ::UINT = 16;
317 pub const D3D12_REQ_MIP_LEVELS: ::UINT = 15;
318 pub const D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES: ::UINT = 2048;
319 pub const D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE: ::UINT = 4096;
320 pub const D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH: ::UINT = 16384;
321 pub const D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM: ::UINT = 128;
322 pub const D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM: ::FLOAT = 0.25;
323 pub const D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM: ::UINT = 2048;
324 pub const D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP: ::UINT = 20;
325 pub const D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE: ::UINT = 4096;
326 pub const D3D12_REQ_SUBRESOURCES: ::UINT = 30720;
327 pub const D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION: ::UINT = 2048;
328 pub const D3D12_REQ_TEXTURE1D_U_DIMENSION: ::UINT = 16384;
329 pub const D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION: ::UINT = 2048;
330 pub const D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION: ::UINT = 16384;
331 pub const D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION: ::UINT = 2048;
332 pub const D3D12_REQ_TEXTURECUBE_DIMENSION: ::UINT = 16384;
333 pub const D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL: ::UINT = 0;
334 pub const D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES: ::UINT = 0xffffffff;
335 pub const D3D12_SHADER_COMPONENT_MAPPING_MASK: ::UINT = 0x7;
336 pub const D3D12_SHADER_COMPONENT_MAPPING_SHIFT: ::UINT = 3;
337 pub const D3D12_SHADER_MAJOR_VERSION: ::UINT = 5;
338 pub const D3D12_SHADER_MAX_INSTANCES: ::UINT = 65535;
339 pub const D3D12_SHADER_MAX_INTERFACES: ::UINT = 253;
340 pub const D3D12_SHADER_MAX_INTERFACE_CALL_SITES: ::UINT = 4096;
341 pub const D3D12_SHADER_MAX_TYPES: ::UINT = 65535;
342 pub const D3D12_SHADER_MINOR_VERSION: ::UINT = 1;
343 pub const D3D12_SHIFT_INSTRUCTION_PAD_VALUE: ::UINT = 0;
344 pub const D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT: ::UINT = 5;
345 pub const D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT: ::UINT = 8;
346 pub const D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT: ::UINT = 65536;
347 pub const D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT: ::UINT = 4096;
348 pub const D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES: ::UINT = 2048;
349 pub const D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES: ::UINT = 512;
350 pub const D3D12_SO_BUFFER_SLOT_COUNT: ::UINT = 4;
351 pub const D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP: ::UINT = 0xffffffff;
352 pub const D3D12_SO_NO_RASTERIZED_STREAM: ::UINT = 0xffffffff;
353 pub const D3D12_SO_OUTPUT_COMPONENT_COUNT: ::UINT = 128;
354 pub const D3D12_SO_STREAM_COUNT: ::UINT = 4;
355 pub const D3D12_SPEC_DATE_DAY: ::UINT = 14;
356 pub const D3D12_SPEC_DATE_MONTH: ::UINT = 11;
357 pub const D3D12_SPEC_DATE_YEAR: ::UINT = 2014;
358 pub const D3D12_SPEC_VERSION: ::DOUBLE = 1.16;
359 pub const D3D12_SRGB_GAMMA: ::FLOAT = 2.2;
360 pub const D3D12_SRGB_TO_FLOAT_DENOMINATOR_1: ::FLOAT = 12.92;
361 pub const D3D12_SRGB_TO_FLOAT_DENOMINATOR_2: ::FLOAT = 1.055;
362 pub const D3D12_SRGB_TO_FLOAT_EXPONENT: ::FLOAT = 2.4;
363 pub const D3D12_SRGB_TO_FLOAT_OFFSET: ::FLOAT = 0.055;
364 pub const D3D12_SRGB_TO_FLOAT_THRESHOLD: ::FLOAT = 0.04045;
365 pub const D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP: ::FLOAT = 0.5;
366 pub const D3D12_STANDARD_COMPONENT_BIT_COUNT: ::UINT = 32;
367 pub const D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED: ::UINT = 64;
368 pub const D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE: ::UINT = 4;
369 pub const D3D12_STANDARD_PIXEL_COMPONENT_COUNT: ::UINT = 128;
370 pub const D3D12_STANDARD_PIXEL_ELEMENT_COUNT: ::UINT = 32;
371 pub const D3D12_STANDARD_VECTOR_SIZE: ::UINT = 4;
372 pub const D3D12_STANDARD_VERTEX_ELEMENT_COUNT: ::UINT = 32;
373 pub const D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT: ::UINT = 64;
374 pub const D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT: ::UINT = 8;
375 pub const D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT: ::UINT = 8;
376 pub const D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END: ::UINT = 0xffffffff;
377 pub const D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START: ::UINT = 0xfffffff0;
378 pub const D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR: ::UINT = 64;
379 pub const D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR: ::UINT = 64;
380 pub const D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR: ::UINT = 63;
381 pub const D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR: ::UINT = 64;
382 pub const D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR: ::UINT = 2;
383 pub const D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR: ::UINT = 1;
384 pub const D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR: ::UINT = 1;
385 pub const D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT: ::UINT = 16;
386 pub const D3D12_TEXTURE_DATA_PITCH_ALIGNMENT: ::UINT = 256;
387 pub const D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT: ::UINT = 512;
388 pub const D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES: ::UINT = 65536;
389 pub const D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT: ::UINT = 4096;
390 pub const D3D12_UAV_SLOT_COUNT: ::UINT = 64;
391 pub const D3D12_UNBOUND_MEMORY_ACCESS_RESULT: ::UINT = 0;
392 pub const D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX: ::UINT = 15;
393 pub const D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE: ::UINT = 16;
394 pub const D3D12_VIEWPORT_BOUNDS_MAX: ::UINT = 32767;
395 pub const D3D12_VIEWPORT_BOUNDS_MIN: ::INT = -32768;
396 pub const D3D12_VS_INPUT_REGISTER_COMPONENTS: ::UINT = 4;
397 pub const D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
398 pub const D3D12_VS_INPUT_REGISTER_COUNT: ::UINT = 32;
399 pub const D3D12_VS_INPUT_REGISTER_READS_PER_INST: ::UINT = 2;
400 pub const D3D12_VS_INPUT_REGISTER_READ_PORTS: ::UINT = 1;
401 pub const D3D12_VS_OUTPUT_REGISTER_COMPONENTS: ::UINT = 4;
402 pub const D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
403 pub const D3D12_VS_OUTPUT_REGISTER_COUNT: ::UINT = 32;
404 pub const D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT: ::UINT = 10;
405 pub const D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: ::UINT = 25;
406 pub const D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP: ::UINT = 25;
407 pub type D3D12_GPU_VIRTUAL_ADDRESS = ::UINT64;
408 ENUM!{enum D3D12_COMMAND_LIST_TYPE {
409     D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
410     D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
411     D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
412     D3D12_COMMAND_LIST_TYPE_COPY = 3,
413 }}
414 FLAGS!{enum D3D12_COMMAND_QUEUE_FLAGS {
415     D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
416     D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
417 }}
418 ENUM!{enum D3D12_COMMAND_QUEUE_PRIORITY {
419     D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
420     D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
421 }}
422 STRUCT!{struct D3D12_COMMAND_QUEUE_DESC {
423     Type: D3D12_COMMAND_LIST_TYPE,
424     Priority: ::INT,
425     Flags: D3D12_COMMAND_QUEUE_FLAGS,
426     NodeMask: ::UINT,
427 }}
428 ENUM!{enum D3D12_PRIMITIVE_TOPOLOGY_TYPE {
429     D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
430     D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
431     D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
432     D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
433     D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4,
434 }}
435 ENUM!{enum D3D12_INPUT_CLASSIFICATION {
436     D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
437     D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1,
438 }}
439 STRUCT!{struct D3D12_INPUT_ELEMENT_DESC {
440     SemanticName: ::LPCSTR,
441     SemanticIndex: ::UINT,
442     Format: ::DXGI_FORMAT,
443     InputSlot: ::UINT,
444     AlignedByteOffset: ::UINT,
445     InputSlotClass: D3D12_INPUT_CLASSIFICATION,
446     InstanceDataStepRate: ::UINT,
447 }}
448 ENUM!{enum D3D12_FILL_MODE {
449     D3D12_FILL_MODE_WIREFRAME = 2,
450     D3D12_FILL_MODE_SOLID = 3,
451 }}
452 pub type D3D12_PRIMITIVE_TOPOLOGY = ::D3D_PRIMITIVE_TOPOLOGY;
453 pub type D3D12_PRIMITIVE = ::D3D_PRIMITIVE;
454 ENUM!{enum D3D12_CULL_MODE {
455     D3D12_CULL_MODE_NONE = 1,
456     D3D12_CULL_MODE_FRONT = 2,
457     D3D12_CULL_MODE_BACK = 3,
458 }}
459 STRUCT!{struct D3D12_SO_DECLARATION_ENTRY {
460     Stream: ::UINT,
461     SemanticName: ::LPCSTR,
462     SemanticIndex: ::UINT,
463     StartComponent: ::BYTE,
464     ComponentCount: ::BYTE,
465     OutputSlot: ::BYTE,
466 }}
467 STRUCT!{struct D3D12_VIEWPORT {
468     TopLeftX: ::FLOAT,
469     TopLeftY: ::FLOAT,
470     Width: ::FLOAT,
471     Height: ::FLOAT,
472     MinDepth: ::FLOAT,
473     MaxDepth: ::FLOAT,
474 }}
475 pub type D3D12_RECT = ::RECT;
476 STRUCT!{struct D3D12_BOX {
477     left: ::UINT,
478     top: ::UINT,
479     front: ::UINT,
480     right: ::UINT,
481     bottom: ::UINT,
482     back: ::UINT,
483 }}
484 ENUM!{enum D3D12_COMPARISON_FUNC {
485     D3D12_COMPARISON_FUNC_NEVER = 1,
486     D3D12_COMPARISON_FUNC_LESS = 2,
487     D3D12_COMPARISON_FUNC_EQUAL = 3,
488     D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
489     D3D12_COMPARISON_FUNC_GREATER = 5,
490     D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
491     D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
492     D3D12_COMPARISON_FUNC_ALWAYS = 8,
493 }}
494 ENUM!{enum D3D12_DEPTH_WRITE_MASK {
495     D3D12_DEPTH_WRITE_MASK_ZERO = 0,
496     D3D12_DEPTH_WRITE_MASK_ALL = 1,
497 }}
498 ENUM!{enum D3D12_STENCIL_OP {
499     D3D12_STENCIL_OP_KEEP = 1,
500     D3D12_STENCIL_OP_ZERO = 2,
501     D3D12_STENCIL_OP_REPLACE = 3,
502     D3D12_STENCIL_OP_INCR_SAT = 4,
503     D3D12_STENCIL_OP_DECR_SAT = 5,
504     D3D12_STENCIL_OP_INVERT = 6,
505     D3D12_STENCIL_OP_INCR = 7,
506     D3D12_STENCIL_OP_DECR = 8,
507 }}
508 STRUCT!{struct D3D12_DEPTH_STENCILOP_DESC {
509     StencilFailOp: D3D12_STENCIL_OP,
510     StencilDepthFailOp: D3D12_STENCIL_OP,
511     StencilPassOp: D3D12_STENCIL_OP,
512     StencilFunc: D3D12_COMPARISON_FUNC,
513 }}
514 STRUCT!{struct D3D12_DEPTH_STENCIL_DESC {
515     DepthEnable: ::BOOL,
516     DepthWriteMask: D3D12_DEPTH_WRITE_MASK,
517     DepthFunc: D3D12_COMPARISON_FUNC,
518     StencilEnable: ::BOOL,
519     StencilReadMask: ::UINT8,
520     StencilWriteMask: ::UINT8,
521     FrontFace: D3D12_DEPTH_STENCILOP_DESC,
522     BackFace: D3D12_DEPTH_STENCILOP_DESC,
523 }}
524 ENUM!{enum D3D12_BLEND {
525     D3D12_BLEND_ZERO = 1,
526     D3D12_BLEND_ONE = 2,
527     D3D12_BLEND_SRC_COLOR = 3,
528     D3D12_BLEND_INV_SRC_COLOR = 4,
529     D3D12_BLEND_SRC_ALPHA = 5,
530     D3D12_BLEND_INV_SRC_ALPHA = 6,
531     D3D12_BLEND_DEST_ALPHA = 7,
532     D3D12_BLEND_INV_DEST_ALPHA = 8,
533     D3D12_BLEND_DEST_COLOR = 9,
534     D3D12_BLEND_INV_DEST_COLOR = 10,
535     D3D12_BLEND_SRC_ALPHA_SAT = 11,
536     D3D12_BLEND_BLEND_FACTOR = 14,
537     D3D12_BLEND_INV_BLEND_FACTOR = 15,
538     D3D12_BLEND_SRC1_COLOR = 16,
539     D3D12_BLEND_INV_SRC1_COLOR = 17,
540     D3D12_BLEND_SRC1_ALPHA = 18,
541     D3D12_BLEND_INV_SRC1_ALPHA = 19,
542 }}
543 ENUM!{enum D3D12_BLEND_OP {
544     D3D12_BLEND_OP_ADD = 1,
545     D3D12_BLEND_OP_SUBTRACT = 2,
546     D3D12_BLEND_OP_REV_SUBTRACT = 3,
547     D3D12_BLEND_OP_MIN = 4,
548     D3D12_BLEND_OP_MAX = 5,
549 }}
550 FLAGS!{enum D3D12_COLOR_WRITE_ENABLE {
551     D3D12_COLOR_WRITE_ENABLE_RED = 0x1,
552     D3D12_COLOR_WRITE_ENABLE_GREEN = 0x2,
553     D3D12_COLOR_WRITE_ENABLE_BLUE = 0x4,
554     D3D12_COLOR_WRITE_ENABLE_ALPHA = 0x8,
555     D3D12_COLOR_WRITE_ENABLE_ALL = 0xF,
556 }}
557 ENUM!{enum D3D12_LOGIC_OP {
558     D3D12_LOGIC_OP_CLEAR = 0,
559     D3D12_LOGIC_OP_SET = 1,
560     D3D12_LOGIC_OP_COPY = 2,
561     D3D12_LOGIC_OP_COPY_INVERTED = 3,
562     D3D12_LOGIC_OP_NOOP = 4,
563     D3D12_LOGIC_OP_INVERT = 5,
564     D3D12_LOGIC_OP_AND = 6,
565     D3D12_LOGIC_OP_NAND = 7,
566     D3D12_LOGIC_OP_OR = 8,
567     D3D12_LOGIC_OP_NOR = 9,
568     D3D12_LOGIC_OP_XOR = 10,
569     D3D12_LOGIC_OP_EQUIV = 11,
570     D3D12_LOGIC_OP_AND_REVERSE = 12,
571     D3D12_LOGIC_OP_AND_INVERTED = 13,
572     D3D12_LOGIC_OP_OR_REVERSE = 14,
573     D3D12_LOGIC_OP_OR_INVERTED = 15,
574 }}
575 STRUCT!{struct D3D12_RENDER_TARGET_BLEND_DESC {
576     BlendEnable: ::BOOL,
577     LogicOpEnable: ::BOOL,
578     SrcBlend: D3D12_BLEND,
579     DestBlend: D3D12_BLEND,
580     BlendOp: D3D12_BLEND_OP,
581     SrcBlendAlpha: D3D12_BLEND,
582     DestBlendAlpha: D3D12_BLEND,
583     BlendOpAlpha: D3D12_BLEND_OP,
584     LogicOp: D3D12_LOGIC_OP,
585     RenderTargetWriteMask: ::UINT8,
586 }}
587 STRUCT!{struct D3D12_BLEND_DESC {
588     AlphaToCoverageEnable: ::BOOL,
589     IndependentBlendEnable: ::BOOL,
590     RenderTarget: [D3D12_RENDER_TARGET_BLEND_DESC; 8],
591 }}
592 ENUM!{enum D3D12_CONSERVATIVE_RASTERIZATION_MODE {
593     D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
594     D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
595 }}
596 STRUCT!{struct D3D12_RASTERIZER_DESC {
597     FillMode: D3D12_FILL_MODE,
598     CullMode: D3D12_CULL_MODE,
599     FrontCounterClockwise: ::BOOL,
600     DepthBias: ::INT,
601     DepthBiasClamp: ::FLOAT,
602     SlopeScaledDepthBias: ::FLOAT,
603     DepthClipEnable: ::BOOL,
604     MultisampleEnable: ::BOOL,
605     AntialiasedLineEnable: ::BOOL,
606     ForcedSampleCount: ::UINT,
607     ConservativeRaster: D3D12_CONSERVATIVE_RASTERIZATION_MODE,
608 }}
609 RIDL!{interface ID3D12Object(ID3D12ObjectVtbl): IUnknown(IUnknownVtbl) {
610     fn GetPrivateData(
611         &mut self, guid: ::REFGUID, pDataSize: *mut ::UINT, pData: *mut ::c_void
612     ) -> ::HRESULT,
613     fn SetPrivateData(
614         &mut self, guid: ::REFGUID, DataSize: ::UINT, pData: *const ::c_void
615     ) -> ::HRESULT,
616     fn SetPrivateDataInterface(
617         &mut self, guid: ::REFGUID, pData: *const ::IUnknown
618     ) -> ::HRESULT,
619     fn SetName(&mut self, Name: ::LPCWSTR) -> ::HRESULT
620 }}
621 RIDL!{interface ID3D12DeviceChild(ID3D12DeviceChildVtbl): ID3D12Object(ID3D12ObjectVtbl) {
622     fn GetDevice(
623         &mut self, riid: ::REFGUID, ppvDevice: *mut *mut ::c_void
624     ) -> ::HRESULT
625 }}
626 RIDL!{interface ID3D12RootSignature(ID3D12RootSignatureVtbl):
627     ID3D12DeviceChild(ID3D12DeviceChildVtbl) {
628 }}
629 STRUCT!{struct D3D12_SHADER_BYTECODE {
630     pShaderBytecode: *const ::c_void,
631     BytecodeLength: ::SIZE_T,
632 }}
633 STRUCT!{struct D3D12_STREAM_OUTPUT_DESC {
634     pSODeclaration: *const D3D12_SO_DECLARATION_ENTRY,
635     NumEntries: ::UINT,
636     pBufferStrides: *const ::UINT,
637     NumStrides: ::UINT,
638     RasterizedStream: ::UINT,
639 }}
640 STRUCT!{struct D3D12_INPUT_LAYOUT_DESC {
641     pInputElementDescs: *const D3D12_INPUT_ELEMENT_DESC,
642     NumElements: ::UINT,
643 }}
644 ENUM!{enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE {
645     D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
646     D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
647     D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2,
648 }}
649 STRUCT!{struct D3D12_CACHED_PIPELINE_STATE {
650     pCachedBlob: *const ::c_void,
651     CachedBlobSizeInBytes: ::SIZE_T,
652 }}
653 FLAGS!{enum D3D12_PIPELINE_STATE_FLAGS {
654     D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
655     D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
656 }}
657 STRUCT!{struct D3D12_GRAPHICS_PIPELINE_STATE_DESC {
658     pRootSignature: *mut ID3D12RootSignature,
659     VS: D3D12_SHADER_BYTECODE,
660     PS: D3D12_SHADER_BYTECODE,
661     DS: D3D12_SHADER_BYTECODE,
662     HS: D3D12_SHADER_BYTECODE,
663     GS: D3D12_SHADER_BYTECODE,
664     StreamOutput: D3D12_STREAM_OUTPUT_DESC,
665     BlendState: D3D12_BLEND_DESC,
666     SampleMask: ::UINT,
667     RasterizerState: D3D12_RASTERIZER_DESC,
668     DepthStencilState: D3D12_DEPTH_STENCIL_DESC,
669     InputLayout: D3D12_INPUT_LAYOUT_DESC,
670     IBStripCutValue: D3D12_INDEX_BUFFER_STRIP_CUT_VALUE,
671     PrimitiveTopologyType: D3D12_PRIMITIVE_TOPOLOGY_TYPE,
672     NumRenderTargets: ::UINT,
673     RTVFormats: [::DXGI_FORMAT; 8],
674     DSVFormat: ::DXGI_FORMAT,
675     SampleDesc: ::DXGI_SAMPLE_DESC,
676     NodeMask: ::UINT,
677     CachedPSO: D3D12_CACHED_PIPELINE_STATE,
678     Flags: D3D12_PIPELINE_STATE_FLAGS,
679 }}
680 STRUCT!{struct D3D12_COMPUTE_PIPELINE_STATE_DESC {
681     pRootSignature: *mut ID3D12RootSignature,
682     CS: D3D12_SHADER_BYTECODE,
683     NodeMask: ::UINT,
684     CachedPSO: D3D12_CACHED_PIPELINE_STATE,
685     Flags: D3D12_PIPELINE_STATE_FLAGS,
686 }}
687 ENUM!{enum D3D12_FEATURE {
688     D3D12_FEATURE_D3D12_OPTIONS = 0,
689     D3D12_FEATURE_ARCHITECTURE = 1,
690     D3D12_FEATURE_FEATURE_LEVELS = 2,
691     D3D12_FEATURE_FORMAT_SUPPORT = 3,
692     D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
693     D3D12_FEATURE_FORMAT_INFO = 5,
694     D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
695 }}
696 FLAGS!{enum D3D12_SHADER_MIN_PRECISION_SUPPORT {
697     D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
698     D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
699     D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2,
700 }}
701 ENUM!{enum D3D12_TILED_RESOURCES_TIER {
702     D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
703     D3D12_TILED_RESOURCES_TIER_1 = 1,
704     D3D12_TILED_RESOURCES_TIER_2 = 2,
705     D3D12_TILED_RESOURCES_TIER_3 = 3,
706 }}
707 ENUM!{enum D3D12_RESOURCE_BINDING_TIER {
708     D3D12_RESOURCE_BINDING_TIER_1 = 1,
709     D3D12_RESOURCE_BINDING_TIER_2 = 2,
710     D3D12_RESOURCE_BINDING_TIER_3 = 3,
711 }}
712 ENUM!{enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
713     D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
714     D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
715     D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
716     D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
717 }}
718 FLAGS!{enum D3D12_FORMAT_SUPPORT1 {
719     D3D12_FORMAT_SUPPORT1_NONE = 0x0,
720     D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
721     D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
722     D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
723     D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
724     D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
725     D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
726     D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
727     D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
728     D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
729     D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
730     D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
731     D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
732     D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
733     D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
734     D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
735     D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
736     D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
737     D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
738     D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
739     D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
740     D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
741     D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
742     D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
743     D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
744     D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
745     D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
746     D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
747     D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
748     D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
749 }}
750 FLAGS!{enum D3D12_FORMAT_SUPPORT2 {
751     D3D12_FORMAT_SUPPORT2_NONE = 0x0,
752     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
753     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
754     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
755     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
756     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
757     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
758     D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
759     D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
760     D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
761     D3D12_FORMAT_SUPPORT2_TILED = 0x200,
762     D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
763 }}
764 FLAGS!{enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS {
765     D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0x0,
766     D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1,
767 }}
768 ENUM!{enum D3D12_CROSS_NODE_SHARING_TIER {
769     D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
770     D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
771     D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
772     D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
773 }}
774 ENUM!{enum D3D12_RESOURCE_HEAP_TIER {
775     D3D12_RESOURCE_HEAP_TIER_1 = 1,
776     D3D12_RESOURCE_HEAP_TIER_2 = 2,
777 }}
778 STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS {
779     DoublePrecisionFloatShaderOps: ::BOOL,
780     OutputMergerLogicOp: ::BOOL,
781     MinPrecisionSupport: D3D12_SHADER_MIN_PRECISION_SUPPORT,
782     TiledResourcesTier: D3D12_TILED_RESOURCES_TIER,
783     ResourceBindingTier: D3D12_RESOURCE_BINDING_TIER,
784     PSSpecifiedStencilRefSupported: ::BOOL,
785     TypedUAVLoadAdditionalFormats: ::BOOL,
786     ROVsSupported: ::BOOL,
787     ConservativeRasterizationTier: D3D12_CONSERVATIVE_RASTERIZATION_TIER,
788     MaxGPUVirtualAddressBitsPerResource: ::UINT,
789     StandardSwizzle64KBSupported: ::BOOL,
790     CrossNodeSharingTier: D3D12_CROSS_NODE_SHARING_TIER,
791     CrossAdapterRowMajorTextureSupported: ::BOOL,
792     VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation: ::BOOL,
793     ResourceHeapTier: D3D12_RESOURCE_HEAP_TIER,
794 }}
795 
796 
797 
798 
799 
800 
801 
802 
803 
804 FLAGS!{ enum D3D12_BUFFER_SRV_FLAGS {
805     D3D12_BUFFER_SRV_FLAG_NONE = 0x0,
806     D3D12_BUFFER_SRV_FLAG_RAW = 0x1,
807 }}
808 
809 FLAGS!{ enum D3D12_BUFFER_UAV_FLAGS {
810     D3D12_BUFFER_UAV_FLAG_NONE = 0x0,
811     D3D12_BUFFER_UAV_FLAG_RAW = 0x1,
812 }}
813 
814 FLAGS!{ enum D3D12_CLEAR_FLAGS {
815     D3D12_CLEAR_FLAG_DEPTH = 0x1,
816     D3D12_CLEAR_FLAG_STENCIL = 0x2,
817 }}
818 
819 
820 ENUM!{ enum D3D12_CPU_PAGE_PROPERTY {
821     D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
822     D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
823     D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
824     D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
825 }}
826 
827 
828 FLAGS!{ enum D3D12_DESCRIPTOR_HEAP_FLAGS {
829     D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
830     D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
831 }}
832 
833 ENUM!{ enum D3D12_DESCRIPTOR_HEAP_TYPE {
834     D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
835     D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = 1,
836     D3D12_DESCRIPTOR_HEAP_TYPE_RTV = 2,
837     D3D12_DESCRIPTOR_HEAP_TYPE_DSV = 3,
838     D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = 4,
839 }}
840 
841 ENUM!{ enum D3D12_DESCRIPTOR_RANGE_TYPE {
842     D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
843     D3D12_DESCRIPTOR_RANGE_TYPE_UAV = 1,
844     D3D12_DESCRIPTOR_RANGE_TYPE_CBV = 2,
845     D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = 3,
846 }}
847 
848 ENUM!{ enum D3D12_DSV_DIMENSION {
849     D3D12_DSV_DIMENSION_UNKNOWN = 0,
850     D3D12_DSV_DIMENSION_TEXTURE1D = 1,
851     D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
852     D3D12_DSV_DIMENSION_TEXTURE2D = 3,
853     D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
854     D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
855     D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
856 }}
857 
858 FLAGS!{ enum D3D12_DSV_FLAGS {
859     D3D12_DSV_FLAG_NONE = 0x0,
860     D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
861     D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
862 }}
863 
864 
865 
866 FLAGS!{ enum D3D12_FENCE_FLAGS {
867     D3D12_FENCE_FLAG_NONE = 0x0,
868     D3D12_FENCE_FLAG_SHARED = 0x1,
869     D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
870 }}
871 
872 
873 
874 ENUM!{ enum D3D12_FILTER {
875     D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
876     D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 1,
877     D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 4,
878     D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 5,
879     D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 16,
880     D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 17,
881     D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 20,
882     D3D12_FILTER_MIN_MAG_MIP_LINEAR = 21,
883     D3D12_FILTER_ANISOTROPIC = 85,
884     D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 128,
885     D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 129,
886     D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 132,
887     D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 133,
888     D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 144,
889     D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 145,
890     D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 148,
891     D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 149,
892     D3D12_FILTER_COMPARISON_ANISOTROPIC = 213,
893     D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 256,
894     D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 257,
895     D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 260,
896     D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 261,
897     D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 272,
898     D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 273,
899     D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 276,
900     D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 277,
901     D3D12_FILTER_MINIMUM_ANISOTROPIC = 341,
902     D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 384,
903     D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 385,
904     D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 388,
905     D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 389,
906     D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 400,
907     D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 401,
908     D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 404,
909     D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 405,
910     D3D12_FILTER_MAXIMUM_ANISOTROPIC = 469,
911 }}
912 
913 ENUM!{ enum D3D12_FILTER_REDUCTION_TYPE {
914     D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
915     D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
916     D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
917     D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
918 }}
919 
920 ENUM!{ enum D3D12_FILTER_TYPE {
921     D3D12_FILTER_TYPE_POINT = 0,
922     D3D12_FILTER_TYPE_LINEAR = 1,
923 }}
924 
925 
926 
927 FLAGS!{ enum D3D12_HEAP_FLAGS {
928     D3D12_HEAP_FLAG_NONE = 0x0,
929     D3D12_HEAP_FLAG_SHARED = 0x1,
930     D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
931     D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
932     D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
933     D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
934     D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
935     D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
936     D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
937     D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
938     D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
939 }}
940 
941 ENUM!{ enum D3D12_HEAP_TYPE {
942     D3D12_HEAP_TYPE_DEFAULT = 1,
943     D3D12_HEAP_TYPE_UPLOAD = 2,
944     D3D12_HEAP_TYPE_READBACK = 3,
945     D3D12_HEAP_TYPE_CUSTOM = 4,
946 }}
947 
948 
949 
950 ENUM!{ enum D3D12_INDIRECT_ARGUMENT_TYPE {
951     D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
952     D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = 1,
953     D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = 2,
954     D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = 3,
955     D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = 4,
956     D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = 5,
957     D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = 6,
958     D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = 7,
959     D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = 8,
960 }}
961 
962 
963 
964 
965 
966 ENUM!{ enum D3D12_MEMORY_POOL {
967     D3D12_MEMORY_POOL_UNKNOWN = 0,
968     D3D12_MEMORY_POOL_L0 = 1,
969     D3D12_MEMORY_POOL_L1 = 2,
970 }}
971 
972 
973 
974 
975 ENUM!{ enum D3D12_PREDICATION_OP {
976     D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
977     D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
978 }}
979 
980 
981 
982 ENUM!{ enum D3D12_QUERY_HEAP_TYPE {
983     D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
984     D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
985     D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
986     D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
987 }}
988 
989 ENUM!{ enum D3D12_QUERY_TYPE {
990     D3D12_QUERY_TYPE_OCCLUSION = 0,
991     D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
992     D3D12_QUERY_TYPE_TIMESTAMP = 2,
993     D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
994     D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
995     D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
996     D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
997     D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
998 }}
999 
1000 FLAGS!{ enum D3D12_RESOURCE_BARRIER_FLAGS {
1001     D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
1002     D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
1003     D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
1004 }}
1005 
1006 ENUM!{ enum D3D12_RESOURCE_BARRIER_TYPE {
1007     D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
1008     D3D12_RESOURCE_BARRIER_TYPE_ALIASING = 1,
1009     D3D12_RESOURCE_BARRIER_TYPE_UAV = 2,
1010 }}
1011 
1012 
1013 ENUM!{ enum D3D12_RESOURCE_DIMENSION {
1014     D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
1015     D3D12_RESOURCE_DIMENSION_BUFFER = 1,
1016     D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
1017     D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
1018     D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
1019 }}
1020 
1021 FLAGS!{ enum D3D12_RESOURCE_FLAGS {
1022     D3D12_RESOURCE_FLAG_NONE = 0x0,
1023     D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
1024     D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
1025     D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
1026     D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
1027     D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
1028     D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
1029 }}
1030 
1031 
1032 FLAGS!{ enum D3D12_RESOURCE_STATES {
1033     D3D12_RESOURCE_STATE_COMMON = 0x0,
1034     D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
1035     D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
1036     D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
1037     D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
1038     D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
1039     D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
1040     D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
1041     D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
1042     D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
1043     D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
1044     D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
1045     D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
1046     D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
1047     D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
1048     D3D12_RESOURCE_STATE_GENERIC_READ = 0xAC3,
1049     D3D12_RESOURCE_STATE_PRESENT = 0x0,
1050     D3D12_RESOURCE_STATE_PREDICATION = 0x200,
1051 }}
1052 
1053 ENUM!{ enum D3D12_ROOT_PARAMETER_TYPE {
1054     D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
1055     D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 1,
1056     D3D12_ROOT_PARAMETER_TYPE_CBV = 2,
1057     D3D12_ROOT_PARAMETER_TYPE_SRV = 3,
1058     D3D12_ROOT_PARAMETER_TYPE_UAV = 4,
1059 }}
1060 
1061 FLAGS!{ enum D3D12_ROOT_SIGNATURE_FLAGS {
1062     D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
1063     D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
1064     D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
1065     D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
1066     D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
1067     D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
1068     D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
1069     D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
1070 }}
1071 
1072 ENUM!{ enum D3D12_RTV_DIMENSION {
1073     D3D12_RTV_DIMENSION_UNKNOWN = 0,
1074     D3D12_RTV_DIMENSION_BUFFER = 1,
1075     D3D12_RTV_DIMENSION_TEXTURE1D = 2,
1076     D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
1077     D3D12_RTV_DIMENSION_TEXTURE2D = 4,
1078     D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
1079     D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
1080     D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
1081     D3D12_RTV_DIMENSION_TEXTURE3D = 8,
1082 }}
1083 
1084 ENUM!{ enum D3D12_SHADER_COMPONENT_MAPPING {
1085     D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
1086     D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
1087     D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
1088     D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
1089     D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
1090     D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
1091 }}
1092 
1093 
1094 ENUM!{ enum D3D12_SHADER_VISIBILITY {
1095     D3D12_SHADER_VISIBILITY_ALL = 0,
1096     D3D12_SHADER_VISIBILITY_VERTEX = 1,
1097     D3D12_SHADER_VISIBILITY_HULL = 2,
1098     D3D12_SHADER_VISIBILITY_DOMAIN = 3,
1099     D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
1100     D3D12_SHADER_VISIBILITY_PIXEL = 5,
1101 }}
1102 
1103 ENUM!{ enum D3D12_SRV_DIMENSION {
1104     D3D12_SRV_DIMENSION_UNKNOWN = 0,
1105     D3D12_SRV_DIMENSION_BUFFER = 1,
1106     D3D12_SRV_DIMENSION_TEXTURE1D = 2,
1107     D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
1108     D3D12_SRV_DIMENSION_TEXTURE2D = 4,
1109     D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
1110     D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
1111     D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
1112     D3D12_SRV_DIMENSION_TEXTURE3D = 8,
1113     D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
1114     D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
1115 }}
1116 
1117 ENUM!{ enum D3D12_STATIC_BORDER_COLOR {
1118     D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
1119     D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = 1,
1120     D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = 2,
1121 }}
1122 
1123 
1124 
1125 ENUM!{ enum D3D12_TEXTURE_ADDRESS_MODE {
1126     D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
1127     D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
1128     D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
1129     D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
1130     D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5,
1131 }}
1132 
1133 ENUM!{ enum D3D12_TEXTURE_COPY_TYPE {
1134     D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
1135     D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
1136 }}
1137 
1138 ENUM!{ enum D3D12_TEXTURE_LAYOUT {
1139     D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
1140     D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
1141     D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
1142     D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
1143 }}
1144 
1145 
1146 FLAGS!{ enum D3D12_TILE_COPY_FLAGS {
1147     D3D12_TILE_COPY_FLAG_NONE = 0x0,
1148     D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
1149     D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
1150     D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
1151 }}
1152 
1153 FLAGS!{ enum D3D12_TILE_MAPPING_FLAGS {
1154     D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
1155     D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
1156 }}
1157 
1158 FLAGS!{ enum D3D12_TILE_RANGE_FLAGS {
1159     D3D12_TILE_RANGE_FLAG_NONE = 0x0,
1160     D3D12_TILE_RANGE_FLAG_NULL = 0x1,
1161     D3D12_TILE_RANGE_FLAG_SKIP = 0x2,
1162     D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 0x4,
1163 }}
1164 
1165 ENUM!{ enum D3D12_UAV_DIMENSION {
1166     D3D12_UAV_DIMENSION_UNKNOWN = 0,
1167     D3D12_UAV_DIMENSION_BUFFER = 1,
1168     D3D12_UAV_DIMENSION_TEXTURE1D = 2,
1169     D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
1170     D3D12_UAV_DIMENSION_TEXTURE2D = 4,
1171     D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
1172     D3D12_UAV_DIMENSION_TEXTURE3D = 8,
1173 }}
1174 
1175 ENUM!{ enum D3D_ROOT_SIGNATURE_VERSION {
1176     D3D_ROOT_SIGNATURE_VERSION_1 = 1,
1177 }}
1178 
1179 
1180 
1181 
1182 
1183 STRUCT!{struct D3D12_BUFFER_RTV {
1184     FirstElement: ::UINT64,
1185     NumElements: ::UINT,
1186 }}
1187 
1188 STRUCT!{struct D3D12_BUFFER_SRV {
1189     FirstElement: ::UINT64,
1190     NumElements: ::UINT,
1191     StructureByteStride: ::UINT,
1192     Flags: ::D3D12_BUFFER_SRV_FLAGS,
1193 }}
1194 
1195 STRUCT!{struct D3D12_BUFFER_UAV {
1196     FirstElement: ::UINT64,
1197     NumElements: ::UINT,
1198     StructureByteStride: ::UINT,
1199     CounterOffsetInBytes: ::UINT64,
1200     Flags: ::D3D12_BUFFER_UAV_FLAGS,
1201 }}
1202 
1203 
1204 
1205 STRUCT!{struct D3D12_CLEAR_VALUE {
1206     Format: ::DXGI_FORMAT,
1207     u: [::FLOAT; 4],
1208 }}
1209 
1210 UNION!(D3D12_CLEAR_VALUE, u, DepthStencil, DepthStencil_mut, ::D3D12_DEPTH_STENCIL_VALUE);
1211 UNION!(D3D12_CLEAR_VALUE, u, Color, Color_mut, [::FLOAT; 4]);
1212 
1213 
1214 
1215 STRUCT!{struct D3D12_COMMAND_SIGNATURE_DESC {
1216     ByteStride: ::UINT,
1217     NumArgumentDescs: ::UINT,
1218     pArgumentDescs: *const ::D3D12_INDIRECT_ARGUMENT_DESC,
1219     NodeMask: ::UINT,
1220 }}
1221 
1222 
1223 
1224 STRUCT!{struct D3D12_CONSTANT_BUFFER_VIEW_DESC {
1225     BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
1226     SizeInBytes: ::UINT,
1227 }}
1228 
1229 STRUCT!{struct D3D12_CPU_DESCRIPTOR_HANDLE {
1230     ptr: ::SIZE_T,
1231 }}
1232 
1233 
1234 
1235 STRUCT!{struct D3D12_DEPTH_STENCIL_VALUE {
1236     Depth: ::FLOAT,
1237     Stencil: ::UINT8,
1238 }}
1239 
1240 STRUCT!{struct D3D12_DEPTH_STENCIL_VIEW_DESC {
1241     Format: ::DXGI_FORMAT,
1242     ViewDimension: ::D3D12_DSV_DIMENSION,
1243     Flags: ::D3D12_DSV_FLAGS,
1244     u: ::D3D12_TEX1D_ARRAY_DSV,
1245 }}
1246 
1247 UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
1248     ::D3D12_TEX2DMS_ARRAY_DSV);
1249 UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, ::D3D12_TEX2DMS_DSV);
1250 UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
1251     ::D3D12_TEX2D_ARRAY_DSV);
1252 UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture2D, Texture2D_mut, ::D3D12_TEX2D_DSV);
1253 UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
1254     ::D3D12_TEX1D_ARRAY_DSV);
1255 UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture1D, Texture1D_mut, ::D3D12_TEX1D_DSV);
1256 
1257 STRUCT!{struct D3D12_DESCRIPTOR_HEAP_DESC {
1258     Type: ::D3D12_DESCRIPTOR_HEAP_TYPE,
1259     NumDescriptors: ::UINT,
1260     Flags: ::D3D12_DESCRIPTOR_HEAP_FLAGS,
1261     NodeMask: ::UINT,
1262 }}
1263 
1264 STRUCT!{struct D3D12_DESCRIPTOR_RANGE {
1265     RangeType: ::D3D12_DESCRIPTOR_RANGE_TYPE,
1266     NumDescriptors: ::UINT,
1267     BaseShaderRegister: ::UINT,
1268     RegisterSpace: ::UINT,
1269     OffsetInDescriptorsFromTableStart: ::UINT,
1270 }}
1271 
1272 STRUCT!{struct D3D12_DISCARD_REGION {
1273     NumRects: ::UINT,
1274     pRects: *const ::D3D12_RECT,
1275     FirstSubresource: ::UINT,
1276     NumSubresources: ::UINT,
1277 }}
1278 
1279 STRUCT!{struct D3D12_DISPATCH_ARGUMENTS {
1280     ThreadGroupCountX: ::UINT,
1281     ThreadGroupCountY: ::UINT,
1282     ThreadGroupCountZ: ::UINT,
1283 }}
1284 
1285 STRUCT!{struct D3D12_DRAW_ARGUMENTS {
1286     VertexCountPerInstance: ::UINT,
1287     InstanceCount: ::UINT,
1288     StartVertexLocation: ::UINT,
1289     StartInstanceLocation: ::UINT,
1290 }}
1291 
1292 STRUCT!{struct D3D12_DRAW_INDEXED_ARGUMENTS {
1293     IndexCountPerInstance: ::UINT,
1294     InstanceCount: ::UINT,
1295     StartIndexLocation: ::UINT,
1296     BaseVertexLocation: ::INT,
1297     StartInstanceLocation: ::UINT,
1298 }}
1299 
1300 STRUCT!{struct D3D12_FEATURE_DATA_ARCHITECTURE {
1301     NodeIndex: ::UINT,
1302     TileBasedRenderer: ::BOOL,
1303     UMA: ::BOOL,
1304     CacheCoherentUMA: ::BOOL,
1305 }}
1306 
1307 
1308 STRUCT!{struct D3D12_FEATURE_DATA_FEATURE_LEVELS {
1309     NumFeatureLevels: ::UINT,
1310     pFeatureLevelsRequested: *const ::D3D_FEATURE_LEVEL,
1311     MaxSupportedFeatureLevel: ::D3D_FEATURE_LEVEL,
1312 }}
1313 
1314 STRUCT!{struct D3D12_FEATURE_DATA_FORMAT_INFO {
1315     Format: ::DXGI_FORMAT,
1316     PlaneCount: ::UINT8,
1317 }}
1318 
1319 STRUCT!{struct D3D12_FEATURE_DATA_FORMAT_SUPPORT {
1320     Format: ::DXGI_FORMAT,
1321     Support1: ::D3D12_FORMAT_SUPPORT1,
1322     Support2: ::D3D12_FORMAT_SUPPORT2,
1323 }}
1324 
1325 STRUCT!{struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT {
1326     MaxGPUVirtualAddressBitsPerResource: ::UINT,
1327     MaxGPUVirtualAddressBitsPerProcess: ::UINT,
1328 }}
1329 
1330 STRUCT!{struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS {
1331     Format: ::DXGI_FORMAT,
1332     SampleCount: ::UINT,
1333     Flags: ::D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS,
1334     NumQualityLevels: ::UINT,
1335 }}
1336 
1337 STRUCT!{struct D3D12_GPU_DESCRIPTOR_HANDLE {
1338     ptr: ::UINT64,
1339 }}
1340 
1341 
1342 
1343 STRUCT!{struct D3D12_HEAP_DESC {
1344     SizeInBytes: ::UINT64,
1345     Properties: ::D3D12_HEAP_PROPERTIES,
1346     Alignment: ::UINT64,
1347     Flags: ::D3D12_HEAP_FLAGS,
1348 }}
1349 
1350 STRUCT!{struct D3D12_HEAP_PROPERTIES {
1351     Type: ::D3D12_HEAP_TYPE,
1352     CPUPageProperty: ::D3D12_CPU_PAGE_PROPERTY,
1353     MemoryPoolPreference: ::D3D12_MEMORY_POOL,
1354     CreationNodeMask: ::UINT,
1355     VisibleNodeMask: ::UINT,
1356 }}
1357 
1358 STRUCT!{struct D3D12_INDEX_BUFFER_VIEW {
1359     BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
1360     SizeInBytes: ::UINT,
1361     Format: ::DXGI_FORMAT,
1362 }}
1363 
1364 STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_VertexBuffer {
1365     Slot: ::UINT,
1366 }}
1367 
1368 STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_Constant {
1369     RootParameterIndex: ::UINT,
1370     DestOffsetIn32BitValues: ::UINT,
1371     Num32BitValuesToSet: ::UINT,
1372 }}
1373 
1374 STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_ConstantBufferView {
1375     RootParameterIndex: ::UINT,
1376 }}
1377 
1378 STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_ShaderResourceView {
1379     RootParameterIndex: ::UINT,
1380 }}
1381 
1382 STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_UnorderedAccessView {
1383     RootParameterIndex: ::UINT,
1384 }}
1385 
1386 STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC {
1387     Type: ::D3D12_INDIRECT_ARGUMENT_TYPE,
1388     u: ::D3D12_INDIRECT_ARGUMENT_DESC_Constant,
1389 }}
1390 
1391 UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, UnorderedAccessView, UnorderedAccessView_mut,
1392     D3D12_INDIRECT_ARGUMENT_DESC_UnorderedAccessView);
1393 UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, ShaderResourceView, ShaderResourceView_mut,
1394     D3D12_INDIRECT_ARGUMENT_DESC_ShaderResourceView);
1395 UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, ConstantBufferView, ConstantBufferView_mut,
1396     D3D12_INDIRECT_ARGUMENT_DESC_ConstantBufferView);
1397 UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, Constant, Constant_mut,
1398     D3D12_INDIRECT_ARGUMENT_DESC_Constant);
1399 UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, VertexBuffer, VertexBuffer_mut,
1400     D3D12_INDIRECT_ARGUMENT_DESC_VertexBuffer);
1401 
1402 
1403 
1404 
1405 STRUCT!{struct D3D12_MEMCPY_DEST {
1406     pData: *mut ::c_void,
1407     RowPitch: ::SIZE_T,
1408     SlicePitch: ::SIZE_T,
1409 }}
1410 
1411 STRUCT!{struct D3D12_PACKED_MIP_INFO {
1412     NumStandardMips: ::UINT8,
1413     NumPackedMips: ::UINT8,
1414     NumTilesForPackedMips: ::UINT,
1415     StartTileIndexInOverallResource: ::UINT,
1416 }}
1417 
1418 STRUCT!{struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT {
1419     Offset: ::UINT64,
1420     Footprint: ::D3D12_SUBRESOURCE_FOOTPRINT,
1421 }}
1422 
1423 STRUCT!{struct D3D12_QUERY_DATA_PIPELINE_STATISTICS {
1424     IAVertices: ::UINT64,
1425     IAPrimitives: ::UINT64,
1426     VSInvocations: ::UINT64,
1427     GSInvocations: ::UINT64,
1428     GSPrimitives: ::UINT64,
1429     CInvocations: ::UINT64,
1430     CPrimitives: ::UINT64,
1431     PSInvocations: ::UINT64,
1432     HSInvocations: ::UINT64,
1433     DSInvocations: ::UINT64,
1434     CSInvocations: ::UINT64,
1435 }}
1436 
1437 STRUCT!{struct D3D12_QUERY_DATA_SO_STATISTICS {
1438     NumPrimitivesWritten: ::UINT64,
1439     PrimitivesStorageNeeded: ::UINT64,
1440 }}
1441 
1442 STRUCT!{struct D3D12_QUERY_HEAP_DESC {
1443     Type: ::D3D12_QUERY_HEAP_TYPE,
1444     Count: ::UINT,
1445     NodeMask: ::UINT,
1446 }}
1447 
1448 STRUCT!{struct D3D12_RANGE {
1449     Begin: ::SIZE_T,
1450     End: ::SIZE_T,
1451 }}
1452 
1453 
1454 
1455 STRUCT!{struct D3D12_RENDER_TARGET_VIEW_DESC {
1456     Format: ::DXGI_FORMAT,
1457     ViewDimension: ::D3D12_RTV_DIMENSION,
1458     u: ::D3D12_BUFFER_RTV,
1459 }}
1460 
1461 UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture3D, Texture3D_mut, ::D3D12_TEX3D_RTV);
1462 UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
1463     ::D3D12_TEX2DMS_ARRAY_RTV);
1464 UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, ::D3D12_TEX2DMS_RTV);
1465 UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
1466     ::D3D12_TEX2D_ARRAY_RTV);
1467 UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture2D, Texture2D_mut, ::D3D12_TEX2D_RTV);
1468 UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
1469     ::D3D12_TEX1D_ARRAY_RTV);
1470 UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture1D, Texture1D_mut, ::D3D12_TEX1D_RTV);
1471 UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Buffer, Buffer_mut, ::D3D12_BUFFER_RTV);
1472 
1473 STRUCT!{struct D3D12_RESOURCE_ALIASING_BARRIER {
1474     pResourceBefore: *mut ::ID3D12Resource,
1475     pResourceAfter: *mut ::ID3D12Resource,
1476 }}
1477 
1478 STRUCT!{struct D3D12_RESOURCE_ALLOCATION_INFO {
1479     SizeInBytes: ::UINT64,
1480     Alignment: ::UINT64,
1481 }}
1482 
1483 STRUCT!{struct D3D12_RESOURCE_BARRIER {
1484     Type: ::D3D12_RESOURCE_BARRIER_TYPE,
1485     Flags: ::D3D12_RESOURCE_BARRIER_FLAGS,
1486     u: ::D3D12_RESOURCE_TRANSITION_BARRIER,
1487 }}
1488 
1489 UNION!(D3D12_RESOURCE_BARRIER, u, UAV, UAV_mut, ::D3D12_RESOURCE_UAV_BARRIER);
1490 UNION!(D3D12_RESOURCE_BARRIER, u, Aliasing, Aliasing_mut, ::D3D12_RESOURCE_ALIASING_BARRIER);
1491 UNION!(D3D12_RESOURCE_BARRIER, u, Transition, Transition_mut, ::D3D12_RESOURCE_TRANSITION_BARRIER);
1492 
1493 STRUCT!{struct D3D12_RESOURCE_DESC {
1494     Dimension: ::D3D12_RESOURCE_DIMENSION,
1495     Alignment: ::UINT64,
1496     Width: ::UINT64,
1497     Height: ::UINT,
1498     DepthOrArraySize: ::UINT16,
1499     MipLevels: ::UINT16,
1500     Format: ::DXGI_FORMAT,
1501     SampleDesc: ::DXGI_SAMPLE_DESC,
1502     Layout: ::D3D12_TEXTURE_LAYOUT,
1503     Flags: ::D3D12_RESOURCE_FLAGS,
1504 }}
1505 
1506 STRUCT!{struct D3D12_RESOURCE_TRANSITION_BARRIER {
1507     pResource: *mut ::ID3D12Resource,
1508     Subresource: ::UINT,
1509     StateBefore: ::D3D12_RESOURCE_STATES,
1510     StateAfter: ::D3D12_RESOURCE_STATES,
1511 }}
1512 
1513 STRUCT!{struct D3D12_RESOURCE_UAV_BARRIER {
1514     pResource: *mut ::ID3D12Resource,
1515 }}
1516 
1517 STRUCT!{struct D3D12_ROOT_CONSTANTS {
1518     ShaderRegister: ::UINT,
1519     RegisterSpace: ::UINT,
1520     Num32BitValues: ::UINT,
1521 }}
1522 
1523 STRUCT!{struct D3D12_ROOT_DESCRIPTOR {
1524     ShaderRegister: ::UINT,
1525     RegisterSpace: ::UINT,
1526 }}
1527 
1528 STRUCT!{struct D3D12_ROOT_DESCRIPTOR_TABLE {
1529     NumDescriptorRanges: ::UINT,
1530     pDescriptorRanges: *const ::D3D12_DESCRIPTOR_RANGE,
1531 }}
1532 
1533 #[cfg(target_pointer_width = "64")]
1534 STRUCT!{struct D3D12_ROOT_PARAMETER {
1535     ParameterType: ::D3D12_ROOT_PARAMETER_TYPE,
1536     u: ::D3D12_ROOT_DESCRIPTOR_TABLE,
1537     ShaderVisibility: ::D3D12_SHADER_VISIBILITY,
1538 }}
1539 
1540 #[cfg(target_pointer_width = "32")]
1541 STRUCT!{struct D3D12_ROOT_PARAMETER {
1542     ParameterType: ::D3D12_ROOT_PARAMETER_TYPE,
1543     u: ::D3D12_ROOT_CONSTANTS,
1544     ShaderVisibility: ::D3D12_SHADER_VISIBILITY,
1545 }}
1546 
1547 UNION!(D3D12_ROOT_PARAMETER, u, Descriptor, Descriptor_mut, ::D3D12_ROOT_DESCRIPTOR);
1548 UNION!(D3D12_ROOT_PARAMETER, u, Constants, Constants_mut, ::D3D12_ROOT_CONSTANTS);
1549 UNION!(D3D12_ROOT_PARAMETER, u, DescriptorTable, DescriptorTable_mut,
1550     ::D3D12_ROOT_DESCRIPTOR_TABLE);
1551 
1552 STRUCT!{struct D3D12_ROOT_SIGNATURE_DESC {
1553     NumParameters: ::UINT,
1554     pParameters: *const ::D3D12_ROOT_PARAMETER,
1555     NumStaticSamplers: ::UINT,
1556     pStaticSamplers: *const ::D3D12_STATIC_SAMPLER_DESC,
1557     Flags: ::D3D12_ROOT_SIGNATURE_FLAGS,
1558 }}
1559 
1560 STRUCT!{struct D3D12_SAMPLER_DESC {
1561     Filter: ::D3D12_FILTER,
1562     AddressU: ::D3D12_TEXTURE_ADDRESS_MODE,
1563     AddressV: ::D3D12_TEXTURE_ADDRESS_MODE,
1564     AddressW: ::D3D12_TEXTURE_ADDRESS_MODE,
1565     MipLODBias: ::FLOAT,
1566     MaxAnisotropy: ::UINT,
1567     ComparisonFunc: ::D3D12_COMPARISON_FUNC,
1568     BorderColor: [::FLOAT; 4],
1569     MinLOD: ::FLOAT,
1570     MaxLOD: ::FLOAT,
1571 }}
1572 
1573 
1574 
1575 STRUCT!{struct D3D12_SHADER_RESOURCE_VIEW_DESC {
1576     Format: ::DXGI_FORMAT,
1577     ViewDimension: ::D3D12_SRV_DIMENSION,
1578     Shader4ComponentMapping: ::UINT,
1579     u: ::D3D12_BUFFER_SRV,
1580 }}
1581 
1582 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, TextureCubeArray, TextureCubeArray_mut,
1583     ::D3D12_TEXCUBE_ARRAY_SRV);
1584 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, TextureCube, TextureCube_mut, ::D3D12_TEXCUBE_SRV);
1585 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture3D, Texture3D_mut, ::D3D12_TEX3D_SRV);
1586 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
1587     ::D3D12_TEX2DMS_ARRAY_SRV);
1588 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, ::D3D12_TEX2DMS_SRV);
1589 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
1590     ::D3D12_TEX2D_ARRAY_SRV);
1591 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture2D, Texture2D_mut, ::D3D12_TEX2D_SRV);
1592 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
1593     ::D3D12_TEX1D_ARRAY_SRV);
1594 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture1D, Texture1D_mut, ::D3D12_TEX1D_SRV);
1595 UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Buffer, Buffer_mut, ::D3D12_BUFFER_SRV);
1596 
1597 
1598 
1599 STRUCT!{struct D3D12_STATIC_SAMPLER_DESC {
1600     Filter: ::D3D12_FILTER,
1601     AddressU: ::D3D12_TEXTURE_ADDRESS_MODE,
1602     AddressV: ::D3D12_TEXTURE_ADDRESS_MODE,
1603     AddressW: ::D3D12_TEXTURE_ADDRESS_MODE,
1604     MipLODBias: ::FLOAT,
1605     MaxAnisotropy: ::UINT,
1606     ComparisonFunc: ::D3D12_COMPARISON_FUNC,
1607     BorderColor: ::D3D12_STATIC_BORDER_COLOR,
1608     MinLOD: ::FLOAT,
1609     MaxLOD: ::FLOAT,
1610     ShaderRegister: ::UINT,
1611     RegisterSpace: ::UINT,
1612     ShaderVisibility: ::D3D12_SHADER_VISIBILITY,
1613 }}
1614 
1615 STRUCT!{struct D3D12_STREAM_OUTPUT_BUFFER_VIEW {
1616     BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
1617     SizeInBytes: ::UINT64,
1618     BufferFilledSizeLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
1619 }}
1620 
1621 
1622 
1623 STRUCT!{struct D3D12_SUBRESOURCE_DATA {
1624     pData: *const ::c_void,
1625     RowPitch: ::LONG_PTR,
1626     SlicePitch: ::LONG_PTR,
1627 }}
1628 
1629 STRUCT!{struct D3D12_SUBRESOURCE_FOOTPRINT {
1630     Format: ::DXGI_FORMAT,
1631     Width: ::UINT,
1632     Height: ::UINT,
1633     Depth: ::UINT,
1634     RowPitch: ::UINT,
1635 }}
1636 
1637 STRUCT!{struct D3D12_SUBRESOURCE_INFO {
1638     Offset: ::UINT64,
1639     RowPitch: ::UINT,
1640     DepthPitch: ::UINT,
1641 }}
1642 
1643 STRUCT!{struct D3D12_SUBRESOURCE_TILING {
1644     WidthInTiles: ::UINT,
1645     HeightInTiles: ::UINT16,
1646     DepthInTiles: ::UINT16,
1647     StartTileIndexInOverallResource: ::UINT,
1648 }}
1649 
1650 STRUCT!{struct D3D12_TEX1D_ARRAY_DSV {
1651     MipSlice: ::UINT,
1652     FirstArraySlice: ::UINT,
1653     ArraySize: ::UINT,
1654 }}
1655 
1656 STRUCT!{struct D3D12_TEX1D_ARRAY_RTV {
1657     MipSlice: ::UINT,
1658     FirstArraySlice: ::UINT,
1659     ArraySize: ::UINT,
1660 }}
1661 
1662 STRUCT!{struct D3D12_TEX1D_ARRAY_SRV {
1663     MostDetailedMip: ::UINT,
1664     MipLevels: ::UINT,
1665     FirstArraySlice: ::UINT,
1666     ArraySize: ::UINT,
1667     ResourceMinLODClamp: ::FLOAT,
1668 }}
1669 
1670 STRUCT!{struct D3D12_TEX1D_ARRAY_UAV {
1671     MipSlice: ::UINT,
1672     FirstArraySlice: ::UINT,
1673     ArraySize: ::UINT,
1674 }}
1675 
1676 STRUCT!{struct D3D12_TEX1D_DSV {
1677     MipSlice: ::UINT,
1678 }}
1679 
1680 STRUCT!{struct D3D12_TEX1D_RTV {
1681     MipSlice: ::UINT,
1682 }}
1683 
1684 STRUCT!{struct D3D12_TEX1D_SRV {
1685     MostDetailedMip: ::UINT,
1686     MipLevels: ::UINT,
1687     ResourceMinLODClamp: ::FLOAT,
1688 }}
1689 
1690 STRUCT!{struct D3D12_TEX1D_UAV {
1691     MipSlice: ::UINT,
1692 }}
1693 
1694 STRUCT!{struct D3D12_TEX2DMS_ARRAY_DSV {
1695     FirstArraySlice: ::UINT,
1696     ArraySize: ::UINT,
1697 }}
1698 
1699 STRUCT!{struct D3D12_TEX2DMS_ARRAY_RTV {
1700     FirstArraySlice: ::UINT,
1701     ArraySize: ::UINT,
1702 }}
1703 
1704 STRUCT!{struct D3D12_TEX2DMS_ARRAY_SRV {
1705     FirstArraySlice: ::UINT,
1706     ArraySize: ::UINT,
1707 }}
1708 
1709 STRUCT!{struct D3D12_TEX2DMS_DSV {
1710     UnusedField_NothingToDefine: ::UINT,
1711 }}
1712 
1713 STRUCT!{struct D3D12_TEX2DMS_RTV {
1714     UnusedField_NothingToDefine: ::UINT,
1715 }}
1716 
1717 STRUCT!{struct D3D12_TEX2DMS_SRV {
1718     UnusedField_NothingToDefine: ::UINT,
1719 }}
1720 
1721 STRUCT!{struct D3D12_TEX2D_ARRAY_DSV {
1722     MipSlice: ::UINT,
1723     FirstArraySlice: ::UINT,
1724     ArraySize: ::UINT,
1725 }}
1726 
1727 STRUCT!{struct D3D12_TEX2D_ARRAY_RTV {
1728     MipSlice: ::UINT,
1729     FirstArraySlice: ::UINT,
1730     ArraySize: ::UINT,
1731     PlaneSlice: ::UINT,
1732 }}
1733 
1734 STRUCT!{struct D3D12_TEX2D_ARRAY_SRV {
1735     MostDetailedMip: ::UINT,
1736     MipLevels: ::UINT,
1737     FirstArraySlice: ::UINT,
1738     ArraySize: ::UINT,
1739     PlaneSlice: ::UINT,
1740     ResourceMinLODClamp: ::FLOAT,
1741 }}
1742 
1743 STRUCT!{struct D3D12_TEX2D_ARRAY_UAV {
1744     MipSlice: ::UINT,
1745     FirstArraySlice: ::UINT,
1746     ArraySize: ::UINT,
1747     PlaneSlice: ::UINT,
1748 }}
1749 
1750 STRUCT!{struct D3D12_TEX2D_DSV {
1751     MipSlice: ::UINT,
1752 }}
1753 
1754 STRUCT!{struct D3D12_TEX2D_RTV {
1755     MipSlice: ::UINT,
1756     PlaneSlice: ::UINT,
1757 }}
1758 
1759 STRUCT!{struct D3D12_TEX2D_SRV {
1760     MostDetailedMip: ::UINT,
1761     MipLevels: ::UINT,
1762     PlaneSlice: ::UINT,
1763     ResourceMinLODClamp: ::FLOAT,
1764 }}
1765 
1766 STRUCT!{struct D3D12_TEX2D_UAV {
1767     MipSlice: ::UINT,
1768     PlaneSlice: ::UINT,
1769 }}
1770 
1771 STRUCT!{struct D3D12_TEX3D_RTV {
1772     MipSlice: ::UINT,
1773     FirstWSlice: ::UINT,
1774     WSize: ::UINT,
1775 }}
1776 
1777 STRUCT!{struct D3D12_TEX3D_SRV {
1778     MostDetailedMip: ::UINT,
1779     MipLevels: ::UINT,
1780     ResourceMinLODClamp: ::FLOAT,
1781 }}
1782 
1783 STRUCT!{struct D3D12_TEX3D_UAV {
1784     MipSlice: ::UINT,
1785     FirstWSlice: ::UINT,
1786     WSize: ::UINT,
1787 }}
1788 
1789 STRUCT!{struct D3D12_TEXCUBE_ARRAY_SRV {
1790     MostDetailedMip: ::UINT,
1791     MipLevels: ::UINT,
1792     First2DArrayFace: ::UINT,
1793     NumCubes: ::UINT,
1794     ResourceMinLODClamp: ::FLOAT,
1795 }}
1796 
1797 STRUCT!{struct D3D12_TEXCUBE_SRV {
1798     MostDetailedMip: ::UINT,
1799     MipLevels: ::UINT,
1800     ResourceMinLODClamp: ::FLOAT,
1801 }}
1802 
1803 STRUCT!{struct D3D12_TEXTURE_COPY_LOCATION {
1804     pResource: *mut ::ID3D12Resource,
1805     Type: ::D3D12_TEXTURE_COPY_TYPE,
1806     u: ::D3D12_PLACED_SUBRESOURCE_FOOTPRINT,
1807 }}
1808 
1809 UNION!(D3D12_TEXTURE_COPY_LOCATION, u, SubresourceIndex, SubresourceIndex_mut, ::UINT);
1810 UNION!(D3D12_TEXTURE_COPY_LOCATION, u, PlacedFootprint, PlacedFootprint_mut,
1811     ::D3D12_PLACED_SUBRESOURCE_FOOTPRINT);
1812 
1813 STRUCT!{struct D3D12_TILED_RESOURCE_COORDINATE {
1814     X: ::UINT,
1815     Y: ::UINT,
1816     Z: ::UINT,
1817     Subresource: ::UINT,
1818 }}
1819 
1820 STRUCT!{struct D3D12_TILE_REGION_SIZE {
1821     NumTiles: ::UINT,
1822     UseBox: ::BOOL,
1823     Width: ::UINT,
1824     Height: ::UINT16,
1825     Depth: ::UINT16,
1826 }}
1827 
1828 STRUCT!{struct D3D12_TILE_SHAPE {
1829     WidthInTexels: ::UINT,
1830     HeightInTexels: ::UINT,
1831     DepthInTexels: ::UINT,
1832 }}
1833 
1834 STRUCT!{struct D3D12_UNORDERED_ACCESS_VIEW_DESC {
1835     Format: ::DXGI_FORMAT,
1836     ViewDimension: ::D3D12_UAV_DIMENSION,
1837     u: ::D3D12_BUFFER_UAV,
1838 }}
1839 
1840 UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture3D, Texture3D_mut, ::D3D12_TEX3D_UAV);
1841 UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
1842     ::D3D12_TEX2D_ARRAY_UAV);
1843 UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture2D, Texture2D_mut, ::D3D12_TEX2D_UAV);
1844 UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
1845     ::D3D12_TEX1D_ARRAY_UAV);
1846 UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture1D, Texture1D_mut, ::D3D12_TEX1D_UAV);
1847 UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Buffer, Buffer_mut, ::D3D12_BUFFER_UAV);
1848 
1849 STRUCT!{struct D3D12_VERTEX_BUFFER_VIEW {
1850     BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
1851     SizeInBytes: ::UINT,
1852     StrideInBytes: ::UINT,
1853 }}
1854 
1855 
1856 
1857 RIDL!(
1858 interface ID3D12CommandAllocator(ID3D12CommandAllocatorVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
1859     fn Reset(&mut self) -> ::HRESULT
1860 });
1861 
1862 RIDL!(
1863 interface ID3D12CommandList(ID3D12CommandListVtbl): ID3D12DeviceChild(ID3D12DeviceChildVtbl) {
1864     fn GetType(&mut self) -> ::D3D12_COMMAND_LIST_TYPE
1865 });
1866 
1867 RIDL!(
1868 interface ID3D12CommandQueue(ID3D12CommandQueueVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
1869     fn UpdateTileMappings(
1870         &mut self, pResource: *mut ::ID3D12Resource, NumResourceRegions: ::UINT,
1871         pResourceRegionStartCoordinates: *const ::D3D12_TILED_RESOURCE_COORDINATE,
1872         pResourceRegionSizes: *const ::D3D12_TILE_REGION_SIZE, pHeap: *mut ::ID3D12Heap,
1873         NumRanges: ::UINT, pRangeFlags: *const ::D3D12_TILE_RANGE_FLAGS,
1874         pHeapRangeStartOffsets: *const ::UINT, pRangeTileCounts: *const ::UINT,
1875         Flags: ::D3D12_TILE_MAPPING_FLAGS
1876     ) -> (),
1877     fn CopyTileMappings(
1878         &mut self, pDstResource: *mut ::ID3D12Resource,
1879         pDstRegionStartCoordinate: *const ::D3D12_TILED_RESOURCE_COORDINATE,
1880         pSrcResource: *mut ::ID3D12Resource,
1881         pSrcRegionStartCoordinate: *const ::D3D12_TILED_RESOURCE_COORDINATE,
1882         pRegionSize: *const ::D3D12_TILE_REGION_SIZE, Flags: ::D3D12_TILE_MAPPING_FLAGS
1883     ) -> (),
1884     fn ExecuteCommandLists(
1885         &mut self, NumCommandLists: ::UINT, ppCommandLists: *mut *mut ::ID3D12CommandList
1886     ) -> (),
1887     fn SetMarker(
1888         &mut self, Metadata: ::UINT, pData: *const ::c_void, Size: ::UINT
1889     ) -> (),
1890     fn BeginEvent(
1891         &mut self, Metadata: ::UINT, pData: *const ::c_void, Size: ::UINT
1892     ) -> (),
1893     fn EndEvent(&mut self) -> (),
1894     fn Signal(
1895         &mut self, pFence: *mut ::ID3D12Fence, Value: ::UINT64
1896     ) -> ::HRESULT,
1897     fn Wait(
1898         &mut self, pFence: *mut ::ID3D12Fence, Value: ::UINT64
1899     ) -> ::HRESULT,
1900     fn GetTimestampFrequency(&mut self, pFrequency: *mut ::UINT64) -> ::HRESULT,
1901     fn GetClockCalibration(
1902         &mut self, pGpuTimestamp: *mut ::UINT64, pCpuTimestamp: *mut ::UINT64
1903     ) -> ::HRESULT,
1904     fn GetDesc(
1905         &mut self, __ret_val: *mut ::D3D12_COMMAND_QUEUE_DESC
1906     ) -> *mut ::D3D12_COMMAND_QUEUE_DESC
1907 });
1908 
1909 RIDL!(
1910 interface ID3D12CommandSignature(ID3D12CommandSignatureVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
1911 });
1912 
1913 RIDL!(
1914 interface ID3D12DescriptorHeap(ID3D12DescriptorHeapVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
1915     fn GetDesc(
1916         &mut self, __ret_val: *mut ::D3D12_DESCRIPTOR_HEAP_DESC
1917     ) -> *mut ::D3D12_DESCRIPTOR_HEAP_DESC,
1918     fn GetCPUDescriptorHandleForHeapStart(
1919         &mut self, __ret_val: *mut ::D3D12_CPU_DESCRIPTOR_HANDLE
1920     ) -> *mut ::D3D12_CPU_DESCRIPTOR_HANDLE,
1921     fn GetGPUDescriptorHandleForHeapStart(
1922         &mut self, __ret_val: *mut ::D3D12_GPU_DESCRIPTOR_HANDLE
1923     ) -> *mut ::D3D12_GPU_DESCRIPTOR_HANDLE
1924 });
1925 
1926 
1927 
1928 RIDL!(
1929 interface ID3D12Device(ID3D12DeviceVtbl): ID3D12Object(ID3D12ObjectVtbl) {
1930     fn GetNodeCount(&mut self) -> ::UINT,
1931     fn CreateCommandQueue(
1932         &mut self, pDesc: *const ::D3D12_COMMAND_QUEUE_DESC, riid: ::REFGUID,
1933         ppCommandQueue: *mut *mut ::c_void
1934     ) -> ::HRESULT,
1935     fn CreateCommandAllocator(
1936         &mut self, type_: ::D3D12_COMMAND_LIST_TYPE, riid: ::REFGUID,
1937         ppCommandAllocator: *mut *mut ::c_void
1938     ) -> ::HRESULT,
1939     fn CreateGraphicsPipelineState(
1940         &mut self, pDesc: *const ::D3D12_GRAPHICS_PIPELINE_STATE_DESC, riid: ::REFGUID,
1941         ppPipelineState: *mut *mut ::c_void
1942     ) -> ::HRESULT,
1943     fn CreateComputePipelineState(
1944         &mut self, pDesc: *const ::D3D12_COMPUTE_PIPELINE_STATE_DESC, riid: ::REFGUID,
1945         ppPipelineState: *mut *mut ::c_void
1946     ) -> ::HRESULT,
1947     fn CreateCommandList(
1948         &mut self, nodeMask: ::UINT, type_: ::D3D12_COMMAND_LIST_TYPE,
1949         pCommandAllocator: *mut ::ID3D12CommandAllocator,
1950         pInitialState: *mut ::ID3D12PipelineState, riid: ::REFGUID,
1951         ppCommandList: *mut *mut ::c_void
1952     ) -> ::HRESULT,
1953     fn CheckFeatureSupport(
1954         &mut self, Feature: ::D3D12_FEATURE, pFeatureSupportData: *mut ::c_void,
1955         FeatureSupportDataSize: ::UINT
1956     ) -> ::HRESULT,
1957     fn CreateDescriptorHeap(
1958         &mut self, pDescriptorHeapDesc: *const ::D3D12_DESCRIPTOR_HEAP_DESC, riid: ::REFGUID,
1959         ppvHeap: *mut *mut ::c_void
1960     ) -> ::HRESULT,
1961     fn GetDescriptorHandleIncrementSize(
1962         &mut self, DescriptorHeapType: ::D3D12_DESCRIPTOR_HEAP_TYPE
1963     ) -> ::UINT,
1964     fn CreateRootSignature(
1965         &mut self, nodeMask: ::UINT, pBlobWithRootSignature: *const ::c_void,
1966         blobLengthInBytes: ::SIZE_T, riid: ::REFGUID, ppvRootSignature: *mut *mut ::c_void
1967     ) -> ::HRESULT,
1968     fn CreateConstantBufferView(
1969         &mut self, pDesc: *const ::D3D12_CONSTANT_BUFFER_VIEW_DESC,
1970         DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
1971     ) -> (),
1972     fn CreateShaderResourceView(
1973         &mut self, pResource: *mut ::ID3D12Resource,
1974         pDesc: *const ::D3D12_SHADER_RESOURCE_VIEW_DESC,
1975         DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
1976     ) -> (),
1977     fn CreateUnorderedAccessView(
1978         &mut self, pResource: *mut ::ID3D12Resource, pCounterResource: *mut ::ID3D12Resource,
1979         pDesc: *const ::D3D12_UNORDERED_ACCESS_VIEW_DESC,
1980         DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
1981     ) -> (),
1982     fn CreateRenderTargetView(
1983         &mut self, pResource: *mut ::ID3D12Resource, pDesc: *const ::D3D12_RENDER_TARGET_VIEW_DESC,
1984         DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
1985     ) -> (),
1986     fn CreateDepthStencilView(
1987         &mut self, pResource: *mut ::ID3D12Resource, pDesc: *const ::D3D12_DEPTH_STENCIL_VIEW_DESC,
1988         DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
1989     ) -> (),
1990     fn CreateSampler(
1991         &mut self, pDesc: *const ::D3D12_SAMPLER_DESC,
1992         DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
1993     ) -> (),
1994     fn CopyDescriptors(
1995         &mut self, NumDestDescriptorRanges: ::UINT,
1996         pDestDescriptorRangeStarts: *const ::D3D12_CPU_DESCRIPTOR_HANDLE,
1997         pDestDescriptorRangeSizes: *const ::UINT, NumSrcDescriptorRanges: ::UINT,
1998         pSrcDescriptorRangeStarts: *const ::D3D12_CPU_DESCRIPTOR_HANDLE,
1999         pSrcDescriptorRangeSizes: *const ::UINT, DescriptorHeapsType: ::D3D12_DESCRIPTOR_HEAP_TYPE
2000     ) -> (),
2001     fn CopyDescriptorsSimple(
2002         &mut self, NumDescriptors: ::UINT, DestDescriptorRangeStart: ::D3D12_CPU_DESCRIPTOR_HANDLE,
2003         SrcDescriptorRangeStart: ::D3D12_CPU_DESCRIPTOR_HANDLE,
2004         DescriptorHeapsType: ::D3D12_DESCRIPTOR_HEAP_TYPE
2005     ) -> (),
2006     fn GetResourceAllocationInfo(
2007         &mut self, visibleMask: ::UINT, numResourceDescs: ::UINT,
2008         pResourceDescs: *const ::D3D12_RESOURCE_DESC,
2009         __ret_val: *mut ::D3D12_RESOURCE_ALLOCATION_INFO
2010     ) -> *mut ::D3D12_RESOURCE_ALLOCATION_INFO,
2011     fn GetCustomHeapProperties(
2012         &mut self, nodeMask: ::UINT, heapType: ::D3D12_HEAP_TYPE,
2013         __ret_val: *mut ::D3D12_HEAP_PROPERTIES
2014     ) -> *mut ::D3D12_HEAP_PROPERTIES,
2015     fn CreateCommittedResource(
2016         &mut self, pHeapProperties: *const ::D3D12_HEAP_PROPERTIES, HeapFlags: ::D3D12_HEAP_FLAGS,
2017         pResourceDesc: *const ::D3D12_RESOURCE_DESC, InitialResourceState: ::D3D12_RESOURCE_STATES,
2018         pOptimizedClearValue: *const ::D3D12_CLEAR_VALUE, riidResource: ::REFGUID,
2019         ppvResource: *mut *mut ::c_void
2020     ) -> ::HRESULT,
2021     fn CreateHeap(
2022         &mut self, pDesc: *const ::D3D12_HEAP_DESC, riid: ::REFGUID, ppvHeap: *mut *mut ::c_void
2023     ) -> ::HRESULT,
2024     fn CreatePlacedResource(
2025         &mut self, pHeap: *mut ::ID3D12Heap, HeapOffset: ::UINT64,
2026         pDesc: *const ::D3D12_RESOURCE_DESC, InitialState: ::D3D12_RESOURCE_STATES,
2027         pOptimizedClearValue: *const ::D3D12_CLEAR_VALUE, riid: ::REFGUID,
2028         ppvResource: *mut *mut ::c_void
2029     ) -> ::HRESULT,
2030     fn CreateReservedResource(
2031         &mut self, pDesc: *const ::D3D12_RESOURCE_DESC, InitialState: ::D3D12_RESOURCE_STATES,
2032         pOptimizedClearValue: *const ::D3D12_CLEAR_VALUE, riid: ::REFGUID,
2033         ppvResource: *mut *mut ::c_void
2034     ) -> ::HRESULT,
2035     fn CreateSharedHandle(
2036         &mut self, pObject: *mut ::ID3D12DeviceChild, pAttributes: *const ::SECURITY_ATTRIBUTES,
2037         Access: ::DWORD, Name: ::LPCWSTR, pHandle: *mut ::HANDLE
2038     ) -> ::HRESULT,
2039     fn OpenSharedHandle(
2040         &mut self, NTHandle: ::HANDLE, riid: ::REFGUID, ppvObj: *mut *mut ::c_void
2041     ) -> ::HRESULT,
2042     fn OpenSharedHandleByName(
2043         &mut self, Name: ::LPCWSTR, Access: ::DWORD, pNTHandle: *mut ::HANDLE
2044     ) -> ::HRESULT,
2045     fn MakeResident(
2046         &mut self, NumObjects: ::UINT, ppObjects: *mut *mut ::ID3D12Pageable
2047     ) -> ::HRESULT,
2048     fn Evict(
2049         &mut self, NumObjects: ::UINT, ppObjects: *mut *mut ::ID3D12Pageable
2050     ) -> ::HRESULT,
2051     fn CreateFence(
2052         &mut self, InitialValue: ::UINT64, Flags: ::D3D12_FENCE_FLAGS, riid: ::REFGUID,
2053         ppFence: *mut *mut ::c_void
2054     ) -> ::HRESULT,
2055     fn GetDeviceRemovedReason(&mut self) -> ::HRESULT,
2056     fn GetCopyableFootprints(
2057         &mut self, pResourceDesc: *const ::D3D12_RESOURCE_DESC, FirstSubresource: ::UINT,
2058         NumSubresources: ::UINT, BaseOffset: ::UINT64,
2059         pLayouts: *mut ::D3D12_PLACED_SUBRESOURCE_FOOTPRINT, pNumRows: *mut ::UINT,
2060         pRowSizeInBytes: *mut ::UINT64, pTotalBytes: *mut ::UINT64
2061     ) -> (),
2062     fn CreateQueryHeap(
2063         &mut self, pDesc: *const ::D3D12_QUERY_HEAP_DESC, riid: ::REFGUID,
2064         ppvHeap: *mut *mut ::c_void
2065     ) -> ::HRESULT,
2066     fn SetStablePowerState(&mut self, Enable: ::BOOL) -> ::HRESULT,
2067     fn CreateCommandSignature(
2068         &mut self, pDesc: *const ::D3D12_COMMAND_SIGNATURE_DESC,
2069         pRootSignature: *mut ::ID3D12RootSignature, riid: ::REFGUID,
2070         ppvCommandSignature: *mut *mut ::c_void
2071     ) -> ::HRESULT,
2072     fn GetResourceTiling(
2073         &mut self, pTiledResource: *mut ::ID3D12Resource, pNumTilesForEntireResource: *mut ::UINT,
2074         pPackedMipDesc: *mut ::D3D12_PACKED_MIP_INFO,
2075         pStandardTileShapeForNonPackedMips: *mut ::D3D12_TILE_SHAPE,
2076         pNumSubresourceTilings: *mut ::UINT, FirstSubresourceTilingToGet: ::UINT,
2077         pSubresourceTilingsForNonPackedMips: *mut ::D3D12_SUBRESOURCE_TILING
2078     ) -> (),
2079     fn GetAdapterLuid(&mut self, __ret_val: *mut ::LUID) -> *mut ::LUID
2080 });
2081 
2082 RIDL!(
2083 interface ID3D12Fence(ID3D12FenceVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
2084     fn GetCompletedValue(&mut self) -> ::UINT64,
2085     fn SetEventOnCompletion(
2086         &mut self, Value: ::UINT64, hEvent: ::HANDLE
2087     ) -> ::HRESULT,
2088     fn Signal(&mut self, Value: ::UINT64) -> ::HRESULT
2089 });
2090 
2091 RIDL!(
2092 interface ID3D12GraphicsCommandList(ID3D12GraphicsCommandListVtbl): ID3D12CommandList(ID3D12CommandListVtbl) {
2093     fn Close(&mut self) -> ::HRESULT,
2094     fn Reset(
2095         &mut self, pAllocator: *mut ::ID3D12CommandAllocator,
2096         pInitialState: *mut ::ID3D12PipelineState
2097     ) -> ::HRESULT,
2098     fn ClearState(&mut self, pPipelineState: *mut ::ID3D12PipelineState) -> (),
2099     fn DrawInstanced(
2100         &mut self, VertexCountPerInstance: ::UINT, InstanceCount: ::UINT,
2101         StartVertexLocation: ::UINT, StartInstanceLocation: ::UINT
2102     ) -> (),
2103     fn DrawIndexedInstanced(
2104         &mut self, IndexCountPerInstance: ::UINT, InstanceCount: ::UINT,
2105         StartIndexLocation: ::UINT, BaseVertexLocation: ::INT, StartInstanceLocation: ::UINT
2106     ) -> (),
2107     fn Dispatch(
2108         &mut self, ThreadGroupCountX: ::UINT, ThreadGroupCountY: ::UINT, ThreadGroupCountZ: ::UINT
2109     ) -> (),
2110     fn CopyBufferRegion(
2111         &mut self, pDstBuffer: *mut ::ID3D12Resource, DstOffset: ::UINT64,
2112         pSrcBuffer: *mut ::ID3D12Resource, SrcOffset: ::UINT64, NumBytes: ::UINT64
2113     ) -> (),
2114     fn CopyTextureRegion(
2115         &mut self, pDst: *const ::D3D12_TEXTURE_COPY_LOCATION, DstX: ::UINT, DstY: ::UINT,
2116         DstZ: ::UINT, pSrc: *const ::D3D12_TEXTURE_COPY_LOCATION, pSrcBox: *const ::D3D12_BOX
2117     ) -> (),
2118     fn CopyResource(
2119         &mut self, pDstResource: *mut ::ID3D12Resource, pSrcResource: *mut ::ID3D12Resource
2120     ) -> (),
2121     fn CopyTiles(
2122         &mut self, pTiledResource: *mut ::ID3D12Resource,
2123         pTileRegionStartCoordinate: *const ::D3D12_TILED_RESOURCE_COORDINATE,
2124         pTileRegionSize: *const ::D3D12_TILE_REGION_SIZE, pBuffer: *mut ::ID3D12Resource,
2125         BufferStartOffsetInBytes: ::UINT64, Flags: ::D3D12_TILE_COPY_FLAGS
2126     ) -> (),
2127     fn ResolveSubresource(
2128         &mut self, pDstResource: *mut ::ID3D12Resource, DstSubresource: ::UINT,
2129         pSrcResource: *mut ::ID3D12Resource, SrcSubresource: ::UINT, Format: ::DXGI_FORMAT
2130     ) -> (),
2131     fn IASetPrimitiveTopology(
2132         &mut self, PrimitiveTopology: ::D3D12_PRIMITIVE_TOPOLOGY
2133     ) -> (),
2134     fn RSSetViewports(
2135         &mut self, NumViewports: ::UINT, pViewports: *const ::D3D12_VIEWPORT
2136     ) -> (),
2137     fn RSSetScissorRects(
2138         &mut self, NumRects: ::UINT, pRects: *const ::D3D12_RECT
2139     ) -> (),
2140     fn OMSetBlendFactor(&mut self, BlendFactor: *const [::FLOAT; 4]) -> (),
2141     fn OMSetStencilRef(&mut self, StencilRef: ::UINT) -> (),
2142     fn SetPipelineState(
2143         &mut self, pPipelineState: *mut ::ID3D12PipelineState
2144     ) -> (),
2145     fn ResourceBarrier(
2146         &mut self, NumBarriers: ::UINT, pBarriers: *const ::D3D12_RESOURCE_BARRIER
2147     ) -> (),
2148     fn ExecuteBundle(
2149         &mut self, pCommandList: *mut ::ID3D12GraphicsCommandList
2150     ) -> (),
2151     fn SetDescriptorHeaps(
2152         &mut self, NumDescriptorHeaps: ::UINT, ppDescriptorHeaps: *mut *mut ::ID3D12DescriptorHeap
2153     ) -> (),
2154     fn SetComputeRootSignature(
2155         &mut self, pRootSignature: *mut ::ID3D12RootSignature
2156     ) -> (),
2157     fn SetGraphicsRootSignature(
2158         &mut self, pRootSignature: *mut ::ID3D12RootSignature
2159     ) -> (),
2160     fn SetComputeRootDescriptorTable(
2161         &mut self, RootParameterIndex: ::UINT, BaseDescriptor: ::D3D12_GPU_DESCRIPTOR_HANDLE
2162     ) -> (),
2163     fn SetGraphicsRootDescriptorTable(
2164         &mut self, RootParameterIndex: ::UINT, BaseDescriptor: ::D3D12_GPU_DESCRIPTOR_HANDLE
2165     ) -> (),
2166     fn SetComputeRoot32BitConstant(
2167         &mut self, RootParameterIndex: ::UINT, SrcData: ::UINT, DestOffsetIn32BitValues: ::UINT
2168     ) -> (),
2169     fn SetGraphicsRoot32BitConstant(
2170         &mut self, RootParameterIndex: ::UINT, SrcData: ::UINT, DestOffsetIn32BitValues: ::UINT
2171     ) -> (),
2172     fn SetComputeRoot32BitConstants(
2173         &mut self, RootParameterIndex: ::UINT, Num32BitValuesToSet: ::UINT,
2174         pSrcData: *const ::c_void, DestOffsetIn32BitValues: ::UINT
2175     ) -> (),
2176     fn SetGraphicsRoot32BitConstants(
2177         &mut self, RootParameterIndex: ::UINT, Num32BitValuesToSet: ::UINT,
2178         pSrcData: *const ::c_void, DestOffsetIn32BitValues: ::UINT
2179     ) -> (),
2180     fn SetComputeRootConstantBufferView(
2181         &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
2182     ) -> (),
2183     fn SetGraphicsRootConstantBufferView(
2184         &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
2185     ) -> (),
2186     fn SetComputeRootShaderResourceView(
2187         &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
2188     ) -> (),
2189     fn SetGraphicsRootShaderResourceView(
2190         &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
2191     ) -> (),
2192     fn SetComputeRootUnorderedAccessView(
2193         &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
2194     ) -> (),
2195     fn SetGraphicsRootUnorderedAccessView(
2196         &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
2197     ) -> (),
2198     fn IASetIndexBuffer(
2199         &mut self, pView: *const ::D3D12_INDEX_BUFFER_VIEW
2200     ) -> (),
2201     fn IASetVertexBuffers(
2202         &mut self, StartSlot: ::UINT, NumViews: ::UINT, pViews: *const ::D3D12_VERTEX_BUFFER_VIEW
2203     ) -> (),
2204     fn SOSetTargets(
2205         &mut self, StartSlot: ::UINT, NumViews: ::UINT,
2206         pViews: *const ::D3D12_STREAM_OUTPUT_BUFFER_VIEW
2207     ) -> (),
2208     fn OMSetRenderTargets(
2209         &mut self, NumRenderTargetDescriptors: ::UINT,
2210         pRenderTargetDescriptors: *const ::D3D12_CPU_DESCRIPTOR_HANDLE,
2211         RTsSingleHandleToDescriptorRange: ::BOOL,
2212         pDepthStencilDescriptor: *const ::D3D12_CPU_DESCRIPTOR_HANDLE
2213     ) -> (),
2214     fn ClearDepthStencilView(
2215         &mut self, DepthStencilView: ::D3D12_CPU_DESCRIPTOR_HANDLE,
2216         ClearFlags: ::D3D12_CLEAR_FLAGS, Depth: ::FLOAT, Stencil: ::UINT8, NumRects: ::UINT,
2217         pRects: *const ::D3D12_RECT
2218     ) -> (),
2219     fn ClearRenderTargetView(
2220         &mut self, RenderTargetView: ::D3D12_CPU_DESCRIPTOR_HANDLE, ColorRGBA: *const [::FLOAT; 4],
2221         NumRects: ::UINT, pRects: *const ::D3D12_RECT
2222     ) -> (),
2223     fn ClearUnorderedAccessViewUint(
2224         &mut self, ViewGPUHandleInCurrentHeap: ::D3D12_GPU_DESCRIPTOR_HANDLE,
2225         ViewCPUHandle: ::D3D12_CPU_DESCRIPTOR_HANDLE, pResource: *mut ::ID3D12Resource,
2226         Values: *const [::UINT; 4], NumRects: ::UINT, pRects: *const ::D3D12_RECT
2227     ) -> (),
2228     fn ClearUnorderedAccessViewFloat(
2229         &mut self, ViewGPUHandleInCurrentHeap: ::D3D12_GPU_DESCRIPTOR_HANDLE,
2230         ViewCPUHandle: ::D3D12_CPU_DESCRIPTOR_HANDLE, pResource: *mut ::ID3D12Resource,
2231         Values: *const [::FLOAT; 4], NumRects: ::UINT, pRects: *const ::D3D12_RECT
2232     ) -> (),
2233     fn DiscardResource(
2234         &mut self, pResource: *mut ::ID3D12Resource, pRegion: *const ::D3D12_DISCARD_REGION
2235     ) -> (),
2236     fn BeginQuery(
2237         &mut self, pQueryHeap: *mut ::ID3D12QueryHeap, Type: ::D3D12_QUERY_TYPE, Index: ::UINT
2238     ) -> (),
2239     fn EndQuery(
2240         &mut self, pQueryHeap: *mut ::ID3D12QueryHeap, Type: ::D3D12_QUERY_TYPE, Index: ::UINT
2241     ) -> (),
2242     fn ResolveQueryData(
2243         &mut self, pQueryHeap: *mut ::ID3D12QueryHeap, Type: ::D3D12_QUERY_TYPE,
2244         StartIndex: ::UINT, NumQueries: ::UINT, pDestinationBuffer: *mut ::ID3D12Resource,
2245         AlignedDestinationBufferOffset: ::UINT64
2246     ) -> (),
2247     fn SetPredication(
2248         &mut self, pBuffer: *mut ::ID3D12Resource, AlignedBufferOffset: ::UINT64,
2249         Operation: ::D3D12_PREDICATION_OP
2250     ) -> (),
2251     fn SetMarker(
2252         &mut self, Metadata: ::UINT, pData: *const ::c_void, Size: ::UINT
2253     ) -> (),
2254     fn BeginEvent(
2255         &mut self, Metadata: ::UINT, pData: *const ::c_void, Size: ::UINT
2256     ) -> (),
2257     fn EndEvent(&mut self) -> (),
2258     fn ExecuteIndirect(
2259         &mut self, pCommandSignature: *mut ::ID3D12CommandSignature, MaxCommandCount: ::UINT,
2260         pArgumentBuffer: *mut ::ID3D12Resource, ArgumentBufferOffset: ::UINT64,
2261         pCountBuffer: *mut ::ID3D12Resource, CountBufferOffset: ::UINT64
2262     ) -> ()
2263 });
2264 
2265 RIDL!(
2266 interface ID3D12Heap(ID3D12HeapVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
2267     fn GetDesc(
2268         &mut self, __ret_val: *mut ::D3D12_HEAP_DESC
2269     ) -> *mut ::D3D12_HEAP_DESC
2270 });
2271 
2272 
2273 
2274 RIDL!(
2275 interface ID3D12Pageable(ID3D12PageableVtbl): ID3D12DeviceChild(ID3D12DeviceChildVtbl) {
2276 });
2277 
2278 RIDL!(
2279 interface ID3D12PipelineState(ID3D12PipelineStateVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
2280     fn GetCachedBlob(&mut self, ppBlob: *mut *mut ::ID3DBlob) -> ::HRESULT
2281 });
2282 
2283 RIDL!(
2284 interface ID3D12QueryHeap(ID3D12QueryHeapVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
2285 });
2286 
2287 RIDL!(
2288 interface ID3D12Resource(ID3D12ResourceVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
2289     fn Map(
2290         &mut self, Subresource: ::UINT, pReadRange: *const ::D3D12_RANGE,
2291         ppData: *mut *mut ::c_void
2292     ) -> ::HRESULT,
2293     fn Unmap(
2294         &mut self, Subresource: ::UINT, pWrittenRange: *const ::D3D12_RANGE
2295     ) -> (),
2296     fn GetDesc(
2297         &mut self, __ret_val: *mut ::D3D12_RESOURCE_DESC
2298     ) -> *mut ::D3D12_RESOURCE_DESC,
2299     fn GetGPUVirtualAddress(&mut self) -> ::D3D12_GPU_VIRTUAL_ADDRESS,
2300     fn WriteToSubresource(
2301         &mut self, DstSubresource: ::UINT, pDstBox: *const ::D3D12_BOX, pSrcData: *const ::c_void,
2302         SrcRowPitch: ::UINT, SrcDepthPitch: ::UINT
2303     ) -> ::HRESULT,
2304     fn ReadFromSubresource(
2305         &mut self, pDstData: *mut ::c_void, DstRowPitch: ::UINT, DstDepthPitch: ::UINT,
2306         SrcSubresource: ::UINT, pSrcBox: *const ::D3D12_BOX
2307     ) -> ::HRESULT,
2308     fn GetHeapProperties(
2309         &mut self, pHeapProperties: *mut ::D3D12_HEAP_PROPERTIES,
2310         pHeapFlags: *mut ::D3D12_HEAP_FLAGS
2311     ) -> ::HRESULT
2312 });
2313 
2314 RIDL!(
2315 interface ID3D12RootSignatureDeserializer(ID3D12RootSignatureDeserializerVtbl): IUnknown(IUnknownVtbl) {
2316     fn GetRootSignatureDesc(&mut self) -> *const ::D3D12_ROOT_SIGNATURE_DESC
2317 });
2318 
2319 
2320 
2321 pub type PFN_D3D12_CREATE_DEVICE = extern "system" fn (_ : *mut ::IUnknown, _ : ::D3D_FEATURE_LEVEL, _ : ::REFGUID, _ : *mut *mut ::c_void) -> ::HRESULT;
2322 pub type PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER = extern "system" fn (pSrcData: ::LPCVOID, SrcDataSizeInBytes: ::SIZE_T, pRootSignatureDeserializerInterface: ::REFGUID, ppRootSignatureDeserializer: *mut *mut ::c_void) -> ::HRESULT;
2323 pub type PFN_D3D12_GET_DEBUG_INTERFACE = extern "system" fn (_ : ::REFGUID, _ : *mut *mut ::c_void) -> ::HRESULT;
2324 pub type PFN_D3D12_SERIALIZE_ROOT_SIGNATURE = extern "system" fn (pRootSignature: *const ::D3D12_ROOT_SIGNATURE_DESC, Version: ::D3D_ROOT_SIGNATURE_VERSION, ppBlob: *mut *mut ::ID3DBlob, ppErrorBlob: *mut *mut ::ID3DBlob) -> ::HRESULT;
2325