1 module aurora.directx.d3d12.d3d12;
2 
3 public import aurora.directx.com;
4 public import aurora.directx.dxgi.dxgiformat;
5 public import aurora.directx.dxgi.dxgicommon;
6 public import aurora.directx.d3d.d3dcommon;
7 
8 public:
9 
10 ///
11 /// Constants
12 ///
13 
14 enum int D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
15 enum int D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
16 enum int D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
17 enum int D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
18 enum int D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
19 enum int D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8;
20 enum int D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
21 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
22 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
23 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
24 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
25 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
26 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
27 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
28 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
29 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
30 enum int D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
31 enum int D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
32 enum int D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
33 enum int D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
34 enum int D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
35 enum int D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
36 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
37 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
38 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
39 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
40 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
41 enum int D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
42 enum int D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
43 enum int D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
44 enum int D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
45 enum int D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
46 enum int D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
47 enum int D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
48 enum int D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
49 enum int D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
50 enum int D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
51 enum int D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
52 enum int D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
53 enum int D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
54 enum int D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
55 enum int D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
56 enum int D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
57 enum int D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
58 enum int D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
59 enum int D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
60 enum int D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
61 enum int D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
62 enum int D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
63 enum int D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
64 enum int D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
65 enum int D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
66 enum int D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
67 enum int D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
68 enum int D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
69 enum int D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
70 enum int D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
71 enum int D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
72 enum int D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
73 enum int D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
74 enum int D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
75 enum int D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
76 enum int D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
77 enum int D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
78 enum int D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
79 enum int D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
80 enum int D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
81 enum int D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
82 enum int D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
83 enum int D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
84 enum int D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
85 enum int D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
86 enum int D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
87 enum int D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
88 enum int D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
89 enum int D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
90 enum int D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
91 enum int D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
92 enum int D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768;
93 enum int D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768;
94 enum int D3D12_CS_4_X_UAV_REGISTER_COUNT = 1;
95 enum int D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
96 enum int D3D12_CS_TGSM_REGISTER_COUNT = 8192;
97 enum int D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1;
98 enum int D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
99 enum int D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
100 enum int D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3;
101 enum int D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1;
102 enum int D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1;
103 enum int D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1;
104 enum int D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3;
105 enum int D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1;
106 enum int D3D12_CS_THREADID_REGISTER_COMPONENTS = 3;
107 enum int D3D12_CS_THREADID_REGISTER_COUNT = 1;
108 enum int D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
109 enum int D3D12_CS_THREAD_GROUP_MAX_X = 1024;
110 enum int D3D12_CS_THREAD_GROUP_MAX_Y = 1024;
111 enum int D3D12_CS_THREAD_GROUP_MAX_Z = 64;
112 enum int D3D12_CS_THREAD_GROUP_MIN_X = 1;
113 enum int D3D12_CS_THREAD_GROUP_MIN_Y = 1;
114 enum int D3D12_CS_THREAD_GROUP_MIN_Z = 1;
115 enum int D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
116 enum float D3D12_DEFAULT_BLEND_FACTOR_ALPHA = 1.0f;
117 enum float D3D12_DEFAULT_BLEND_FACTOR_BLUE = 1.0f;
118 enum float D3D12_DEFAULT_BLEND_FACTOR_GREEN = 1.0f;
119 enum float D3D12_DEFAULT_BLEND_FACTOR_RED = 1.0f;
120 enum float D3D12_DEFAULT_BORDER_COLOR_COMPONENT = 0.0f;
121 enum int D3D12_DEFAULT_DEPTH_BIAS = 0;
122 enum float D3D12_DEFAULT_DEPTH_BIAS_CLAMP = 0.0f;
123 enum int D3D12_DEFAULT_MAX_ANISOTROPY = 16;
124 enum float D3D12_DEFAULT_MIP_LOD_BIAS = 0.0f;
125 enum int D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
126 enum int D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
127 enum int D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
128 enum int D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff;
129 enum int D3D12_DEFAULT_SCISSOR_ENDX = 0;
130 enum int D3D12_DEFAULT_SCISSOR_ENDY = 0;
131 enum int D3D12_DEFAULT_SCISSOR_STARTX = 0;
132 enum int D3D12_DEFAULT_SCISSOR_STARTY = 0;
133 enum float D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS = 0.0f;
134 enum int D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
135 enum int D3D12_DEFAULT_STENCIL_REFERENCE = 0;
136 enum int D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
137 enum int D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
138 enum int D3D12_DEFAULT_VIEWPORT_HEIGHT = 0;
139 enum float D3D12_DEFAULT_VIEWPORT_MAX_DEPTH = 0.0f;
140 enum float D3D12_DEFAULT_VIEWPORT_MIN_DEPTH = 0.0f;
141 enum int D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0;
142 enum int D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0;
143 enum int D3D12_DEFAULT_VIEWPORT_WIDTH = 0;
144 enum int D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
145 enum int D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7;
146 enum int D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
147 enum int D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
148 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
149 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
150 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
151 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
152 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
153 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
154 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
155 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
156 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
157 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
158 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
159 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
160 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
161 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
162 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
163 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
164 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
165 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
166 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
167 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
168 enum int D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4;
169 enum int D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
170 enum int D3D12_DS_OUTPUT_REGISTER_COUNT = 32;
171 enum float D3D12_float16_FUSED_TOLERANCE_IN_ULP = 0.6;
172 enum float D3D12_float32_MAX = 3.402823466e+38f;
173 enum float D3D12_float32_TO_INTEGER_TOLERANCE_IN_ULP = 0.6f;
174 enum float D3D12_float_TO_SRGB_EXPONENT_DENOMINATOR = 2.4f;
175 enum float D3D12_float_TO_SRGB_EXPONENT_NUMERATOR = 1.0f;
176 enum float D3D12_float_TO_SRGB_OFFSET = 0.055f;
177 enum float D3D12_float_TO_SRGB_SCALE_1 = 12.92f;
178 enum float D3D12_float_TO_SRGB_SCALE_2 = 1.055f;
179 enum float D3D12_float_TO_SRGB_THRESHOLD = 0.0031308f;
180 enum float D3D12_FTOI_INSTRUCTION_MAX_INPUT = 2147483647.999f;
181 enum float D3D12_FTOI_INSTRUCTION_MIN_INPUT = -2147483648.999f;
182 enum float D3D12_FTOU_INSTRUCTION_MAX_INPUT = 4294967295.999f;
183 enum float D3D12_FTOU_INSTRUCTION_MIN_INPUT = 0.0f;
184 enum int D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
185 enum int D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
186 enum int D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
187 enum int D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
188 enum int D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
189 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
190 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
191 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
192 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
193 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
194 enum int D3D12_GS_INPUT_REGISTER_COMPONENTS = 4;
195 enum int D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
196 enum int D3D12_GS_INPUT_REGISTER_COUNT = 32;
197 enum int D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2;
198 enum int D3D12_GS_INPUT_REGISTER_READ_PORTS = 1;
199 enum int D3D12_GS_INPUT_REGISTER_VERTICES = 32;
200 enum int D3D12_GS_MAX_INSTANCE_COUNT = 32;
201 enum int D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
202 enum int D3D12_GS_OUTPUT_ELEMENTS = 32;
203 enum int D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4;
204 enum int D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
205 enum int D3D12_GS_OUTPUT_REGISTER_COUNT = 32;
206 enum int D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
207 enum int D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
208 enum int D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
209 enum int D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
210 enum int D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
211 enum int D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
212 enum int D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff;
213 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
214 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
215 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
216 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
217 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
218 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
219 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
220 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
221 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
222 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
223 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
224 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
225 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
226 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
227 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
228 enum int D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff;
229 enum float D3D12_HS_MAXTESSFACTOR_LOWER_BOUND = 1.0f;
230 enum float D3D12_HS_MAXTESSFACTOR_UPPER_BOUND = 64.0f;
231 enum int D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
232 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
233 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
234 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
235 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
236 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
237 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
238 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
239 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
240 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
241 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
242 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128;
243 enum int D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
244 enum int D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
245 enum int D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
246 enum int D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
247 enum int D3D12_IA_INSTANCE_ID_BIT_COUNT = 32;
248 enum int D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
249 enum int D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
250 enum int D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32;
251 enum int D3D12_IA_VERTEX_ID_BIT_COUNT = 32;
252 enum int D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
253 enum int D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
254 enum int D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
255 enum int D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
256 enum int D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
257 enum int D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
258 enum int D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
259 enum float D3D12_LINEAR_GAMMA = 1.0f;
260 enum int D3D12_MAJOR_VERSION = 12;
261 enum float D3D12_MAX_BORDER_COLOR_COMPONENT = 1.0f;
262 enum float D3D12_MAX_DEPTH = 1.0f;
263 enum int D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032;
264 enum int D3D12_MAX_MAXANISOTROPY = 16;
265 enum int D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
266 enum float D3D12_MAX_POSITION_VALUE = 3.402823466e+34f;
267 enum int D3D12_MAX_ROOT_COST = 64;
268 enum int D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_size_tIER_1 = 1000000;
269 enum int D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_size_tIER_2 = 1000000;
270 enum int D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048;
271 enum int D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
272 enum int D3D12_MAX_VIEW_INSTANCE_COUNT = 4;
273 enum int D3D12_MINOR_VERSION = 0;
274 enum float D3D12_MIN_BORDER_COLOR_COMPONENT = 0.0f;
275 enum float D3D12_MIN_DEPTH = 0.0f;
276 enum int D3D12_MIN_MAXANISOTROPY = 0;
277 enum float D3D12_MIP_LOD_BIAS_MAX = 15.99f;
278 enum float D3D12_MIP_LOD_BIAS_MIN = -16.0f;
279 enum int D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
280 enum int D3D12_MIP_LOD_RANGE_BIT_COUNT = 8;
281 enum float D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = 1.4f;
282 enum int D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
283 enum int D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
284 enum int D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
285 enum int D3D12_PACKED_TILE = 0xffffffff;
286 enum int D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
287 enum int D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
288 enum int D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
289 enum int D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
290 enum int D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
291 enum int D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
292 enum int D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xffffffff;
293 enum int D3D12_PS_FRONTFACING_FALSE_VALUE = 0;
294 enum int D3D12_PS_FRONTFACING_TRUE_VALUE = 0xffffffff;
295 enum int D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
296 enum int D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
297 enum int D3D12_PS_INPUT_REGISTER_COUNT = 32;
298 enum int D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
299 enum int D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
300 enum float D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.0f;
301 enum int D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
302 enum int D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
303 enum int D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
304 enum int D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
305 enum int D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
306 enum int D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
307 enum int D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
308 enum int D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
309 enum int D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
310 enum float D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.5f;
311 enum int D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
312 enum int D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
313 enum int D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
314 enum int D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
315 enum int D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
316 enum int D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
317 enum int D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
318 enum int D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
319 enum int D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
320 enum int D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
321 enum int D3D12_REQ_MAXANISOTROPY = 16;
322 enum int D3D12_REQ_MIP_LEVELS = 15;
323 enum int D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
324 enum int D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
325 enum int D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
326 enum int D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
327 enum float D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM = 0.25f;
328 enum int D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
329 enum int D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
330 enum int D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
331 enum int D3D12_REQ_SUBRESOURCES = 30720;
332 enum int D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
333 enum int D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
334 enum int D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
335 enum int D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
336 enum int D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
337 enum int D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
338 enum int D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
339 enum int D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
340 enum int D3D12_SHADER_MAJOR_VERSION = 5;
341 enum int D3D12_SHADER_MAX_INSTANCES = 65535;
342 enum int D3D12_SHADER_MAX_INTERFACES = 253;
343 enum int D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
344 enum int D3D12_SHADER_MAX_TYPES = 65535;
345 enum int D3D12_SHADER_MINOR_VERSION = 1;
346 enum int D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
347 enum int D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
348 enum int D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
349 enum int D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
350 enum int D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
351 enum int D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
352 enum int D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
353 enum int D3D12_SO_BUFFER_SLOT_COUNT = 4;
354 enum int D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
355 enum int D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
356 enum int D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
357 enum int D3D12_SO_STREAM_COUNT = 4;
358 enum int D3D12_SPEC_DATE_DAY = 14;
359 enum int D3D12_SPEC_DATE_MONTH = 11;
360 enum int D3D12_SPEC_DATE_YEAR = 2014;
361 enum float D3D12_SPEC_VERSION = 1.16;
362 enum float D3D12_SRGB_GAMMA = 2.2f;
363 enum float D3D12_SRGB_TO_float_DENOMINATOR_1 = 12.92f;
364 enum float D3D12_SRGB_TO_float_DENOMINATOR_2 = 1.055f;
365 enum float D3D12_SRGB_TO_float_EXPONENT = 2.4f;
366 enum float D3D12_SRGB_TO_float_OFFSET = 0.055f;
367 enum float D3D12_SRGB_TO_float_THRESHOLD = 0.04045f;
368 enum float D3D12_SRGB_TO_float_TOLERANCE_IN_ULP = 0.5f;
369 enum int D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
370 enum int D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
371 enum int D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
372 enum int D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
373 enum int D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
374 enum int D3D12_STANDARD_VECTOR_SIZE = 4;
375 enum int D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
376 enum int D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
377 enum int D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
378 enum int D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
379 enum int D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
380 enum int D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
381 enum int D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
382 enum int D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
383 enum int D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
384 enum int D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
385 enum int D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
386 enum int D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
387 enum int D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
388 enum int D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
389 enum int D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
390 enum int D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
391 enum int D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
392 enum int D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
393 enum int D3D12_UAV_SLOT_COUNT = 64;
394 enum int D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
395 enum int D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
396 enum int D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
397 enum int D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
398 enum int D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
399 enum int D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
400 enum int D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
401 enum int D3D12_VIEWPORT_BOUNDS_MAX = 32767;
402 enum int D3D12_VIEWPORT_BOUNDS_MIN = -32768;
403 enum int D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
404 enum int D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
405 enum int D3D12_VS_INPUT_REGISTER_COUNT = 32;
406 enum int D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
407 enum int D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
408 enum int D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
409 enum int D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
410 enum int D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
411 enum int D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
412 enum int D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
413 enum int D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
414 
415 enum int D3D12_SHADER_COMPONENT_MAPPING_MASK = 0x7;
416 enum int D3D12_SHADER_COMPONENT_MAPPING_SHIFT = 3;
417 enum int D3D12_FILTER_REDUCTION_TYPE_MASK = 0x3;
418 enum int D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
419 enum int D3D12_FILTER_TYPE_MASK = 0x3;
420 enum int D3D12_MIN_FILTER_SHIFT = 4;
421 enum int D3D12_MAG_FILTER_SHIFT = 2;
422 enum int D3D12_MIP_FILTER_SHIFT = 0;
423 enum int D3D12_ANISOTROPIC_FILTERING_BIT = 0x40;
424 
425 const IID D3D12ExperimentalShaderModels = { 0x76f5573e, 0xf13a, 0x40f5, [0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f]};
426 
427 alias ulong D3D12_GPU_VIRTUAL_ADDRESS;
428 alias D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
429 alias D3D_PRIMITIVE D3D12_PRIMITIVE;
430 alias RECT D3D12_RECT;
431 
432 
433 ///
434 /// Mixins
435 ///
436 
437 ///This macros have not yet been converted to mixins
438 /*
439 #define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) 
440 #define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
441                                                                 (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
442                                                                 (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
443                                                                 (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
444                                                                 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
445 #define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))
446 #define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) 
447 #define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction )                                                     \
448                                    ( ( D3D12_FILTER ) (                                                           \
449                                    ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) |           \
450                                    ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) |           \
451                                    ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) |           \
452                                    ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) 
453 #define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction )                                                  \
454                                          ( ( D3D12_FILTER ) (                                         \
455                                          D3D12_ANISOTROPIC_FILTERING_BIT |                            \
456                                          D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR,         \
457                                                                     D3D12_FILTER_TYPE_LINEAR,         \
458                                                                     D3D12_FILTER_TYPE_LINEAR,         \
459                                                                     reduction ) ) )                     
460 #define D3D12_DECODE_MIN_FILTER( D3D12Filter )                                                              \
461                                  ( ( D3D12_FILTER_TYPE )                                                    \
462                                  ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) 
463 #define D3D12_DECODE_MAG_FILTER( D3D12Filter )                                                              \
464                                  ( ( D3D12_FILTER_TYPE )                                                    \
465                                  ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) 
466 #define D3D12_DECODE_MIP_FILTER( D3D12Filter )                                                              \
467                                  ( ( D3D12_FILTER_TYPE )                                                    \
468                                  ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) 
469 #define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter )                                                        \
470                                  ( ( D3D12_FILTER_REDUCTION_TYPE )                                                      \
471                                  ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) 
472 #define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter )                                                    \
473                                  ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) 
474 #define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter )                                               \
475                             ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) &&                  \
476                             ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) &&   \
477                             ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) &&   \
478                             ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) )      
479 */
480 
481 ///
482 /// Functions
483 ///
484 
485 HRESULT D3D12CreateDevice(IUnknown pAdapter, D3D_FEATURE_LEVEL MinimumFeatureLevel, REFIID riid, void** ppDevice );
486 HRESULT D3D12GetDebugInterface(REFIID riid, void** ppvDebug);
487 HRESULT D3D12EnableExperimentalFeatures(uint NumFeatures, const IID* pIIDs, void* pConfigurationStructs, uint* pConfigurationStructSizes);
488 HRESULT D3D12SerializeRootSignature(const D3D12_ROOT_SIGNATURE_DESC* pRootSignature, D3D_ROOT_SIGNATURE_VERSION Version, ID3DBlob* ppBlob, ID3DBlob* ppErrorBlob);
489 HRESULT D3D12CreateRootSignatureDeserializer(const void *pSrcData, size_t SrcDataSizeInBytes, REFIID pRootSignatureDeserializerInterface, void** ppRootSignatureDeserializer);
490 HRESULT D3D12SerializeVersionedRootSignature(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature, ID3DBlob* ppBlob, ID3DBlob* ppErrorBlob);
491 HRESULT D3D12CreateVersionedRootSignatureDeserializer(const void *pSrcData, size_t SrcDataSizeInBytes, REFIID pRootSignatureDeserializerInterface, void** ppRootSignatureDeserializer);
492 
493 ///
494 /// Enumerations
495 ///
496 
497 enum D3D12_COMMAND_LIST_TYPE
498 {
499     DIRECT	= 0,
500     BUNDLE	= 1,
501     COMPUTE	= 2,
502     COPY	= 3,
503     VIDEO_DECODE	= 4,
504     VIDEO_PROCESS	= 5
505 }
506 
507 enum D3D12_COMMAND_QUEUE_FLAGS
508 {
509     NONE = 0,
510     DISABLE_GPU_TIMEOUT	= 0x1
511 }
512 
513 enum D3D12_COMMAND_QUEUE_PRIORITY
514 {
515     NORMAL	= 0,
516     HIGH	= 100,
517     GLOBAL_REALTIME	= 10000
518 }
519 
520 enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
521 {
522     UNDEFINED	= 0,
523     POINT	= 1,
524     LINE	= 2,
525     TRIANGLE	= 3,
526     PATCH	= 4
527 }
528 
529 enum D3D12_INPUT_CLASSIFICATION
530 {
531     PER_VERTEX_DATA	= 0,
532     PER_INSTANCE_DATA	= 1
533 }
534 
535 enum D3D12_FILL_MODE
536 {
537     D3D12_FILL_MODE_WIREFRAME	= 2,
538     D3D12_FILL_MODE_SOLID	= 3
539 }
540 
541 enum D3D12_CULL_MODE
542 {
543     NONE	= 1,
544     FRONT	= 2,
545     BACK	= 3
546 }
547 
548 enum D3D12_COMPARISON_FUNC
549 {
550     NEVER	= 1,
551     LESS	= 2,
552     EQUAL	= 3,
553     LESS_EQUAL	= 4,
554     GREATER	= 5,
555     NOT_EQUAL	= 6,
556     GREATER_EQUAL	= 7,
557     ALWAYS	= 8
558 }
559 
560 enum D3D12_DEPTH_WRITE_MASK
561 {
562     ZERO	= 0,
563     ALL	= 1
564 }
565 
566 enum D3D12_STENCIL_OP
567 {
568     KEEP	= 1,
569     ZERO	= 2,
570     REPLACE	= 3,
571     INCR_SAT	= 4,
572     DECR_SAT	= 5,
573     INVERT	= 6,
574     INCR	= 7,
575     DECR	= 8
576 }
577 
578 enum D3D12_BLEND
579 {
580     ZERO	= 1,
581     ONE	= 2,
582     SRC_COLOR	= 3,
583     INV_SRC_COLOR	= 4,
584     SRC_ALPHA	= 5,
585     INV_SRC_ALPHA	= 6,
586     DEST_ALPHA	= 7,
587     INV_DEST_ALPHA	= 8,
588     DEST_COLOR	= 9,
589     INV_DEST_COLOR	= 10,
590     SRC_ALPHA_SAT	= 11,
591     BLEND_FACTOR	= 14,
592     INV_BLEND_FACTOR	= 15,
593     SRC1_COLOR	= 16,
594     INV_SRC1_COLOR	= 17,
595     SRC1_ALPHA	= 18,
596     INV_SRC1_ALPHA	= 19
597 }
598 
599 enum D3D12_BLEND_OP
600 {
601     ADD	= 1,
602     SUBTRACT	= 2,
603     REV_SUBTRACT	= 3,
604     MIN	= 4,
605     MAX	= 5
606 }
607 
608 enum D3D12_COLOR_WRITE_ENABLE
609 {
610     RED	= 1,
611     GREEN	= 2,
612     BLUE	= 4,
613     ALPHA	= 8,
614     ALL	= ( ( ( RED | GREEN )  | BLUE )  | ALPHA ) 
615 }
616 
617 enum D3D12_LOGIC_OP
618 {
619     CLEAR	= 0,
620     SET	= ( CLEAR + 1 ) ,
621     COPY	= ( SET + 1 ) ,
622     COPY_INVERTED	= ( COPY + 1 ) ,
623     NOOP	= ( COPY_INVERTED + 1 ) ,
624     INVERT	= ( NOOP + 1 ) ,
625     AND	= ( INVERT + 1 ) ,
626     NAND	= ( AND + 1 ) ,
627     OR	= ( NAND + 1 ) ,
628     NOR	= ( OR + 1 ) ,
629     XOR	= ( NOR + 1 ) ,
630     EQUIV	= ( XOR + 1 ) ,
631     AND_REVERSE	= ( EQUIV + 1 ) ,
632     AND_INVERTED	= ( AND_REVERSE + 1 ) ,
633     OR_REVERSE	= ( AND_INVERTED + 1 ) ,
634     OR_INVERTED	= ( OR_REVERSE + 1 ) 
635 }
636 
637 enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
638 {
639     OFF	= 0,
640     ON	= 1
641 }
642 
643 enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
644 {
645     VALUE_DISABLED	= 0,
646     VALUE_0xFFFF	= 1,
647     VALUE_0xFFFFFFFF	= 2
648 }
649 
650 enum D3D12_PIPELINE_STATE_FLAGS
651 {
652     NONE	= 0,
653     TOOL_DEBUG	= 0x1
654 }
655 
656 enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
657 {
658     ROOT_SIGNATURE	= 0,
659     VS	= ( ROOT_SIGNATURE + 1 ) ,
660     PS	= ( VS + 1 ) ,
661     DS	= ( PS + 1 ) ,
662     HS	= ( DS + 1 ) ,
663     GS	= ( HS + 1 ) ,
664     CS	= ( GS + 1 ) ,
665     STREAM_OUTPUT	= ( CS + 1 ) ,
666     BLEND	= ( STREAM_OUTPUT + 1 ) ,
667     SAMPLE_MASK	= ( BLEND + 1 ) ,
668     RASTERIZER	= ( SAMPLE_MASK + 1 ) ,
669     DEPTH_STENCIL	= ( RASTERIZER + 1 ) ,
670     INPUT_LAYOUT	= ( DEPTH_STENCIL + 1 ) ,
671     IB_STRIP_CUT_VALUE	= ( INPUT_LAYOUT + 1 ) ,
672     PRIMITIVE_TOPOLOGY	= ( IB_STRIP_CUT_VALUE + 1 ) ,
673     RENDER_TARGET_FORMATS	= ( PRIMITIVE_TOPOLOGY + 1 ) ,
674     DEPTH_STENCIL_FORMAT	= ( RENDER_TARGET_FORMATS + 1 ) ,
675     SAMPLE_DESC	= ( DEPTH_STENCIL_FORMAT + 1 ) ,
676     NODE_MASK	= ( SAMPLE_DESC + 1 ) ,
677     CACHED_PSO	= ( NODE_MASK + 1 ) ,
678     FLAGS	= ( CACHED_PSO + 1 ) ,
679     DEPTH_STENCIL1	= ( FLAGS + 1 ) ,
680     VIEW_INSTANCING	= ( DEPTH_STENCIL1 + 1 ) ,
681     MAX_VALID	= ( VIEW_INSTANCING + 1 ) 
682 }
683 
684 enum D3D12_FEATURE
685 {
686     D3D12_OPTIONS	= 0,
687     ARCHITECTURE	= 1,
688     FEATURE_LEVELS	= 2,
689     FORMAT_SUPPORT	= 3,
690     MULTISAMPLE_QUALITY_LEVELS	= 4,
691     FORMAT_INFO	= 5,
692     GPU_VIRTUAL_ADDRESS_SUPPORT	= 6,
693     SHADER_MODEL	= 7,
694     D3D12_OPTIONS1	= 8,
695     ROOT_SIGNATURE	= 12,
696     ARCHITECTURE1	= 16,
697     D3D12_OPTIONS2	= 18,
698     SHADER_CACHE	= 19,
699     COMMAND_QUEUE_PRIORITY	= 20,
700     D3D12_OPTIONS3	= 21,
701     EXISTING_HEAPS	= 22
702 }
703 
704 enum D3D12_SHADER_MIN_PRECISION_SUPPORT
705 {
706     SUPPORT_NONE	= 0,
707     SUPPORT_10_BIT	= 0x1,
708     SUPPORT_16_BIT	= 0x2
709 }
710 
711 enum D3D12_TILED_RESOURCES_TIER
712 {
713     TIER_NOT_SUPPORTED	= 0,
714     TIER_1	= 1,
715     TIER_2	= 2,
716     TIER_3	= 3
717 }
718 
719 enum D3D12_RESOURCE_BINDING_TIER
720 {
721     TIER_1	= 1,
722     TIER_2	= 2,
723     TIER_3	= 3
724 }
725 
726 enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
727 {
728     TIER_NOT_SUPPORTED	= 0,
729     TIER_1	= 1,
730     TIER_2	= 2,
731     TIER_3	= 3
732 }
733 
734 enum D3D12_FORMAT_SUPPORT1
735 {
736     NONE	= 0,
737     BUFFER	= 0x1,
738     IA_VERTEX_BUFFER	= 0x2,
739     IA_INDEX_BUFFER	= 0x4,
740     SO_BUFFER	= 0x8,
741     TEXTURE1D	= 0x10,
742     TEXTURE2D	= 0x20,
743     TEXTURE3D	= 0x40,
744     TEXTURECUBE	= 0x80,
745     SHADER_LOAD	= 0x100,
746     SHADER_SAMPLE	= 0x200,
747     SHADER_SAMPLE_COMPARISON	= 0x400,
748     SHADER_SAMPLE_MONO_TEXT	= 0x800,
749     MIP	= 0x1000,
750     RENDER_TARGET	= 0x4000,
751     BLENDABLE	= 0x8000,
752     DEPTH_STENCIL	= 0x10000,
753     MULTISAMPLE_RESOLVE	= 0x40000,
754     DISPLAY	= 0x80000,
755     CAST_WITHIN_BIT_LAYOUT	= 0x100000,
756     MULTISAMPLE_RENDERTARGET	= 0x200000,
757     MULTISAMPLE_LOAD	= 0x400000,
758     SHADER_GATHER	= 0x800000,
759     BACK_BUFFER_CAST	= 0x1000000,
760     TYPED_UNORDERED_ACCESS_VIEW	= 0x2000000,
761     SHADER_GATHER_COMPARISON	= 0x4000000,
762     DECODER_OUTPUT	= 0x8000000,
763     VIDEO_PROCESSOR_OUTPUT	= 0x10000000,
764     VIDEO_PROCESSOR_INPUT	= 0x20000000,
765     VIDEO_ENCODER	= 0x40000000
766 }
767 
768 enum D3D12_FORMAT_SUPPORT2
769 {
770     NONE	= 0,
771     UAV_ATOMIC_ADD	= 0x1,
772     UAV_ATOMIC_BITWISE_OPS	= 0x2,
773     UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE	= 0x4,
774     UAV_ATOMIC_EXCHANGE	= 0x8,
775     UAV_ATOMIC_SIGNED_MIN_OR_MAX	= 0x10,
776     UAV_ATOMIC_UNSIGNED_MIN_OR_MAX	= 0x20,
777     UAV_TYPED_LOAD	= 0x40,
778     UAV_TYPED_STORE	= 0x80,
779     OUTPUT_MERGER_LOGIC_OP	= 0x100,
780     TILED	= 0x200,
781     MULTIPLANE_OVERLAY	= 0x4000
782 }
783 
784 enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
785 {
786     NONE	= 0,
787     TILED_RESOURCE	= 0x1
788 }
789 
790 enum D3D12_CROSS_NODE_SHARING_TIER
791 {
792     TIER_NOT_SUPPORTED	= 0,
793     TIER_1_EMULATED	= 1,
794     TIER_1	= 2,
795     TIER_2	= 3
796 }
797 
798 enum D3D12_RESOURCE_HEAP_TIER
799 {
800     TIER_1	= 1,
801     TIER_2	= 2
802 }
803 
804 enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
805 {
806     TIER_NOT_SUPPORTED	= 0,
807     TIER_1	= 1,
808     TIER_2	= 2
809 }
810 
811 enum D3D12_VIEW_INSTANCING_TIER
812 {
813     TIER_NOT_SUPPORTED	= 0,
814     TIER_1	= 1,
815     TIER_2	= 2,
816     TIER_3	= 3
817 }
818 
819 enum D3D_ROOT_SIGNATURE_VERSION
820 {
821     VERSION_1	= 0x1,
822     VERSION_1_0	= 0x1,
823     VERSION_1_1	= 0x2
824 }
825 
826 enum D3D_SHADER_MODEL
827 {
828     MODEL_5_1	= 0x51,
829     MODEL_6_0	= 0x60,
830     MODEL_6_1	= 0x61
831 }
832 
833 enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
834 {
835     NONE	= 0,
836     SINGLE_PSO	= 0x1,
837     LIBRARY	= 0x2,
838     AUTOMATIC_INPROC_CACHE	= 0x4,
839     AUTOMATIC_DISK_CACHE	= 0x8
840 }
841 
842 enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
843 {
844     NONE	= 0,
845     DIRECT	= ( 1 << D3D12_COMMAND_LIST_TYPE.DIRECT ) ,
846     BUNDLE	= ( 1 << D3D12_COMMAND_LIST_TYPE.BUNDLE ) ,
847     COMPUTE	= ( 1 << D3D12_COMMAND_LIST_TYPE.COMPUTE ) ,
848     COPY	= ( 1 << D3D12_COMMAND_LIST_TYPE.COPY ) ,
849     VIDEO_DECODE	= ( 1 << D3D12_COMMAND_LIST_TYPE.VIDEO_DECODE ) ,
850     VIDEO_PROCESS	= ( 1 << D3D12_COMMAND_LIST_TYPE.VIDEO_PROCESS ) 
851 }
852 
853 enum D3D12_HEAP_TYPE
854 {
855     DEFAULT	= 1,
856     UPLOAD	= 2,
857     READBACK	= 3,
858     CUSTOM	= 4
859 }
860 
861 enum D3D12_CPU_PAGE_PROPERTY
862 {
863     UNKNOWN	= 0,
864     NOT_AVAILABLE	= 1,
865     WRITE_COMBINE	= 2,
866     WRITE_BACK	= 3
867 }
868 
869 enum D3D12_MEMORY_POOL
870 {
871     POOL_UNKNOWN	= 0,
872     POOL_L0	= 1,
873     POOL_L1	= 2
874 }
875 
876 enum D3D12_HEAP_FLAGS
877 {
878     NONE	= 0,
879     SHARED	= 0x1,
880     DENY_BUFFERS	= 0x4,
881     ALLOW_DISPLAY	= 0x8,
882     SHARED_CROSS_ADAPTER	= 0x20,
883     DENY_RT_DS_TEXTURES	= 0x40,
884     DENY_NON_RT_DS_TEXTURES	= 0x80,
885     HARDWARE_PROTECTED	= 0x100,
886     ALLOW_WRITE_WATCH	= 0x200,
887     ALLOW_ALL_BUFFERS_AND_TEXTURES	= 0,
888     ALLOW_ONLY_BUFFERS	= 0xc0,
889     ALLOW_ONLY_NON_RT_DS_TEXTURES	= 0x44,
890     ALLOW_ONLY_RT_DS_TEXTURES	= 0x84
891 }
892 
893 enum D3D12_RESOURCE_DIMENSION
894 {
895     UNKNOWN	= 0,
896     BUFFER	= 1,
897     TEXTURE1D	= 2,
898     TEXTURE2D	= 3,
899     TEXTURE3D	= 4
900 }
901 
902 enum D3D12_TEXTURE_LAYOUT
903 {
904     LAYOUT_UNKNOWN	= 0,
905     LAYOUT_ROW_MAJOR	= 1,
906     LAYOUT_64KB_UNDEFINED_SWIZZLE	= 2,
907     LAYOUT_64KB_STANDARD_SWIZZLE	= 3
908 }
909 
910 enum D3D12_RESOURCE_FLAGS
911 {
912     NONE	= 0,
913     ALLOW_RENDER_TARGET	= 0x1,
914     ALLOW_DEPTH_STENCIL	= 0x2,
915     ALLOW_UNORDERED_ACCESS	= 0x4,
916     DENY_SHADER_RESOURCE	= 0x8,
917     ALLOW_CROSS_ADAPTER	= 0x10,
918     ALLOW_SIMULTANEOUS_ACCESS	= 0x20,
919     VIDEO_DECODE_REFERENCE_ONLY	= 0x40
920 }
921 
922 enum D3D12_TILE_RANGE_FLAGS
923 {
924     NONE	= 0,
925     NULL	= 1,
926     SKIP	= 2,
927     REUSE_SINGLE_TILE	= 4
928 }
929 
930 enum D3D12_TILE_MAPPING_FLAGS
931 {
932     NONE	= 0,
933     NO_HAZARD	= 0x1
934 }
935 
936 enum D3D12_TILE_COPY_FLAGS
937 {
938     NONE	= 0,
939     NO_HAZARD	= 0x1,
940     LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE	= 0x2,
941     SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER	= 0x4
942 }
943 
944 enum D3D12_RESOURCE_STATES
945 {
946     COMMON	= 0,
947     VERTEX_AND_CONSTANT_BUFFER	= 0x1,
948     INDEX_BUFFER	= 0x2,
949     RENDER_TARGET	= 0x4,
950     UNORDERED_ACCESS	= 0x8,
951     DEPTH_WRITE	= 0x10,
952     DEPTH_READ	= 0x20,
953     NON_PIXEL_SHADER_RESOURCE	= 0x40,
954     PIXEL_SHADER_RESOURCE	= 0x80,
955     STREAM_OUT	= 0x100,
956     INDIRECT_ARGUMENT	= 0x200,
957     COPY_DEST	= 0x400,
958     COPY_SOURCE	= 0x800,
959     RESOLVE_DEST	= 0x1000,
960     RESOLVE_SOURCE	= 0x2000,
961     GENERIC_READ	= ( ( ( ( ( 0x1 | 0x2 )  | 0x40 )  | 0x80 )  | 0x200 )  | 0x800 ) ,
962     PRESENT	= 0,
963     PREDICATION	= 0x200,
964     VIDEO_DECODE_READ	= 0x10000,
965     VIDEO_DECODE_WRITE	= 0x20000,
966     VIDEO_PROCESS_READ	= 0x40000,
967     VIDEO_PROCESS_WRITE	= 0x80000
968 }
969 
970 enum D3D12_RESOURCE_BARRIER_TYPE
971 {
972     TRANSITION	= 0,
973     ALIASING	= ( TRANSITION + 1 ) ,
974     UAV	= ( ALIASING + 1 ) 
975 }
976 
977 enum D3D12_RESOURCE_BARRIER_FLAGS
978 {
979     NONE	= 0,
980     BEGIN_ONLY	= 0x1,
981     END_ONLY	= 0x2
982 }
983 
984 enum D3D12_TEXTURE_COPY_TYPE
985 {
986     SUBRESOURCE_INDEX	= 0,
987     PLACED_FOOTPRINT	= 1
988 }
989 
990 enum D3D12_RESOLVE_MODE
991 {
992     DECOMPRESS	= 0,
993     MIN	= 1,
994     MAX	= 2,
995     AVERAGE	= 3
996 }
997 
998 enum D3D12_VIEW_INSTANCING_FLAGS
999 {
1000     NONE	= 0,
1001     ENABLE_VIEW_INSTANCE_MASKING	= 0x1
1002 }
1003 
1004 enum D3D12_SHADER_COMPONENT_MAPPING
1005 {
1006     FROM_MEMORY_COMPONENT_0	= 0,
1007     FROM_MEMORY_COMPONENT_1	= 1,
1008     FROM_MEMORY_COMPONENT_2	= 2,
1009     FROM_MEMORY_COMPONENT_3	= 3,
1010     FORCE_VALUE_0	= 4,
1011     FORCE_VALUE_1	= 5
1012 }
1013 
1014 enum D3D12_BUFFER_SRV_FLAGS
1015 {
1016     NONE	= 0,
1017     RAW	= 0x1
1018 }
1019 
1020 enum D3D12_SRV_DIMENSION
1021 {
1022     UNKNOWN	= 0,
1023     BUFFER	= 1,
1024     TEXTURE1D	= 2,
1025     TEXTURE1DARRAY	= 3,
1026     TEXTURE2D	= 4,
1027     TEXTURE2DARRAY	= 5,
1028     TEXTURE2DMS	= 6,
1029     TEXTURE2DMSARRAY	= 7,
1030     TEXTURE3D	= 8,
1031     TEXTURECUBE	= 9,
1032     TEXTURECUBEARRAY	= 10
1033 }
1034 
1035 enum D3D12_FILTER
1036 {
1037     MIN_MAG_MIP_POINT	= 0,
1038     MIN_MAG_POINT_MIP_LINEAR	= 0x1,
1039     MIN_POINT_MAG_LINEAR_MIP_POINT	= 0x4,
1040     MIN_POINT_MAG_MIP_LINEAR	= 0x5,
1041     MIN_LINEAR_MAG_MIP_POINT	= 0x10,
1042     MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x11,
1043     MIN_MAG_LINEAR_MIP_POINT	= 0x14,
1044     MIN_MAG_MIP_LINEAR	= 0x15,
1045     ANISOTROPIC	= 0x55,
1046     COMPARISON_MIN_MAG_MIP_POINT	= 0x80,
1047     COMPARISON_MIN_MAG_POINT_MIP_LINEAR	= 0x81,
1048     COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT	= 0x84,
1049     COMPARISON_MIN_POINT_MAG_MIP_LINEAR	= 0x85,
1050     COMPARISON_MIN_LINEAR_MAG_MIP_POINT	= 0x90,
1051     COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x91,
1052     COMPARISON_MIN_MAG_LINEAR_MIP_POINT	= 0x94,
1053     COMPARISON_MIN_MAG_MIP_LINEAR	= 0x95,
1054     COMPARISON_ANISOTROPIC	= 0xd5,
1055     MINIMUM_MIN_MAG_MIP_POINT	= 0x100,
1056     MINIMUM_MIN_MAG_POINT_MIP_LINEAR	= 0x101,
1057     MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT	= 0x104,
1058     MINIMUM_MIN_POINT_MAG_MIP_LINEAR	= 0x105,
1059     MINIMUM_MIN_LINEAR_MAG_MIP_POINT	= 0x110,
1060     MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x111,
1061     MINIMUM_MIN_MAG_LINEAR_MIP_POINT	= 0x114,
1062     MINIMUM_MIN_MAG_MIP_LINEAR	= 0x115,
1063     MINIMUM_ANISOTROPIC	= 0x155,
1064     MAXIMUM_MIN_MAG_MIP_POINT	= 0x180,
1065     MAXIMUM_MIN_MAG_POINT_MIP_LINEAR	= 0x181,
1066     MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT	= 0x184,
1067     MAXIMUM_MIN_POINT_MAG_MIP_LINEAR	= 0x185,
1068     MAXIMUM_MIN_LINEAR_MAG_MIP_POINT	= 0x190,
1069     MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x191,
1070     MAXIMUM_MIN_MAG_LINEAR_MIP_POINT	= 0x194,
1071     MAXIMUM_MIN_MAG_MIP_LINEAR	= 0x195,
1072     MAXIMUM_ANISOTROPIC	= 0x1d5
1073 }
1074 
1075 enum D3D12_FILTER_TYPE
1076 {
1077     POINT	= 0,
1078     LINEAR	= 1
1079 }
1080 
1081 enum REDUCTION_TYPE
1082 {
1083     STANDARD	= 0,
1084     COMPARISON	= 1,
1085     MINIMUM	= 2,
1086     MAXIMUM	= 3
1087 }
1088 
1089 enum D3D12_TEXTURE_ADDRESS_MODE
1090 {
1091     WRAP	= 1,
1092     MIRROR	= 2,
1093     CLAMP	= 3,
1094     BORDER	= 4,
1095     MIRROR_ONCE	= 5
1096 }
1097 
1098 enum D3D12_BUFFER_UAV_FLAGS
1099 {
1100     NONE	= 0,
1101     RAW	= 0x1
1102 }
1103 
1104 enum D3D12_UAV_DIMENSION
1105 {
1106     UNKNOWN	= 0,
1107     BUFFER	= 1,
1108     TEXTURE1D	= 2,
1109     TEXTURE1DARRAY	= 3,
1110     TEXTURE2D	= 4,
1111     TEXTURE2DARRAY	= 5,
1112     TEXTURE3D	= 8
1113 }
1114 
1115 enum D3D12_RTV_DIMENSION
1116 {
1117     UNKNOWN	= 0,
1118     BUFFER	= 1,
1119     TEXTURE1D	= 2,
1120     TEXTURE1DARRAY	= 3,
1121     TEXTURE2D	= 4,
1122     TEXTURE2DARRAY	= 5,
1123     TEXTURE2DMS	= 6,
1124     TEXTURE2DMSARRAY	= 7,
1125     TEXTURE3D	= 8
1126 }
1127 
1128 enum D3D12_DSV_FLAGS
1129 {
1130     NONE	= 0,
1131     READ_ONLY_DEPTH	= 0x1,
1132     READ_ONLY_STENCIL	= 0x2
1133 }
1134 
1135 enum D3D12_DSV_DIMENSION
1136 {
1137     UNKNOWN	= 0,
1138     TEXTURE1D	= 1,
1139     TEXTURE1DARRAY	= 2,
1140     TEXTURE2D	= 3,
1141     TEXTURE2DARRAY	= 4,
1142     TEXTURE2DMS	= 5,
1143     TEXTURE2DMSARRAY	= 6
1144 }
1145 
1146 enum D3D12_CLEAR_FLAGS
1147 {
1148     DEPTH	= 0x1,
1149     STENCIL	= 0x2
1150 }
1151 
1152 enum D3D12_FENCE_FLAGS
1153 {
1154     NONE	= 0,
1155     SHARED	= 0x1,
1156     SHARED_CROSS_ADAPTER	= 0x2,
1157     NON_MONITORED	= 0x4
1158 }
1159 
1160 enum D3D12_DESCRIPTOR_HEAP_TYPE
1161 {
1162     CBV_SRV_UAV	= 0,
1163     SAMPLER	= ( CBV_SRV_UAV + 1 ) ,
1164     RTV	= ( SAMPLER + 1 ) ,
1165     DSV	= ( RTV + 1 ) ,
1166     NUM_TYPES	= ( DSV + 1 ) 
1167 }
1168 
1169 enum D3D12_DESCRIPTOR_HEAP_FLAGS
1170 {
1171     NONE	= 0,
1172     SHADER_VISIBLE	= 0x1
1173 }
1174 
1175 enum D3D12_DESCRIPTOR_RANGE_TYPE
1176 {
1177     SRV	= 0,
1178     UAV	= ( SRV + 1 ) ,
1179     CBV	= ( UAV + 1 ) ,
1180     SAMPLER	= ( CBV + 1 ) 
1181 }
1182 
1183 enum D3D12_SHADER_VISIBILITY
1184 {
1185     ALL	= 0,
1186     VERTEX	= 1,
1187     HULL	= 2,
1188     DOMAIN	= 3,
1189     GEOMETRY	= 4,
1190     PIXEL	= 5
1191 }
1192 
1193 enum D3D12_ROOT_PARAMETER_TYPE
1194 {
1195     TYPE_DESCRIPTOR_TABLE	= 0,
1196     TYPE_32BIT_CONSTANTS	= ( TYPE_DESCRIPTOR_TABLE + 1 ) ,
1197     TYPE_CBV	= ( TYPE_32BIT_CONSTANTS + 1 ) ,
1198     TYPE_SRV	= ( TYPE_CBV + 1 ) ,
1199     TYPE_UAV	= ( TYPE_SRV + 1 ) 
1200 }
1201 
1202 enum D3D12_ROOT_SIGNATURE_FLAGS
1203 {
1204     NONE	= 0,
1205     ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT	= 0x1,
1206     DENY_VERTEX_SHADER_ROOT_ACCESS	= 0x2,
1207     DENY_HULL_SHADER_ROOT_ACCESS	= 0x4,
1208     DENY_DOMAIN_SHADER_ROOT_ACCESS	= 0x8,
1209     DENY_GEOMETRY_SHADER_ROOT_ACCESS	= 0x10,
1210     DENY_PIXEL_SHADER_ROOT_ACCESS	= 0x20,
1211     ALLOW_STREAM_OUTPUT	= 0x40
1212 }
1213 
1214 enum D3D12_STATIC_BORDER_COLOR
1215 {
1216     TRANSPARENT_BLACK	= 0,
1217     OPAQUE_BLACK	= ( TRANSPARENT_BLACK + 1 ) ,
1218     OPAQUE_WHITE	= ( OPAQUE_BLACK + 1 ) 
1219 }
1220 
1221 enum D3D12_DESCRIPTOR_RANGE_FLAGS
1222 {
1223     NONE	= 0,
1224     DESCRIPTORS_VOLATILE	= 0x1,
1225     DATA_VOLATILE	= 0x2,
1226     DATA_STATIC_WHILE_SET_AT_EXECUTE	= 0x4,
1227     DATA_STATIC	= 0x8
1228 }
1229 
1230 enum D3D12_ROOT_DESCRIPTOR_FLAGS
1231 {
1232     NONE	= 0,
1233     DATA_VOLATILE	= 0x2,
1234     DATA_STATIC_WHILE_SET_AT_EXECUTE	= 0x4,
1235     DATA_STATIC	= 0x8
1236 }
1237 
1238 enum D3D12_QUERY_HEAP_TYPE
1239 {
1240     OCCLUSION	= 0,
1241     TIMESTAMP	= 1,
1242     PIPELINE_STATISTICS	= 2,
1243     SO_STATISTICS	= 3,
1244     VIDEO_DECODE_STATISTICS	= 4,
1245     COPY_QUEUE_TIMESTAMP	= 5
1246 }
1247 
1248 enum D3D12_QUERY_TYPE
1249 {
1250     OCCLUSION	= 0,
1251     BINARY_OCCLUSION	= 1,
1252     TIMESTAMP	= 2,
1253     PIPELINE_STATISTICS	= 3,
1254     SO_STATISTICS_STREAM0	= 4,
1255     SO_STATISTICS_STREAM1	= 5,
1256     SO_STATISTICS_STREAM2	= 6,
1257     SO_STATISTICS_STREAM3	= 7,
1258     VIDEO_DECODE_STATISTICS	= 8
1259 }
1260 
1261 enum D3D12_PREDICATION_OP
1262 {
1263     EQUAL_ZERO	= 0,
1264     NOT_EQUAL_ZERO	= 1
1265 }
1266 
1267 enum D3D12_INDIRECT_ARGUMENT_TYPE
1268 {
1269     DRAW	= 0,
1270     DRAW_INDEXED	= ( DRAW + 1 ) ,
1271     DISPATCH	= ( DRAW_INDEXED + 1 ) ,
1272     VERTEX_BUFFER_VIEW	= ( DISPATCH + 1 ) ,
1273     INDEX_BUFFER_VIEW	= ( VERTEX_BUFFER_VIEW + 1 ) ,
1274     CONSTANT	= ( INDEX_BUFFER_VIEW + 1 ) ,
1275     CONSTANT_BUFFER_VIEW	= ( CONSTANT + 1 ) ,
1276     SHADER_RESOURCE_VIEW	= ( CONSTANT_BUFFER_VIEW + 1 ) ,
1277     UNORDERED_ACCESS_VIEW	= ( SHADER_RESOURCE_VIEW + 1 ) 
1278 }
1279 
1280 enum D3D12_WRITEBUFFERIMMEDIATE_MODE
1281 {
1282     DEFAULT	= 0,
1283     MARKER_IN	= 0x1,
1284     MARKER_OUT	= 0x2
1285 }
1286 
1287 enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
1288 {
1289     NONE	= 0,
1290     ANY	= 0x1,
1291     ALL	= 0
1292 }
1293 
1294 enum D3D12_RESIDENCY_PRIORITY
1295 {
1296     MINIMUM	= 0x28000000,
1297     LOW	= 0x50000000,
1298     NORMAL	= 0x78000000,
1299     HIGH	= 0xa0010000,
1300     MAXIMUM	= 0xc8000000
1301 }
1302 
1303 enum D3D12_RESIDENCY_FLAGS
1304 {
1305     NONE	= 0,
1306     DENY_OVERBUDGET	= 0x1
1307 }
1308 
1309 ///
1310 /// Structures
1311 ///
1312 
1313 struct D3D12_COMMAND_QUEUE_DESC
1314 {
1315     D3D12_COMMAND_LIST_TYPE Type;
1316     int Priority;
1317     D3D12_COMMAND_QUEUE_FLAGS Flags;
1318     uint NodeMask;
1319 }
1320 
1321 struct D3D12_INPUT_ELEMENT_DESC
1322 {
1323     LPCSTR SemanticName;
1324     uint SemanticIndex;
1325     DXGI_FORMAT Format;
1326     uint InputSlot;
1327     uint AlignedByteOffset;
1328     D3D12_INPUT_CLASSIFICATION InputSlotClass;
1329     uint InstanceDataStepRate;
1330 }
1331 
1332 struct D3D12_SO_DECLARATION_ENTRY
1333 {
1334     uint Stream;
1335     LPCSTR SemanticName;
1336     uint SemanticIndex;
1337     BYTE StartComponent;
1338     BYTE ComponentCount;
1339     BYTE OutputSlot;
1340 }
1341 
1342 struct D3D12_VIEWPORT
1343 {
1344     float TopLeftX;
1345     float TopLeftY;
1346     float Width;
1347     float Height;
1348     float MinDepth;
1349     float MaxDepth;
1350 }
1351 
1352 
1353 struct D3D12_BOX
1354 {
1355     uint left;
1356     uint top;
1357     uint front;
1358     uint right;
1359     uint bottom;
1360     uint back;
1361 }
1362 
1363 struct D3D12_DEPTH_STENCILOP_DESC
1364 {
1365     D3D12_STENCIL_OP StencilFailOp;
1366     D3D12_STENCIL_OP StencilDepthFailOp;
1367     D3D12_STENCIL_OP StencilPassOp;
1368     D3D12_COMPARISON_FUNC StencilFunc;
1369 }
1370 
1371 struct D3D12_DEPTH_STENCIL_DESC
1372 {
1373     bool DepthEnable;
1374     D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1375     D3D12_COMPARISON_FUNC DepthFunc;
1376     bool StencilEnable;
1377     ubyte StencilReadMask;
1378     ubyte StencilWriteMask;
1379     D3D12_DEPTH_STENCILOP_DESC FrontFace;
1380     D3D12_DEPTH_STENCILOP_DESC BackFace;
1381 }
1382 
1383 struct D3D12_DEPTH_STENCIL_DESC1
1384 {
1385     bool DepthEnable;
1386     D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1387     D3D12_COMPARISON_FUNC DepthFunc;
1388     bool StencilEnable;
1389     ubyte StencilReadMask;
1390     ubyte StencilWriteMask;
1391     D3D12_DEPTH_STENCILOP_DESC FrontFace;
1392     D3D12_DEPTH_STENCILOP_DESC BackFace;
1393     bool DepthBoundsTestEnable;
1394 }
1395 
1396 struct D3D12_RENDER_TARGET_BLEND_DESC
1397 {
1398     bool BlendEnable;
1399     bool LogicOpEnable;
1400     D3D12_BLEND SrcBlend;
1401     D3D12_BLEND DestBlend;
1402     D3D12_BLEND_OP BlendOp;
1403     D3D12_BLEND SrcBlendAlpha;
1404     D3D12_BLEND DestBlendAlpha;
1405     D3D12_BLEND_OP BlendOpAlpha;
1406     D3D12_LOGIC_OP LogicOp;
1407     ubyte RenderTargetWriteMask;
1408 }
1409 
1410 struct D3D12_BLEND_DESC
1411 {
1412     bool AlphaToCoverageEnable;
1413     bool IndependentBlendEnable;
1414     D3D12_RENDER_TARGET_BLEND_DESC[8] RenderTarget;
1415 }
1416 
1417 struct D3D12_RASTERIZER_DESC
1418 {
1419     D3D12_FILL_MODE FillMode;
1420     D3D12_CULL_MODE CullMode;
1421     bool FrontCounterClockwise;
1422     int DepthBias;
1423     float DepthBiasClamp;
1424     float SlopeScaledDepthBias;
1425     bool DepthClipEnable;
1426     bool MultisampleEnable;
1427     bool AntialiasedLineEnable;
1428     uint ForcedSampleCount;
1429     D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1430 }
1431 
1432 struct D3D12_SHADER_BYTECODE
1433 {
1434     const void *pShaderBytecode;
1435     size_t BytecodeLength;
1436 }
1437 
1438 struct D3D12_STREAM_OUTPUT_DESC
1439 {
1440     const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
1441     uint NumEntries;
1442     const uint *pBufferStrides;
1443     uint NumStrides;
1444     uint RasterizedStream;
1445 }
1446 
1447 struct D3D12_INPUT_LAYOUT_DESC
1448 {
1449     const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
1450     uint NumElements;
1451 }
1452 
1453 struct D3D12_CACHED_PIPELINE_STATE
1454 {
1455     const void *pCachedBlob;
1456     size_t CachedBlobSizeInBytes;
1457 }
1458 
1459 struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
1460 {
1461     ID3D12RootSignature pRootSignature;
1462     D3D12_SHADER_BYTECODE VS;
1463     D3D12_SHADER_BYTECODE PS;
1464     D3D12_SHADER_BYTECODE DS;
1465     D3D12_SHADER_BYTECODE HS;
1466     D3D12_SHADER_BYTECODE GS;
1467     D3D12_STREAM_OUTPUT_DESC StreamOutput;
1468     D3D12_BLEND_DESC BlendState;
1469     uint SampleMask;
1470     D3D12_RASTERIZER_DESC RasterizerState;
1471     D3D12_DEPTH_STENCIL_DESC DepthStencilState;
1472     D3D12_INPUT_LAYOUT_DESC InputLayout;
1473     D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
1474     D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
1475     uint NumRenderTargets;
1476     DXGI_FORMAT[8] RTVFormats;
1477     DXGI_FORMAT DSVFormat;
1478     DXGI_SAMPLE_DESC SampleDesc;
1479     uint NodeMask;
1480     D3D12_CACHED_PIPELINE_STATE CachedPSO;
1481     D3D12_PIPELINE_STATE_FLAGS Flags;
1482 }
1483 
1484 struct D3D12_COMPUTE_PIPELINE_STATE_DESC
1485 {
1486     ID3D12RootSignature pRootSignature;
1487     D3D12_SHADER_BYTECODE CS;
1488     uint NodeMask;
1489     D3D12_CACHED_PIPELINE_STATE CachedPSO;
1490     D3D12_PIPELINE_STATE_FLAGS Flags;
1491 }
1492 
1493 struct D3D12_RT_FORMAT_ARRAY
1494 {
1495     DXGI_FORMAT[8] RTFormats;
1496     uint NumRenderTargets;
1497 }
1498 
1499 struct D3D12_PIPELINE_STATE_STREAM_DESC
1500 {
1501     size_t SizeInBytes;
1502     void *pPipelineStateSubobjectStream;
1503 }
1504 
1505 struct D3D12_FEATURE_DATA_D3D12_OPTIONS
1506 {
1507     bool DoublePrecisionFloatShaderOps;
1508     bool OutputMergerLogicOp;
1509     D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
1510     D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
1511     D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
1512     bool PSSpecifiedStencilRefSupported;
1513     bool TypedUAVLoadAdditionalFormats;
1514     bool ROVsSupported;
1515     D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
1516     uint MaxGPUVirtualAddressBitsPerResource;
1517     bool StandardSwizzle64KBSupported;
1518     D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
1519     bool CrossAdapterRowMajorTextureSupported;
1520     bool VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
1521     D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
1522 }
1523 
1524 struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
1525 {
1526     bool WaveOps;
1527     uint WaveLaneCountMin;
1528     uint WaveLaneCountMax;
1529     uint TotalLaneCount;
1530     bool ExpandedComputeResourceStates;
1531     bool Int64ShaderOps;
1532 }
1533 
1534 struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
1535 {
1536     bool DepthBoundsTestSupported;
1537     D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
1538 }
1539 
1540 struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
1541 {
1542     D3D_ROOT_SIGNATURE_VERSION HighestVersion;
1543 }
1544 
1545 struct D3D12_FEATURE_DATA_ARCHITECTURE
1546 {
1547     uint NodeIndex;
1548     bool TileBasedRenderer;
1549     bool UMA;
1550     bool CacheCoherentUMA;
1551 }
1552 
1553 struct D3D12_FEATURE_DATA_ARCHITECTURE1
1554 {
1555     uint NodeIndex;
1556     bool TileBasedRenderer;
1557     bool UMA;
1558     bool CacheCoherentUMA;
1559     bool IsolatedMMU;
1560 }
1561 
1562 struct D3D12_FEATURE_DATA_FEATURE_LEVELS
1563 {
1564     uint NumFeatureLevels;
1565     const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
1566     D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
1567 }
1568 
1569 struct D3D12_FEATURE_DATA_SHADER_MODEL
1570 {
1571     D3D_SHADER_MODEL HighestShaderModel;
1572 }
1573 
1574 struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
1575 {
1576     DXGI_FORMAT Format;
1577     D3D12_FORMAT_SUPPORT1 Support1;
1578     D3D12_FORMAT_SUPPORT2 Support2;
1579 }
1580 
1581 struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
1582 {
1583     DXGI_FORMAT Format;
1584     uint SampleCount;
1585     D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
1586     uint NumQualityLevels;
1587 }
1588 
1589 struct D3D12_FEATURE_DATA_FORMAT_INFO
1590 {
1591     DXGI_FORMAT Format;
1592     ubyte PlaneCount;
1593 }
1594 
1595 struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
1596 {
1597     uint MaxGPUVirtualAddressBitsPerResource;
1598     uint MaxGPUVirtualAddressBitsPerProcess;
1599 }
1600 
1601 struct D3D12_FEATURE_DATA_SHADER_CACHE
1602 {
1603     D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
1604 }
1605 
1606 struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
1607 {
1608     D3D12_COMMAND_LIST_TYPE CommandListType;
1609     uint Priority;
1610     bool PriorityForTypeIsSupported;
1611 }
1612 
1613 struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
1614 {
1615     bool CopyQueueTimestampQueriesSupported;
1616     bool CastingFullyTypedFormatSupported;
1617     D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
1618     D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
1619     bool BarycentricsSupported;
1620 }
1621 
1622 struct D3D12_FEATURE_DATA_EXISTING_HEAPS
1623 {
1624     bool Supported;
1625 }
1626 
1627 struct D3D12_RESOURCE_ALLOCATION_INFO
1628 {
1629     ulong SizeInBytes;
1630     ulong Alignment;
1631 }
1632 
1633 struct D3D12_HEAP_PROPERTIES
1634 {
1635     D3D12_HEAP_TYPE Type;
1636     D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
1637     D3D12_MEMORY_POOL MemoryPoolPreference;
1638     uint CreationNodeMask;
1639     uint VisibleNodeMask;
1640 }
1641 
1642 struct D3D12_HEAP_DESC
1643 {
1644     ulong SizeInBytes;
1645     D3D12_HEAP_PROPERTIES Properties;
1646     ulong Alignment;
1647     D3D12_HEAP_FLAGS Flags;
1648 }
1649 
1650 struct D3D12_RESOURCE_DESC
1651 {
1652     D3D12_RESOURCE_DIMENSION Dimension;
1653     ulong Alignment;
1654     ulong Width;
1655     uint Height;
1656     ushort DepthOrArraySize;
1657     ushort MipLevels;
1658     DXGI_FORMAT Format;
1659     DXGI_SAMPLE_DESC SampleDesc;
1660     D3D12_TEXTURE_LAYOUT Layout;
1661     D3D12_RESOURCE_FLAGS Flags;
1662 }
1663 
1664 struct D3D12_DEPTH_STENCIL_VALUE
1665 {
1666     float Depth;
1667     ubyte Stencil;
1668 }
1669 
1670 struct D3D12_CLEAR_VALUE
1671 {
1672     DXGI_FORMAT Format;
1673     union 
1674 {
1675         float[4] Color;
1676         D3D12_DEPTH_STENCIL_VALUE DepthStencil;
1677     }
1678 }
1679 
1680 struct D3D12_RANGE
1681 {
1682     size_t Begin;
1683     size_t End;
1684 }
1685 
1686 struct D3D12_RANGE_UINT64
1687 {
1688     ulong Begin;
1689     ulong End;
1690 }
1691 
1692 struct D3D12_SUBRESOURCE_RANGE_UINT64
1693 {
1694     uint Subresource;
1695     D3D12_RANGE_UINT64 Range;
1696 }
1697 
1698 struct D3D12_SUBRESOURCE_INFO
1699 {
1700     ulong Offset;
1701     uint RowPitch;
1702     uint DepthPitch;
1703 }
1704 
1705 struct D3D12_TILED_RESOURCE_COORDINATE
1706 {
1707     uint X;
1708     uint Y;
1709     uint Z;
1710     uint Subresource;
1711 }
1712 
1713 struct D3D12_TILE_REGION_SIZE
1714 {
1715     uint NumTiles;
1716     bool UseBox;
1717     uint Width;
1718     ushort Height;
1719     ushort Depth;
1720 }
1721 
1722 struct D3D12_SUBRESOURCE_TILING
1723 {
1724     uint WidthInTiles;
1725     ushort HeightInTiles;
1726     ushort DepthInTiles;
1727     uint StartTileIndexInOverallResource;
1728 }
1729 
1730 struct D3D12_TILE_SHAPE
1731 {
1732     uint WidthInTexels;
1733     uint HeightInTexels;
1734     uint DepthInTexels;
1735 }
1736 
1737 struct D3D12_PACKED_MIP_INFO
1738 {
1739     ubyte NumStandardMips;
1740     ubyte NumPackedMips;
1741     uint NumTilesForPackedMips;
1742     uint StartTileIndexInOverallResource;
1743 }
1744 
1745 struct D3D12_RESOURCE_TRANSITION_BARRIER
1746 {
1747     ID3D12Resource pResource;
1748     uint Subresource;
1749     D3D12_RESOURCE_STATES StateBefore;
1750     D3D12_RESOURCE_STATES StateAfter;
1751 }
1752 
1753 struct D3D12_RESOURCE_ALIASING_BARRIER
1754 {
1755     ID3D12Resource pResourceBefore;
1756     ID3D12Resource pResourceAfter;
1757 }
1758 
1759 struct D3D12_RESOURCE_UAV_BARRIER
1760 {
1761     ID3D12Resource pResource;
1762 }
1763 
1764 struct D3D12_RESOURCE_BARRIER
1765 {
1766     D3D12_RESOURCE_BARRIER_TYPE Type;
1767     D3D12_RESOURCE_BARRIER_FLAGS Flags;
1768     union 
1769     {
1770         D3D12_RESOURCE_TRANSITION_BARRIER Transition;
1771         D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
1772         D3D12_RESOURCE_UAV_BARRIER UAV;
1773     }
1774 }
1775 
1776 struct D3D12_SUBRESOURCE_FOOTPRINT
1777 {
1778     DXGI_FORMAT Format;
1779     uint Width;
1780     uint Height;
1781     uint Depth;
1782     uint RowPitch;
1783 }
1784 
1785 struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
1786 {
1787     ulong Offset;
1788     D3D12_SUBRESOURCE_FOOTPRINT Footprint;
1789 }
1790 
1791 struct D3D12_TEXTURE_COPY_LOCATION
1792 {
1793     ID3D12Resource pResource;
1794     D3D12_TEXTURE_COPY_TYPE Type;
1795     union 
1796     {
1797         D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
1798         uint SubresourceIndex;
1799     }
1800 }
1801 
1802 struct D3D12_SAMPLE_POSITION
1803 {
1804     byte X;
1805     byte Y;
1806 }
1807 
1808 struct D3D12_VIEW_INSTANCE_LOCATION
1809 {
1810     uint ViewportArrayIndex;
1811     uint RenderTargetArrayIndex;
1812 }
1813 
1814 struct D3D12_VIEW_INSTANCING_DESC
1815 {
1816     uint ViewInstanceCount;
1817     const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
1818     D3D12_VIEW_INSTANCING_FLAGS Flags;
1819 }
1820 
1821 struct D3D12_BUFFER_SRV
1822 {
1823     ulong FirstElement;
1824     uint NumElements;
1825     uint StructureByteStride;
1826     D3D12_BUFFER_SRV_FLAGS Flags;
1827 }
1828 
1829 struct D3D12_TEX1D_SRV
1830 {
1831     uint MostDetailedMip;
1832     uint MipLevels;
1833     float ResourceMinLODClamp;
1834 }
1835 
1836 struct D3D12_TEX1D_ARRAY_SRV
1837 {
1838     uint MostDetailedMip;
1839     uint MipLevels;
1840     uint FirstArraySlice;
1841     uint ArraySize;
1842     float ResourceMinLODClamp;
1843 }
1844 
1845 struct D3D12_TEX2D_SRV
1846 {
1847     uint MostDetailedMip;
1848     uint MipLevels;
1849     uint PlaneSlice;
1850     float ResourceMinLODClamp;
1851 }
1852 
1853 struct D3D12_TEX2D_ARRAY_SRV
1854 {
1855     uint MostDetailedMip;
1856     uint MipLevels;
1857     uint FirstArraySlice;
1858     uint ArraySize;
1859     uint PlaneSlice;
1860     float ResourceMinLODClamp;
1861 }
1862 
1863 struct D3D12_TEX3D_SRV
1864 {
1865     uint MostDetailedMip;
1866     uint MipLevels;
1867     float ResourceMinLODClamp;
1868 }
1869 
1870 struct D3D12_TEXCUBE_SRV
1871 {
1872     uint MostDetailedMip;
1873     uint MipLevels;
1874     float ResourceMinLODClamp;
1875 }
1876 
1877 struct D3D12_TEXCUBE_ARRAY_SRV
1878 {
1879     uint MostDetailedMip;
1880     uint MipLevels;
1881     uint First2DArrayFace;
1882     uint NumCubes;
1883     float ResourceMinLODClamp;
1884 }
1885 
1886 struct D3D12_TEX2DMS_SRV
1887 {
1888     uint UnusedField_NothingToDefine;
1889 }
1890 
1891 struct D3D12_TEX2DMS_ARRAY_SRV
1892 {
1893     uint FirstArraySlice;
1894     uint ArraySize;
1895 }
1896 
1897 struct D3D12_SHADER_RESOURCE_VIEW_DESC
1898 {
1899     DXGI_FORMAT Format;
1900     D3D12_SRV_DIMENSION ViewDimension;
1901     uint Shader4ComponentMapping;
1902     union 
1903     {
1904         D3D12_BUFFER_SRV Buffer;
1905         D3D12_TEX1D_SRV Texture1D;
1906         D3D12_TEX1D_ARRAY_SRV Texture1DArray;
1907         D3D12_TEX2D_SRV Texture2D;
1908         D3D12_TEX2D_ARRAY_SRV Texture2DArray;
1909         D3D12_TEX2DMS_SRV Texture2DMS;
1910         D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
1911         D3D12_TEX3D_SRV Texture3D;
1912         D3D12_TEXCUBE_SRV TextureCube;
1913         D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
1914     }
1915 }
1916 
1917 struct D3D12_CONSTANT_BUFFER_VIEW_DESC
1918 {
1919     D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
1920     uint SizeInBytes;
1921 }
1922 
1923 struct D3D12_SAMPLER_DESC
1924 {
1925     D3D12_FILTER Filter;
1926     D3D12_TEXTURE_ADDRESS_MODE AddressU;
1927     D3D12_TEXTURE_ADDRESS_MODE AddressV;
1928     D3D12_TEXTURE_ADDRESS_MODE AddressW;
1929     float MipLODBias;
1930     uint MaxAnisotropy;
1931     D3D12_COMPARISON_FUNC ComparisonFunc;
1932     float[4] BorderColor;
1933     float MinLOD;
1934     float MaxLOD;
1935 }
1936 
1937 struct D3D12_BUFFER_UAV
1938 {
1939     ulong FirstElement;
1940     uint NumElements;
1941     uint StructureByteStride;
1942     ulong CounterOffsetInBytes;
1943     D3D12_BUFFER_UAV_FLAGS Flags;
1944 }
1945 
1946 struct D3D12_TEX1D_UAV
1947 {
1948     uint MipSlice;
1949 }
1950 
1951 struct D3D12_TEX1D_ARRAY_UAV
1952 {
1953     uint MipSlice;
1954     uint FirstArraySlice;
1955     uint ArraySize;
1956 }
1957 
1958 struct D3D12_TEX2D_UAV
1959 {
1960     uint MipSlice;
1961     uint PlaneSlice;
1962 }
1963 
1964 struct D3D12_TEX2D_ARRAY_UAV
1965 {
1966     uint MipSlice;
1967     uint FirstArraySlice;
1968     uint ArraySize;
1969     uint PlaneSlice;
1970 }
1971 
1972 struct D3D12_TEX3D_UAV
1973 {
1974     uint MipSlice;
1975     uint FirstWSlice;
1976     uint WSize;
1977 }
1978 
1979 struct D3D12_UNORDERED_ACCESS_VIEW_DESC
1980 {
1981     DXGI_FORMAT Format;
1982     D3D12_UAV_DIMENSION ViewDimension;
1983     union 
1984     {
1985         D3D12_BUFFER_UAV Buffer;
1986         D3D12_TEX1D_UAV Texture1D;
1987         D3D12_TEX1D_ARRAY_UAV Texture1DArray;
1988         D3D12_TEX2D_UAV Texture2D;
1989         D3D12_TEX2D_ARRAY_UAV Texture2DArray;
1990         D3D12_TEX3D_UAV Texture3D;
1991     }
1992 }
1993 
1994 struct D3D12_BUFFER_RTV
1995 {
1996     ulong FirstElement;
1997     uint NumElements;
1998 }
1999 
2000 struct D3D12_TEX1D_RTV
2001 {
2002     uint MipSlice;
2003 }
2004 
2005 struct D3D12_TEX1D_ARRAY_RTV
2006 {
2007     uint MipSlice;
2008     uint FirstArraySlice;
2009     uint ArraySize;
2010 }
2011 
2012 struct D3D12_TEX2D_RTV
2013 {
2014     uint MipSlice;
2015     uint PlaneSlice;
2016 }
2017 
2018 struct D3D12_TEX2DMS_RTV
2019 {
2020     uint UnusedField_NothingToDefine;
2021 }
2022 
2023 struct D3D12_TEX2D_ARRAY_RTV
2024 {
2025     uint MipSlice;
2026     uint FirstArraySlice;
2027     uint ArraySize;
2028     uint PlaneSlice;
2029 }
2030 
2031 struct D3D12_TEX2DMS_ARRAY_RTV
2032 {
2033     uint FirstArraySlice;
2034     uint ArraySize;
2035 }
2036 
2037 struct D3D12_TEX3D_RTV
2038 {
2039     uint MipSlice;
2040     uint FirstWSlice;
2041     uint WSize;
2042 }
2043 
2044 struct D3D12_RENDER_TARGET_VIEW_DESC
2045 {
2046     DXGI_FORMAT Format;
2047     D3D12_RTV_DIMENSION ViewDimension;
2048     union 
2049     {
2050         D3D12_BUFFER_RTV Buffer;
2051         D3D12_TEX1D_RTV Texture1D;
2052         D3D12_TEX1D_ARRAY_RTV Texture1DArray;
2053         D3D12_TEX2D_RTV Texture2D;
2054         D3D12_TEX2D_ARRAY_RTV Texture2DArray;
2055         D3D12_TEX2DMS_RTV Texture2DMS;
2056         D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
2057         D3D12_TEX3D_RTV Texture3D;
2058     }
2059 }
2060 
2061 struct D3D12_TEX1D_DSV
2062 {
2063     uint MipSlice;
2064 }
2065 
2066 struct D3D12_TEX1D_ARRAY_DSV
2067 {
2068     uint MipSlice;
2069     uint FirstArraySlice;
2070     uint ArraySize;
2071 }
2072 
2073 struct D3D12_TEX2D_DSV
2074 {
2075     uint MipSlice;
2076 }
2077 
2078 struct D3D12_TEX2D_ARRAY_DSV
2079 {
2080     uint MipSlice;
2081     uint FirstArraySlice;
2082     uint ArraySize;
2083 }
2084 
2085 struct D3D12_TEX2DMS_DSV
2086 {
2087     uint UnusedField_NothingToDefine;
2088 }
2089 
2090 struct D3D12_TEX2DMS_ARRAY_DSV
2091 {
2092     uint FirstArraySlice;
2093     uint ArraySize;
2094 }
2095 
2096 struct D3D12_DEPTH_STENCIL_VIEW_DESC
2097 {
2098     DXGI_FORMAT Format;
2099     D3D12_DSV_DIMENSION ViewDimension;
2100     D3D12_DSV_FLAGS Flags;
2101     union 
2102     {
2103         D3D12_TEX1D_DSV Texture1D;
2104         D3D12_TEX1D_ARRAY_DSV Texture1DArray;
2105         D3D12_TEX2D_DSV Texture2D;
2106         D3D12_TEX2D_ARRAY_DSV Texture2DArray;
2107         D3D12_TEX2DMS_DSV Texture2DMS;
2108         D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
2109     }
2110 }
2111 
2112 struct D3D12_DESCRIPTOR_HEAP_DESC
2113 {
2114     D3D12_DESCRIPTOR_HEAP_TYPE Type;
2115     uint NumDescriptors;
2116     D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
2117     uint NodeMask;
2118 }
2119 
2120 struct D3D12_DESCRIPTOR_RANGE
2121 {
2122     D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2123     uint NumDescriptors;
2124     uint BaseShaderRegister;
2125     uint RegisterSpace;
2126     uint OffsetInDescriptorsFromTableStart;
2127 }
2128 
2129 struct D3D12_ROOT_DESCRIPTOR_TABLE
2130 {
2131     uint NumDescriptorRanges;
2132     const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
2133 }
2134 
2135 struct D3D12_ROOT_CONSTANTS
2136 {
2137     uint ShaderRegister;
2138     uint RegisterSpace;
2139     uint Num32BitValues;
2140 }
2141 
2142 struct D3D12_ROOT_DESCRIPTOR
2143 {
2144     uint ShaderRegister;
2145     uint RegisterSpace;
2146 }
2147 
2148 struct D3D12_ROOT_PARAMETER
2149 {
2150     D3D12_ROOT_PARAMETER_TYPE ParameterType;
2151     union 
2152     {
2153         D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
2154         D3D12_ROOT_CONSTANTS Constants;
2155         D3D12_ROOT_DESCRIPTOR Descriptor;
2156     }
2157     D3D12_SHADER_VISIBILITY ShaderVisibility;
2158 }
2159 
2160 struct D3D12_STATIC_SAMPLER_DESC
2161 {
2162     D3D12_FILTER Filter;
2163     D3D12_TEXTURE_ADDRESS_MODE AddressU;
2164     D3D12_TEXTURE_ADDRESS_MODE AddressV;
2165     D3D12_TEXTURE_ADDRESS_MODE AddressW;
2166     float MipLODBias;
2167     uint MaxAnisotropy;
2168     D3D12_COMPARISON_FUNC ComparisonFunc;
2169     D3D12_STATIC_BORDER_COLOR BorderColor;
2170     float MinLOD;
2171     float MaxLOD;
2172     uint ShaderRegister;
2173     uint RegisterSpace;
2174     D3D12_SHADER_VISIBILITY ShaderVisibility;
2175 }
2176 
2177 struct D3D12_ROOT_SIGNATURE_DESC
2178 {
2179     uint NumParameters;
2180     const D3D12_ROOT_PARAMETER *pParameters;
2181     uint NumStaticSamplers;
2182     const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
2183     D3D12_ROOT_SIGNATURE_FLAGS Flags;
2184 }
2185 
2186 struct D3D12_DESCRIPTOR_RANGE1
2187 {
2188     D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2189     uint NumDescriptors;
2190     uint BaseShaderRegister;
2191     uint RegisterSpace;
2192     D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
2193     uint OffsetInDescriptorsFromTableStart;
2194 }
2195 
2196 struct D3D12_ROOT_DESCRIPTOR_TABLE1
2197 {
2198     uint NumDescriptorRanges;
2199     const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
2200 }
2201 
2202 struct D3D12_ROOT_DESCRIPTOR1
2203 {
2204     uint ShaderRegister;
2205     uint RegisterSpace;
2206     D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
2207 }
2208 
2209 struct D3D12_ROOT_PARAMETER1
2210 {
2211     D3D12_ROOT_PARAMETER_TYPE ParameterType;
2212     union 
2213     {
2214         D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
2215         D3D12_ROOT_CONSTANTS Constants;
2216         D3D12_ROOT_DESCRIPTOR1 Descriptor;
2217     }
2218     D3D12_SHADER_VISIBILITY ShaderVisibility;
2219 }
2220 
2221 struct D3D12_ROOT_SIGNATURE_DESC1
2222 {
2223     uint NumParameters;
2224     const D3D12_ROOT_PARAMETER1 *pParameters;
2225     uint NumStaticSamplers;
2226     const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
2227     D3D12_ROOT_SIGNATURE_FLAGS Flags;
2228 }
2229 
2230 struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
2231 {
2232     D3D_ROOT_SIGNATURE_VERSION Version;
2233     union 
2234     {
2235         D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
2236         D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
2237     }
2238 }
2239 
2240 struct D3D12_CPU_DESCRIPTOR_HANDLE
2241 {
2242     size_t ptr;
2243 }
2244 
2245 struct D3D12_GPU_DESCRIPTOR_HANDLE
2246 {
2247     ulong ptr;
2248 }
2249 
2250 struct D3D12_DISCARD_REGION
2251 {
2252     uint NumRects;
2253     const D3D12_RECT *pRects;
2254     uint FirstSubresource;
2255     uint NumSubresources;
2256 }
2257 
2258 struct D3D12_QUERY_HEAP_DESC
2259 {
2260     D3D12_QUERY_HEAP_TYPE Type;
2261     uint Count;
2262     uint NodeMask;
2263 }
2264 
2265 struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
2266 {
2267     ulong IAVertices;
2268     ulong IAPrimitives;
2269     ulong VSInvocations;
2270     ulong GSInvocations;
2271     ulong GSPrimitives;
2272     ulong CInvocations;
2273     ulong CPrimitives;
2274     ulong PSInvocations;
2275     ulong HSInvocations;
2276     ulong DSInvocations;
2277     ulong CSInvocations;
2278 }
2279 
2280 struct D3D12_QUERY_DATA_SO_STATISTICS
2281 {
2282     ulong NumPrimitivesWritten;
2283     ulong PrimitivesStorageNeeded;
2284 }
2285 
2286 struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
2287 {
2288     D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2289     ulong SizeInBytes;
2290     D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
2291 }
2292 
2293 struct D3D12_DRAW_ARGUMENTS
2294 {
2295     uint VertexCountPerInstance;
2296     uint InstanceCount;
2297     uint StartVertexLocation;
2298     uint StartInstanceLocation;
2299 }
2300 
2301 struct D3D12_DRAW_INDEXED_ARGUMENTS
2302 {
2303     uint IndexCountPerInstance;
2304     uint InstanceCount;
2305     uint StartIndexLocation;
2306     int BaseVertexLocation;
2307     uint StartInstanceLocation;
2308 }
2309 
2310 struct D3D12_DISPATCH_ARGUMENTS
2311 {
2312     uint ThreadGroupCountX;
2313     uint ThreadGroupCountY;
2314     uint ThreadGroupCountZ;
2315 }
2316 
2317 struct D3D12_VERTEX_BUFFER_VIEW
2318 {
2319     D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2320     uint SizeInBytes;
2321     uint StrideInBytes;
2322 }
2323 
2324 struct D3D12_INDEX_BUFFER_VIEW
2325 {
2326     D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2327     uint SizeInBytes;
2328     DXGI_FORMAT Format;
2329 }
2330 
2331 struct D3D12_INDIRECT_ARGUMENT_DESC
2332 {
2333     D3D12_INDIRECT_ARGUMENT_TYPE Type;
2334     union 
2335     {
2336         struct VertexBuffer
2337         {
2338             uint Slot;
2339         };
2340         struct Constant 
2341         {
2342             uint RootParameterIndex;
2343             uint DestOffsetIn32BitValues;
2344             uint Num32BitValuesToSet;
2345         };
2346         struct ConstantBufferView
2347         {
2348             uint RootParameterIndex;
2349         };
2350         struct ShaderResourceView
2351         {
2352             uint RootParameterIndex;
2353         };
2354         struct UnorderedAccessView
2355         {
2356             uint RootParameterIndex;
2357         };
2358     };
2359 }
2360 
2361 struct D3D12_COMMAND_SIGNATURE_DESC
2362 {
2363     uint ByteStride;
2364     uint NumArgumentDescs;
2365     const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
2366     uint NodeMask;
2367 }
2368 
2369 struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
2370 {
2371     D3D12_GPU_VIRTUAL_ADDRESS Dest;
2372     uint Value;
2373 }
2374 struct D3D12_SUBRESOURCE_DATA
2375 {
2376     const void *pData;
2377     LONG_PTR RowPitch;
2378     LONG_PTR SlicePitch;
2379 }
2380 
2381 struct D3D12_MEMCPY_DEST
2382 {
2383     void *pData;
2384     size_t RowPitch;
2385     size_t SlicePitch;
2386 }
2387 
2388 ///
2389 /// Interfaces
2390 ///
2391 
2392 mixin(uuid!(ID3D12Object, "c4fec28f-7966-4e95-9f94-f431cb56c3b8"));
2393 public interface ID3D12Object : IUnknown
2394 {
2395 extern(Windows):
2396 	HRESULT GetPrivateData(REFGUID guid, uint *pDataSize, void *pData);
2397     HRESULT SetName(const wchar *Name);
2398     HRESULT SetPrivateData(REFGUID guid, uint DataSize, const void *pData);
2399     HRESULT SetPrivateDataInterface(REFGUID guid, const IUnknown *pData);
2400 }
2401 
2402 mixin(uuid!(ID3D12DeviceChild, "905db94b-a00c-4140-9df5-2b64ca9ea357"));
2403 public interface ID3D12DeviceChild : ID3D12Object
2404 {
2405 extern(Windows):
2406 	HRESULT GetDevice(REFIID riid, void **ppvDevice);
2407 }
2408 
2409 mixin(uuid!(ID3D12RootSignature, "c54a6b66-72df-4ee8-8be5-a946a1429214"));
2410 public interface ID3D12RootSignature : ID3D12DeviceChild
2411 {
2412 extern(Windows):
2413 }
2414 
2415 mixin(uuid!(ID3D12RootSignatureDeserializer, "34AB647B-3CC8-46AC-841B-C0965645C046"));
2416 public interface ID3D12RootSignatureDeserializer : IUnknown
2417 {
2418 extern(Windows):
2419     D3D12_ROOT_SIGNATURE_DESC* GetRootSignatureDesc();
2420 }
2421 
2422 mixin(uuid!(ID3D12VersionedRootSignatureDeserializer, "7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0"));
2423 public interface ID3D12VersionedRootSignatureDeserializer : IUnknown
2424 {
2425 extern(Windows):
2426     HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
2427     const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
2428 }
2429 
2430 mixin(uuid!(ID3D12Pageable, "63ee58fb-1268-4835-86da-f008ce62f0d6"));
2431 public interface ID3D12Pageable : ID3D12DeviceChild
2432 {
2433 extern(Windows):
2434 }
2435 
2436 mixin(uuid!(ID3D12Heap, "6b3b2502-6e51-45b3-90ee-9884265e8df3"));
2437 public interface ID3D12Heap : ID3D12Pageable
2438 {
2439 extern(Windows):
2440     D3D12_HEAP_DESC GetDesc();
2441 }
2442 
2443 mixin(uuid!(ID3D12Resource, "696442be-a72e-4059-bc79-5b5c98040fad"));
2444 public interface ID3D12Resource : ID3D12Pageable
2445 {
2446 extern(Windows):
2447     HRESULT Map(uint Subresource, const D3D12_RANGE *pReadRange, void **ppData);
2448     void Unmap(uint Subresource, const D3D12_RANGE *pWrittenRange);
2449     D3D12_RESOURCE_DESC GetDesc();
2450     D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
2451     HRESULT WriteToSubresource(uint DstSubresource, const D3D12_BOX *pDstBox, const void *pSrcData, uint SrcRowPitch, uint SrcDepthPitch);
2452     HRESULT ReadFromSubresource(void *pDstData, uint DstRowPitch, uint DstDepthPitch, uint SrcSubresource, const D3D12_BOX *pSrcBox);
2453     HRESULT GetHeapProperties(D3D12_HEAP_PROPERTIES *pHeapProperties, D3D12_HEAP_FLAGS *pHeapFlags);
2454 }
2455 
2456 mixin(uuid!(ID3D12CommandAllocator, "6102dee4-af59-4b09-b999-b44d73f09b24"));
2457 public interface ID3D12CommandAllocator : ID3D12Pageable
2458 {
2459 extern(Windows):
2460     HRESULT Reset();
2461 }
2462 
2463 mixin(uuid!(ID3D12Fence, "0a753dcf-c4d8-4b91-adf6-be5a60d95a76"));
2464 public interface ID3D12Fence : ID3D12Pageable
2465 {
2466 extern(Windows):
2467     ulong GetCompletedValue();
2468     HRESULT SetEventOnCompletion(ulong Value, HANDLE hEvent);
2469     HRESULT Signal(ulong Value);
2470 }
2471 
2472 mixin(uuid!(ID3D12Fence1, "433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a"));
2473 public interface ID3D12Fence1 : ID3D12Fence
2474 {
2475 extern(Windows):
2476     D3D12_FENCE_FLAGS GetCreationFlags();
2477 }
2478 
2479 mixin(uuid!(ID3D12PipelineState, "765a30f3-f624-4c6f-a828-ace948622445"));
2480 public interface ID3D12PipelineState : ID3D12Pageable
2481 {
2482 extern(Windows):
2483     HRESULT GetCachedBlob(ID3DBlob *ppBlob);
2484 }
2485 
2486 mixin(uuid!(ID3D12DescriptorHeap, "8efb471d-616c-4f49-90f7-127bb763fa51"));
2487 public interface ID3D12DescriptorHeap : ID3D12Pageable
2488 {
2489 extern(Windows):
2490     D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
2491     D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
2492     D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
2493 }
2494 
2495 mixin(uuid!(ID3D12QueryHeap, "0d9658ae-ed45-469e-a61d-970ec583cab4"));
2496 public interface ID3D12QueryHeap : ID3D12Pageable
2497 {
2498 extern(Windows):
2499 }
2500 
2501 mixin(uuid!(ID3D12CommandSignature, "c36a797c-ec80-4f0a-8985-a7b2475082d1"));
2502 public interface ID3D12CommandSignature : ID3D12Pageable
2503 {
2504 extern(Windows):
2505 }
2506 
2507 mixin(uuid!(ID3D12CommandList, "7116d91c-e7e4-47ce-b8c6-ec8168f437e5"));
2508 public interface ID3D12CommandList : ID3D12DeviceChild
2509 {
2510 extern(Windows):
2511     D3D12_COMMAND_LIST_TYPE GetType();
2512 }
2513 
2514 mixin(uuid!(ID3D12GraphicsCommandList, "5b160d0f-ac1b-4185-8ba8-b3ae42a5a455"));
2515 public interface ID3D12GraphicsCommandList : ID3D12CommandList
2516 {
2517 extern(Windows):
2518     HRESULT Close();
2519     HRESULT Reset(ID3D12CommandAllocator pAllocator, ID3D12PipelineState pInitialState);
2520     void ClearState(ID3D12PipelineState pPipelineState);
2521     void DrawInstanced(uint VertexCountPerInstance, uint InstanceCount, uint StartVertexLocation, uint StartInstanceLocation);
2522     void DrawIndexedInstanced(uint IndexCountPerInstance, uint InstanceCount, uint StartIndexLocation, int BaseVertexLocation, uint StartInstanceLocation);
2523     void Dispatch(uint ThreadGroupCountX, uint ThreadGroupCountY, uint ThreadGroupCountZ);
2524     void CopyBufferRegion(ID3D12Resource pDstBuffer, ulong DstOffset, ID3D12Resource pSrcBuffer, ulong SrcOffset, ulong NumBytes);
2525     void CopyTextureRegion(const D3D12_TEXTURE_COPY_LOCATION *pDst, uint DstX, uint DstY, uint DstZ, const D3D12_TEXTURE_COPY_LOCATION *pSrc, const D3D12_BOX *pSrcBox);
2526     void CopyResource(ID3D12Resource pDstResource, ID3D12Resource pSrcResource);
2527     void CopyTiles(ID3D12Resource pTiledResource, const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, const D3D12_TILE_REGION_SIZE *pTileRegionSize, ID3D12Resource pBuffer, ulong BufferStartOffsetInBytes, D3D12_TILE_COPY_FLAGS Flags);
2528     void ResolveSubresource(ID3D12Resource pDstResource, uint DstSubresource, ID3D12Resource pSrcResource, uint SrcSubresource, DXGI_FORMAT Format);
2529     void IASetPrimitiveTopology(D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
2530     void RSSetViewports(uint NumViewports, const D3D12_VIEWPORT *pViewports);
2531     void RSSetScissorRects(uint NumRects, const D3D12_RECT *pRects);
2532     void OMSetBlendFactor(const float[4] BlendFactor);
2533     void OMSetStencilRef(uint StencilRef);
2534     void SetPipelineState(ID3D12PipelineState pPipelineState);
2535     void ResourceBarrier(uint NumBarriers, const D3D12_RESOURCE_BARRIER *pBarriers);
2536     void ExecuteBundle(ID3D12GraphicsCommandList pCommandList);
2537     void SetDescriptorHeaps(uint NumDescriptorHeaps, const(ID3D12DescriptorHeap) *ppDescriptorHeaps);
2538     void SetComputeRootSignature(ID3D12RootSignature pRootSignature);
2539     void SetGraphicsRootSignature(ID3D12RootSignature pRootSignature);
2540     void SetComputeRootDescriptorTable(uint RootParameterIndex, D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
2541     void SetGraphicsRootDescriptorTable(uint RootParameterIndex, D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
2542     void SetComputeRoot32BitConstant(uint RootParameterIndex, uint SrcData, uint DestOffsetIn32BitValues);
2543     void SetGraphicsRoot32BitConstant(uint RootParameterIndex, uint SrcData, uint DestOffsetIn32BitValues);
2544     void SetComputeRoot32BitConstants(uint RootParameterIndex, uint Num32BitValuesToSet, const void *pSrcData, uint DestOffsetIn32BitValues);
2545     void SetGraphicsRoot32BitConstants(uint RootParameterIndex, uint Num32BitValuesToSet, const void *pSrcData, uint DestOffsetIn32BitValues);
2546     void SetComputeRootConstantBufferView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
2547     void SetGraphicsRootConstantBufferView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
2548     void SetComputeRootShaderResourceView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
2549     void SetGraphicsRootShaderResourceView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
2550     void SetComputeRootUnorderedAccessView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
2551     void SetGraphicsRootUnorderedAccessView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
2552     void IASetIndexBuffer(const D3D12_INDEX_BUFFER_VIEW *pView);
2553     void IASetVertexBuffers(uint StartSlot, uint NumViews, const D3D12_VERTEX_BUFFER_VIEW *pViews);
2554     void SOSetTargets(uint StartSlot, uint NumViews, const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
2555     void OMSetRenderTargets(uint NumRenderTargetDescriptors, const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors, bool RTsSingleHandleToDescriptorRange, const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
2556     void ClearDepthStencilView(D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, D3D12_CLEAR_FLAGS ClearFlags, float Depth, ubyte Stencil, uint NumRects, const D3D12_RECT *pRects);
2557     void ClearRenderTargetView(D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, const float[4] ColorRGBA, uint NumRects, const D3D12_RECT *pRects);
2558     void ClearUnorderedAccessViewUint(D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, ID3D12Resource pResource, const uint[4] Values, uint NumRects, const D3D12_RECT *pRects);
2559     void ClearUnorderedAccessViewFloat(D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, ID3D12Resource pResource, const float[4] Values, uint NumRects, const D3D12_RECT *pRects);
2560     void DiscardResource(ID3D12Resource pResource, const D3D12_DISCARD_REGION *pRegion);
2561     void BeginQuery(ID3D12QueryHeap pQueryHeap, D3D12_QUERY_TYPE Type, uint Index);
2562     void EndQuery(ID3D12QueryHeap pQueryHeap, D3D12_QUERY_TYPE Type, uint Index);
2563     void ResolveQueryData(ID3D12QueryHeap pQueryHeap, D3D12_QUERY_TYPE Type, uint StartIndex, uint NumQueries, ID3D12Resource pDestinationBuffer, ulong AlignedDestinationBufferOffset);
2564     void SetPredication(ID3D12Resource pBuffer, ulong AlignedBufferOffset, D3D12_PREDICATION_OP Operation);
2565     void SetMarker(uint Metadata, const void *pData, uint Size);
2566     void BeginEvent(uint Metadata, const void *pData, uint Size);
2567     void EndEvent();
2568     void ExecuteIndirect(ID3D12CommandSignature pCommandSignature, uint MaxCommandCount, ID3D12Resource pArgumentBuffer, ulong ArgumentBufferOffset, ID3D12Resource pCountBuffer, ulong CountBufferOffset);
2569 }
2570 
2571 mixin(uuid!(ID3D12GraphicsCommandList1, "553103fb-1fe7-4557-bb38-946d7d0e7ca7"));
2572 public interface ID3D12GraphicsCommandList1 : ID3D12GraphicsCommandList
2573 {
2574 extern(Windows):
2575     void AtomicCopyBufferUINT(ID3D12Resource pDstBuffer, ulong DstOffset, ID3D12Resource pSrcBuffer, ulong SrcOffset, uint Dependencies, const(ID3D12Resource) *ppDependentResources, const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
2576     void AtomicCopyBufferUINT64(ID3D12Resource pDstBuffer, ulong DstOffset, ID3D12Resource pSrcBuffer, ulong SrcOffset, uint Dependencies, const(ID3D12Resource) *ppDependentResources, const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
2577     void OMSetDepthBounds(float Min, float Max);
2578     void SetSamplePositions(uint NumSamplesPerPixel, uint NumPixels, D3D12_SAMPLE_POSITION *pSamplePositions);
2579     void ResolveSubresourceRegion(ID3D12Resource pDstResource, uint DstSubresource, uint DstX, uint DstY, ID3D12Resource pSrcResource, uint SrcSubresource, D3D12_RECT *pSrcRect, DXGI_FORMAT Format, D3D12_RESOLVE_MODE ResolveMode);
2580     void SetViewInstanceMask(uint Mask);
2581 }
2582 
2583 mixin(uuid!(ID3D12GraphicsCommandList2, "38C3E585-FF17-412C-9150-4FC6F9D72A28"));
2584 public interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
2585 {
2586 extern(Windows):
2587     void WriteBufferImmediate(uint Count, const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2588 }
2589 
2590 mixin(uuid!(ID3D12CommandQueue, "0ec870a6-5d7e-4c22-8cfc-5baae07616ed"));
2591 public interface ID3D12CommandQueue : ID3D12Pageable
2592 {
2593 extern(Windows):
2594         void UpdateTileMappings(ID3D12Resource pResource, uint NumResourceRegions, const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates, const D3D12_TILE_REGION_SIZE *pResourceRegionSizes, ID3D12Heap pHeap, uint NumRanges, const D3D12_TILE_RANGE_FLAGS *pRangeFlags, const uint *pHeapRangeStartOffsets, const uint *pRangeTileCounts, D3D12_TILE_MAPPING_FLAGS Flags);
2595         void CopyTileMappings(ID3D12Resource pDstResource, const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate, ID3D12Resource pSrcResource, const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate, const D3D12_TILE_REGION_SIZE *pRegionSize, D3D12_TILE_MAPPING_FLAGS Flags);
2596         void ExecuteCommandLists(uint NumCommandLists, const(ID3D12CommandList) *ppCommandLists);
2597         void SetMarker( uint Metadata, const void *pData, uint Size);
2598         void BeginEvent(uint Metadata, const void *pData, uint Size);
2599         void EndEvent();
2600         HRESULT Signal(ID3D12Fence pFence, ulong Value);
2601         HRESULT Wait(ID3D12Fence pFence, ulong Value);
2602         HRESULT GetTimestampFrequency(ulong *pFrequency);
2603         HRESULT GetClockCalibration(ulong *pGpuTimestamp, ulong *pCpuTimestamp);
2604         D3D12_COMMAND_QUEUE_DESC GetDesc();
2605 }
2606 
2607 mixin(uuid!(ID3D12Device, "189819f1-1db6-4b57-be54-1821339b85f7"));
2608 public interface ID3D12Device : ID3D12Object
2609 {
2610 extern(Windows):
2611     uint GetNodeCount();
2612     HRESULT CreateCommandQueue(const D3D12_COMMAND_QUEUE_DESC *pDesc, REFIID riid, void **ppCommandQueue);
2613     HRESULT CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE type, REFIID riid, void **ppCommandAllocator);
2614     HRESULT CreateGraphicsPipelineState(const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState);
2615     HRESULT CreateComputePipelineState(const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState);
2616     HRESULT CreateCommandList(uint nodeMask, D3D12_COMMAND_LIST_TYPE type, ID3D12CommandAllocator pCommandAllocator, ID3D12PipelineState pInitialState, REFIID riid, void **ppCommandList);
2617     HRESULT CheckFeatureSupport(D3D12_FEATURE Feature, void *pFeatureSupportData, uint FeatureSupportDataSize);
2618     HRESULT CreateDescriptorHeap(const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, REFIID riid, void **ppvHeap);
2619     uint GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
2620     HRESULT CreateRootSignature(uint nodeMask, const void *pBlobWithRootSignature, size_t blobLengthInBytes, REFIID riid, void **ppvRootSignature);
2621     void CreateConstantBufferView(const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
2622     void CreateShaderResourceView(ID3D12Resource pResource, const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
2623     void CreateUnorderedAccessView(ID3D12Resource pResource, ID3D12Resource pCounterResource, const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
2624     void CreateRenderTargetView(ID3D12Resource pResource, const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
2625     void CreateDepthStencilView(ID3D12Resource pResource, const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
2626     void CreateSampler(const D3D12_SAMPLER_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
2627     void CopyDescriptors(uint NumDestDescriptorRanges, const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, const uint *pDestDescriptorRangeSizes, uint NumSrcDescriptorRanges, const D3D12_CPU_DESCRIPTOR_HANDLE *pSr, const uint *pSrcDescriptorRangeSizes, D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
2628     void CopyDescriptorsSimple(uint NumDescriptors, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
2629     D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(uint visibleMask, uint numResourceDescs, const D3D12_RESOURCE_DESC *pResourceDescs);
2630     D3D12_HEAP_PROPERTIES GetCustomHeapProperties(uint nodeMask, D3D12_HEAP_TYPE heapType);
2631     HRESULT CreateCommittedResource(const D3D12_HEAP_PROPERTIES *pHeapProperties, D3D12_HEAP_FLAGS HeapFlags, const D3D12_RESOURCE_DESC *pDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riidResource, void **ppvResource);
2632     HRESULT CreateHeap(const D3D12_HEAP_DESC *pDesc, REFIID riid, void **ppvHeap);
2633     HRESULT CreatePlacedResource(ID3D12Heap pHeap, ulong HeapOffset, const D3D12_RESOURCE_DESC *pDesc, D3D12_RESOURCE_STATES InitialState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riid, void **ppvResource);
2634     HRESULT CreateReservedResource(const D3D12_RESOURCE_DESC *pDesc, D3D12_RESOURCE_STATES InitialState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riid, void **ppvResource);
2635     HRESULT CreateSharedHandle(ID3D12DeviceChild pObject, const SECURITY_ATTRIBUTES *pAttributes, uint Access, const wchar *Name, HANDLE *pHandle);
2636     HRESULT OpenSharedHandle(HANDLE NTHandle, REFIID riid, void **ppvObj);
2637     HRESULT OpenSharedHandleByName(const wchar *Name, uint Access, HANDLE *pNTHandle);
2638     HRESULT MakeResident( uint NumObjects, const(ID3D12Pageable) *ppObjects);
2639     HRESULT Evict(uint NumObjects, const(ID3D12Pageable) *ppObjects);
2640     HRESULT CreateFence(ulong InitialValue, D3D12_FENCE_FLAGS Flags, REFIID riid, void **ppFence);
2641     HRESULT GetDeviceRemovedReason();
2642     void GetCopyableFootprints(const D3D12_RESOURCE_DESC *pResourceDesc, uint FirstSubresource, uint NumSubresources, ulong BaseOffset, D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, uint *pNumRows, ulong *pRowSizeInBytes, ulong *pTotalBytes);
2643     HRESULT CreateQueryHeap(const D3D12_QUERY_HEAP_DESC *pDesc, REFIID riid, void **ppvHeap);
2644     HRESULT SetStablePowerState(bool Enable);
2645     HRESULT CreateCommandSignature(const D3D12_COMMAND_SIGNATURE_DESC *pDesc, ID3D12RootSignature pRootSignature, REFIID riid, void **ppvCommandSignature);
2646     void GetResourceTiling(ID3D12Resource pTiledResource, uint *pNumTilesForEntireResource, D3D12_PACKED_MIP_INFO *pPackedMipDesc, D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, uint *pNumSubresourceTilings, uint FirstSubresourceTilingToGet, D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
2647     LUID GetAdapterLuid();
2648 }
2649 
2650 mixin(uuid!(ID3D12PipelineLibrary, "c64226a8-9201-46af-b4cc-53fb9ff7414f"));
2651 public interface ID3D12PipelineLibrary : ID3D12DeviceChild
2652 {
2653 extern(Windows):
2654     HRESULT StorePipeline(const wchar *pName, ID3D12PipelineState pPipeline);
2655     HRESULT LoadGraphicsPipeline(const wchar *pName, const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState);
2656     HRESULT LoadComputePipeline(const wchar *pName, const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState);
2657     size_t GetSerializedSize();
2658     HRESULT Serialize(void *pData, size_t DataSizeInBytes);
2659 }
2660 
2661 mixin(uuid!(ID3D12PipelineLibrary1, "80eabf42-2568-4e5e-bd82-c37f86961dc3"));
2662 public interface ID3D12PipelineLibrary1 : ID3D12PipelineLibrary
2663 {
2664 extern(Windows):
2665     HRESULT LoadPipeline(const wchar *Name, const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, REFIID riid, void **ppPipelineState);
2666 }
2667 
2668 mixin(uuid!(ID3D12Device1, "77acce80-638e-4e65-8895-c1f23386863e"));
2669 public interface ID3D12Device1 : ID3D12Device
2670 {
2671 extern(Windows):
2672     HRESULT CreatePipelineLibrary(const void *pLibraryBlob, size_t BlobLength, REFIID riid, void **ppPipelineLibrary);
2673     HRESULT SetEventOnMultipleFenceCompletion(const(ID3D12Fence) *ppFences, const ulong *pFenceValues, uint NumFences, D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags, HANDLE hEvent);
2674     HRESULT SetResidencyPriority(uint NumObjects, const(ID3D12Pageable) *ppObjects, const D3D12_RESIDENCY_PRIORITY *pPriorities);
2675 }
2676 
2677 mixin(uuid!(ID3D12Device2, "30baa41e-b15b-475c-a0bb-1af5c5b64328"));
2678 public interface ID3D12Device2 : ID3D12Device1
2679 {
2680 extern(Windows):
2681     HRESULT CreatePipelineState(const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, REFIID riid, void **ppPipelineState);
2682 }
2683 
2684 mixin(uuid!(ID3D12Device3, "81dadc15-2bad-4392-93c5-101345c4aa98"));
2685 public interface ID3D12Device3 : ID3D12Device2
2686 {
2687 extern(Windows):
2688     HRESULT OpenExistingHeapFromAddress(const void *pAddress, REFIID riid, void **ppvHeap);
2689     HRESULT OpenExistingHeapFromFileMapping(HANDLE hFileMapping, REFIID riid, void **ppvHeap);
2690     HRESULT EnqueueMakeResident(D3D12_RESIDENCY_FLAGS Flags, uint NumObjects, const(ID3D12Pageable) *ppObjects, ID3D12Fence pFenceToSignal, ulong FenceValueToSignal);
2691 }
2692 
2693 mixin(uuid!(ID3D12Tools, "7071e1f0-e84b-4b33-974f-12fa49de65c5"));
2694 public interface ID3D12Tools : IUnknown
2695 {
2696 extern(Windows):
2697     void EnableShaderInstrumentation(bool bEnable);
2698     bool ShaderInstrumentationEnabled();
2699 }
2700