aboutsummaryrefslogtreecommitdiff
path: root/contrib/DirectX-Headers/include
diff options
context:
space:
mode:
authormarsunet <marc.sunet@amd.com>2021-12-21 17:04:22 -0800
committermarsunet <marc.sunet@amd.com>2021-12-21 17:04:22 -0800
commitfba8184491e0b7ae6fab7ac01b4600d230dc4569 (patch)
treec13194764867a4ad8f46702356b22dccc1e56dd3 /contrib/DirectX-Headers/include
parent8b1583b65d77188ef35a89e75f145f29c3e3b5d7 (diff)
Initial commit with window demo.HEADmain
Diffstat (limited to 'contrib/DirectX-Headers/include')
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12.h23139
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12.idl5457
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12compatibility.h659
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12compatibility.idl88
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12sdklayers.h3657
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl1679
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12shader.h474
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12video.h5533
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12video.idl1448
-rw-r--r--contrib/DirectX-Headers/include/directx/d3dcommon.h1068
-rw-r--r--contrib/DirectX-Headers/include/directx/d3dcommon.idl911
-rw-r--r--contrib/DirectX-Headers/include/directx/d3dx12.h4049
-rw-r--r--contrib/DirectX-Headers/include/directx/dxcore.h41
-rw-r--r--contrib/DirectX-Headers/include/directx/dxcore_interface.h316
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgicommon.h57
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgicommon.idl52
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgiformat.h142
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgiformat.idl137
-rw-r--r--contrib/DirectX-Headers/include/dxguids/dxguids.h126
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h5
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h5
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/rpc.h5
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/winadapter.h340
-rw-r--r--contrib/DirectX-Headers/include/wsl/wrladapter.h801
28 files changed, 50213 insertions, 0 deletions
diff --git a/contrib/DirectX-Headers/include/directx/d3d12.h b/contrib/DirectX-Headers/include/directx/d3d12.h
new file mode 100644
index 0000000..0cac343
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12.h
@@ -0,0 +1,23139 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12_h__
39#define __d3d12_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if _CONTROL_FLOW_GUARD_XFG
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Object_FWD_DEFINED__
56#define __ID3D12Object_FWD_DEFINED__
57typedef interface ID3D12Object ID3D12Object;
58
59#endif /* __ID3D12Object_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12DeviceChild_FWD_DEFINED__
63#define __ID3D12DeviceChild_FWD_DEFINED__
64typedef interface ID3D12DeviceChild ID3D12DeviceChild;
65
66#endif /* __ID3D12DeviceChild_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12RootSignature_FWD_DEFINED__
70#define __ID3D12RootSignature_FWD_DEFINED__
71typedef interface ID3D12RootSignature ID3D12RootSignature;
72
73#endif /* __ID3D12RootSignature_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
77#define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
78typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
79
80#endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
84#define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
85typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
86
87#endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Pageable_FWD_DEFINED__
91#define __ID3D12Pageable_FWD_DEFINED__
92typedef interface ID3D12Pageable ID3D12Pageable;
93
94#endif /* __ID3D12Pageable_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Heap_FWD_DEFINED__
98#define __ID3D12Heap_FWD_DEFINED__
99typedef interface ID3D12Heap ID3D12Heap;
100
101#endif /* __ID3D12Heap_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12Resource_FWD_DEFINED__
105#define __ID3D12Resource_FWD_DEFINED__
106typedef interface ID3D12Resource ID3D12Resource;
107
108#endif /* __ID3D12Resource_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12CommandAllocator_FWD_DEFINED__
112#define __ID3D12CommandAllocator_FWD_DEFINED__
113typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
114
115#endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12Fence_FWD_DEFINED__
119#define __ID3D12Fence_FWD_DEFINED__
120typedef interface ID3D12Fence ID3D12Fence;
121
122#endif /* __ID3D12Fence_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12Fence1_FWD_DEFINED__
126#define __ID3D12Fence1_FWD_DEFINED__
127typedef interface ID3D12Fence1 ID3D12Fence1;
128
129#endif /* __ID3D12Fence1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12PipelineState_FWD_DEFINED__
133#define __ID3D12PipelineState_FWD_DEFINED__
134typedef interface ID3D12PipelineState ID3D12PipelineState;
135
136#endif /* __ID3D12PipelineState_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
140#define __ID3D12DescriptorHeap_FWD_DEFINED__
141typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
142
143#endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12QueryHeap_FWD_DEFINED__
147#define __ID3D12QueryHeap_FWD_DEFINED__
148typedef interface ID3D12QueryHeap ID3D12QueryHeap;
149
150#endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12CommandSignature_FWD_DEFINED__
154#define __ID3D12CommandSignature_FWD_DEFINED__
155typedef interface ID3D12CommandSignature ID3D12CommandSignature;
156
157#endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12CommandList_FWD_DEFINED__
161#define __ID3D12CommandList_FWD_DEFINED__
162typedef interface ID3D12CommandList ID3D12CommandList;
163
164#endif /* __ID3D12CommandList_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
168#define __ID3D12GraphicsCommandList_FWD_DEFINED__
169typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
170
171#endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
175#define __ID3D12GraphicsCommandList1_FWD_DEFINED__
176typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
177
178#endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
182#define __ID3D12GraphicsCommandList2_FWD_DEFINED__
183typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
184
185#endif /* __ID3D12GraphicsCommandList2_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12CommandQueue_FWD_DEFINED__
189#define __ID3D12CommandQueue_FWD_DEFINED__
190typedef interface ID3D12CommandQueue ID3D12CommandQueue;
191
192#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12Device_FWD_DEFINED__
196#define __ID3D12Device_FWD_DEFINED__
197typedef interface ID3D12Device ID3D12Device;
198
199#endif /* __ID3D12Device_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
203#define __ID3D12PipelineLibrary_FWD_DEFINED__
204typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
205
206#endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
210#define __ID3D12PipelineLibrary1_FWD_DEFINED__
211typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
212
213#endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12Device1_FWD_DEFINED__
217#define __ID3D12Device1_FWD_DEFINED__
218typedef interface ID3D12Device1 ID3D12Device1;
219
220#endif /* __ID3D12Device1_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12Device2_FWD_DEFINED__
224#define __ID3D12Device2_FWD_DEFINED__
225typedef interface ID3D12Device2 ID3D12Device2;
226
227#endif /* __ID3D12Device2_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12Device3_FWD_DEFINED__
231#define __ID3D12Device3_FWD_DEFINED__
232typedef interface ID3D12Device3 ID3D12Device3;
233
234#endif /* __ID3D12Device3_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12ProtectedSession_FWD_DEFINED__
238#define __ID3D12ProtectedSession_FWD_DEFINED__
239typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
240
241#endif /* __ID3D12ProtectedSession_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
245#define __ID3D12ProtectedResourceSession_FWD_DEFINED__
246typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
247
248#endif /* __ID3D12ProtectedResourceSession_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12Device4_FWD_DEFINED__
252#define __ID3D12Device4_FWD_DEFINED__
253typedef interface ID3D12Device4 ID3D12Device4;
254
255#endif /* __ID3D12Device4_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
259#define __ID3D12LifetimeOwner_FWD_DEFINED__
260typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
261
262#endif /* __ID3D12LifetimeOwner_FWD_DEFINED__ */
263
264
265#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
266#define __ID3D12SwapChainAssistant_FWD_DEFINED__
267typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
268
269#endif /* __ID3D12SwapChainAssistant_FWD_DEFINED__ */
270
271
272#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
273#define __ID3D12LifetimeTracker_FWD_DEFINED__
274typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
275
276#endif /* __ID3D12LifetimeTracker_FWD_DEFINED__ */
277
278
279#ifndef __ID3D12StateObject_FWD_DEFINED__
280#define __ID3D12StateObject_FWD_DEFINED__
281typedef interface ID3D12StateObject ID3D12StateObject;
282
283#endif /* __ID3D12StateObject_FWD_DEFINED__ */
284
285
286#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
287#define __ID3D12StateObjectProperties_FWD_DEFINED__
288typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
289
290#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */
291
292
293#ifndef __ID3D12Device5_FWD_DEFINED__
294#define __ID3D12Device5_FWD_DEFINED__
295typedef interface ID3D12Device5 ID3D12Device5;
296
297#endif /* __ID3D12Device5_FWD_DEFINED__ */
298
299
300#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
301#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
302typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
303
304#endif /* __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ */
305
306
307#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
308#define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
309typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
310
311#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__ */
312
313
314#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
315#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
316typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
317
318#endif /* __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ */
319
320
321#ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
322#define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
323typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
324
325#endif /* __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__ */
326
327
328#ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
329#define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
330typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
331
332#endif /* __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__ */
333
334
335#ifndef __ID3D12Device6_FWD_DEFINED__
336#define __ID3D12Device6_FWD_DEFINED__
337typedef interface ID3D12Device6 ID3D12Device6;
338
339#endif /* __ID3D12Device6_FWD_DEFINED__ */
340
341
342#ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
343#define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
344typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
345
346#endif /* __ID3D12ProtectedResourceSession1_FWD_DEFINED__ */
347
348
349#ifndef __ID3D12Device7_FWD_DEFINED__
350#define __ID3D12Device7_FWD_DEFINED__
351typedef interface ID3D12Device7 ID3D12Device7;
352
353#endif /* __ID3D12Device7_FWD_DEFINED__ */
354
355
356#ifndef __ID3D12Device8_FWD_DEFINED__
357#define __ID3D12Device8_FWD_DEFINED__
358typedef interface ID3D12Device8 ID3D12Device8;
359
360#endif /* __ID3D12Device8_FWD_DEFINED__ */
361
362
363#ifndef __ID3D12Resource1_FWD_DEFINED__
364#define __ID3D12Resource1_FWD_DEFINED__
365typedef interface ID3D12Resource1 ID3D12Resource1;
366
367#endif /* __ID3D12Resource1_FWD_DEFINED__ */
368
369
370#ifndef __ID3D12Resource2_FWD_DEFINED__
371#define __ID3D12Resource2_FWD_DEFINED__
372typedef interface ID3D12Resource2 ID3D12Resource2;
373
374#endif /* __ID3D12Resource2_FWD_DEFINED__ */
375
376
377#ifndef __ID3D12Heap1_FWD_DEFINED__
378#define __ID3D12Heap1_FWD_DEFINED__
379typedef interface ID3D12Heap1 ID3D12Heap1;
380
381#endif /* __ID3D12Heap1_FWD_DEFINED__ */
382
383
384#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
385#define __ID3D12GraphicsCommandList3_FWD_DEFINED__
386typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
387
388#endif /* __ID3D12GraphicsCommandList3_FWD_DEFINED__ */
389
390
391#ifndef __ID3D12MetaCommand_FWD_DEFINED__
392#define __ID3D12MetaCommand_FWD_DEFINED__
393typedef interface ID3D12MetaCommand ID3D12MetaCommand;
394
395#endif /* __ID3D12MetaCommand_FWD_DEFINED__ */
396
397
398#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
399#define __ID3D12GraphicsCommandList4_FWD_DEFINED__
400typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
401
402#endif /* __ID3D12GraphicsCommandList4_FWD_DEFINED__ */
403
404
405#ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
406#define __ID3D12ShaderCacheSession_FWD_DEFINED__
407typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
408
409#endif /* __ID3D12ShaderCacheSession_FWD_DEFINED__ */
410
411
412#ifndef __ID3D12Device9_FWD_DEFINED__
413#define __ID3D12Device9_FWD_DEFINED__
414typedef interface ID3D12Device9 ID3D12Device9;
415
416#endif /* __ID3D12Device9_FWD_DEFINED__ */
417
418
419#ifndef __ID3D12Tools_FWD_DEFINED__
420#define __ID3D12Tools_FWD_DEFINED__
421typedef interface ID3D12Tools ID3D12Tools;
422
423#endif /* __ID3D12Tools_FWD_DEFINED__ */
424
425
426#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
427#define __ID3D12SDKConfiguration_FWD_DEFINED__
428typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
429
430#endif /* __ID3D12SDKConfiguration_FWD_DEFINED__ */
431
432
433#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
434#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
435typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
436
437#endif /* __ID3D12GraphicsCommandList5_FWD_DEFINED__ */
438
439
440#ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
441#define __ID3D12GraphicsCommandList6_FWD_DEFINED__
442typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
443
444#endif /* __ID3D12GraphicsCommandList6_FWD_DEFINED__ */
445
446
447/* header files for imported files */
448#include "OAIdl.h"
449#include "OCIdl.h"
450#include "dxgicommon.h"
451#include "dxgiformat.h"
452#include "d3dcommon.h"
453
454#ifdef __cplusplus
455extern "C"{
456#endif
457
458
459/* interface __MIDL_itf_d3d12_0000_0000 */
460/* [local] */
461
462#include <winapifamily.h>
463#pragma region App Family
464#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
465#ifndef _D3D12_CONSTANTS
466#define _D3D12_CONSTANTS
467#define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
468
469#define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
470
471#define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
472
473#define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff )
474
475#define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
476
477#define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
478
479#define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
480
481#define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 )
482
483#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
484
485#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
486
487#define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 )
488
489#define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 )
490
491#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
492
493#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
494
495#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
496
497#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
498
499#define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
500
501#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
502
503#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
504
505#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
506
507#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
508
509#define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
510
511#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
512
513#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
514
515#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
516
517#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
518
519#define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
520
521#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
522
523#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
524
525#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
526
527#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
528
529#define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
530
531#define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
532
533#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
534
535#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
536
537#define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
538
539#define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
540
541#define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
542
543#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
544
545#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
546
547#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
548
549#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
550
551#define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 )
552
553#define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 )
554
555#define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 )
556
557#define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 )
558
559#define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 )
560
561#define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 )
562
563#define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 )
564
565#define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 )
566
567#define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 )
568
569#define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 )
570
571#define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 )
572
573#define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 )
574
575#define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 )
576
577#define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 )
578
579#define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 )
580
581#define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 )
582
583#define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 )
584
585#define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 )
586
587#define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 )
588
589#define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 )
590
591#define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 )
592
593#define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 )
594
595#define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 )
596
597#define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 )
598
599#define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 )
600
601#define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 )
602
603#define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 )
604
605#define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 )
606
607#define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 )
608
609#define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 )
610
611#define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 )
612
613#define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 )
614
615#define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 )
616
617#define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 )
618
619#define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 )
620
621#define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 )
622
623#define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 )
624
625#define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 )
626
627#define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 )
628
629#define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 )
630
631#define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 )
632
633#define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 )
634
635#define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 )
636
637#define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 )
638
639#define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 )
640
641#define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 )
642
643#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 )
644
645#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 )
646
647#define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 )
648
649#define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 )
650
651#define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 )
652
653#define D3D12_CS_THREADID_REGISTER_COUNT ( 1 )
654
655#define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 )
656
657#define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 )
658
659#define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 )
660
661#define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 )
662
663#define D3D12_CS_THREAD_GROUP_MIN_X ( 1 )
664
665#define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 )
666
667#define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 )
668
669#define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 )
670
671#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
672#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
673#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
674#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
675#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
676#define D3D12_DEFAULT_DEPTH_BIAS ( 0 )
677
678#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
679#define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 )
680
681#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )
682#define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 )
683
684#define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
685
686#define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
687
688#define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff )
689
690#define D3D12_DEFAULT_SCISSOR_ENDX ( 0 )
691
692#define D3D12_DEFAULT_SCISSOR_ENDY ( 0 )
693
694#define D3D12_DEFAULT_SCISSOR_STARTX ( 0 )
695
696#define D3D12_DEFAULT_SCISSOR_STARTY ( 0 )
697
698#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
699#define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff )
700
701#define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 )
702
703#define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
704
705#define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
706
707#define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 )
708
709#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
710#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
711#define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 )
712
713#define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 )
714
715#define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 )
716
717#define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff )
718
719#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 )
720
721#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
722
723#define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
724
725#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
726
727#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
728
729#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 )
730
731#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
732
733#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
734
735#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 )
736
737#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
738
739#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 )
740
741#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 )
742
743#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 )
744
745#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
746
747#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
748
749#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
750
751#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
752
753#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
754
755#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
756
757#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
758
759#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
760
761#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
762
763#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
764
765#define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 )
766
767#define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
768
769#define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 )
770
771#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
772#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )
773#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
774#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
775#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
776#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )
777#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
778#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
779#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
780#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
781#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
782#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )
783#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
784#define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 )
785
786#define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 )
787
788#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
789
790#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
791
792#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 )
793
794#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
795
796#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
797
798#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
799
800#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
801
802#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
803
804#define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 )
805
806#define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
807
808#define D3D12_GS_INPUT_REGISTER_COUNT ( 32 )
809
810#define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
811
812#define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 )
813
814#define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 )
815
816#define D3D12_GS_MAX_INSTANCE_COUNT ( 32 )
817
818#define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 )
819
820#define D3D12_GS_OUTPUT_ELEMENTS ( 32 )
821
822#define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
823
824#define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
825
826#define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 )
827
828#define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 )
829
830#define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 )
831
832#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
833
834#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
835
836#define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
837
838#define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
839
840#define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
841
842#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
843
844#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
845
846#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 )
847
848#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
849
850#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
851
852#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
853
854#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
855
856#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 )
857
858#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
859
860#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
861
862#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
863
864#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
865
866#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
867
868#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
869
870#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
871
872#define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
873
874#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )
875#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )
876#define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
877
878#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 )
879
880#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
881
882#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 )
883
884#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 )
885
886#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 )
887
888#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
889
890#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
891
892#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
893
894#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
895
896#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
897
898#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 )
899
900#define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
901
902#define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
903
904#define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
905
906#define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
907
908#define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 )
909
910#define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
911
912#define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 )
913
914#define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
915
916#define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 )
917
918#define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 )
919
920#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 )
921
922#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 )
923
924#define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
925
926#define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
927
928#define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff )
929
930#define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff )
931
932#define D3D12_LINEAR_GAMMA ( 1.0f )
933#define D3D12_MAJOR_VERSION ( 12 )
934
935#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
936#define D3D12_MAX_DEPTH ( 1.0f )
937#define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 )
938
939#define D3D12_MAX_MAXANISOTROPY ( 16 )
940
941#define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
942
943#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )
944#define D3D12_MAX_ROOT_COST ( 64 )
945
946#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 )
947
948#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 )
949
950#define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 )
951
952#define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
953
954#define D3D12_MAX_VIEW_INSTANCE_COUNT ( 4 )
955
956#define D3D12_MINOR_VERSION ( 0 )
957
958#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
959#define D3D12_MIN_DEPTH ( 0.0f )
960#define D3D12_MIN_MAXANISOTROPY ( 0 )
961
962#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )
963#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )
964#define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 )
965
966#define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 )
967
968#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
969#define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
970
971#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
972
973#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 )
974
975#define D3D12_PACKED_TILE ( 0xffffffff )
976
977#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
978
979#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
980
981#define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 )
982
983#define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 )
984
985#define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 )
986
987#define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 )
988
989#define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
990
991#define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 )
992
993#define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
994
995#define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 )
996
997#define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
998
999#define D3D12_PS_INPUT_REGISTER_COUNT ( 32 )
1000
1001#define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
1002
1003#define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 )
1004
1005#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
1006#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
1007
1008#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1009
1010#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
1011
1012#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 )
1013
1014#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1015
1016#define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 )
1017
1018#define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1019
1020#define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1021
1022#define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 )
1023
1024#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
1025#define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 )
1026
1027#define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT ( 8 )
1028
1029#define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT ( 256 )
1030
1031#define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT ( 16 )
1032
1033#define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES ( 32 )
1034
1035#define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH ( 31 )
1036
1037#define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1038
1039#define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1040
1041#define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 536870912 )
1042
1043#define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS ( 1073741824 )
1044
1045#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 )
1046
1047#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 )
1048
1049#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 )
1050
1051#define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT ( 16 )
1052
1053#define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 )
1054
1055#define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
1056
1057#define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1058
1059#define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 )
1060
1061#define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
1062
1063#define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
1064
1065#define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 )
1066
1067#define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
1068
1069#define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1070
1071#define D3D12_REQ_MAXANISOTROPY ( 16 )
1072
1073#define D3D12_REQ_MIP_LEVELS ( 15 )
1074
1075#define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
1076
1077#define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1078
1079#define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 )
1080
1081#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 )
1082
1083#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )
1084#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 )
1085
1086#define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 )
1087
1088#define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1089
1090#define D3D12_REQ_SUBRESOURCES ( 30720 )
1091
1092#define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 )
1093
1094#define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 )
1095
1096#define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 )
1097
1098#define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 )
1099
1100#define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
1101
1102#define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 )
1103
1104#define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
1105
1106#define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff )
1107
1108#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 )
1109
1110#define D3D12_SDK_VERSION ( 4 )
1111
1112#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 )
1113
1114#define D3D12_SHADER_MAJOR_VERSION ( 5 )
1115
1116#define D3D12_SHADER_MAX_INSTANCES ( 65535 )
1117
1118#define D3D12_SHADER_MAX_INTERFACES ( 253 )
1119
1120#define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 )
1121
1122#define D3D12_SHADER_MAX_TYPES ( 65535 )
1123
1124#define D3D12_SHADER_MINOR_VERSION ( 1 )
1125
1126#define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
1127
1128#define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
1129
1130#define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
1131
1132#define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
1133
1134#define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 )
1135
1136#define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
1137
1138#define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 )
1139
1140#define D3D12_SO_BUFFER_SLOT_COUNT ( 4 )
1141
1142#define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
1143
1144#define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff )
1145
1146#define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 )
1147
1148#define D3D12_SO_STREAM_COUNT ( 4 )
1149
1150#define D3D12_SPEC_DATE_DAY ( 14 )
1151
1152#define D3D12_SPEC_DATE_MONTH ( 11 )
1153
1154#define D3D12_SPEC_DATE_YEAR ( 2014 )
1155
1156#define D3D12_SPEC_VERSION ( 1.16 )
1157#define D3D12_SRGB_GAMMA ( 2.2f )
1158#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
1159#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
1160#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
1161#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )
1162#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
1163#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
1164#define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 )
1165
1166#define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
1167
1168#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
1169
1170#define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
1171
1172#define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
1173
1174#define D3D12_STANDARD_VECTOR_SIZE ( 4 )
1175
1176#define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 )
1177
1178#define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
1179
1180#define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
1181
1182#define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 )
1183
1184#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1185
1186#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
1187
1188#define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 )
1189
1190#define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 )
1191
1192#define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 )
1193
1194#define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 )
1195
1196#define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 )
1197
1198#define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 )
1199
1200#define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 )
1201
1202#define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1203
1204#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )
1205
1206#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
1207
1208#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
1209
1210#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 )
1211
1212#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )
1213
1214#define D3D12_UAV_SLOT_COUNT ( 64 )
1215
1216#define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
1217
1218#define D3D12_VIDEO_DECODE_MAX_ARGUMENTS ( 10 )
1219
1220#define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS ( 4 )
1221
1222#define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT ( 256 )
1223
1224#define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT ( 256 )
1225
1226#define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN ( 0xffffffff )
1227
1228#define D3D12_VIDEO_PROCESS_MAX_FILTERS ( 32 )
1229
1230#define D3D12_VIDEO_PROCESS_STEREO_VIEWS ( 2 )
1231
1232#define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
1233
1234#define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
1235
1236#define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 )
1237
1238#define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 )
1239
1240#define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 )
1241
1242#define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1243
1244#define D3D12_VS_INPUT_REGISTER_COUNT ( 32 )
1245
1246#define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
1247
1248#define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 )
1249
1250#define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1251
1252#define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1253
1254#define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 )
1255
1256#define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
1257
1258#define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
1259
1260#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
1261
1262#endif
1263
1264typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
1265
1266typedef
1267enum D3D12_COMMAND_LIST_TYPE
1268 {
1269 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
1270 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
1271 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
1272 D3D12_COMMAND_LIST_TYPE_COPY = 3,
1273 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
1274 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
1275 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6
1276 } D3D12_COMMAND_LIST_TYPE;
1277
1278typedef
1279enum D3D12_COMMAND_QUEUE_FLAGS
1280 {
1281 D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
1282 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1
1283 } D3D12_COMMAND_QUEUE_FLAGS;
1284
1285DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS );
1286typedef
1287enum D3D12_COMMAND_QUEUE_PRIORITY
1288 {
1289 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
1290 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
1291 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
1292 } D3D12_COMMAND_QUEUE_PRIORITY;
1293
1294typedef struct D3D12_COMMAND_QUEUE_DESC
1295 {
1296 D3D12_COMMAND_LIST_TYPE Type;
1297 INT Priority;
1298 D3D12_COMMAND_QUEUE_FLAGS Flags;
1299 UINT NodeMask;
1300 } D3D12_COMMAND_QUEUE_DESC;
1301
1302typedef
1303enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
1304 {
1305 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
1306 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
1307 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
1308 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
1309 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
1310 } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
1311
1312typedef
1313enum D3D12_INPUT_CLASSIFICATION
1314 {
1315 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
1316 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
1317 } D3D12_INPUT_CLASSIFICATION;
1318
1319typedef struct D3D12_INPUT_ELEMENT_DESC
1320 {
1321 LPCSTR SemanticName;
1322 UINT SemanticIndex;
1323 DXGI_FORMAT Format;
1324 UINT InputSlot;
1325 UINT AlignedByteOffset;
1326 D3D12_INPUT_CLASSIFICATION InputSlotClass;
1327 UINT InstanceDataStepRate;
1328 } D3D12_INPUT_ELEMENT_DESC;
1329
1330typedef
1331enum D3D12_FILL_MODE
1332 {
1333 D3D12_FILL_MODE_WIREFRAME = 2,
1334 D3D12_FILL_MODE_SOLID = 3
1335 } D3D12_FILL_MODE;
1336
1337typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
1338
1339typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
1340
1341typedef
1342enum D3D12_CULL_MODE
1343 {
1344 D3D12_CULL_MODE_NONE = 1,
1345 D3D12_CULL_MODE_FRONT = 2,
1346 D3D12_CULL_MODE_BACK = 3
1347 } D3D12_CULL_MODE;
1348
1349typedef struct D3D12_SO_DECLARATION_ENTRY
1350 {
1351 UINT Stream;
1352 LPCSTR SemanticName;
1353 UINT SemanticIndex;
1354 BYTE StartComponent;
1355 BYTE ComponentCount;
1356 BYTE OutputSlot;
1357 } D3D12_SO_DECLARATION_ENTRY;
1358
1359typedef struct D3D12_VIEWPORT
1360 {
1361 FLOAT TopLeftX;
1362 FLOAT TopLeftY;
1363 FLOAT Width;
1364 FLOAT Height;
1365 FLOAT MinDepth;
1366 FLOAT MaxDepth;
1367 } D3D12_VIEWPORT;
1368
1369typedef RECT D3D12_RECT;
1370
1371typedef struct D3D12_BOX
1372 {
1373 UINT left;
1374 UINT top;
1375 UINT front;
1376 UINT right;
1377 UINT bottom;
1378 UINT back;
1379 } D3D12_BOX;
1380
1381typedef
1382enum D3D12_COMPARISON_FUNC
1383 {
1384 D3D12_COMPARISON_FUNC_NEVER = 1,
1385 D3D12_COMPARISON_FUNC_LESS = 2,
1386 D3D12_COMPARISON_FUNC_EQUAL = 3,
1387 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
1388 D3D12_COMPARISON_FUNC_GREATER = 5,
1389 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
1390 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
1391 D3D12_COMPARISON_FUNC_ALWAYS = 8
1392 } D3D12_COMPARISON_FUNC;
1393
1394typedef
1395enum D3D12_DEPTH_WRITE_MASK
1396 {
1397 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
1398 D3D12_DEPTH_WRITE_MASK_ALL = 1
1399 } D3D12_DEPTH_WRITE_MASK;
1400
1401typedef
1402enum D3D12_STENCIL_OP
1403 {
1404 D3D12_STENCIL_OP_KEEP = 1,
1405 D3D12_STENCIL_OP_ZERO = 2,
1406 D3D12_STENCIL_OP_REPLACE = 3,
1407 D3D12_STENCIL_OP_INCR_SAT = 4,
1408 D3D12_STENCIL_OP_DECR_SAT = 5,
1409 D3D12_STENCIL_OP_INVERT = 6,
1410 D3D12_STENCIL_OP_INCR = 7,
1411 D3D12_STENCIL_OP_DECR = 8
1412 } D3D12_STENCIL_OP;
1413
1414typedef struct D3D12_DEPTH_STENCILOP_DESC
1415 {
1416 D3D12_STENCIL_OP StencilFailOp;
1417 D3D12_STENCIL_OP StencilDepthFailOp;
1418 D3D12_STENCIL_OP StencilPassOp;
1419 D3D12_COMPARISON_FUNC StencilFunc;
1420 } D3D12_DEPTH_STENCILOP_DESC;
1421
1422typedef struct D3D12_DEPTH_STENCIL_DESC
1423 {
1424 BOOL DepthEnable;
1425 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1426 D3D12_COMPARISON_FUNC DepthFunc;
1427 BOOL StencilEnable;
1428 UINT8 StencilReadMask;
1429 UINT8 StencilWriteMask;
1430 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1431 D3D12_DEPTH_STENCILOP_DESC BackFace;
1432 } D3D12_DEPTH_STENCIL_DESC;
1433
1434typedef struct D3D12_DEPTH_STENCIL_DESC1
1435 {
1436 BOOL DepthEnable;
1437 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1438 D3D12_COMPARISON_FUNC DepthFunc;
1439 BOOL StencilEnable;
1440 UINT8 StencilReadMask;
1441 UINT8 StencilWriteMask;
1442 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1443 D3D12_DEPTH_STENCILOP_DESC BackFace;
1444 BOOL DepthBoundsTestEnable;
1445 } D3D12_DEPTH_STENCIL_DESC1;
1446
1447typedef
1448enum D3D12_BLEND
1449 {
1450 D3D12_BLEND_ZERO = 1,
1451 D3D12_BLEND_ONE = 2,
1452 D3D12_BLEND_SRC_COLOR = 3,
1453 D3D12_BLEND_INV_SRC_COLOR = 4,
1454 D3D12_BLEND_SRC_ALPHA = 5,
1455 D3D12_BLEND_INV_SRC_ALPHA = 6,
1456 D3D12_BLEND_DEST_ALPHA = 7,
1457 D3D12_BLEND_INV_DEST_ALPHA = 8,
1458 D3D12_BLEND_DEST_COLOR = 9,
1459 D3D12_BLEND_INV_DEST_COLOR = 10,
1460 D3D12_BLEND_SRC_ALPHA_SAT = 11,
1461 D3D12_BLEND_BLEND_FACTOR = 14,
1462 D3D12_BLEND_INV_BLEND_FACTOR = 15,
1463 D3D12_BLEND_SRC1_COLOR = 16,
1464 D3D12_BLEND_INV_SRC1_COLOR = 17,
1465 D3D12_BLEND_SRC1_ALPHA = 18,
1466 D3D12_BLEND_INV_SRC1_ALPHA = 19
1467 } D3D12_BLEND;
1468
1469typedef
1470enum D3D12_BLEND_OP
1471 {
1472 D3D12_BLEND_OP_ADD = 1,
1473 D3D12_BLEND_OP_SUBTRACT = 2,
1474 D3D12_BLEND_OP_REV_SUBTRACT = 3,
1475 D3D12_BLEND_OP_MIN = 4,
1476 D3D12_BLEND_OP_MAX = 5
1477 } D3D12_BLEND_OP;
1478
1479typedef
1480enum D3D12_COLOR_WRITE_ENABLE
1481 {
1482 D3D12_COLOR_WRITE_ENABLE_RED = 1,
1483 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
1484 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
1485 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
1486 D3D12_COLOR_WRITE_ENABLE_ALL = ( ( ( D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN ) | D3D12_COLOR_WRITE_ENABLE_BLUE ) | D3D12_COLOR_WRITE_ENABLE_ALPHA )
1487 } D3D12_COLOR_WRITE_ENABLE;
1488
1489typedef
1490enum D3D12_LOGIC_OP
1491 {
1492 D3D12_LOGIC_OP_CLEAR = 0,
1493 D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
1494 D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
1495 D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) ,
1496 D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
1497 D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) ,
1498 D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) ,
1499 D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
1500 D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) ,
1501 D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) ,
1502 D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) ,
1503 D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) ,
1504 D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
1505 D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
1506 D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
1507 D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
1508 } D3D12_LOGIC_OP;
1509
1510typedef struct D3D12_RENDER_TARGET_BLEND_DESC
1511 {
1512 BOOL BlendEnable;
1513 BOOL LogicOpEnable;
1514 D3D12_BLEND SrcBlend;
1515 D3D12_BLEND DestBlend;
1516 D3D12_BLEND_OP BlendOp;
1517 D3D12_BLEND SrcBlendAlpha;
1518 D3D12_BLEND DestBlendAlpha;
1519 D3D12_BLEND_OP BlendOpAlpha;
1520 D3D12_LOGIC_OP LogicOp;
1521 UINT8 RenderTargetWriteMask;
1522 } D3D12_RENDER_TARGET_BLEND_DESC;
1523
1524typedef struct D3D12_BLEND_DESC
1525 {
1526 BOOL AlphaToCoverageEnable;
1527 BOOL IndependentBlendEnable;
1528 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ];
1529 } D3D12_BLEND_DESC;
1530
1531/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT.
1532 IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */
1533typedef
1534enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
1535 {
1536 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
1537 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
1538 } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
1539
1540typedef struct D3D12_RASTERIZER_DESC
1541 {
1542 D3D12_FILL_MODE FillMode;
1543 D3D12_CULL_MODE CullMode;
1544 BOOL FrontCounterClockwise;
1545 INT DepthBias;
1546 FLOAT DepthBiasClamp;
1547 FLOAT SlopeScaledDepthBias;
1548 BOOL DepthClipEnable;
1549 BOOL MultisampleEnable;
1550 BOOL AntialiasedLineEnable;
1551 UINT ForcedSampleCount;
1552 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1553 } D3D12_RASTERIZER_DESC;
1554
1555
1556
1557extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec;
1558extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec;
1559
1560#ifndef __ID3D12Object_INTERFACE_DEFINED__
1561#define __ID3D12Object_INTERFACE_DEFINED__
1562
1563/* interface ID3D12Object */
1564/* [unique][local][object][uuid] */
1565
1566
1567EXTERN_C const IID IID_ID3D12Object;
1568
1569#if defined(__cplusplus) && !defined(CINTERFACE)
1570
1571 MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
1572 ID3D12Object : public IUnknown
1573 {
1574 public:
1575 virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
1576 _In_ REFGUID guid,
1577 _Inout_ UINT *pDataSize,
1578 _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0;
1579
1580 virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
1581 _In_ REFGUID guid,
1582 _In_ UINT DataSize,
1583 _In_reads_bytes_opt_( DataSize ) const void *pData) = 0;
1584
1585 virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
1586 _In_ REFGUID guid,
1587 _In_opt_ const IUnknown *pData) = 0;
1588
1589 virtual HRESULT STDMETHODCALLTYPE SetName(
1590 _In_z_ LPCWSTR Name) = 0;
1591
1592 };
1593
1594
1595#else /* C style interface */
1596
1597 typedef struct ID3D12ObjectVtbl
1598 {
1599 BEGIN_INTERFACE
1600
1601 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1602 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1603 ID3D12Object * This,
1604 REFIID riid,
1605 _COM_Outptr_ void **ppvObject);
1606
1607 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1608 ULONG ( STDMETHODCALLTYPE *AddRef )(
1609 ID3D12Object * This);
1610
1611 DECLSPEC_XFGVIRT(IUnknown, Release)
1612 ULONG ( STDMETHODCALLTYPE *Release )(
1613 ID3D12Object * This);
1614
1615 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1616 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1617 ID3D12Object * This,
1618 _In_ REFGUID guid,
1619 _Inout_ UINT *pDataSize,
1620 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1621
1622 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1623 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1624 ID3D12Object * This,
1625 _In_ REFGUID guid,
1626 _In_ UINT DataSize,
1627 _In_reads_bytes_opt_( DataSize ) const void *pData);
1628
1629 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1630 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1631 ID3D12Object * This,
1632 _In_ REFGUID guid,
1633 _In_opt_ const IUnknown *pData);
1634
1635 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1636 HRESULT ( STDMETHODCALLTYPE *SetName )(
1637 ID3D12Object * This,
1638 _In_z_ LPCWSTR Name);
1639
1640 END_INTERFACE
1641 } ID3D12ObjectVtbl;
1642
1643 interface ID3D12Object
1644 {
1645 CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
1646 };
1647
1648
1649
1650#ifdef COBJMACROS
1651
1652
1653#define ID3D12Object_QueryInterface(This,riid,ppvObject) \
1654 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1655
1656#define ID3D12Object_AddRef(This) \
1657 ( (This)->lpVtbl -> AddRef(This) )
1658
1659#define ID3D12Object_Release(This) \
1660 ( (This)->lpVtbl -> Release(This) )
1661
1662
1663#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \
1664 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1665
1666#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \
1667 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1668
1669#define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \
1670 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1671
1672#define ID3D12Object_SetName(This,Name) \
1673 ( (This)->lpVtbl -> SetName(This,Name) )
1674
1675#endif /* COBJMACROS */
1676
1677
1678#endif /* C style interface */
1679
1680
1681
1682
1683#endif /* __ID3D12Object_INTERFACE_DEFINED__ */
1684
1685
1686#ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
1687#define __ID3D12DeviceChild_INTERFACE_DEFINED__
1688
1689/* interface ID3D12DeviceChild */
1690/* [unique][local][object][uuid] */
1691
1692
1693EXTERN_C const IID IID_ID3D12DeviceChild;
1694
1695#if defined(__cplusplus) && !defined(CINTERFACE)
1696
1697 MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
1698 ID3D12DeviceChild : public ID3D12Object
1699 {
1700 public:
1701 virtual HRESULT STDMETHODCALLTYPE GetDevice(
1702 REFIID riid,
1703 _COM_Outptr_opt_ void **ppvDevice) = 0;
1704
1705 };
1706
1707
1708#else /* C style interface */
1709
1710 typedef struct ID3D12DeviceChildVtbl
1711 {
1712 BEGIN_INTERFACE
1713
1714 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1715 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1716 ID3D12DeviceChild * This,
1717 REFIID riid,
1718 _COM_Outptr_ void **ppvObject);
1719
1720 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1721 ULONG ( STDMETHODCALLTYPE *AddRef )(
1722 ID3D12DeviceChild * This);
1723
1724 DECLSPEC_XFGVIRT(IUnknown, Release)
1725 ULONG ( STDMETHODCALLTYPE *Release )(
1726 ID3D12DeviceChild * This);
1727
1728 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1729 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1730 ID3D12DeviceChild * This,
1731 _In_ REFGUID guid,
1732 _Inout_ UINT *pDataSize,
1733 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1734
1735 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1736 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1737 ID3D12DeviceChild * This,
1738 _In_ REFGUID guid,
1739 _In_ UINT DataSize,
1740 _In_reads_bytes_opt_( DataSize ) const void *pData);
1741
1742 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1743 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1744 ID3D12DeviceChild * This,
1745 _In_ REFGUID guid,
1746 _In_opt_ const IUnknown *pData);
1747
1748 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1749 HRESULT ( STDMETHODCALLTYPE *SetName )(
1750 ID3D12DeviceChild * This,
1751 _In_z_ LPCWSTR Name);
1752
1753 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1754 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1755 ID3D12DeviceChild * This,
1756 REFIID riid,
1757 _COM_Outptr_opt_ void **ppvDevice);
1758
1759 END_INTERFACE
1760 } ID3D12DeviceChildVtbl;
1761
1762 interface ID3D12DeviceChild
1763 {
1764 CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
1765 };
1766
1767
1768
1769#ifdef COBJMACROS
1770
1771
1772#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \
1773 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1774
1775#define ID3D12DeviceChild_AddRef(This) \
1776 ( (This)->lpVtbl -> AddRef(This) )
1777
1778#define ID3D12DeviceChild_Release(This) \
1779 ( (This)->lpVtbl -> Release(This) )
1780
1781
1782#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
1783 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1784
1785#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
1786 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1787
1788#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \
1789 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1790
1791#define ID3D12DeviceChild_SetName(This,Name) \
1792 ( (This)->lpVtbl -> SetName(This,Name) )
1793
1794
1795#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \
1796 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1797
1798#endif /* COBJMACROS */
1799
1800
1801#endif /* C style interface */
1802
1803
1804
1805
1806#endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
1807
1808
1809#ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
1810#define __ID3D12RootSignature_INTERFACE_DEFINED__
1811
1812/* interface ID3D12RootSignature */
1813/* [unique][local][object][uuid] */
1814
1815
1816EXTERN_C const IID IID_ID3D12RootSignature;
1817
1818#if defined(__cplusplus) && !defined(CINTERFACE)
1819
1820 MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
1821 ID3D12RootSignature : public ID3D12DeviceChild
1822 {
1823 public:
1824 };
1825
1826
1827#else /* C style interface */
1828
1829 typedef struct ID3D12RootSignatureVtbl
1830 {
1831 BEGIN_INTERFACE
1832
1833 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1834 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1835 ID3D12RootSignature * This,
1836 REFIID riid,
1837 _COM_Outptr_ void **ppvObject);
1838
1839 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1840 ULONG ( STDMETHODCALLTYPE *AddRef )(
1841 ID3D12RootSignature * This);
1842
1843 DECLSPEC_XFGVIRT(IUnknown, Release)
1844 ULONG ( STDMETHODCALLTYPE *Release )(
1845 ID3D12RootSignature * This);
1846
1847 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1848 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1849 ID3D12RootSignature * This,
1850 _In_ REFGUID guid,
1851 _Inout_ UINT *pDataSize,
1852 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1853
1854 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1855 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1856 ID3D12RootSignature * This,
1857 _In_ REFGUID guid,
1858 _In_ UINT DataSize,
1859 _In_reads_bytes_opt_( DataSize ) const void *pData);
1860
1861 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1862 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1863 ID3D12RootSignature * This,
1864 _In_ REFGUID guid,
1865 _In_opt_ const IUnknown *pData);
1866
1867 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1868 HRESULT ( STDMETHODCALLTYPE *SetName )(
1869 ID3D12RootSignature * This,
1870 _In_z_ LPCWSTR Name);
1871
1872 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1873 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1874 ID3D12RootSignature * This,
1875 REFIID riid,
1876 _COM_Outptr_opt_ void **ppvDevice);
1877
1878 END_INTERFACE
1879 } ID3D12RootSignatureVtbl;
1880
1881 interface ID3D12RootSignature
1882 {
1883 CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
1884 };
1885
1886
1887
1888#ifdef COBJMACROS
1889
1890
1891#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \
1892 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1893
1894#define ID3D12RootSignature_AddRef(This) \
1895 ( (This)->lpVtbl -> AddRef(This) )
1896
1897#define ID3D12RootSignature_Release(This) \
1898 ( (This)->lpVtbl -> Release(This) )
1899
1900
1901#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \
1902 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1903
1904#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \
1905 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1906
1907#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \
1908 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1909
1910#define ID3D12RootSignature_SetName(This,Name) \
1911 ( (This)->lpVtbl -> SetName(This,Name) )
1912
1913
1914#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \
1915 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1916
1917
1918#endif /* COBJMACROS */
1919
1920
1921#endif /* C style interface */
1922
1923
1924
1925
1926#endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
1927
1928
1929/* interface __MIDL_itf_d3d12_0000_0001 */
1930/* [local] */
1931
1932typedef struct D3D12_SHADER_BYTECODE
1933 {
1934 _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
1935 SIZE_T BytecodeLength;
1936 } D3D12_SHADER_BYTECODE;
1937
1938typedef struct D3D12_STREAM_OUTPUT_DESC
1939 {
1940 _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
1941 UINT NumEntries;
1942 _Field_size_full_(NumStrides) const UINT *pBufferStrides;
1943 UINT NumStrides;
1944 UINT RasterizedStream;
1945 } D3D12_STREAM_OUTPUT_DESC;
1946
1947typedef struct D3D12_INPUT_LAYOUT_DESC
1948 {
1949 _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
1950 UINT NumElements;
1951 } D3D12_INPUT_LAYOUT_DESC;
1952
1953typedef
1954enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
1955 {
1956 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
1957 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
1958 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
1959 } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
1960
1961typedef struct D3D12_CACHED_PIPELINE_STATE
1962 {
1963 _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
1964 SIZE_T CachedBlobSizeInBytes;
1965 } D3D12_CACHED_PIPELINE_STATE;
1966
1967typedef
1968enum D3D12_PIPELINE_STATE_FLAGS
1969 {
1970 D3D12_PIPELINE_STATE_FLAG_NONE = 0,
1971 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1
1972 } D3D12_PIPELINE_STATE_FLAGS;
1973
1974DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS );
1975typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
1976 {
1977 ID3D12RootSignature *pRootSignature;
1978 D3D12_SHADER_BYTECODE VS;
1979 D3D12_SHADER_BYTECODE PS;
1980 D3D12_SHADER_BYTECODE DS;
1981 D3D12_SHADER_BYTECODE HS;
1982 D3D12_SHADER_BYTECODE GS;
1983 D3D12_STREAM_OUTPUT_DESC StreamOutput;
1984 D3D12_BLEND_DESC BlendState;
1985 UINT SampleMask;
1986 D3D12_RASTERIZER_DESC RasterizerState;
1987 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
1988 D3D12_INPUT_LAYOUT_DESC InputLayout;
1989 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
1990 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
1991 UINT NumRenderTargets;
1992 DXGI_FORMAT RTVFormats[ 8 ];
1993 DXGI_FORMAT DSVFormat;
1994 DXGI_SAMPLE_DESC SampleDesc;
1995 UINT NodeMask;
1996 D3D12_CACHED_PIPELINE_STATE CachedPSO;
1997 D3D12_PIPELINE_STATE_FLAGS Flags;
1998 } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
1999
2000typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
2001 {
2002 ID3D12RootSignature *pRootSignature;
2003 D3D12_SHADER_BYTECODE CS;
2004 UINT NodeMask;
2005 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2006 D3D12_PIPELINE_STATE_FLAGS Flags;
2007 } D3D12_COMPUTE_PIPELINE_STATE_DESC;
2008
2009struct D3D12_RT_FORMAT_ARRAY
2010 {
2011 DXGI_FORMAT RTFormats[ 8 ];
2012 UINT NumRenderTargets;
2013 } ;
2014typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
2015 {
2016 _In_ SIZE_T SizeInBytes;
2017 _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream;
2018 } D3D12_PIPELINE_STATE_STREAM_DESC;
2019
2020typedef
2021enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
2022 {
2023 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0,
2024 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
2025 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
2026 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
2027 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
2028 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
2029 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
2030 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
2031 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
2032 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
2033 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
2034 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
2035 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
2036 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
2037 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
2038 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
2039 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
2040 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
2041 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
2042 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
2043 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
2044 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
2045 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) ,
2046 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24,
2047 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25,
2048 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS + 1 )
2049 } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
2050
2051typedef
2052enum D3D12_FEATURE
2053 {
2054 D3D12_FEATURE_D3D12_OPTIONS = 0,
2055 D3D12_FEATURE_ARCHITECTURE = 1,
2056 D3D12_FEATURE_FEATURE_LEVELS = 2,
2057 D3D12_FEATURE_FORMAT_SUPPORT = 3,
2058 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
2059 D3D12_FEATURE_FORMAT_INFO = 5,
2060 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
2061 D3D12_FEATURE_SHADER_MODEL = 7,
2062 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
2063 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
2064 D3D12_FEATURE_ROOT_SIGNATURE = 12,
2065 D3D12_FEATURE_ARCHITECTURE1 = 16,
2066 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
2067 D3D12_FEATURE_SHADER_CACHE = 19,
2068 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
2069 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
2070 D3D12_FEATURE_EXISTING_HEAPS = 22,
2071 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
2072 D3D12_FEATURE_SERIALIZATION = 24,
2073 D3D12_FEATURE_CROSS_NODE = 25,
2074 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
2075 D3D12_FEATURE_DISPLAYABLE = 28,
2076 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
2077 D3D12_FEATURE_QUERY_META_COMMAND = 31,
2078 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
2079 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
2080 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
2081 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
2082 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
2083 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
2084 D3D12_FEATURE_D3D12_OPTIONS11 = 40
2085 } D3D12_FEATURE;
2086
2087typedef
2088enum D3D12_SHADER_MIN_PRECISION_SUPPORT
2089 {
2090 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
2091 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
2092 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
2093 } D3D12_SHADER_MIN_PRECISION_SUPPORT;
2094
2095DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT );
2096typedef
2097enum D3D12_TILED_RESOURCES_TIER
2098 {
2099 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
2100 D3D12_TILED_RESOURCES_TIER_1 = 1,
2101 D3D12_TILED_RESOURCES_TIER_2 = 2,
2102 D3D12_TILED_RESOURCES_TIER_3 = 3,
2103 D3D12_TILED_RESOURCES_TIER_4 = 4
2104 } D3D12_TILED_RESOURCES_TIER;
2105
2106typedef
2107enum D3D12_RESOURCE_BINDING_TIER
2108 {
2109 D3D12_RESOURCE_BINDING_TIER_1 = 1,
2110 D3D12_RESOURCE_BINDING_TIER_2 = 2,
2111 D3D12_RESOURCE_BINDING_TIER_3 = 3
2112 } D3D12_RESOURCE_BINDING_TIER;
2113
2114typedef
2115enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
2116 {
2117 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
2118 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
2119 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
2120 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
2121 } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
2122
2123typedef
2124enum D3D12_FORMAT_SUPPORT1
2125 {
2126 D3D12_FORMAT_SUPPORT1_NONE = 0,
2127 D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
2128 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
2129 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
2130 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
2131 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
2132 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
2133 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
2134 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
2135 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
2136 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
2137 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
2138 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
2139 D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
2140 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
2141 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
2142 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
2143 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
2144 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
2145 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
2146 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
2147 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
2148 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
2149 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
2150 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
2151 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
2152 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
2153 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
2154 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
2155 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
2156 } D3D12_FORMAT_SUPPORT1;
2157
2158DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 );
2159typedef
2160enum D3D12_FORMAT_SUPPORT2
2161 {
2162 D3D12_FORMAT_SUPPORT2_NONE = 0,
2163 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
2164 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
2165 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
2166 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
2167 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
2168 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
2169 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
2170 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
2171 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
2172 D3D12_FORMAT_SUPPORT2_TILED = 0x200,
2173 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
2174 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000
2175 } D3D12_FORMAT_SUPPORT2;
2176
2177DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 );
2178typedef
2179enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
2180 {
2181 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
2182 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
2183 } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
2184
2185DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS );
2186typedef
2187enum D3D12_CROSS_NODE_SHARING_TIER
2188 {
2189 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
2190 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
2191 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
2192 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
2193 D3D12_CROSS_NODE_SHARING_TIER_3 = 4
2194 } D3D12_CROSS_NODE_SHARING_TIER;
2195
2196typedef
2197enum D3D12_RESOURCE_HEAP_TIER
2198 {
2199 D3D12_RESOURCE_HEAP_TIER_1 = 1,
2200 D3D12_RESOURCE_HEAP_TIER_2 = 2
2201 } D3D12_RESOURCE_HEAP_TIER;
2202
2203typedef
2204enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
2205 {
2206 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
2207 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
2208 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2
2209 } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
2210
2211typedef
2212enum D3D12_VIEW_INSTANCING_TIER
2213 {
2214 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
2215 D3D12_VIEW_INSTANCING_TIER_1 = 1,
2216 D3D12_VIEW_INSTANCING_TIER_2 = 2,
2217 D3D12_VIEW_INSTANCING_TIER_3 = 3
2218 } D3D12_VIEW_INSTANCING_TIER;
2219
2220typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
2221 {
2222 _Out_ BOOL DoublePrecisionFloatShaderOps;
2223 _Out_ BOOL OutputMergerLogicOp;
2224 _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
2225 _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
2226 _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
2227 _Out_ BOOL PSSpecifiedStencilRefSupported;
2228 _Out_ BOOL TypedUAVLoadAdditionalFormats;
2229 _Out_ BOOL ROVsSupported;
2230 _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
2231 _Out_ UINT MaxGPUVirtualAddressBitsPerResource;
2232 _Out_ BOOL StandardSwizzle64KBSupported;
2233 _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
2234 _Out_ BOOL CrossAdapterRowMajorTextureSupported;
2235 _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
2236 _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
2237 } D3D12_FEATURE_DATA_D3D12_OPTIONS;
2238
2239typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
2240 {
2241 _Out_ BOOL WaveOps;
2242 _Out_ UINT WaveLaneCountMin;
2243 _Out_ UINT WaveLaneCountMax;
2244 _Out_ UINT TotalLaneCount;
2245 _Out_ BOOL ExpandedComputeResourceStates;
2246 _Out_ BOOL Int64ShaderOps;
2247 } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
2248
2249typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
2250 {
2251 _Out_ BOOL DepthBoundsTestSupported;
2252 _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
2253 } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
2254
2255typedef
2256enum D3D_ROOT_SIGNATURE_VERSION
2257 {
2258 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
2259 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
2260 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2
2261 } D3D_ROOT_SIGNATURE_VERSION;
2262
2263typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
2264 {
2265 _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
2266 } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
2267
2268typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
2269 {
2270 _In_ UINT NodeIndex;
2271 _Out_ BOOL TileBasedRenderer;
2272 _Out_ BOOL UMA;
2273 _Out_ BOOL CacheCoherentUMA;
2274 } D3D12_FEATURE_DATA_ARCHITECTURE;
2275
2276typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
2277 {
2278 _In_ UINT NodeIndex;
2279 _Out_ BOOL TileBasedRenderer;
2280 _Out_ BOOL UMA;
2281 _Out_ BOOL CacheCoherentUMA;
2282 _Out_ BOOL IsolatedMMU;
2283 } D3D12_FEATURE_DATA_ARCHITECTURE1;
2284
2285typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
2286 {
2287 _In_ UINT NumFeatureLevels;
2288 _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
2289 _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
2290 } D3D12_FEATURE_DATA_FEATURE_LEVELS;
2291
2292typedef
2293enum D3D_SHADER_MODEL
2294 {
2295 D3D_SHADER_MODEL_5_1 = 0x51,
2296 D3D_SHADER_MODEL_6_0 = 0x60,
2297 D3D_SHADER_MODEL_6_1 = 0x61,
2298 D3D_SHADER_MODEL_6_2 = 0x62,
2299 D3D_SHADER_MODEL_6_3 = 0x63,
2300 D3D_SHADER_MODEL_6_4 = 0x64,
2301 D3D_SHADER_MODEL_6_5 = 0x65,
2302 D3D_SHADER_MODEL_6_6 = 0x66,
2303 D3D_SHADER_MODEL_6_7 = 0x67
2304 } D3D_SHADER_MODEL;
2305
2306typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
2307 {
2308 _Inout_ D3D_SHADER_MODEL HighestShaderModel;
2309 } D3D12_FEATURE_DATA_SHADER_MODEL;
2310
2311typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
2312 {
2313 _In_ DXGI_FORMAT Format;
2314 _Out_ D3D12_FORMAT_SUPPORT1 Support1;
2315 _Out_ D3D12_FORMAT_SUPPORT2 Support2;
2316 } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
2317
2318typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
2319 {
2320 _In_ DXGI_FORMAT Format;
2321 _In_ UINT SampleCount;
2322 _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
2323 _Out_ UINT NumQualityLevels;
2324 } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
2325
2326typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
2327 {
2328 DXGI_FORMAT Format;
2329 UINT8 PlaneCount;
2330 } D3D12_FEATURE_DATA_FORMAT_INFO;
2331
2332typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
2333 {
2334 UINT MaxGPUVirtualAddressBitsPerResource;
2335 UINT MaxGPUVirtualAddressBitsPerProcess;
2336 } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
2337
2338typedef
2339enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
2340 {
2341 D3D12_SHADER_CACHE_SUPPORT_NONE = 0,
2342 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
2343 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
2344 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
2345 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
2346 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
2347 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
2348 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
2349 } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
2350
2351DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS );
2352typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
2353 {
2354 _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
2355 } D3D12_FEATURE_DATA_SHADER_CACHE;
2356
2357typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
2358 {
2359 _In_ D3D12_COMMAND_LIST_TYPE CommandListType;
2360 _In_ UINT Priority;
2361 _Out_ BOOL PriorityForTypeIsSupported;
2362 } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
2363
2364typedef
2365enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
2366 {
2367 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0,
2368 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE_DIRECT ) ,
2369 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE ) ,
2370 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE ) ,
2371 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = ( 1 << D3D12_COMMAND_LIST_TYPE_COPY ) ,
2372 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) ,
2373 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) ,
2374 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
2375 } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
2376
2377DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS );
2378typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
2379 {
2380 _Out_ BOOL CopyQueueTimestampQueriesSupported;
2381 _Out_ BOOL CastingFullyTypedFormatSupported;
2382 _Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
2383 _Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
2384 _Out_ BOOL BarycentricsSupported;
2385 } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
2386
2387typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
2388 {
2389 _Out_ BOOL Supported;
2390 } D3D12_FEATURE_DATA_EXISTING_HEAPS;
2391
2392typedef
2393enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
2394 {
2395 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0,
2396 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 ) ,
2397 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 + 1 ) ,
2398 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_3 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 + 1 )
2399 } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
2400
2401typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
2402 {
2403 _Out_ BOOL DisplayableTexture;
2404 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2405 } D3D12_FEATURE_DATA_DISPLAYABLE;
2406
2407typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
2408 {
2409 _Out_ BOOL MSAA64KBAlignedTextureSupported;
2410 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2411 _Out_ BOOL Native16BitShaderOpsSupported;
2412 } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
2413
2414typedef
2415enum D3D12_HEAP_SERIALIZATION_TIER
2416 {
2417 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
2418 D3D12_HEAP_SERIALIZATION_TIER_10 = 10
2419 } D3D12_HEAP_SERIALIZATION_TIER;
2420
2421typedef struct D3D12_FEATURE_DATA_SERIALIZATION
2422 {
2423 _In_ UINT NodeIndex;
2424 _Out_ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
2425 } D3D12_FEATURE_DATA_SERIALIZATION;
2426
2427typedef struct D3D12_FEATURE_DATA_CROSS_NODE
2428 {
2429 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
2430 BOOL AtomicShaderInstructions;
2431 } D3D12_FEATURE_DATA_CROSS_NODE;
2432
2433typedef
2434enum D3D12_RENDER_PASS_TIER
2435 {
2436 D3D12_RENDER_PASS_TIER_0 = 0,
2437 D3D12_RENDER_PASS_TIER_1 = 1,
2438 D3D12_RENDER_PASS_TIER_2 = 2
2439 } D3D12_RENDER_PASS_TIER;
2440
2441typedef
2442enum D3D12_RAYTRACING_TIER
2443 {
2444 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
2445 D3D12_RAYTRACING_TIER_1_0 = 10,
2446 D3D12_RAYTRACING_TIER_1_1 = 11
2447 } D3D12_RAYTRACING_TIER;
2448
2449typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
2450 {
2451 _Out_ BOOL SRVOnlyTiledResourceTier3;
2452 _Out_ D3D12_RENDER_PASS_TIER RenderPassesTier;
2453 _Out_ D3D12_RAYTRACING_TIER RaytracingTier;
2454 } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
2455
2456typedef
2457enum D3D12_VARIABLE_SHADING_RATE_TIER
2458 {
2459 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
2460 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
2461 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2
2462 } D3D12_VARIABLE_SHADING_RATE_TIER;
2463
2464typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
2465 {
2466 _Out_ BOOL AdditionalShadingRatesSupported;
2467 _Out_ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
2468 _Out_ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
2469 _Out_ UINT ShadingRateImageTileSize;
2470 _Out_ BOOL BackgroundProcessingSupported;
2471 } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
2472
2473typedef
2474enum D3D12_MESH_SHADER_TIER
2475 {
2476 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
2477 D3D12_MESH_SHADER_TIER_1 = 10
2478 } D3D12_MESH_SHADER_TIER;
2479
2480typedef
2481enum D3D12_SAMPLER_FEEDBACK_TIER
2482 {
2483 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
2484 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
2485 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
2486 } D3D12_SAMPLER_FEEDBACK_TIER;
2487
2488typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
2489 {
2490 _Out_ D3D12_MESH_SHADER_TIER MeshShaderTier;
2491 _Out_ D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
2492 } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
2493
2494typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
2495 {
2496 _In_ GUID CommandId;
2497 _In_ UINT NodeMask;
2498 _Field_size_bytes_full_opt_( QueryInputDataSizeInBytes ) const void *pQueryInputData;
2499 _In_ SIZE_T QueryInputDataSizeInBytes;
2500 _Field_size_bytes_full_( QueryOutputDataSizeInBytes ) void *pQueryOutputData;
2501 _In_ SIZE_T QueryOutputDataSizeInBytes;
2502 } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
2503
2504typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
2505 {
2506 _Out_ BOOL UnalignedBlockTexturesSupported;
2507 } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
2508
2509typedef
2510enum D3D12_WAVE_MMA_TIER
2511 {
2512 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
2513 D3D12_WAVE_MMA_TIER_1_0 = 10
2514 } D3D12_WAVE_MMA_TIER;
2515
2516typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
2517 {
2518 _Out_ BOOL MeshShaderPipelineStatsSupported;
2519 _Out_ BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
2520 _Out_ BOOL AtomicInt64OnTypedResourceSupported;
2521 _Out_ BOOL AtomicInt64OnGroupSharedSupported;
2522 _Out_ BOOL DerivativesInMeshAndAmplificationShadersSupported;
2523 _Out_ D3D12_WAVE_MMA_TIER WaveMMATier;
2524 } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
2525
2526typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
2527 {
2528 _Out_ BOOL VariableRateShadingSumCombinerSupported;
2529 _Out_ BOOL MeshShaderPerPrimitiveShadingRateSupported;
2530 } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
2531
2532typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
2533 {
2534 _Out_ BOOL AtomicInt64OnDescriptorHeapResourceSupported;
2535 } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
2536
2537typedef struct D3D12_RESOURCE_ALLOCATION_INFO
2538 {
2539 UINT64 SizeInBytes;
2540 UINT64 Alignment;
2541 } D3D12_RESOURCE_ALLOCATION_INFO;
2542
2543typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
2544 {
2545 UINT64 Offset;
2546 UINT64 Alignment;
2547 UINT64 SizeInBytes;
2548 } D3D12_RESOURCE_ALLOCATION_INFO1;
2549
2550typedef
2551enum D3D12_HEAP_TYPE
2552 {
2553 D3D12_HEAP_TYPE_DEFAULT = 1,
2554 D3D12_HEAP_TYPE_UPLOAD = 2,
2555 D3D12_HEAP_TYPE_READBACK = 3,
2556 D3D12_HEAP_TYPE_CUSTOM = 4
2557 } D3D12_HEAP_TYPE;
2558
2559typedef
2560enum D3D12_CPU_PAGE_PROPERTY
2561 {
2562 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
2563 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
2564 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
2565 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
2566 } D3D12_CPU_PAGE_PROPERTY;
2567
2568typedef
2569enum D3D12_MEMORY_POOL
2570 {
2571 D3D12_MEMORY_POOL_UNKNOWN = 0,
2572 D3D12_MEMORY_POOL_L0 = 1,
2573 D3D12_MEMORY_POOL_L1 = 2
2574 } D3D12_MEMORY_POOL;
2575
2576typedef struct D3D12_HEAP_PROPERTIES
2577 {
2578 D3D12_HEAP_TYPE Type;
2579 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
2580 D3D12_MEMORY_POOL MemoryPoolPreference;
2581 UINT CreationNodeMask;
2582 UINT VisibleNodeMask;
2583 } D3D12_HEAP_PROPERTIES;
2584
2585typedef
2586enum D3D12_HEAP_FLAGS
2587 {
2588 D3D12_HEAP_FLAG_NONE = 0,
2589 D3D12_HEAP_FLAG_SHARED = 0x1,
2590 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
2591 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
2592 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
2593 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
2594 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
2595 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
2596 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
2597 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
2598 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
2599 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
2600 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
2601 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
2602 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
2603 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
2604 } D3D12_HEAP_FLAGS;
2605
2606DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS );
2607typedef struct D3D12_HEAP_DESC
2608 {
2609 UINT64 SizeInBytes;
2610 D3D12_HEAP_PROPERTIES Properties;
2611 UINT64 Alignment;
2612 D3D12_HEAP_FLAGS Flags;
2613 } D3D12_HEAP_DESC;
2614
2615typedef
2616enum D3D12_RESOURCE_DIMENSION
2617 {
2618 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
2619 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
2620 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
2621 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
2622 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
2623 } D3D12_RESOURCE_DIMENSION;
2624
2625typedef
2626enum D3D12_TEXTURE_LAYOUT
2627 {
2628 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
2629 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
2630 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
2631 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
2632 } D3D12_TEXTURE_LAYOUT;
2633
2634typedef
2635enum D3D12_RESOURCE_FLAGS
2636 {
2637 D3D12_RESOURCE_FLAG_NONE = 0,
2638 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
2639 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
2640 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
2641 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
2642 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
2643 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
2644 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
2645 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80
2646 } D3D12_RESOURCE_FLAGS;
2647
2648DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS );
2649typedef struct D3D12_MIP_REGION
2650 {
2651 UINT Width;
2652 UINT Height;
2653 UINT Depth;
2654 } D3D12_MIP_REGION;
2655
2656typedef struct D3D12_RESOURCE_DESC
2657 {
2658 D3D12_RESOURCE_DIMENSION Dimension;
2659 UINT64 Alignment;
2660 UINT64 Width;
2661 UINT Height;
2662 UINT16 DepthOrArraySize;
2663 UINT16 MipLevels;
2664 DXGI_FORMAT Format;
2665 DXGI_SAMPLE_DESC SampleDesc;
2666 D3D12_TEXTURE_LAYOUT Layout;
2667 D3D12_RESOURCE_FLAGS Flags;
2668 } D3D12_RESOURCE_DESC;
2669
2670typedef struct D3D12_RESOURCE_DESC1
2671 {
2672 D3D12_RESOURCE_DIMENSION Dimension;
2673 UINT64 Alignment;
2674 UINT64 Width;
2675 UINT Height;
2676 UINT16 DepthOrArraySize;
2677 UINT16 MipLevels;
2678 DXGI_FORMAT Format;
2679 DXGI_SAMPLE_DESC SampleDesc;
2680 D3D12_TEXTURE_LAYOUT Layout;
2681 D3D12_RESOURCE_FLAGS Flags;
2682 D3D12_MIP_REGION SamplerFeedbackMipRegion;
2683 } D3D12_RESOURCE_DESC1;
2684
2685typedef struct D3D12_DEPTH_STENCIL_VALUE
2686 {
2687 FLOAT Depth;
2688 UINT8 Stencil;
2689 } D3D12_DEPTH_STENCIL_VALUE;
2690
2691typedef struct D3D12_CLEAR_VALUE
2692 {
2693 DXGI_FORMAT Format;
2694 union
2695 {
2696 FLOAT Color[ 4 ];
2697 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
2698 } ;
2699 } D3D12_CLEAR_VALUE;
2700
2701typedef struct D3D12_RANGE
2702 {
2703 SIZE_T Begin;
2704 SIZE_T End;
2705 } D3D12_RANGE;
2706
2707typedef struct D3D12_RANGE_UINT64
2708 {
2709 UINT64 Begin;
2710 UINT64 End;
2711 } D3D12_RANGE_UINT64;
2712
2713typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
2714 {
2715 UINT Subresource;
2716 D3D12_RANGE_UINT64 Range;
2717 } D3D12_SUBRESOURCE_RANGE_UINT64;
2718
2719typedef struct D3D12_SUBRESOURCE_INFO
2720 {
2721 UINT64 Offset;
2722 UINT RowPitch;
2723 UINT DepthPitch;
2724 } D3D12_SUBRESOURCE_INFO;
2725
2726typedef struct D3D12_TILED_RESOURCE_COORDINATE
2727 {
2728 UINT X;
2729 UINT Y;
2730 UINT Z;
2731 UINT Subresource;
2732 } D3D12_TILED_RESOURCE_COORDINATE;
2733
2734typedef struct D3D12_TILE_REGION_SIZE
2735 {
2736 UINT NumTiles;
2737 BOOL UseBox;
2738 UINT Width;
2739 UINT16 Height;
2740 UINT16 Depth;
2741 } D3D12_TILE_REGION_SIZE;
2742
2743typedef
2744enum D3D12_TILE_RANGE_FLAGS
2745 {
2746 D3D12_TILE_RANGE_FLAG_NONE = 0,
2747 D3D12_TILE_RANGE_FLAG_NULL = 1,
2748 D3D12_TILE_RANGE_FLAG_SKIP = 2,
2749 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4
2750 } D3D12_TILE_RANGE_FLAGS;
2751
2752typedef struct D3D12_SUBRESOURCE_TILING
2753 {
2754 UINT WidthInTiles;
2755 UINT16 HeightInTiles;
2756 UINT16 DepthInTiles;
2757 UINT StartTileIndexInOverallResource;
2758 } D3D12_SUBRESOURCE_TILING;
2759
2760typedef struct D3D12_TILE_SHAPE
2761 {
2762 UINT WidthInTexels;
2763 UINT HeightInTexels;
2764 UINT DepthInTexels;
2765 } D3D12_TILE_SHAPE;
2766
2767typedef struct D3D12_PACKED_MIP_INFO
2768 {
2769 UINT8 NumStandardMips;
2770 UINT8 NumPackedMips;
2771 UINT NumTilesForPackedMips;
2772 UINT StartTileIndexInOverallResource;
2773 } D3D12_PACKED_MIP_INFO;
2774
2775typedef
2776enum D3D12_TILE_MAPPING_FLAGS
2777 {
2778 D3D12_TILE_MAPPING_FLAG_NONE = 0,
2779 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
2780 } D3D12_TILE_MAPPING_FLAGS;
2781
2782DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS );
2783typedef
2784enum D3D12_TILE_COPY_FLAGS
2785 {
2786 D3D12_TILE_COPY_FLAG_NONE = 0,
2787 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
2788 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
2789 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
2790 } D3D12_TILE_COPY_FLAGS;
2791
2792DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS );
2793typedef
2794enum D3D12_RESOURCE_STATES
2795 {
2796 D3D12_RESOURCE_STATE_COMMON = 0,
2797 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
2798 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
2799 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
2800 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
2801 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
2802 D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
2803 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
2804 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
2805 D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
2806 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
2807 D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
2808 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
2809 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
2810 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
2811 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
2812 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
2813 D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) ,
2814 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = ( 0x40 | 0x80 ) ,
2815 D3D12_RESOURCE_STATE_PRESENT = 0,
2816 D3D12_RESOURCE_STATE_PREDICATION = 0x200,
2817 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
2818 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
2819 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
2820 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
2821 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
2822 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
2823 } D3D12_RESOURCE_STATES;
2824
2825DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES );
2826typedef
2827enum D3D12_RESOURCE_BARRIER_TYPE
2828 {
2829 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
2830 D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
2831 D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
2832 } D3D12_RESOURCE_BARRIER_TYPE;
2833
2834
2835typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
2836 {
2837 ID3D12Resource *pResource;
2838 UINT Subresource;
2839 D3D12_RESOURCE_STATES StateBefore;
2840 D3D12_RESOURCE_STATES StateAfter;
2841 } D3D12_RESOURCE_TRANSITION_BARRIER;
2842
2843typedef struct D3D12_RESOURCE_ALIASING_BARRIER
2844 {
2845 ID3D12Resource *pResourceBefore;
2846 ID3D12Resource *pResourceAfter;
2847 } D3D12_RESOURCE_ALIASING_BARRIER;
2848
2849typedef struct D3D12_RESOURCE_UAV_BARRIER
2850 {
2851 ID3D12Resource *pResource;
2852 } D3D12_RESOURCE_UAV_BARRIER;
2853
2854typedef
2855enum D3D12_RESOURCE_BARRIER_FLAGS
2856 {
2857 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0,
2858 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
2859 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
2860 } D3D12_RESOURCE_BARRIER_FLAGS;
2861
2862DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS );
2863typedef struct D3D12_RESOURCE_BARRIER
2864 {
2865 D3D12_RESOURCE_BARRIER_TYPE Type;
2866 D3D12_RESOURCE_BARRIER_FLAGS Flags;
2867 union
2868 {
2869 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
2870 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
2871 D3D12_RESOURCE_UAV_BARRIER UAV;
2872 } ;
2873 } D3D12_RESOURCE_BARRIER;
2874
2875typedef struct D3D12_SUBRESOURCE_FOOTPRINT
2876 {
2877 DXGI_FORMAT Format;
2878 UINT Width;
2879 UINT Height;
2880 UINT Depth;
2881 UINT RowPitch;
2882 } D3D12_SUBRESOURCE_FOOTPRINT;
2883
2884typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
2885 {
2886 UINT64 Offset;
2887 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
2888 } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
2889
2890typedef
2891enum D3D12_TEXTURE_COPY_TYPE
2892 {
2893 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
2894 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
2895 } D3D12_TEXTURE_COPY_TYPE;
2896
2897typedef struct D3D12_TEXTURE_COPY_LOCATION
2898 {
2899 ID3D12Resource *pResource;
2900 D3D12_TEXTURE_COPY_TYPE Type;
2901 union
2902 {
2903 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
2904 UINT SubresourceIndex;
2905 } ;
2906 } D3D12_TEXTURE_COPY_LOCATION;
2907
2908typedef
2909enum D3D12_RESOLVE_MODE
2910 {
2911 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
2912 D3D12_RESOLVE_MODE_MIN = 1,
2913 D3D12_RESOLVE_MODE_MAX = 2,
2914 D3D12_RESOLVE_MODE_AVERAGE = 3,
2915 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
2916 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
2917 } D3D12_RESOLVE_MODE;
2918
2919typedef struct D3D12_SAMPLE_POSITION
2920 {
2921 INT8 X;
2922 INT8 Y;
2923 } D3D12_SAMPLE_POSITION;
2924
2925typedef struct D3D12_VIEW_INSTANCE_LOCATION
2926 {
2927 UINT ViewportArrayIndex;
2928 UINT RenderTargetArrayIndex;
2929 } D3D12_VIEW_INSTANCE_LOCATION;
2930
2931typedef
2932enum D3D12_VIEW_INSTANCING_FLAGS
2933 {
2934 D3D12_VIEW_INSTANCING_FLAG_NONE = 0,
2935 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
2936 } D3D12_VIEW_INSTANCING_FLAGS;
2937
2938DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS );
2939typedef struct D3D12_VIEW_INSTANCING_DESC
2940 {
2941 UINT ViewInstanceCount;
2942 _Field_size_full_(ViewInstanceCount) const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
2943 D3D12_VIEW_INSTANCING_FLAGS Flags;
2944 } D3D12_VIEW_INSTANCING_DESC;
2945
2946typedef
2947enum D3D12_SHADER_COMPONENT_MAPPING
2948 {
2949 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
2950 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
2951 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
2952 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
2953 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
2954 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
2955 } D3D12_SHADER_COMPONENT_MAPPING;
2956
2957#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
2958#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
2959#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
2960#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
2961 (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
2962 (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
2963 (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
2964 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
2965#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))
2966#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
2967typedef
2968enum D3D12_BUFFER_SRV_FLAGS
2969 {
2970 D3D12_BUFFER_SRV_FLAG_NONE = 0,
2971 D3D12_BUFFER_SRV_FLAG_RAW = 0x1
2972 } D3D12_BUFFER_SRV_FLAGS;
2973
2974DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS );
2975typedef struct D3D12_BUFFER_SRV
2976 {
2977 UINT64 FirstElement;
2978 UINT NumElements;
2979 UINT StructureByteStride;
2980 D3D12_BUFFER_SRV_FLAGS Flags;
2981 } D3D12_BUFFER_SRV;
2982
2983typedef struct D3D12_TEX1D_SRV
2984 {
2985 UINT MostDetailedMip;
2986 UINT MipLevels;
2987 FLOAT ResourceMinLODClamp;
2988 } D3D12_TEX1D_SRV;
2989
2990typedef struct D3D12_TEX1D_ARRAY_SRV
2991 {
2992 UINT MostDetailedMip;
2993 UINT MipLevels;
2994 UINT FirstArraySlice;
2995 UINT ArraySize;
2996 FLOAT ResourceMinLODClamp;
2997 } D3D12_TEX1D_ARRAY_SRV;
2998
2999typedef struct D3D12_TEX2D_SRV
3000 {
3001 UINT MostDetailedMip;
3002 UINT MipLevels;
3003 UINT PlaneSlice;
3004 FLOAT ResourceMinLODClamp;
3005 } D3D12_TEX2D_SRV;
3006
3007typedef struct D3D12_TEX2D_ARRAY_SRV
3008 {
3009 UINT MostDetailedMip;
3010 UINT MipLevels;
3011 UINT FirstArraySlice;
3012 UINT ArraySize;
3013 UINT PlaneSlice;
3014 FLOAT ResourceMinLODClamp;
3015 } D3D12_TEX2D_ARRAY_SRV;
3016
3017typedef struct D3D12_TEX3D_SRV
3018 {
3019 UINT MostDetailedMip;
3020 UINT MipLevels;
3021 FLOAT ResourceMinLODClamp;
3022 } D3D12_TEX3D_SRV;
3023
3024typedef struct D3D12_TEXCUBE_SRV
3025 {
3026 UINT MostDetailedMip;
3027 UINT MipLevels;
3028 FLOAT ResourceMinLODClamp;
3029 } D3D12_TEXCUBE_SRV;
3030
3031typedef struct D3D12_TEXCUBE_ARRAY_SRV
3032 {
3033 UINT MostDetailedMip;
3034 UINT MipLevels;
3035 UINT First2DArrayFace;
3036 UINT NumCubes;
3037 FLOAT ResourceMinLODClamp;
3038 } D3D12_TEXCUBE_ARRAY_SRV;
3039
3040typedef struct D3D12_TEX2DMS_SRV
3041 {
3042 UINT UnusedField_NothingToDefine;
3043 } D3D12_TEX2DMS_SRV;
3044
3045typedef struct D3D12_TEX2DMS_ARRAY_SRV
3046 {
3047 UINT FirstArraySlice;
3048 UINT ArraySize;
3049 } D3D12_TEX2DMS_ARRAY_SRV;
3050
3051typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
3052 {
3053 D3D12_GPU_VIRTUAL_ADDRESS Location;
3054 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
3055
3056typedef
3057enum D3D12_SRV_DIMENSION
3058 {
3059 D3D12_SRV_DIMENSION_UNKNOWN = 0,
3060 D3D12_SRV_DIMENSION_BUFFER = 1,
3061 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
3062 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
3063 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
3064 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
3065 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
3066 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
3067 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
3068 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
3069 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
3070 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11
3071 } D3D12_SRV_DIMENSION;
3072
3073typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
3074 {
3075 DXGI_FORMAT Format;
3076 D3D12_SRV_DIMENSION ViewDimension;
3077 UINT Shader4ComponentMapping;
3078 union
3079 {
3080 D3D12_BUFFER_SRV Buffer;
3081 D3D12_TEX1D_SRV Texture1D;
3082 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
3083 D3D12_TEX2D_SRV Texture2D;
3084 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
3085 D3D12_TEX2DMS_SRV Texture2DMS;
3086 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
3087 D3D12_TEX3D_SRV Texture3D;
3088 D3D12_TEXCUBE_SRV TextureCube;
3089 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
3090 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
3091 } ;
3092 } D3D12_SHADER_RESOURCE_VIEW_DESC;
3093
3094typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
3095 {
3096 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3097 UINT SizeInBytes;
3098 } D3D12_CONSTANT_BUFFER_VIEW_DESC;
3099
3100typedef
3101enum D3D12_FILTER
3102 {
3103 D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
3104 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
3105 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
3106 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
3107 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
3108 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
3109 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
3110 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
3111 D3D12_FILTER_ANISOTROPIC = 0x55,
3112 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
3113 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
3114 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
3115 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
3116 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
3117 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
3118 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
3119 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
3120 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
3121 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
3122 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
3123 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
3124 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
3125 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
3126 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
3127 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
3128 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
3129 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
3130 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
3131 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
3132 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
3133 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
3134 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
3135 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
3136 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
3137 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
3138 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
3139 } D3D12_FILTER;
3140
3141typedef
3142enum D3D12_FILTER_TYPE
3143 {
3144 D3D12_FILTER_TYPE_POINT = 0,
3145 D3D12_FILTER_TYPE_LINEAR = 1
3146 } D3D12_FILTER_TYPE;
3147
3148typedef
3149enum D3D12_FILTER_REDUCTION_TYPE
3150 {
3151 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
3152 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
3153 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
3154 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
3155 } D3D12_FILTER_REDUCTION_TYPE;
3156
3157#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
3158
3159#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
3160
3161#define D3D12_FILTER_TYPE_MASK ( 0x3 )
3162
3163#define D3D12_MIN_FILTER_SHIFT ( 4 )
3164
3165#define D3D12_MAG_FILTER_SHIFT ( 2 )
3166
3167#define D3D12_MIP_FILTER_SHIFT ( 0 )
3168
3169#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
3170
3171#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
3172 ( ( D3D12_FILTER ) ( \
3173 ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
3174 ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
3175 ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
3176 ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
3177#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
3178 ( ( D3D12_FILTER ) ( \
3179 D3D12_ANISOTROPIC_FILTERING_BIT | \
3180 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3181 D3D12_FILTER_TYPE_LINEAR, \
3182 D3D12_FILTER_TYPE_LINEAR, \
3183 reduction ) ) )
3184#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
3185 ( ( D3D12_FILTER_TYPE ) \
3186 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3187#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
3188 ( ( D3D12_FILTER_TYPE ) \
3189 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3190#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
3191 ( ( D3D12_FILTER_TYPE ) \
3192 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3193#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
3194 ( ( D3D12_FILTER_REDUCTION_TYPE ) \
3195 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
3196#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
3197 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
3198#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
3199 ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
3200 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
3201 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \
3202 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) )
3203typedef
3204enum D3D12_TEXTURE_ADDRESS_MODE
3205 {
3206 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
3207 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
3208 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
3209 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
3210 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
3211 } D3D12_TEXTURE_ADDRESS_MODE;
3212
3213typedef struct D3D12_SAMPLER_DESC
3214 {
3215 D3D12_FILTER Filter;
3216 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3217 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3218 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3219 FLOAT MipLODBias;
3220 UINT MaxAnisotropy;
3221 D3D12_COMPARISON_FUNC ComparisonFunc;
3222 FLOAT BorderColor[ 4 ];
3223 FLOAT MinLOD;
3224 FLOAT MaxLOD;
3225 } D3D12_SAMPLER_DESC;
3226
3227typedef
3228enum D3D12_BUFFER_UAV_FLAGS
3229 {
3230 D3D12_BUFFER_UAV_FLAG_NONE = 0,
3231 D3D12_BUFFER_UAV_FLAG_RAW = 0x1
3232 } D3D12_BUFFER_UAV_FLAGS;
3233
3234DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS );
3235typedef struct D3D12_BUFFER_UAV
3236 {
3237 UINT64 FirstElement;
3238 UINT NumElements;
3239 UINT StructureByteStride;
3240 UINT64 CounterOffsetInBytes;
3241 D3D12_BUFFER_UAV_FLAGS Flags;
3242 } D3D12_BUFFER_UAV;
3243
3244typedef struct D3D12_TEX1D_UAV
3245 {
3246 UINT MipSlice;
3247 } D3D12_TEX1D_UAV;
3248
3249typedef struct D3D12_TEX1D_ARRAY_UAV
3250 {
3251 UINT MipSlice;
3252 UINT FirstArraySlice;
3253 UINT ArraySize;
3254 } D3D12_TEX1D_ARRAY_UAV;
3255
3256typedef struct D3D12_TEX2D_UAV
3257 {
3258 UINT MipSlice;
3259 UINT PlaneSlice;
3260 } D3D12_TEX2D_UAV;
3261
3262typedef struct D3D12_TEX2D_ARRAY_UAV
3263 {
3264 UINT MipSlice;
3265 UINT FirstArraySlice;
3266 UINT ArraySize;
3267 UINT PlaneSlice;
3268 } D3D12_TEX2D_ARRAY_UAV;
3269
3270typedef struct D3D12_TEX3D_UAV
3271 {
3272 UINT MipSlice;
3273 UINT FirstWSlice;
3274 UINT WSize;
3275 } D3D12_TEX3D_UAV;
3276
3277typedef
3278enum D3D12_UAV_DIMENSION
3279 {
3280 D3D12_UAV_DIMENSION_UNKNOWN = 0,
3281 D3D12_UAV_DIMENSION_BUFFER = 1,
3282 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
3283 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
3284 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
3285 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
3286 D3D12_UAV_DIMENSION_TEXTURE3D = 8
3287 } D3D12_UAV_DIMENSION;
3288
3289typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
3290 {
3291 DXGI_FORMAT Format;
3292 D3D12_UAV_DIMENSION ViewDimension;
3293 union
3294 {
3295 D3D12_BUFFER_UAV Buffer;
3296 D3D12_TEX1D_UAV Texture1D;
3297 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
3298 D3D12_TEX2D_UAV Texture2D;
3299 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
3300 D3D12_TEX3D_UAV Texture3D;
3301 } ;
3302 } D3D12_UNORDERED_ACCESS_VIEW_DESC;
3303
3304typedef struct D3D12_BUFFER_RTV
3305 {
3306 UINT64 FirstElement;
3307 UINT NumElements;
3308 } D3D12_BUFFER_RTV;
3309
3310typedef struct D3D12_TEX1D_RTV
3311 {
3312 UINT MipSlice;
3313 } D3D12_TEX1D_RTV;
3314
3315typedef struct D3D12_TEX1D_ARRAY_RTV
3316 {
3317 UINT MipSlice;
3318 UINT FirstArraySlice;
3319 UINT ArraySize;
3320 } D3D12_TEX1D_ARRAY_RTV;
3321
3322typedef struct D3D12_TEX2D_RTV
3323 {
3324 UINT MipSlice;
3325 UINT PlaneSlice;
3326 } D3D12_TEX2D_RTV;
3327
3328typedef struct D3D12_TEX2DMS_RTV
3329 {
3330 UINT UnusedField_NothingToDefine;
3331 } D3D12_TEX2DMS_RTV;
3332
3333typedef struct D3D12_TEX2D_ARRAY_RTV
3334 {
3335 UINT MipSlice;
3336 UINT FirstArraySlice;
3337 UINT ArraySize;
3338 UINT PlaneSlice;
3339 } D3D12_TEX2D_ARRAY_RTV;
3340
3341typedef struct D3D12_TEX2DMS_ARRAY_RTV
3342 {
3343 UINT FirstArraySlice;
3344 UINT ArraySize;
3345 } D3D12_TEX2DMS_ARRAY_RTV;
3346
3347typedef struct D3D12_TEX3D_RTV
3348 {
3349 UINT MipSlice;
3350 UINT FirstWSlice;
3351 UINT WSize;
3352 } D3D12_TEX3D_RTV;
3353
3354typedef
3355enum D3D12_RTV_DIMENSION
3356 {
3357 D3D12_RTV_DIMENSION_UNKNOWN = 0,
3358 D3D12_RTV_DIMENSION_BUFFER = 1,
3359 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
3360 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
3361 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
3362 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
3363 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
3364 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
3365 D3D12_RTV_DIMENSION_TEXTURE3D = 8
3366 } D3D12_RTV_DIMENSION;
3367
3368typedef struct D3D12_RENDER_TARGET_VIEW_DESC
3369 {
3370 DXGI_FORMAT Format;
3371 D3D12_RTV_DIMENSION ViewDimension;
3372 union
3373 {
3374 D3D12_BUFFER_RTV Buffer;
3375 D3D12_TEX1D_RTV Texture1D;
3376 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
3377 D3D12_TEX2D_RTV Texture2D;
3378 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
3379 D3D12_TEX2DMS_RTV Texture2DMS;
3380 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
3381 D3D12_TEX3D_RTV Texture3D;
3382 } ;
3383 } D3D12_RENDER_TARGET_VIEW_DESC;
3384
3385typedef struct D3D12_TEX1D_DSV
3386 {
3387 UINT MipSlice;
3388 } D3D12_TEX1D_DSV;
3389
3390typedef struct D3D12_TEX1D_ARRAY_DSV
3391 {
3392 UINT MipSlice;
3393 UINT FirstArraySlice;
3394 UINT ArraySize;
3395 } D3D12_TEX1D_ARRAY_DSV;
3396
3397typedef struct D3D12_TEX2D_DSV
3398 {
3399 UINT MipSlice;
3400 } D3D12_TEX2D_DSV;
3401
3402typedef struct D3D12_TEX2D_ARRAY_DSV
3403 {
3404 UINT MipSlice;
3405 UINT FirstArraySlice;
3406 UINT ArraySize;
3407 } D3D12_TEX2D_ARRAY_DSV;
3408
3409typedef struct D3D12_TEX2DMS_DSV
3410 {
3411 UINT UnusedField_NothingToDefine;
3412 } D3D12_TEX2DMS_DSV;
3413
3414typedef struct D3D12_TEX2DMS_ARRAY_DSV
3415 {
3416 UINT FirstArraySlice;
3417 UINT ArraySize;
3418 } D3D12_TEX2DMS_ARRAY_DSV;
3419
3420typedef
3421enum D3D12_DSV_FLAGS
3422 {
3423 D3D12_DSV_FLAG_NONE = 0,
3424 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
3425 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
3426 } D3D12_DSV_FLAGS;
3427
3428DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS );
3429typedef
3430enum D3D12_DSV_DIMENSION
3431 {
3432 D3D12_DSV_DIMENSION_UNKNOWN = 0,
3433 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
3434 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
3435 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
3436 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
3437 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
3438 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
3439 } D3D12_DSV_DIMENSION;
3440
3441typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
3442 {
3443 DXGI_FORMAT Format;
3444 D3D12_DSV_DIMENSION ViewDimension;
3445 D3D12_DSV_FLAGS Flags;
3446 union
3447 {
3448 D3D12_TEX1D_DSV Texture1D;
3449 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
3450 D3D12_TEX2D_DSV Texture2D;
3451 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
3452 D3D12_TEX2DMS_DSV Texture2DMS;
3453 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
3454 } ;
3455 } D3D12_DEPTH_STENCIL_VIEW_DESC;
3456
3457typedef
3458enum D3D12_CLEAR_FLAGS
3459 {
3460 D3D12_CLEAR_FLAG_DEPTH = 0x1,
3461 D3D12_CLEAR_FLAG_STENCIL = 0x2
3462 } D3D12_CLEAR_FLAGS;
3463
3464DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS );
3465typedef
3466enum D3D12_FENCE_FLAGS
3467 {
3468 D3D12_FENCE_FLAG_NONE = 0,
3469 D3D12_FENCE_FLAG_SHARED = 0x1,
3470 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
3471 D3D12_FENCE_FLAG_NON_MONITORED = 0x4
3472 } D3D12_FENCE_FLAGS;
3473
3474DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS );
3475typedef
3476enum D3D12_DESCRIPTOR_HEAP_TYPE
3477 {
3478 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
3479 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
3480 D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
3481 D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
3482 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
3483 } D3D12_DESCRIPTOR_HEAP_TYPE;
3484
3485typedef
3486enum D3D12_DESCRIPTOR_HEAP_FLAGS
3487 {
3488 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
3489 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
3490 } D3D12_DESCRIPTOR_HEAP_FLAGS;
3491
3492DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS );
3493typedef struct D3D12_DESCRIPTOR_HEAP_DESC
3494 {
3495 D3D12_DESCRIPTOR_HEAP_TYPE Type;
3496 UINT NumDescriptors;
3497 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
3498 UINT NodeMask;
3499 } D3D12_DESCRIPTOR_HEAP_DESC;
3500
3501typedef
3502enum D3D12_DESCRIPTOR_RANGE_TYPE
3503 {
3504 D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
3505 D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
3506 D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
3507 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
3508 } D3D12_DESCRIPTOR_RANGE_TYPE;
3509
3510typedef struct D3D12_DESCRIPTOR_RANGE
3511 {
3512 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
3513 UINT NumDescriptors;
3514 UINT BaseShaderRegister;
3515 UINT RegisterSpace;
3516 UINT OffsetInDescriptorsFromTableStart;
3517 } D3D12_DESCRIPTOR_RANGE;
3518
3519typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
3520 {
3521 UINT NumDescriptorRanges;
3522 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
3523 } D3D12_ROOT_DESCRIPTOR_TABLE;
3524
3525typedef struct D3D12_ROOT_CONSTANTS
3526 {
3527 UINT ShaderRegister;
3528 UINT RegisterSpace;
3529 UINT Num32BitValues;
3530 } D3D12_ROOT_CONSTANTS;
3531
3532typedef struct D3D12_ROOT_DESCRIPTOR
3533 {
3534 UINT ShaderRegister;
3535 UINT RegisterSpace;
3536 } D3D12_ROOT_DESCRIPTOR;
3537
3538typedef
3539enum D3D12_SHADER_VISIBILITY
3540 {
3541 D3D12_SHADER_VISIBILITY_ALL = 0,
3542 D3D12_SHADER_VISIBILITY_VERTEX = 1,
3543 D3D12_SHADER_VISIBILITY_HULL = 2,
3544 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
3545 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
3546 D3D12_SHADER_VISIBILITY_PIXEL = 5,
3547 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
3548 D3D12_SHADER_VISIBILITY_MESH = 7
3549 } D3D12_SHADER_VISIBILITY;
3550
3551typedef
3552enum D3D12_ROOT_PARAMETER_TYPE
3553 {
3554 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
3555 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
3556 D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
3557 D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
3558 D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
3559 } D3D12_ROOT_PARAMETER_TYPE;
3560
3561typedef struct D3D12_ROOT_PARAMETER
3562 {
3563 D3D12_ROOT_PARAMETER_TYPE ParameterType;
3564 union
3565 {
3566 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
3567 D3D12_ROOT_CONSTANTS Constants;
3568 D3D12_ROOT_DESCRIPTOR Descriptor;
3569 } ;
3570 D3D12_SHADER_VISIBILITY ShaderVisibility;
3571 } D3D12_ROOT_PARAMETER;
3572
3573typedef
3574enum D3D12_ROOT_SIGNATURE_FLAGS
3575 {
3576 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0,
3577 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
3578 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
3579 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
3580 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
3581 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
3582 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
3583 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
3584 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
3585 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
3586 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
3587 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
3588 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
3589 } D3D12_ROOT_SIGNATURE_FLAGS;
3590
3591DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS );
3592typedef
3593enum D3D12_STATIC_BORDER_COLOR
3594 {
3595 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
3596 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
3597 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 )
3598 } D3D12_STATIC_BORDER_COLOR;
3599
3600typedef struct D3D12_STATIC_SAMPLER_DESC
3601 {
3602 D3D12_FILTER Filter;
3603 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3604 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3605 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3606 FLOAT MipLODBias;
3607 UINT MaxAnisotropy;
3608 D3D12_COMPARISON_FUNC ComparisonFunc;
3609 D3D12_STATIC_BORDER_COLOR BorderColor;
3610 FLOAT MinLOD;
3611 FLOAT MaxLOD;
3612 UINT ShaderRegister;
3613 UINT RegisterSpace;
3614 D3D12_SHADER_VISIBILITY ShaderVisibility;
3615 } D3D12_STATIC_SAMPLER_DESC;
3616
3617typedef struct D3D12_ROOT_SIGNATURE_DESC
3618 {
3619 UINT NumParameters;
3620 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters;
3621 UINT NumStaticSamplers;
3622 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
3623 D3D12_ROOT_SIGNATURE_FLAGS Flags;
3624 } D3D12_ROOT_SIGNATURE_DESC;
3625
3626typedef
3627enum D3D12_DESCRIPTOR_RANGE_FLAGS
3628 {
3629 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
3630 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
3631 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
3632 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
3633 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
3634 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
3635 } D3D12_DESCRIPTOR_RANGE_FLAGS;
3636
3637DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS );
3638typedef struct D3D12_DESCRIPTOR_RANGE1
3639 {
3640 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
3641 UINT NumDescriptors;
3642 UINT BaseShaderRegister;
3643 UINT RegisterSpace;
3644 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
3645 UINT OffsetInDescriptorsFromTableStart;
3646 } D3D12_DESCRIPTOR_RANGE1;
3647
3648typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
3649 {
3650 UINT NumDescriptorRanges;
3651 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
3652 } D3D12_ROOT_DESCRIPTOR_TABLE1;
3653
3654typedef
3655enum D3D12_ROOT_DESCRIPTOR_FLAGS
3656 {
3657 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
3658 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
3659 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
3660 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
3661 } D3D12_ROOT_DESCRIPTOR_FLAGS;
3662
3663DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS );
3664typedef struct D3D12_ROOT_DESCRIPTOR1
3665 {
3666 UINT ShaderRegister;
3667 UINT RegisterSpace;
3668 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
3669 } D3D12_ROOT_DESCRIPTOR1;
3670
3671typedef struct D3D12_ROOT_PARAMETER1
3672 {
3673 D3D12_ROOT_PARAMETER_TYPE ParameterType;
3674 union
3675 {
3676 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
3677 D3D12_ROOT_CONSTANTS Constants;
3678 D3D12_ROOT_DESCRIPTOR1 Descriptor;
3679 } ;
3680 D3D12_SHADER_VISIBILITY ShaderVisibility;
3681 } D3D12_ROOT_PARAMETER1;
3682
3683typedef struct D3D12_ROOT_SIGNATURE_DESC1
3684 {
3685 UINT NumParameters;
3686 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
3687 UINT NumStaticSamplers;
3688 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
3689 D3D12_ROOT_SIGNATURE_FLAGS Flags;
3690 } D3D12_ROOT_SIGNATURE_DESC1;
3691
3692typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
3693 {
3694 D3D_ROOT_SIGNATURE_VERSION Version;
3695 union
3696 {
3697 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
3698 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
3699 } ;
3700 } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
3701
3702
3703
3704extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec;
3705extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec;
3706
3707#ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
3708#define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
3709
3710/* interface ID3D12RootSignatureDeserializer */
3711/* [unique][local][object][uuid] */
3712
3713
3714EXTERN_C const IID IID_ID3D12RootSignatureDeserializer;
3715
3716#if defined(__cplusplus) && !defined(CINTERFACE)
3717
3718 MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046")
3719 ID3D12RootSignatureDeserializer : public IUnknown
3720 {
3721 public:
3722 virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0;
3723
3724 };
3725
3726
3727#else /* C style interface */
3728
3729 typedef struct ID3D12RootSignatureDeserializerVtbl
3730 {
3731 BEGIN_INTERFACE
3732
3733 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3734 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3735 ID3D12RootSignatureDeserializer * This,
3736 REFIID riid,
3737 _COM_Outptr_ void **ppvObject);
3738
3739 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3740 ULONG ( STDMETHODCALLTYPE *AddRef )(
3741 ID3D12RootSignatureDeserializer * This);
3742
3743 DECLSPEC_XFGVIRT(IUnknown, Release)
3744 ULONG ( STDMETHODCALLTYPE *Release )(
3745 ID3D12RootSignatureDeserializer * This);
3746
3747 DECLSPEC_XFGVIRT(ID3D12RootSignatureDeserializer, GetRootSignatureDesc)
3748 const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )(
3749 ID3D12RootSignatureDeserializer * This);
3750
3751 END_INTERFACE
3752 } ID3D12RootSignatureDeserializerVtbl;
3753
3754 interface ID3D12RootSignatureDeserializer
3755 {
3756 CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl;
3757 };
3758
3759
3760
3761#ifdef COBJMACROS
3762
3763
3764#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
3765 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3766
3767#define ID3D12RootSignatureDeserializer_AddRef(This) \
3768 ( (This)->lpVtbl -> AddRef(This) )
3769
3770#define ID3D12RootSignatureDeserializer_Release(This) \
3771 ( (This)->lpVtbl -> Release(This) )
3772
3773
3774#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \
3775 ( (This)->lpVtbl -> GetRootSignatureDesc(This) )
3776
3777#endif /* COBJMACROS */
3778
3779
3780#endif /* C style interface */
3781
3782
3783
3784
3785#endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
3786
3787
3788#ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
3789#define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
3790
3791/* interface ID3D12VersionedRootSignatureDeserializer */
3792/* [unique][local][object][uuid] */
3793
3794
3795EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer;
3796
3797#if defined(__cplusplus) && !defined(CINTERFACE)
3798
3799 MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")
3800 ID3D12VersionedRootSignatureDeserializer : public IUnknown
3801 {
3802 public:
3803 virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
3804 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
3805 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0;
3806
3807 virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0;
3808
3809 };
3810
3811
3812#else /* C style interface */
3813
3814 typedef struct ID3D12VersionedRootSignatureDeserializerVtbl
3815 {
3816 BEGIN_INTERFACE
3817
3818 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3819 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3820 ID3D12VersionedRootSignatureDeserializer * This,
3821 REFIID riid,
3822 _COM_Outptr_ void **ppvObject);
3823
3824 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3825 ULONG ( STDMETHODCALLTYPE *AddRef )(
3826 ID3D12VersionedRootSignatureDeserializer * This);
3827
3828 DECLSPEC_XFGVIRT(IUnknown, Release)
3829 ULONG ( STDMETHODCALLTYPE *Release )(
3830 ID3D12VersionedRootSignatureDeserializer * This);
3831
3832 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetRootSignatureDescAtVersion)
3833 HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )(
3834 ID3D12VersionedRootSignatureDeserializer * This,
3835 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
3836 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
3837
3838 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetUnconvertedRootSignatureDesc)
3839 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )(
3840 ID3D12VersionedRootSignatureDeserializer * This);
3841
3842 END_INTERFACE
3843 } ID3D12VersionedRootSignatureDeserializerVtbl;
3844
3845 interface ID3D12VersionedRootSignatureDeserializer
3846 {
3847 CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl;
3848 };
3849
3850
3851
3852#ifdef COBJMACROS
3853
3854
3855#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
3856 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3857
3858#define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \
3859 ( (This)->lpVtbl -> AddRef(This) )
3860
3861#define ID3D12VersionedRootSignatureDeserializer_Release(This) \
3862 ( (This)->lpVtbl -> Release(This) )
3863
3864
3865#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \
3866 ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) )
3867
3868#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \
3869 ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) )
3870
3871#endif /* COBJMACROS */
3872
3873
3874#endif /* C style interface */
3875
3876
3877
3878
3879#endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
3880
3881
3882/* interface __MIDL_itf_d3d12_0000_0003 */
3883/* [local] */
3884
3885typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(
3886 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
3887 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
3888 _Out_ ID3DBlob** ppBlob,
3889 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3890
3891HRESULT WINAPI D3D12SerializeRootSignature(
3892 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
3893 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
3894 _Out_ ID3DBlob** ppBlob,
3895 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3896
3897typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
3898 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3899 _In_ SIZE_T SrcDataSizeInBytes,
3900 _In_ REFIID pRootSignatureDeserializerInterface,
3901 _Out_ void** ppRootSignatureDeserializer);
3902
3903HRESULT WINAPI D3D12CreateRootSignatureDeserializer(
3904 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3905 _In_ SIZE_T SrcDataSizeInBytes,
3906 _In_ REFIID pRootSignatureDeserializerInterface,
3907 _Out_ void** ppRootSignatureDeserializer);
3908
3909typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
3910 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
3911 _Out_ ID3DBlob** ppBlob,
3912 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3913
3914HRESULT WINAPI D3D12SerializeVersionedRootSignature(
3915 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
3916 _Out_ ID3DBlob** ppBlob,
3917 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3918
3919typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
3920 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3921 _In_ SIZE_T SrcDataSizeInBytes,
3922 _In_ REFIID pRootSignatureDeserializerInterface,
3923 _Out_ void** ppRootSignatureDeserializer);
3924
3925HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
3926 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3927 _In_ SIZE_T SrcDataSizeInBytes,
3928 _In_ REFIID pRootSignatureDeserializerInterface,
3929 _Out_ void** ppRootSignatureDeserializer);
3930
3931typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
3932 {
3933 SIZE_T ptr;
3934 } D3D12_CPU_DESCRIPTOR_HANDLE;
3935
3936typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
3937 {
3938 UINT64 ptr;
3939 } D3D12_GPU_DESCRIPTOR_HANDLE;
3940
3941// If rects are supplied in D3D12_DISCARD_REGION, below, the resource
3942// must have 2D subresources with all specified subresources the same dimension.
3943typedef struct D3D12_DISCARD_REGION
3944 {
3945 UINT NumRects;
3946 _In_reads_(NumRects) const D3D12_RECT *pRects;
3947 UINT FirstSubresource;
3948 UINT NumSubresources;
3949 } D3D12_DISCARD_REGION;
3950
3951typedef
3952enum D3D12_QUERY_HEAP_TYPE
3953 {
3954 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
3955 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
3956 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
3957 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
3958 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
3959 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
3960 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7
3961 } D3D12_QUERY_HEAP_TYPE;
3962
3963typedef struct D3D12_QUERY_HEAP_DESC
3964 {
3965 D3D12_QUERY_HEAP_TYPE Type;
3966 UINT Count;
3967 UINT NodeMask;
3968 } D3D12_QUERY_HEAP_DESC;
3969
3970typedef
3971enum D3D12_QUERY_TYPE
3972 {
3973 D3D12_QUERY_TYPE_OCCLUSION = 0,
3974 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
3975 D3D12_QUERY_TYPE_TIMESTAMP = 2,
3976 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
3977 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
3978 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
3979 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
3980 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
3981 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
3982 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10
3983 } D3D12_QUERY_TYPE;
3984
3985typedef
3986enum D3D12_PREDICATION_OP
3987 {
3988 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
3989 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
3990 } D3D12_PREDICATION_OP;
3991
3992typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
3993 {
3994 UINT64 IAVertices;
3995 UINT64 IAPrimitives;
3996 UINT64 VSInvocations;
3997 UINT64 GSInvocations;
3998 UINT64 GSPrimitives;
3999 UINT64 CInvocations;
4000 UINT64 CPrimitives;
4001 UINT64 PSInvocations;
4002 UINT64 HSInvocations;
4003 UINT64 DSInvocations;
4004 UINT64 CSInvocations;
4005 } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
4006
4007typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
4008 {
4009 UINT64 IAVertices;
4010 UINT64 IAPrimitives;
4011 UINT64 VSInvocations;
4012 UINT64 GSInvocations;
4013 UINT64 GSPrimitives;
4014 UINT64 CInvocations;
4015 UINT64 CPrimitives;
4016 UINT64 PSInvocations;
4017 UINT64 HSInvocations;
4018 UINT64 DSInvocations;
4019 UINT64 CSInvocations;
4020 UINT64 ASInvocations;
4021 UINT64 MSInvocations;
4022 UINT64 MSPrimitives;
4023 } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
4024
4025typedef struct D3D12_QUERY_DATA_SO_STATISTICS
4026 {
4027 UINT64 NumPrimitivesWritten;
4028 UINT64 PrimitivesStorageNeeded;
4029 } D3D12_QUERY_DATA_SO_STATISTICS;
4030
4031typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
4032 {
4033 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4034 UINT64 SizeInBytes;
4035 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
4036 } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
4037
4038typedef struct D3D12_DRAW_ARGUMENTS
4039 {
4040 UINT VertexCountPerInstance;
4041 UINT InstanceCount;
4042 UINT StartVertexLocation;
4043 UINT StartInstanceLocation;
4044 } D3D12_DRAW_ARGUMENTS;
4045
4046typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
4047 {
4048 UINT IndexCountPerInstance;
4049 UINT InstanceCount;
4050 UINT StartIndexLocation;
4051 INT BaseVertexLocation;
4052 UINT StartInstanceLocation;
4053 } D3D12_DRAW_INDEXED_ARGUMENTS;
4054
4055typedef struct D3D12_DISPATCH_ARGUMENTS
4056 {
4057 UINT ThreadGroupCountX;
4058 UINT ThreadGroupCountY;
4059 UINT ThreadGroupCountZ;
4060 } D3D12_DISPATCH_ARGUMENTS;
4061
4062typedef struct D3D12_VERTEX_BUFFER_VIEW
4063 {
4064 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4065 UINT SizeInBytes;
4066 UINT StrideInBytes;
4067 } D3D12_VERTEX_BUFFER_VIEW;
4068
4069typedef struct D3D12_INDEX_BUFFER_VIEW
4070 {
4071 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4072 UINT SizeInBytes;
4073 DXGI_FORMAT Format;
4074 } D3D12_INDEX_BUFFER_VIEW;
4075
4076typedef
4077enum D3D12_INDIRECT_ARGUMENT_TYPE
4078 {
4079 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
4080 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
4081 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
4082 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
4083 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
4084 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
4085 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
4086 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
4087 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) ,
4088 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = ( D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW + 1 ) ,
4089 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 )
4090 } D3D12_INDIRECT_ARGUMENT_TYPE;
4091
4092typedef struct D3D12_INDIRECT_ARGUMENT_DESC
4093 {
4094 D3D12_INDIRECT_ARGUMENT_TYPE Type;
4095 union
4096 {
4097 struct
4098 {
4099 UINT Slot;
4100 } VertexBuffer;
4101 struct
4102 {
4103 UINT RootParameterIndex;
4104 UINT DestOffsetIn32BitValues;
4105 UINT Num32BitValuesToSet;
4106 } Constant;
4107 struct
4108 {
4109 UINT RootParameterIndex;
4110 } ConstantBufferView;
4111 struct
4112 {
4113 UINT RootParameterIndex;
4114 } ShaderResourceView;
4115 struct
4116 {
4117 UINT RootParameterIndex;
4118 } UnorderedAccessView;
4119 } ;
4120 } D3D12_INDIRECT_ARGUMENT_DESC;
4121
4122typedef struct D3D12_COMMAND_SIGNATURE_DESC
4123 {
4124 UINT ByteStride;
4125 UINT NumArgumentDescs;
4126 _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
4127 UINT NodeMask;
4128 } D3D12_COMMAND_SIGNATURE_DESC;
4129
4130
4131
4132
4133extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec;
4134extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec;
4135
4136#ifndef __ID3D12Pageable_INTERFACE_DEFINED__
4137#define __ID3D12Pageable_INTERFACE_DEFINED__
4138
4139/* interface ID3D12Pageable */
4140/* [unique][local][object][uuid] */
4141
4142
4143EXTERN_C const IID IID_ID3D12Pageable;
4144
4145#if defined(__cplusplus) && !defined(CINTERFACE)
4146
4147 MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
4148 ID3D12Pageable : public ID3D12DeviceChild
4149 {
4150 public:
4151 };
4152
4153
4154#else /* C style interface */
4155
4156 typedef struct ID3D12PageableVtbl
4157 {
4158 BEGIN_INTERFACE
4159
4160 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4161 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4162 ID3D12Pageable * This,
4163 REFIID riid,
4164 _COM_Outptr_ void **ppvObject);
4165
4166 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4167 ULONG ( STDMETHODCALLTYPE *AddRef )(
4168 ID3D12Pageable * This);
4169
4170 DECLSPEC_XFGVIRT(IUnknown, Release)
4171 ULONG ( STDMETHODCALLTYPE *Release )(
4172 ID3D12Pageable * This);
4173
4174 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4175 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4176 ID3D12Pageable * This,
4177 _In_ REFGUID guid,
4178 _Inout_ UINT *pDataSize,
4179 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4180
4181 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4182 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4183 ID3D12Pageable * This,
4184 _In_ REFGUID guid,
4185 _In_ UINT DataSize,
4186 _In_reads_bytes_opt_( DataSize ) const void *pData);
4187
4188 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4189 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4190 ID3D12Pageable * This,
4191 _In_ REFGUID guid,
4192 _In_opt_ const IUnknown *pData);
4193
4194 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4195 HRESULT ( STDMETHODCALLTYPE *SetName )(
4196 ID3D12Pageable * This,
4197 _In_z_ LPCWSTR Name);
4198
4199 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4200 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4201 ID3D12Pageable * This,
4202 REFIID riid,
4203 _COM_Outptr_opt_ void **ppvDevice);
4204
4205 END_INTERFACE
4206 } ID3D12PageableVtbl;
4207
4208 interface ID3D12Pageable
4209 {
4210 CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
4211 };
4212
4213
4214
4215#ifdef COBJMACROS
4216
4217
4218#define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \
4219 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4220
4221#define ID3D12Pageable_AddRef(This) \
4222 ( (This)->lpVtbl -> AddRef(This) )
4223
4224#define ID3D12Pageable_Release(This) \
4225 ( (This)->lpVtbl -> Release(This) )
4226
4227
4228#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \
4229 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4230
4231#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \
4232 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4233
4234#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \
4235 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4236
4237#define ID3D12Pageable_SetName(This,Name) \
4238 ( (This)->lpVtbl -> SetName(This,Name) )
4239
4240
4241#define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \
4242 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4243
4244
4245#endif /* COBJMACROS */
4246
4247
4248#endif /* C style interface */
4249
4250
4251
4252
4253#endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */
4254
4255
4256#ifndef __ID3D12Heap_INTERFACE_DEFINED__
4257#define __ID3D12Heap_INTERFACE_DEFINED__
4258
4259/* interface ID3D12Heap */
4260/* [unique][local][object][uuid] */
4261
4262
4263EXTERN_C const IID IID_ID3D12Heap;
4264
4265#if defined(__cplusplus) && !defined(CINTERFACE)
4266
4267 MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
4268 ID3D12Heap : public ID3D12Pageable
4269 {
4270 public:
4271 virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4272
4273 };
4274
4275
4276#else /* C style interface */
4277
4278 typedef struct ID3D12HeapVtbl
4279 {
4280 BEGIN_INTERFACE
4281
4282 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4283 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4284 ID3D12Heap * This,
4285 REFIID riid,
4286 _COM_Outptr_ void **ppvObject);
4287
4288 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4289 ULONG ( STDMETHODCALLTYPE *AddRef )(
4290 ID3D12Heap * This);
4291
4292 DECLSPEC_XFGVIRT(IUnknown, Release)
4293 ULONG ( STDMETHODCALLTYPE *Release )(
4294 ID3D12Heap * This);
4295
4296 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4297 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4298 ID3D12Heap * This,
4299 _In_ REFGUID guid,
4300 _Inout_ UINT *pDataSize,
4301 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4302
4303 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4304 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4305 ID3D12Heap * This,
4306 _In_ REFGUID guid,
4307 _In_ UINT DataSize,
4308 _In_reads_bytes_opt_( DataSize ) const void *pData);
4309
4310 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4311 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4312 ID3D12Heap * This,
4313 _In_ REFGUID guid,
4314 _In_opt_ const IUnknown *pData);
4315
4316 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4317 HRESULT ( STDMETHODCALLTYPE *SetName )(
4318 ID3D12Heap * This,
4319 _In_z_ LPCWSTR Name);
4320
4321 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4322 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4323 ID3D12Heap * This,
4324 REFIID riid,
4325 _COM_Outptr_opt_ void **ppvDevice);
4326
4327 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
4328 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4329 ID3D12Heap * This,
4330 D3D12_HEAP_DESC * RetVal);
4331
4332 END_INTERFACE
4333 } ID3D12HeapVtbl;
4334
4335 interface ID3D12Heap
4336 {
4337 CONST_VTBL struct ID3D12HeapVtbl *lpVtbl;
4338 };
4339
4340
4341
4342#ifdef COBJMACROS
4343
4344
4345#define ID3D12Heap_QueryInterface(This,riid,ppvObject) \
4346 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4347
4348#define ID3D12Heap_AddRef(This) \
4349 ( (This)->lpVtbl -> AddRef(This) )
4350
4351#define ID3D12Heap_Release(This) \
4352 ( (This)->lpVtbl -> Release(This) )
4353
4354
4355#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \
4356 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4357
4358#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \
4359 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4360
4361#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \
4362 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4363
4364#define ID3D12Heap_SetName(This,Name) \
4365 ( (This)->lpVtbl -> SetName(This,Name) )
4366
4367
4368#define ID3D12Heap_GetDevice(This,riid,ppvDevice) \
4369 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4370
4371
4372
4373#define ID3D12Heap_GetDesc(This,RetVal) \
4374 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4375
4376#endif /* COBJMACROS */
4377
4378
4379#endif /* C style interface */
4380
4381
4382
4383
4384#endif /* __ID3D12Heap_INTERFACE_DEFINED__ */
4385
4386
4387#ifndef __ID3D12Resource_INTERFACE_DEFINED__
4388#define __ID3D12Resource_INTERFACE_DEFINED__
4389
4390/* interface ID3D12Resource */
4391/* [unique][local][object][uuid] */
4392
4393
4394EXTERN_C const IID IID_ID3D12Resource;
4395
4396#if defined(__cplusplus) && !defined(CINTERFACE)
4397
4398 MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
4399 ID3D12Resource : public ID3D12Pageable
4400 {
4401 public:
4402 virtual HRESULT STDMETHODCALLTYPE Map(
4403 UINT Subresource,
4404 _In_opt_ const D3D12_RANGE *pReadRange,
4405 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
4406
4407 virtual void STDMETHODCALLTYPE Unmap(
4408 UINT Subresource,
4409 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
4410
4411 virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4412
4413 virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0;
4414
4415 virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
4416 UINT DstSubresource,
4417 _In_opt_ const D3D12_BOX *pDstBox,
4418 _In_ const void *pSrcData,
4419 UINT SrcRowPitch,
4420 UINT SrcDepthPitch) = 0;
4421
4422 virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
4423 _Out_ void *pDstData,
4424 UINT DstRowPitch,
4425 UINT DstDepthPitch,
4426 UINT SrcSubresource,
4427 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
4428
4429 virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
4430 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
4431 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0;
4432
4433 };
4434
4435
4436#else /* C style interface */
4437
4438 typedef struct ID3D12ResourceVtbl
4439 {
4440 BEGIN_INTERFACE
4441
4442 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4443 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4444 ID3D12Resource * This,
4445 REFIID riid,
4446 _COM_Outptr_ void **ppvObject);
4447
4448 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4449 ULONG ( STDMETHODCALLTYPE *AddRef )(
4450 ID3D12Resource * This);
4451
4452 DECLSPEC_XFGVIRT(IUnknown, Release)
4453 ULONG ( STDMETHODCALLTYPE *Release )(
4454 ID3D12Resource * This);
4455
4456 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4457 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4458 ID3D12Resource * This,
4459 _In_ REFGUID guid,
4460 _Inout_ UINT *pDataSize,
4461 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4462
4463 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4464 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4465 ID3D12Resource * This,
4466 _In_ REFGUID guid,
4467 _In_ UINT DataSize,
4468 _In_reads_bytes_opt_( DataSize ) const void *pData);
4469
4470 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4471 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4472 ID3D12Resource * This,
4473 _In_ REFGUID guid,
4474 _In_opt_ const IUnknown *pData);
4475
4476 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4477 HRESULT ( STDMETHODCALLTYPE *SetName )(
4478 ID3D12Resource * This,
4479 _In_z_ LPCWSTR Name);
4480
4481 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4482 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4483 ID3D12Resource * This,
4484 REFIID riid,
4485 _COM_Outptr_opt_ void **ppvDevice);
4486
4487 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
4488 HRESULT ( STDMETHODCALLTYPE *Map )(
4489 ID3D12Resource * This,
4490 UINT Subresource,
4491 _In_opt_ const D3D12_RANGE *pReadRange,
4492 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
4493
4494 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
4495 void ( STDMETHODCALLTYPE *Unmap )(
4496 ID3D12Resource * This,
4497 UINT Subresource,
4498 _In_opt_ const D3D12_RANGE *pWrittenRange);
4499
4500 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
4501 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
4502 ID3D12Resource * This,
4503 D3D12_RESOURCE_DESC * RetVal);
4504
4505 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
4506 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
4507 ID3D12Resource * This);
4508
4509 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
4510 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
4511 ID3D12Resource * This,
4512 UINT DstSubresource,
4513 _In_opt_ const D3D12_BOX *pDstBox,
4514 _In_ const void *pSrcData,
4515 UINT SrcRowPitch,
4516 UINT SrcDepthPitch);
4517
4518 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
4519 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
4520 ID3D12Resource * This,
4521 _Out_ void *pDstData,
4522 UINT DstRowPitch,
4523 UINT DstDepthPitch,
4524 UINT SrcSubresource,
4525 _In_opt_ const D3D12_BOX *pSrcBox);
4526
4527 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
4528 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
4529 ID3D12Resource * This,
4530 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
4531 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
4532
4533 END_INTERFACE
4534 } ID3D12ResourceVtbl;
4535
4536 interface ID3D12Resource
4537 {
4538 CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
4539 };
4540
4541
4542
4543#ifdef COBJMACROS
4544
4545
4546#define ID3D12Resource_QueryInterface(This,riid,ppvObject) \
4547 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4548
4549#define ID3D12Resource_AddRef(This) \
4550 ( (This)->lpVtbl -> AddRef(This) )
4551
4552#define ID3D12Resource_Release(This) \
4553 ( (This)->lpVtbl -> Release(This) )
4554
4555
4556#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \
4557 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4558
4559#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \
4560 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4561
4562#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \
4563 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4564
4565#define ID3D12Resource_SetName(This,Name) \
4566 ( (This)->lpVtbl -> SetName(This,Name) )
4567
4568
4569#define ID3D12Resource_GetDevice(This,riid,ppvDevice) \
4570 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4571
4572
4573
4574#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \
4575 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
4576
4577#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \
4578 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
4579
4580#define ID3D12Resource_GetDesc(This,RetVal) \
4581 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4582
4583#define ID3D12Resource_GetGPUVirtualAddress(This) \
4584 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
4585
4586#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
4587 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
4588
4589#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
4590 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
4591
4592#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
4593 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
4594
4595#endif /* COBJMACROS */
4596
4597
4598#endif /* C style interface */
4599
4600
4601
4602
4603#endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
4604
4605
4606#ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
4607#define __ID3D12CommandAllocator_INTERFACE_DEFINED__
4608
4609/* interface ID3D12CommandAllocator */
4610/* [unique][local][object][uuid] */
4611
4612
4613EXTERN_C const IID IID_ID3D12CommandAllocator;
4614
4615#if defined(__cplusplus) && !defined(CINTERFACE)
4616
4617 MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
4618 ID3D12CommandAllocator : public ID3D12Pageable
4619 {
4620 public:
4621 virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
4622
4623 };
4624
4625
4626#else /* C style interface */
4627
4628 typedef struct ID3D12CommandAllocatorVtbl
4629 {
4630 BEGIN_INTERFACE
4631
4632 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4633 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4634 ID3D12CommandAllocator * This,
4635 REFIID riid,
4636 _COM_Outptr_ void **ppvObject);
4637
4638 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4639 ULONG ( STDMETHODCALLTYPE *AddRef )(
4640 ID3D12CommandAllocator * This);
4641
4642 DECLSPEC_XFGVIRT(IUnknown, Release)
4643 ULONG ( STDMETHODCALLTYPE *Release )(
4644 ID3D12CommandAllocator * This);
4645
4646 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4647 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4648 ID3D12CommandAllocator * This,
4649 _In_ REFGUID guid,
4650 _Inout_ UINT *pDataSize,
4651 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4652
4653 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4654 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4655 ID3D12CommandAllocator * This,
4656 _In_ REFGUID guid,
4657 _In_ UINT DataSize,
4658 _In_reads_bytes_opt_( DataSize ) const void *pData);
4659
4660 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4661 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4662 ID3D12CommandAllocator * This,
4663 _In_ REFGUID guid,
4664 _In_opt_ const IUnknown *pData);
4665
4666 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4667 HRESULT ( STDMETHODCALLTYPE *SetName )(
4668 ID3D12CommandAllocator * This,
4669 _In_z_ LPCWSTR Name);
4670
4671 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4672 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4673 ID3D12CommandAllocator * This,
4674 REFIID riid,
4675 _COM_Outptr_opt_ void **ppvDevice);
4676
4677 DECLSPEC_XFGVIRT(ID3D12CommandAllocator, Reset)
4678 HRESULT ( STDMETHODCALLTYPE *Reset )(
4679 ID3D12CommandAllocator * This);
4680
4681 END_INTERFACE
4682 } ID3D12CommandAllocatorVtbl;
4683
4684 interface ID3D12CommandAllocator
4685 {
4686 CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
4687 };
4688
4689
4690
4691#ifdef COBJMACROS
4692
4693
4694#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \
4695 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4696
4697#define ID3D12CommandAllocator_AddRef(This) \
4698 ( (This)->lpVtbl -> AddRef(This) )
4699
4700#define ID3D12CommandAllocator_Release(This) \
4701 ( (This)->lpVtbl -> Release(This) )
4702
4703
4704#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \
4705 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4706
4707#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \
4708 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4709
4710#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \
4711 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4712
4713#define ID3D12CommandAllocator_SetName(This,Name) \
4714 ( (This)->lpVtbl -> SetName(This,Name) )
4715
4716
4717#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \
4718 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4719
4720
4721
4722#define ID3D12CommandAllocator_Reset(This) \
4723 ( (This)->lpVtbl -> Reset(This) )
4724
4725#endif /* COBJMACROS */
4726
4727
4728#endif /* C style interface */
4729
4730
4731
4732
4733#endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
4734
4735
4736#ifndef __ID3D12Fence_INTERFACE_DEFINED__
4737#define __ID3D12Fence_INTERFACE_DEFINED__
4738
4739/* interface ID3D12Fence */
4740/* [unique][local][object][uuid] */
4741
4742
4743EXTERN_C const IID IID_ID3D12Fence;
4744
4745#if defined(__cplusplus) && !defined(CINTERFACE)
4746
4747 MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
4748 ID3D12Fence : public ID3D12Pageable
4749 {
4750 public:
4751 virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0;
4752
4753 virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
4754 UINT64 Value,
4755 HANDLE hEvent) = 0;
4756
4757 virtual HRESULT STDMETHODCALLTYPE Signal(
4758 UINT64 Value) = 0;
4759
4760 };
4761
4762
4763#else /* C style interface */
4764
4765 typedef struct ID3D12FenceVtbl
4766 {
4767 BEGIN_INTERFACE
4768
4769 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4770 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4771 ID3D12Fence * This,
4772 REFIID riid,
4773 _COM_Outptr_ void **ppvObject);
4774
4775 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4776 ULONG ( STDMETHODCALLTYPE *AddRef )(
4777 ID3D12Fence * This);
4778
4779 DECLSPEC_XFGVIRT(IUnknown, Release)
4780 ULONG ( STDMETHODCALLTYPE *Release )(
4781 ID3D12Fence * This);
4782
4783 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4784 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4785 ID3D12Fence * This,
4786 _In_ REFGUID guid,
4787 _Inout_ UINT *pDataSize,
4788 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4789
4790 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4791 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4792 ID3D12Fence * This,
4793 _In_ REFGUID guid,
4794 _In_ UINT DataSize,
4795 _In_reads_bytes_opt_( DataSize ) const void *pData);
4796
4797 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4798 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4799 ID3D12Fence * This,
4800 _In_ REFGUID guid,
4801 _In_opt_ const IUnknown *pData);
4802
4803 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4804 HRESULT ( STDMETHODCALLTYPE *SetName )(
4805 ID3D12Fence * This,
4806 _In_z_ LPCWSTR Name);
4807
4808 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4809 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4810 ID3D12Fence * This,
4811 REFIID riid,
4812 _COM_Outptr_opt_ void **ppvDevice);
4813
4814 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
4815 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
4816 ID3D12Fence * This);
4817
4818 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
4819 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
4820 ID3D12Fence * This,
4821 UINT64 Value,
4822 HANDLE hEvent);
4823
4824 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
4825 HRESULT ( STDMETHODCALLTYPE *Signal )(
4826 ID3D12Fence * This,
4827 UINT64 Value);
4828
4829 END_INTERFACE
4830 } ID3D12FenceVtbl;
4831
4832 interface ID3D12Fence
4833 {
4834 CONST_VTBL struct ID3D12FenceVtbl *lpVtbl;
4835 };
4836
4837
4838
4839#ifdef COBJMACROS
4840
4841
4842#define ID3D12Fence_QueryInterface(This,riid,ppvObject) \
4843 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4844
4845#define ID3D12Fence_AddRef(This) \
4846 ( (This)->lpVtbl -> AddRef(This) )
4847
4848#define ID3D12Fence_Release(This) \
4849 ( (This)->lpVtbl -> Release(This) )
4850
4851
4852#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \
4853 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4854
4855#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \
4856 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4857
4858#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \
4859 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4860
4861#define ID3D12Fence_SetName(This,Name) \
4862 ( (This)->lpVtbl -> SetName(This,Name) )
4863
4864
4865#define ID3D12Fence_GetDevice(This,riid,ppvDevice) \
4866 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4867
4868
4869
4870#define ID3D12Fence_GetCompletedValue(This) \
4871 ( (This)->lpVtbl -> GetCompletedValue(This) )
4872
4873#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \
4874 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
4875
4876#define ID3D12Fence_Signal(This,Value) \
4877 ( (This)->lpVtbl -> Signal(This,Value) )
4878
4879#endif /* COBJMACROS */
4880
4881
4882#endif /* C style interface */
4883
4884
4885
4886
4887#endif /* __ID3D12Fence_INTERFACE_DEFINED__ */
4888
4889
4890#ifndef __ID3D12Fence1_INTERFACE_DEFINED__
4891#define __ID3D12Fence1_INTERFACE_DEFINED__
4892
4893/* interface ID3D12Fence1 */
4894/* [unique][local][object][uuid] */
4895
4896
4897EXTERN_C const IID IID_ID3D12Fence1;
4898
4899#if defined(__cplusplus) && !defined(CINTERFACE)
4900
4901 MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
4902 ID3D12Fence1 : public ID3D12Fence
4903 {
4904 public:
4905 virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags( void) = 0;
4906
4907 };
4908
4909
4910#else /* C style interface */
4911
4912 typedef struct ID3D12Fence1Vtbl
4913 {
4914 BEGIN_INTERFACE
4915
4916 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4917 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4918 ID3D12Fence1 * This,
4919 REFIID riid,
4920 _COM_Outptr_ void **ppvObject);
4921
4922 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4923 ULONG ( STDMETHODCALLTYPE *AddRef )(
4924 ID3D12Fence1 * This);
4925
4926 DECLSPEC_XFGVIRT(IUnknown, Release)
4927 ULONG ( STDMETHODCALLTYPE *Release )(
4928 ID3D12Fence1 * This);
4929
4930 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4931 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4932 ID3D12Fence1 * This,
4933 _In_ REFGUID guid,
4934 _Inout_ UINT *pDataSize,
4935 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4936
4937 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4938 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4939 ID3D12Fence1 * This,
4940 _In_ REFGUID guid,
4941 _In_ UINT DataSize,
4942 _In_reads_bytes_opt_( DataSize ) const void *pData);
4943
4944 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4945 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4946 ID3D12Fence1 * This,
4947 _In_ REFGUID guid,
4948 _In_opt_ const IUnknown *pData);
4949
4950 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4951 HRESULT ( STDMETHODCALLTYPE *SetName )(
4952 ID3D12Fence1 * This,
4953 _In_z_ LPCWSTR Name);
4954
4955 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4956 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4957 ID3D12Fence1 * This,
4958 REFIID riid,
4959 _COM_Outptr_opt_ void **ppvDevice);
4960
4961 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
4962 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
4963 ID3D12Fence1 * This);
4964
4965 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
4966 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
4967 ID3D12Fence1 * This,
4968 UINT64 Value,
4969 HANDLE hEvent);
4970
4971 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
4972 HRESULT ( STDMETHODCALLTYPE *Signal )(
4973 ID3D12Fence1 * This,
4974 UINT64 Value);
4975
4976 DECLSPEC_XFGVIRT(ID3D12Fence1, GetCreationFlags)
4977 D3D12_FENCE_FLAGS ( STDMETHODCALLTYPE *GetCreationFlags )(
4978 ID3D12Fence1 * This);
4979
4980 END_INTERFACE
4981 } ID3D12Fence1Vtbl;
4982
4983 interface ID3D12Fence1
4984 {
4985 CONST_VTBL struct ID3D12Fence1Vtbl *lpVtbl;
4986 };
4987
4988
4989
4990#ifdef COBJMACROS
4991
4992
4993#define ID3D12Fence1_QueryInterface(This,riid,ppvObject) \
4994 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4995
4996#define ID3D12Fence1_AddRef(This) \
4997 ( (This)->lpVtbl -> AddRef(This) )
4998
4999#define ID3D12Fence1_Release(This) \
5000 ( (This)->lpVtbl -> Release(This) )
5001
5002
5003#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData) \
5004 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5005
5006#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData) \
5007 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5008
5009#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData) \
5010 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5011
5012#define ID3D12Fence1_SetName(This,Name) \
5013 ( (This)->lpVtbl -> SetName(This,Name) )
5014
5015
5016#define ID3D12Fence1_GetDevice(This,riid,ppvDevice) \
5017 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5018
5019
5020
5021#define ID3D12Fence1_GetCompletedValue(This) \
5022 ( (This)->lpVtbl -> GetCompletedValue(This) )
5023
5024#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent) \
5025 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5026
5027#define ID3D12Fence1_Signal(This,Value) \
5028 ( (This)->lpVtbl -> Signal(This,Value) )
5029
5030
5031#define ID3D12Fence1_GetCreationFlags(This) \
5032 ( (This)->lpVtbl -> GetCreationFlags(This) )
5033
5034#endif /* COBJMACROS */
5035
5036
5037#endif /* C style interface */
5038
5039
5040
5041
5042#endif /* __ID3D12Fence1_INTERFACE_DEFINED__ */
5043
5044
5045#ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
5046#define __ID3D12PipelineState_INTERFACE_DEFINED__
5047
5048/* interface ID3D12PipelineState */
5049/* [unique][local][object][uuid] */
5050
5051
5052EXTERN_C const IID IID_ID3D12PipelineState;
5053
5054#if defined(__cplusplus) && !defined(CINTERFACE)
5055
5056 MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
5057 ID3D12PipelineState : public ID3D12Pageable
5058 {
5059 public:
5060 virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
5061 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
5062
5063 };
5064
5065
5066#else /* C style interface */
5067
5068 typedef struct ID3D12PipelineStateVtbl
5069 {
5070 BEGIN_INTERFACE
5071
5072 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5073 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5074 ID3D12PipelineState * This,
5075 REFIID riid,
5076 _COM_Outptr_ void **ppvObject);
5077
5078 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5079 ULONG ( STDMETHODCALLTYPE *AddRef )(
5080 ID3D12PipelineState * This);
5081
5082 DECLSPEC_XFGVIRT(IUnknown, Release)
5083 ULONG ( STDMETHODCALLTYPE *Release )(
5084 ID3D12PipelineState * This);
5085
5086 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5087 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5088 ID3D12PipelineState * This,
5089 _In_ REFGUID guid,
5090 _Inout_ UINT *pDataSize,
5091 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5092
5093 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5094 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5095 ID3D12PipelineState * This,
5096 _In_ REFGUID guid,
5097 _In_ UINT DataSize,
5098 _In_reads_bytes_opt_( DataSize ) const void *pData);
5099
5100 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5101 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5102 ID3D12PipelineState * This,
5103 _In_ REFGUID guid,
5104 _In_opt_ const IUnknown *pData);
5105
5106 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5107 HRESULT ( STDMETHODCALLTYPE *SetName )(
5108 ID3D12PipelineState * This,
5109 _In_z_ LPCWSTR Name);
5110
5111 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5112 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5113 ID3D12PipelineState * This,
5114 REFIID riid,
5115 _COM_Outptr_opt_ void **ppvDevice);
5116
5117 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5118 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5119 ID3D12PipelineState * This,
5120 _COM_Outptr_ ID3DBlob **ppBlob);
5121
5122 END_INTERFACE
5123 } ID3D12PipelineStateVtbl;
5124
5125 interface ID3D12PipelineState
5126 {
5127 CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl;
5128 };
5129
5130
5131
5132#ifdef COBJMACROS
5133
5134
5135#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \
5136 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5137
5138#define ID3D12PipelineState_AddRef(This) \
5139 ( (This)->lpVtbl -> AddRef(This) )
5140
5141#define ID3D12PipelineState_Release(This) \
5142 ( (This)->lpVtbl -> Release(This) )
5143
5144
5145#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \
5146 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5147
5148#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \
5149 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5150
5151#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \
5152 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5153
5154#define ID3D12PipelineState_SetName(This,Name) \
5155 ( (This)->lpVtbl -> SetName(This,Name) )
5156
5157
5158#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \
5159 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5160
5161
5162
5163#define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \
5164 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5165
5166#endif /* COBJMACROS */
5167
5168
5169#endif /* C style interface */
5170
5171
5172
5173
5174#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
5175
5176
5177#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5178#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5179
5180/* interface ID3D12DescriptorHeap */
5181/* [unique][local][object][uuid] */
5182
5183
5184EXTERN_C const IID IID_ID3D12DescriptorHeap;
5185
5186#if defined(__cplusplus) && !defined(CINTERFACE)
5187
5188 MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
5189 ID3D12DescriptorHeap : public ID3D12Pageable
5190 {
5191 public:
5192 virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5193
5194 virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0;
5195
5196 virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0;
5197
5198 };
5199
5200
5201#else /* C style interface */
5202
5203 typedef struct ID3D12DescriptorHeapVtbl
5204 {
5205 BEGIN_INTERFACE
5206
5207 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5208 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5209 ID3D12DescriptorHeap * This,
5210 REFIID riid,
5211 _COM_Outptr_ void **ppvObject);
5212
5213 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5214 ULONG ( STDMETHODCALLTYPE *AddRef )(
5215 ID3D12DescriptorHeap * This);
5216
5217 DECLSPEC_XFGVIRT(IUnknown, Release)
5218 ULONG ( STDMETHODCALLTYPE *Release )(
5219 ID3D12DescriptorHeap * This);
5220
5221 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5222 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5223 ID3D12DescriptorHeap * This,
5224 _In_ REFGUID guid,
5225 _Inout_ UINT *pDataSize,
5226 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5227
5228 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5229 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5230 ID3D12DescriptorHeap * This,
5231 _In_ REFGUID guid,
5232 _In_ UINT DataSize,
5233 _In_reads_bytes_opt_( DataSize ) const void *pData);
5234
5235 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5236 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5237 ID3D12DescriptorHeap * This,
5238 _In_ REFGUID guid,
5239 _In_opt_ const IUnknown *pData);
5240
5241 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5242 HRESULT ( STDMETHODCALLTYPE *SetName )(
5243 ID3D12DescriptorHeap * This,
5244 _In_z_ LPCWSTR Name);
5245
5246 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5247 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5248 ID3D12DescriptorHeap * This,
5249 REFIID riid,
5250 _COM_Outptr_opt_ void **ppvDevice);
5251
5252 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetDesc)
5253 D3D12_DESCRIPTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
5254 ID3D12DescriptorHeap * This,
5255 D3D12_DESCRIPTOR_HEAP_DESC * RetVal);
5256
5257 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetCPUDescriptorHandleForHeapStart)
5258 D3D12_CPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
5259 ID3D12DescriptorHeap * This,
5260 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal);
5261
5262 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetGPUDescriptorHandleForHeapStart)
5263 D3D12_GPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
5264 ID3D12DescriptorHeap * This,
5265 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal);
5266
5267 END_INTERFACE
5268 } ID3D12DescriptorHeapVtbl;
5269
5270 interface ID3D12DescriptorHeap
5271 {
5272 CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl;
5273 };
5274
5275
5276
5277#ifdef COBJMACROS
5278
5279
5280#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \
5281 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5282
5283#define ID3D12DescriptorHeap_AddRef(This) \
5284 ( (This)->lpVtbl -> AddRef(This) )
5285
5286#define ID3D12DescriptorHeap_Release(This) \
5287 ( (This)->lpVtbl -> Release(This) )
5288
5289
5290#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \
5291 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5292
5293#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \
5294 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5295
5296#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \
5297 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5298
5299#define ID3D12DescriptorHeap_SetName(This,Name) \
5300 ( (This)->lpVtbl -> SetName(This,Name) )
5301
5302
5303#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \
5304 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5305
5306
5307
5308#define ID3D12DescriptorHeap_GetDesc(This,RetVal) \
5309 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5310
5311#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This,RetVal) \
5312 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This,RetVal) )
5313
5314#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This,RetVal) \
5315 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This,RetVal) )
5316
5317#endif /* COBJMACROS */
5318
5319
5320#endif /* C style interface */
5321
5322
5323
5324
5325#endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
5326
5327
5328#ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
5329#define __ID3D12QueryHeap_INTERFACE_DEFINED__
5330
5331/* interface ID3D12QueryHeap */
5332/* [unique][local][object][uuid] */
5333
5334
5335EXTERN_C const IID IID_ID3D12QueryHeap;
5336
5337#if defined(__cplusplus) && !defined(CINTERFACE)
5338
5339 MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
5340 ID3D12QueryHeap : public ID3D12Pageable
5341 {
5342 public:
5343 };
5344
5345
5346#else /* C style interface */
5347
5348 typedef struct ID3D12QueryHeapVtbl
5349 {
5350 BEGIN_INTERFACE
5351
5352 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5353 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5354 ID3D12QueryHeap * This,
5355 REFIID riid,
5356 _COM_Outptr_ void **ppvObject);
5357
5358 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5359 ULONG ( STDMETHODCALLTYPE *AddRef )(
5360 ID3D12QueryHeap * This);
5361
5362 DECLSPEC_XFGVIRT(IUnknown, Release)
5363 ULONG ( STDMETHODCALLTYPE *Release )(
5364 ID3D12QueryHeap * This);
5365
5366 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5367 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5368 ID3D12QueryHeap * This,
5369 _In_ REFGUID guid,
5370 _Inout_ UINT *pDataSize,
5371 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5372
5373 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5374 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5375 ID3D12QueryHeap * This,
5376 _In_ REFGUID guid,
5377 _In_ UINT DataSize,
5378 _In_reads_bytes_opt_( DataSize ) const void *pData);
5379
5380 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5381 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5382 ID3D12QueryHeap * This,
5383 _In_ REFGUID guid,
5384 _In_opt_ const IUnknown *pData);
5385
5386 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5387 HRESULT ( STDMETHODCALLTYPE *SetName )(
5388 ID3D12QueryHeap * This,
5389 _In_z_ LPCWSTR Name);
5390
5391 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5392 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5393 ID3D12QueryHeap * This,
5394 REFIID riid,
5395 _COM_Outptr_opt_ void **ppvDevice);
5396
5397 END_INTERFACE
5398 } ID3D12QueryHeapVtbl;
5399
5400 interface ID3D12QueryHeap
5401 {
5402 CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl;
5403 };
5404
5405
5406
5407#ifdef COBJMACROS
5408
5409
5410#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \
5411 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5412
5413#define ID3D12QueryHeap_AddRef(This) \
5414 ( (This)->lpVtbl -> AddRef(This) )
5415
5416#define ID3D12QueryHeap_Release(This) \
5417 ( (This)->lpVtbl -> Release(This) )
5418
5419
5420#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \
5421 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5422
5423#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \
5424 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5425
5426#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \
5427 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5428
5429#define ID3D12QueryHeap_SetName(This,Name) \
5430 ( (This)->lpVtbl -> SetName(This,Name) )
5431
5432
5433#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \
5434 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5435
5436
5437
5438#endif /* COBJMACROS */
5439
5440
5441#endif /* C style interface */
5442
5443
5444
5445
5446#endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
5447
5448
5449#ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
5450#define __ID3D12CommandSignature_INTERFACE_DEFINED__
5451
5452/* interface ID3D12CommandSignature */
5453/* [unique][local][object][uuid] */
5454
5455
5456EXTERN_C const IID IID_ID3D12CommandSignature;
5457
5458#if defined(__cplusplus) && !defined(CINTERFACE)
5459
5460 MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
5461 ID3D12CommandSignature : public ID3D12Pageable
5462 {
5463 public:
5464 };
5465
5466
5467#else /* C style interface */
5468
5469 typedef struct ID3D12CommandSignatureVtbl
5470 {
5471 BEGIN_INTERFACE
5472
5473 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5474 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5475 ID3D12CommandSignature * This,
5476 REFIID riid,
5477 _COM_Outptr_ void **ppvObject);
5478
5479 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5480 ULONG ( STDMETHODCALLTYPE *AddRef )(
5481 ID3D12CommandSignature * This);
5482
5483 DECLSPEC_XFGVIRT(IUnknown, Release)
5484 ULONG ( STDMETHODCALLTYPE *Release )(
5485 ID3D12CommandSignature * This);
5486
5487 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5488 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5489 ID3D12CommandSignature * This,
5490 _In_ REFGUID guid,
5491 _Inout_ UINT *pDataSize,
5492 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5493
5494 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5495 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5496 ID3D12CommandSignature * This,
5497 _In_ REFGUID guid,
5498 _In_ UINT DataSize,
5499 _In_reads_bytes_opt_( DataSize ) const void *pData);
5500
5501 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5502 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5503 ID3D12CommandSignature * This,
5504 _In_ REFGUID guid,
5505 _In_opt_ const IUnknown *pData);
5506
5507 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5508 HRESULT ( STDMETHODCALLTYPE *SetName )(
5509 ID3D12CommandSignature * This,
5510 _In_z_ LPCWSTR Name);
5511
5512 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5513 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5514 ID3D12CommandSignature * This,
5515 REFIID riid,
5516 _COM_Outptr_opt_ void **ppvDevice);
5517
5518 END_INTERFACE
5519 } ID3D12CommandSignatureVtbl;
5520
5521 interface ID3D12CommandSignature
5522 {
5523 CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl;
5524 };
5525
5526
5527
5528#ifdef COBJMACROS
5529
5530
5531#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \
5532 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5533
5534#define ID3D12CommandSignature_AddRef(This) \
5535 ( (This)->lpVtbl -> AddRef(This) )
5536
5537#define ID3D12CommandSignature_Release(This) \
5538 ( (This)->lpVtbl -> Release(This) )
5539
5540
5541#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \
5542 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5543
5544#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \
5545 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5546
5547#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \
5548 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5549
5550#define ID3D12CommandSignature_SetName(This,Name) \
5551 ( (This)->lpVtbl -> SetName(This,Name) )
5552
5553
5554#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \
5555 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5556
5557
5558
5559#endif /* COBJMACROS */
5560
5561
5562#endif /* C style interface */
5563
5564
5565
5566
5567#endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
5568
5569
5570#ifndef __ID3D12CommandList_INTERFACE_DEFINED__
5571#define __ID3D12CommandList_INTERFACE_DEFINED__
5572
5573/* interface ID3D12CommandList */
5574/* [unique][local][object][uuid] */
5575
5576
5577EXTERN_C const IID IID_ID3D12CommandList;
5578
5579#if defined(__cplusplus) && !defined(CINTERFACE)
5580
5581 MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
5582 ID3D12CommandList : public ID3D12DeviceChild
5583 {
5584 public:
5585 virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0;
5586
5587 };
5588
5589
5590#else /* C style interface */
5591
5592 typedef struct ID3D12CommandListVtbl
5593 {
5594 BEGIN_INTERFACE
5595
5596 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5597 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5598 ID3D12CommandList * This,
5599 REFIID riid,
5600 _COM_Outptr_ void **ppvObject);
5601
5602 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5603 ULONG ( STDMETHODCALLTYPE *AddRef )(
5604 ID3D12CommandList * This);
5605
5606 DECLSPEC_XFGVIRT(IUnknown, Release)
5607 ULONG ( STDMETHODCALLTYPE *Release )(
5608 ID3D12CommandList * This);
5609
5610 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5611 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5612 ID3D12CommandList * This,
5613 _In_ REFGUID guid,
5614 _Inout_ UINT *pDataSize,
5615 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5616
5617 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5618 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5619 ID3D12CommandList * This,
5620 _In_ REFGUID guid,
5621 _In_ UINT DataSize,
5622 _In_reads_bytes_opt_( DataSize ) const void *pData);
5623
5624 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5625 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5626 ID3D12CommandList * This,
5627 _In_ REFGUID guid,
5628 _In_opt_ const IUnknown *pData);
5629
5630 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5631 HRESULT ( STDMETHODCALLTYPE *SetName )(
5632 ID3D12CommandList * This,
5633 _In_z_ LPCWSTR Name);
5634
5635 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5636 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5637 ID3D12CommandList * This,
5638 REFIID riid,
5639 _COM_Outptr_opt_ void **ppvDevice);
5640
5641 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5642 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5643 ID3D12CommandList * This);
5644
5645 END_INTERFACE
5646 } ID3D12CommandListVtbl;
5647
5648 interface ID3D12CommandList
5649 {
5650 CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
5651 };
5652
5653
5654
5655#ifdef COBJMACROS
5656
5657
5658#define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \
5659 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5660
5661#define ID3D12CommandList_AddRef(This) \
5662 ( (This)->lpVtbl -> AddRef(This) )
5663
5664#define ID3D12CommandList_Release(This) \
5665 ( (This)->lpVtbl -> Release(This) )
5666
5667
5668#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \
5669 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5670
5671#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \
5672 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5673
5674#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \
5675 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5676
5677#define ID3D12CommandList_SetName(This,Name) \
5678 ( (This)->lpVtbl -> SetName(This,Name) )
5679
5680
5681#define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \
5682 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5683
5684
5685#define ID3D12CommandList_GetType(This) \
5686 ( (This)->lpVtbl -> GetType(This) )
5687
5688#endif /* COBJMACROS */
5689
5690
5691#endif /* C style interface */
5692
5693
5694
5695
5696#endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
5697
5698
5699#ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
5700#define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
5701
5702/* interface ID3D12GraphicsCommandList */
5703/* [unique][local][object][uuid] */
5704
5705
5706EXTERN_C const IID IID_ID3D12GraphicsCommandList;
5707
5708#if defined(__cplusplus) && !defined(CINTERFACE)
5709
5710 MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
5711 ID3D12GraphicsCommandList : public ID3D12CommandList
5712 {
5713 public:
5714 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
5715
5716 virtual HRESULT STDMETHODCALLTYPE Reset(
5717 _In_ ID3D12CommandAllocator *pAllocator,
5718 _In_opt_ ID3D12PipelineState *pInitialState) = 0;
5719
5720 virtual void STDMETHODCALLTYPE ClearState(
5721 _In_opt_ ID3D12PipelineState *pPipelineState) = 0;
5722
5723 virtual void STDMETHODCALLTYPE DrawInstanced(
5724 _In_ UINT VertexCountPerInstance,
5725 _In_ UINT InstanceCount,
5726 _In_ UINT StartVertexLocation,
5727 _In_ UINT StartInstanceLocation) = 0;
5728
5729 virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
5730 _In_ UINT IndexCountPerInstance,
5731 _In_ UINT InstanceCount,
5732 _In_ UINT StartIndexLocation,
5733 _In_ INT BaseVertexLocation,
5734 _In_ UINT StartInstanceLocation) = 0;
5735
5736 virtual void STDMETHODCALLTYPE Dispatch(
5737 _In_ UINT ThreadGroupCountX,
5738 _In_ UINT ThreadGroupCountY,
5739 _In_ UINT ThreadGroupCountZ) = 0;
5740
5741 virtual void STDMETHODCALLTYPE CopyBufferRegion(
5742 _In_ ID3D12Resource *pDstBuffer,
5743 UINT64 DstOffset,
5744 _In_ ID3D12Resource *pSrcBuffer,
5745 UINT64 SrcOffset,
5746 UINT64 NumBytes) = 0;
5747
5748 virtual void STDMETHODCALLTYPE CopyTextureRegion(
5749 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
5750 UINT DstX,
5751 UINT DstY,
5752 UINT DstZ,
5753 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
5754 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
5755
5756 virtual void STDMETHODCALLTYPE CopyResource(
5757 _In_ ID3D12Resource *pDstResource,
5758 _In_ ID3D12Resource *pSrcResource) = 0;
5759
5760 virtual void STDMETHODCALLTYPE CopyTiles(
5761 _In_ ID3D12Resource *pTiledResource,
5762 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
5763 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
5764 _In_ ID3D12Resource *pBuffer,
5765 UINT64 BufferStartOffsetInBytes,
5766 D3D12_TILE_COPY_FLAGS Flags) = 0;
5767
5768 virtual void STDMETHODCALLTYPE ResolveSubresource(
5769 _In_ ID3D12Resource *pDstResource,
5770 _In_ UINT DstSubresource,
5771 _In_ ID3D12Resource *pSrcResource,
5772 _In_ UINT SrcSubresource,
5773 _In_ DXGI_FORMAT Format) = 0;
5774
5775 virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
5776 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
5777
5778 virtual void STDMETHODCALLTYPE RSSetViewports(
5779 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
5780 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
5781
5782 virtual void STDMETHODCALLTYPE RSSetScissorRects(
5783 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
5784 _In_reads_( NumRects) const D3D12_RECT *pRects) = 0;
5785
5786 virtual void STDMETHODCALLTYPE OMSetBlendFactor(
5787 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]) = 0;
5788
5789 virtual void STDMETHODCALLTYPE OMSetStencilRef(
5790 _In_ UINT StencilRef) = 0;
5791
5792 virtual void STDMETHODCALLTYPE SetPipelineState(
5793 _In_ ID3D12PipelineState *pPipelineState) = 0;
5794
5795 virtual void STDMETHODCALLTYPE ResourceBarrier(
5796 _In_ UINT NumBarriers,
5797 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
5798
5799 virtual void STDMETHODCALLTYPE ExecuteBundle(
5800 _In_ ID3D12GraphicsCommandList *pCommandList) = 0;
5801
5802 virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
5803 _In_ UINT NumDescriptorHeaps,
5804 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
5805
5806 virtual void STDMETHODCALLTYPE SetComputeRootSignature(
5807 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
5808
5809 virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
5810 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
5811
5812 virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
5813 _In_ UINT RootParameterIndex,
5814 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
5815
5816 virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
5817 _In_ UINT RootParameterIndex,
5818 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
5819
5820 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
5821 _In_ UINT RootParameterIndex,
5822 _In_ UINT SrcData,
5823 _In_ UINT DestOffsetIn32BitValues) = 0;
5824
5825 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
5826 _In_ UINT RootParameterIndex,
5827 _In_ UINT SrcData,
5828 _In_ UINT DestOffsetIn32BitValues) = 0;
5829
5830 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
5831 _In_ UINT RootParameterIndex,
5832 _In_ UINT Num32BitValuesToSet,
5833 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
5834 _In_ UINT DestOffsetIn32BitValues) = 0;
5835
5836 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
5837 _In_ UINT RootParameterIndex,
5838 _In_ UINT Num32BitValuesToSet,
5839 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
5840 _In_ UINT DestOffsetIn32BitValues) = 0;
5841
5842 virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
5843 _In_ UINT RootParameterIndex,
5844 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5845
5846 virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
5847 _In_ UINT RootParameterIndex,
5848 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5849
5850 virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
5851 _In_ UINT RootParameterIndex,
5852 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5853
5854 virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
5855 _In_ UINT RootParameterIndex,
5856 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5857
5858 virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
5859 _In_ UINT RootParameterIndex,
5860 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5861
5862 virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
5863 _In_ UINT RootParameterIndex,
5864 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5865
5866 virtual void STDMETHODCALLTYPE IASetIndexBuffer(
5867 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
5868
5869 virtual void STDMETHODCALLTYPE IASetVertexBuffers(
5870 _In_ UINT StartSlot,
5871 _In_ UINT NumViews,
5872 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
5873
5874 virtual void STDMETHODCALLTYPE SOSetTargets(
5875 _In_ UINT StartSlot,
5876 _In_ UINT NumViews,
5877 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
5878
5879 virtual void STDMETHODCALLTYPE OMSetRenderTargets(
5880 _In_ UINT NumRenderTargetDescriptors,
5881 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
5882 _In_ BOOL RTsSingleHandleToDescriptorRange,
5883 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
5884
5885 virtual void STDMETHODCALLTYPE ClearDepthStencilView(
5886 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
5887 _In_ D3D12_CLEAR_FLAGS ClearFlags,
5888 _In_ FLOAT Depth,
5889 _In_ UINT8 Stencil,
5890 _In_ UINT NumRects,
5891 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5892
5893 virtual void STDMETHODCALLTYPE ClearRenderTargetView(
5894 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
5895 _In_ const FLOAT ColorRGBA[ 4 ],
5896 _In_ UINT NumRects,
5897 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5898
5899 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
5900 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
5901 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
5902 _In_ ID3D12Resource *pResource,
5903 _In_ const UINT Values[ 4 ],
5904 _In_ UINT NumRects,
5905 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5906
5907 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
5908 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
5909 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
5910 _In_ ID3D12Resource *pResource,
5911 _In_ const FLOAT Values[ 4 ],
5912 _In_ UINT NumRects,
5913 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5914
5915 virtual void STDMETHODCALLTYPE DiscardResource(
5916 _In_ ID3D12Resource *pResource,
5917 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
5918
5919 virtual void STDMETHODCALLTYPE BeginQuery(
5920 _In_ ID3D12QueryHeap *pQueryHeap,
5921 _In_ D3D12_QUERY_TYPE Type,
5922 _In_ UINT Index) = 0;
5923
5924 virtual void STDMETHODCALLTYPE EndQuery(
5925 _In_ ID3D12QueryHeap *pQueryHeap,
5926 _In_ D3D12_QUERY_TYPE Type,
5927 _In_ UINT Index) = 0;
5928
5929 virtual void STDMETHODCALLTYPE ResolveQueryData(
5930 _In_ ID3D12QueryHeap *pQueryHeap,
5931 _In_ D3D12_QUERY_TYPE Type,
5932 _In_ UINT StartIndex,
5933 _In_ UINT NumQueries,
5934 _In_ ID3D12Resource *pDestinationBuffer,
5935 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
5936
5937 virtual void STDMETHODCALLTYPE SetPredication(
5938 _In_opt_ ID3D12Resource *pBuffer,
5939 _In_ UINT64 AlignedBufferOffset,
5940 _In_ D3D12_PREDICATION_OP Operation) = 0;
5941
5942 virtual void STDMETHODCALLTYPE SetMarker(
5943 UINT Metadata,
5944 _In_reads_bytes_opt_(Size) const void *pData,
5945 UINT Size) = 0;
5946
5947 virtual void STDMETHODCALLTYPE BeginEvent(
5948 UINT Metadata,
5949 _In_reads_bytes_opt_(Size) const void *pData,
5950 UINT Size) = 0;
5951
5952 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
5953
5954 virtual void STDMETHODCALLTYPE ExecuteIndirect(
5955 _In_ ID3D12CommandSignature *pCommandSignature,
5956 _In_ UINT MaxCommandCount,
5957 _In_ ID3D12Resource *pArgumentBuffer,
5958 _In_ UINT64 ArgumentBufferOffset,
5959 _In_opt_ ID3D12Resource *pCountBuffer,
5960 _In_ UINT64 CountBufferOffset) = 0;
5961
5962 };
5963
5964
5965#else /* C style interface */
5966
5967 typedef struct ID3D12GraphicsCommandListVtbl
5968 {
5969 BEGIN_INTERFACE
5970
5971 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5972 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5973 ID3D12GraphicsCommandList * This,
5974 REFIID riid,
5975 _COM_Outptr_ void **ppvObject);
5976
5977 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5978 ULONG ( STDMETHODCALLTYPE *AddRef )(
5979 ID3D12GraphicsCommandList * This);
5980
5981 DECLSPEC_XFGVIRT(IUnknown, Release)
5982 ULONG ( STDMETHODCALLTYPE *Release )(
5983 ID3D12GraphicsCommandList * This);
5984
5985 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5986 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5987 ID3D12GraphicsCommandList * This,
5988 _In_ REFGUID guid,
5989 _Inout_ UINT *pDataSize,
5990 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5991
5992 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5993 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5994 ID3D12GraphicsCommandList * This,
5995 _In_ REFGUID guid,
5996 _In_ UINT DataSize,
5997 _In_reads_bytes_opt_( DataSize ) const void *pData);
5998
5999 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6000 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6001 ID3D12GraphicsCommandList * This,
6002 _In_ REFGUID guid,
6003 _In_opt_ const IUnknown *pData);
6004
6005 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6006 HRESULT ( STDMETHODCALLTYPE *SetName )(
6007 ID3D12GraphicsCommandList * This,
6008 _In_z_ LPCWSTR Name);
6009
6010 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6011 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6012 ID3D12GraphicsCommandList * This,
6013 REFIID riid,
6014 _COM_Outptr_opt_ void **ppvDevice);
6015
6016 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6017 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6018 ID3D12GraphicsCommandList * This);
6019
6020 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6021 HRESULT ( STDMETHODCALLTYPE *Close )(
6022 ID3D12GraphicsCommandList * This);
6023
6024 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6025 HRESULT ( STDMETHODCALLTYPE *Reset )(
6026 ID3D12GraphicsCommandList * This,
6027 _In_ ID3D12CommandAllocator *pAllocator,
6028 _In_opt_ ID3D12PipelineState *pInitialState);
6029
6030 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6031 void ( STDMETHODCALLTYPE *ClearState )(
6032 ID3D12GraphicsCommandList * This,
6033 _In_opt_ ID3D12PipelineState *pPipelineState);
6034
6035 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6036 void ( STDMETHODCALLTYPE *DrawInstanced )(
6037 ID3D12GraphicsCommandList * This,
6038 _In_ UINT VertexCountPerInstance,
6039 _In_ UINT InstanceCount,
6040 _In_ UINT StartVertexLocation,
6041 _In_ UINT StartInstanceLocation);
6042
6043 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6044 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6045 ID3D12GraphicsCommandList * This,
6046 _In_ UINT IndexCountPerInstance,
6047 _In_ UINT InstanceCount,
6048 _In_ UINT StartIndexLocation,
6049 _In_ INT BaseVertexLocation,
6050 _In_ UINT StartInstanceLocation);
6051
6052 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6053 void ( STDMETHODCALLTYPE *Dispatch )(
6054 ID3D12GraphicsCommandList * This,
6055 _In_ UINT ThreadGroupCountX,
6056 _In_ UINT ThreadGroupCountY,
6057 _In_ UINT ThreadGroupCountZ);
6058
6059 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6060 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6061 ID3D12GraphicsCommandList * This,
6062 _In_ ID3D12Resource *pDstBuffer,
6063 UINT64 DstOffset,
6064 _In_ ID3D12Resource *pSrcBuffer,
6065 UINT64 SrcOffset,
6066 UINT64 NumBytes);
6067
6068 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6069 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6070 ID3D12GraphicsCommandList * This,
6071 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6072 UINT DstX,
6073 UINT DstY,
6074 UINT DstZ,
6075 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6076 _In_opt_ const D3D12_BOX *pSrcBox);
6077
6078 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6079 void ( STDMETHODCALLTYPE *CopyResource )(
6080 ID3D12GraphicsCommandList * This,
6081 _In_ ID3D12Resource *pDstResource,
6082 _In_ ID3D12Resource *pSrcResource);
6083
6084 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6085 void ( STDMETHODCALLTYPE *CopyTiles )(
6086 ID3D12GraphicsCommandList * This,
6087 _In_ ID3D12Resource *pTiledResource,
6088 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6089 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6090 _In_ ID3D12Resource *pBuffer,
6091 UINT64 BufferStartOffsetInBytes,
6092 D3D12_TILE_COPY_FLAGS Flags);
6093
6094 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6095 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6096 ID3D12GraphicsCommandList * This,
6097 _In_ ID3D12Resource *pDstResource,
6098 _In_ UINT DstSubresource,
6099 _In_ ID3D12Resource *pSrcResource,
6100 _In_ UINT SrcSubresource,
6101 _In_ DXGI_FORMAT Format);
6102
6103 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6104 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6105 ID3D12GraphicsCommandList * This,
6106 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6107
6108 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6109 void ( STDMETHODCALLTYPE *RSSetViewports )(
6110 ID3D12GraphicsCommandList * This,
6111 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6112 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6113
6114 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6115 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6116 ID3D12GraphicsCommandList * This,
6117 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6118 _In_reads_( NumRects) const D3D12_RECT *pRects);
6119
6120 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6121 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6122 ID3D12GraphicsCommandList * This,
6123 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6124
6125 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6126 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6127 ID3D12GraphicsCommandList * This,
6128 _In_ UINT StencilRef);
6129
6130 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6131 void ( STDMETHODCALLTYPE *SetPipelineState )(
6132 ID3D12GraphicsCommandList * This,
6133 _In_ ID3D12PipelineState *pPipelineState);
6134
6135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6136 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6137 ID3D12GraphicsCommandList * This,
6138 _In_ UINT NumBarriers,
6139 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6140
6141 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6142 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6143 ID3D12GraphicsCommandList * This,
6144 _In_ ID3D12GraphicsCommandList *pCommandList);
6145
6146 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6147 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6148 ID3D12GraphicsCommandList * This,
6149 _In_ UINT NumDescriptorHeaps,
6150 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6151
6152 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6153 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6154 ID3D12GraphicsCommandList * This,
6155 _In_opt_ ID3D12RootSignature *pRootSignature);
6156
6157 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
6158 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
6159 ID3D12GraphicsCommandList * This,
6160 _In_opt_ ID3D12RootSignature *pRootSignature);
6161
6162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
6163 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
6164 ID3D12GraphicsCommandList * This,
6165 _In_ UINT RootParameterIndex,
6166 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6167
6168 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
6169 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
6170 ID3D12GraphicsCommandList * This,
6171 _In_ UINT RootParameterIndex,
6172 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6173
6174 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
6175 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
6176 ID3D12GraphicsCommandList * This,
6177 _In_ UINT RootParameterIndex,
6178 _In_ UINT SrcData,
6179 _In_ UINT DestOffsetIn32BitValues);
6180
6181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
6182 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
6183 ID3D12GraphicsCommandList * This,
6184 _In_ UINT RootParameterIndex,
6185 _In_ UINT SrcData,
6186 _In_ UINT DestOffsetIn32BitValues);
6187
6188 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
6189 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
6190 ID3D12GraphicsCommandList * This,
6191 _In_ UINT RootParameterIndex,
6192 _In_ UINT Num32BitValuesToSet,
6193 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6194 _In_ UINT DestOffsetIn32BitValues);
6195
6196 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
6197 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
6198 ID3D12GraphicsCommandList * This,
6199 _In_ UINT RootParameterIndex,
6200 _In_ UINT Num32BitValuesToSet,
6201 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6202 _In_ UINT DestOffsetIn32BitValues);
6203
6204 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
6205 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
6206 ID3D12GraphicsCommandList * This,
6207 _In_ UINT RootParameterIndex,
6208 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6209
6210 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
6211 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
6212 ID3D12GraphicsCommandList * This,
6213 _In_ UINT RootParameterIndex,
6214 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6215
6216 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
6217 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
6218 ID3D12GraphicsCommandList * This,
6219 _In_ UINT RootParameterIndex,
6220 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6221
6222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
6223 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
6224 ID3D12GraphicsCommandList * This,
6225 _In_ UINT RootParameterIndex,
6226 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6227
6228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
6229 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
6230 ID3D12GraphicsCommandList * This,
6231 _In_ UINT RootParameterIndex,
6232 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6233
6234 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
6235 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
6236 ID3D12GraphicsCommandList * This,
6237 _In_ UINT RootParameterIndex,
6238 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6239
6240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
6241 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
6242 ID3D12GraphicsCommandList * This,
6243 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
6244
6245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
6246 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
6247 ID3D12GraphicsCommandList * This,
6248 _In_ UINT StartSlot,
6249 _In_ UINT NumViews,
6250 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
6251
6252 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
6253 void ( STDMETHODCALLTYPE *SOSetTargets )(
6254 ID3D12GraphicsCommandList * This,
6255 _In_ UINT StartSlot,
6256 _In_ UINT NumViews,
6257 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
6258
6259 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
6260 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
6261 ID3D12GraphicsCommandList * This,
6262 _In_ UINT NumRenderTargetDescriptors,
6263 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6264 _In_ BOOL RTsSingleHandleToDescriptorRange,
6265 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
6266
6267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
6268 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
6269 ID3D12GraphicsCommandList * This,
6270 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6271 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6272 _In_ FLOAT Depth,
6273 _In_ UINT8 Stencil,
6274 _In_ UINT NumRects,
6275 _In_reads_(NumRects) const D3D12_RECT *pRects);
6276
6277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
6278 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
6279 ID3D12GraphicsCommandList * This,
6280 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6281 _In_ const FLOAT ColorRGBA[ 4 ],
6282 _In_ UINT NumRects,
6283 _In_reads_(NumRects) const D3D12_RECT *pRects);
6284
6285 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
6286 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
6287 ID3D12GraphicsCommandList * This,
6288 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6289 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6290 _In_ ID3D12Resource *pResource,
6291 _In_ const UINT Values[ 4 ],
6292 _In_ UINT NumRects,
6293 _In_reads_(NumRects) const D3D12_RECT *pRects);
6294
6295 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
6296 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
6297 ID3D12GraphicsCommandList * This,
6298 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6299 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6300 _In_ ID3D12Resource *pResource,
6301 _In_ const FLOAT Values[ 4 ],
6302 _In_ UINT NumRects,
6303 _In_reads_(NumRects) const D3D12_RECT *pRects);
6304
6305 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
6306 void ( STDMETHODCALLTYPE *DiscardResource )(
6307 ID3D12GraphicsCommandList * This,
6308 _In_ ID3D12Resource *pResource,
6309 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6310
6311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
6312 void ( STDMETHODCALLTYPE *BeginQuery )(
6313 ID3D12GraphicsCommandList * This,
6314 _In_ ID3D12QueryHeap *pQueryHeap,
6315 _In_ D3D12_QUERY_TYPE Type,
6316 _In_ UINT Index);
6317
6318 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
6319 void ( STDMETHODCALLTYPE *EndQuery )(
6320 ID3D12GraphicsCommandList * This,
6321 _In_ ID3D12QueryHeap *pQueryHeap,
6322 _In_ D3D12_QUERY_TYPE Type,
6323 _In_ UINT Index);
6324
6325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
6326 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6327 ID3D12GraphicsCommandList * This,
6328 _In_ ID3D12QueryHeap *pQueryHeap,
6329 _In_ D3D12_QUERY_TYPE Type,
6330 _In_ UINT StartIndex,
6331 _In_ UINT NumQueries,
6332 _In_ ID3D12Resource *pDestinationBuffer,
6333 _In_ UINT64 AlignedDestinationBufferOffset);
6334
6335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
6336 void ( STDMETHODCALLTYPE *SetPredication )(
6337 ID3D12GraphicsCommandList * This,
6338 _In_opt_ ID3D12Resource *pBuffer,
6339 _In_ UINT64 AlignedBufferOffset,
6340 _In_ D3D12_PREDICATION_OP Operation);
6341
6342 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
6343 void ( STDMETHODCALLTYPE *SetMarker )(
6344 ID3D12GraphicsCommandList * This,
6345 UINT Metadata,
6346 _In_reads_bytes_opt_(Size) const void *pData,
6347 UINT Size);
6348
6349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
6350 void ( STDMETHODCALLTYPE *BeginEvent )(
6351 ID3D12GraphicsCommandList * This,
6352 UINT Metadata,
6353 _In_reads_bytes_opt_(Size) const void *pData,
6354 UINT Size);
6355
6356 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
6357 void ( STDMETHODCALLTYPE *EndEvent )(
6358 ID3D12GraphicsCommandList * This);
6359
6360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
6361 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
6362 ID3D12GraphicsCommandList * This,
6363 _In_ ID3D12CommandSignature *pCommandSignature,
6364 _In_ UINT MaxCommandCount,
6365 _In_ ID3D12Resource *pArgumentBuffer,
6366 _In_ UINT64 ArgumentBufferOffset,
6367 _In_opt_ ID3D12Resource *pCountBuffer,
6368 _In_ UINT64 CountBufferOffset);
6369
6370 END_INTERFACE
6371 } ID3D12GraphicsCommandListVtbl;
6372
6373 interface ID3D12GraphicsCommandList
6374 {
6375 CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl;
6376 };
6377
6378
6379
6380#ifdef COBJMACROS
6381
6382
6383#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \
6384 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6385
6386#define ID3D12GraphicsCommandList_AddRef(This) \
6387 ( (This)->lpVtbl -> AddRef(This) )
6388
6389#define ID3D12GraphicsCommandList_Release(This) \
6390 ( (This)->lpVtbl -> Release(This) )
6391
6392
6393#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \
6394 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6395
6396#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \
6397 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6398
6399#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \
6400 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6401
6402#define ID3D12GraphicsCommandList_SetName(This,Name) \
6403 ( (This)->lpVtbl -> SetName(This,Name) )
6404
6405
6406#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \
6407 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6408
6409
6410#define ID3D12GraphicsCommandList_GetType(This) \
6411 ( (This)->lpVtbl -> GetType(This) )
6412
6413
6414#define ID3D12GraphicsCommandList_Close(This) \
6415 ( (This)->lpVtbl -> Close(This) )
6416
6417#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \
6418 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
6419
6420#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \
6421 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
6422
6423#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
6424 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
6425
6426#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
6427 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
6428
6429#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
6430 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
6431
6432#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
6433 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
6434
6435#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
6436 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
6437
6438#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \
6439 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
6440
6441#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
6442 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
6443
6444#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
6445 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
6446
6447#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \
6448 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
6449
6450#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \
6451 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
6452
6453#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \
6454 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
6455
6456#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \
6457 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
6458
6459#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \
6460 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
6461
6462#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \
6463 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
6464
6465#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
6466 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
6467
6468#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \
6469 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
6470
6471#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
6472 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
6473
6474#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \
6475 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
6476
6477#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \
6478 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
6479
6480#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
6481 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
6482
6483#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
6484 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
6485
6486#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
6487 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
6488
6489#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
6490 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
6491
6492#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
6493 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
6494
6495#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
6496 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
6497
6498#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
6499 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
6500
6501#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
6502 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
6503
6504#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
6505 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
6506
6507#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
6508 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
6509
6510#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
6511 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
6512
6513#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
6514 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
6515
6516#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \
6517 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
6518
6519#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
6520 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
6521
6522#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \
6523 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
6524
6525#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
6526 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
6527
6528#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
6529 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
6530
6531#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
6532 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
6533
6534#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
6535 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
6536
6537#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
6538 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
6539
6540#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \
6541 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
6542
6543#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
6544 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
6545
6546#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \
6547 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
6548
6549#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
6550 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
6551
6552#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
6553 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
6554
6555#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \
6556 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
6557
6558#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \
6559 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
6560
6561#define ID3D12GraphicsCommandList_EndEvent(This) \
6562 ( (This)->lpVtbl -> EndEvent(This) )
6563
6564#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
6565 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
6566
6567#endif /* COBJMACROS */
6568
6569
6570#endif /* C style interface */
6571
6572
6573
6574
6575#endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
6576
6577
6578#ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
6579#define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
6580
6581/* interface ID3D12GraphicsCommandList1 */
6582/* [unique][local][object][uuid] */
6583
6584
6585EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
6586
6587#if defined(__cplusplus) && !defined(CINTERFACE)
6588
6589 MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
6590 ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
6591 {
6592 public:
6593 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
6594 _In_ ID3D12Resource *pDstBuffer,
6595 UINT64 DstOffset,
6596 _In_ ID3D12Resource *pSrcBuffer,
6597 UINT64 SrcOffset,
6598 UINT Dependencies,
6599 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
6600 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
6601
6602 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
6603 _In_ ID3D12Resource *pDstBuffer,
6604 UINT64 DstOffset,
6605 _In_ ID3D12Resource *pSrcBuffer,
6606 UINT64 SrcOffset,
6607 UINT Dependencies,
6608 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
6609 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
6610
6611 virtual void STDMETHODCALLTYPE OMSetDepthBounds(
6612 _In_ FLOAT Min,
6613 _In_ FLOAT Max) = 0;
6614
6615 virtual void STDMETHODCALLTYPE SetSamplePositions(
6616 _In_ UINT NumSamplesPerPixel,
6617 _In_ UINT NumPixels,
6618 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0;
6619
6620 virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
6621 _In_ ID3D12Resource *pDstResource,
6622 _In_ UINT DstSubresource,
6623 _In_ UINT DstX,
6624 _In_ UINT DstY,
6625 _In_ ID3D12Resource *pSrcResource,
6626 _In_ UINT SrcSubresource,
6627 _In_opt_ D3D12_RECT *pSrcRect,
6628 _In_ DXGI_FORMAT Format,
6629 _In_ D3D12_RESOLVE_MODE ResolveMode) = 0;
6630
6631 virtual void STDMETHODCALLTYPE SetViewInstanceMask(
6632 _In_ UINT Mask) = 0;
6633
6634 };
6635
6636
6637#else /* C style interface */
6638
6639 typedef struct ID3D12GraphicsCommandList1Vtbl
6640 {
6641 BEGIN_INTERFACE
6642
6643 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6644 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6645 ID3D12GraphicsCommandList1 * This,
6646 REFIID riid,
6647 _COM_Outptr_ void **ppvObject);
6648
6649 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6650 ULONG ( STDMETHODCALLTYPE *AddRef )(
6651 ID3D12GraphicsCommandList1 * This);
6652
6653 DECLSPEC_XFGVIRT(IUnknown, Release)
6654 ULONG ( STDMETHODCALLTYPE *Release )(
6655 ID3D12GraphicsCommandList1 * This);
6656
6657 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6658 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6659 ID3D12GraphicsCommandList1 * This,
6660 _In_ REFGUID guid,
6661 _Inout_ UINT *pDataSize,
6662 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6663
6664 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6665 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6666 ID3D12GraphicsCommandList1 * This,
6667 _In_ REFGUID guid,
6668 _In_ UINT DataSize,
6669 _In_reads_bytes_opt_( DataSize ) const void *pData);
6670
6671 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6672 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6673 ID3D12GraphicsCommandList1 * This,
6674 _In_ REFGUID guid,
6675 _In_opt_ const IUnknown *pData);
6676
6677 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6678 HRESULT ( STDMETHODCALLTYPE *SetName )(
6679 ID3D12GraphicsCommandList1 * This,
6680 _In_z_ LPCWSTR Name);
6681
6682 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6683 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6684 ID3D12GraphicsCommandList1 * This,
6685 REFIID riid,
6686 _COM_Outptr_opt_ void **ppvDevice);
6687
6688 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6689 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6690 ID3D12GraphicsCommandList1 * This);
6691
6692 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6693 HRESULT ( STDMETHODCALLTYPE *Close )(
6694 ID3D12GraphicsCommandList1 * This);
6695
6696 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6697 HRESULT ( STDMETHODCALLTYPE *Reset )(
6698 ID3D12GraphicsCommandList1 * This,
6699 _In_ ID3D12CommandAllocator *pAllocator,
6700 _In_opt_ ID3D12PipelineState *pInitialState);
6701
6702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6703 void ( STDMETHODCALLTYPE *ClearState )(
6704 ID3D12GraphicsCommandList1 * This,
6705 _In_opt_ ID3D12PipelineState *pPipelineState);
6706
6707 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6708 void ( STDMETHODCALLTYPE *DrawInstanced )(
6709 ID3D12GraphicsCommandList1 * This,
6710 _In_ UINT VertexCountPerInstance,
6711 _In_ UINT InstanceCount,
6712 _In_ UINT StartVertexLocation,
6713 _In_ UINT StartInstanceLocation);
6714
6715 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6716 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6717 ID3D12GraphicsCommandList1 * This,
6718 _In_ UINT IndexCountPerInstance,
6719 _In_ UINT InstanceCount,
6720 _In_ UINT StartIndexLocation,
6721 _In_ INT BaseVertexLocation,
6722 _In_ UINT StartInstanceLocation);
6723
6724 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6725 void ( STDMETHODCALLTYPE *Dispatch )(
6726 ID3D12GraphicsCommandList1 * This,
6727 _In_ UINT ThreadGroupCountX,
6728 _In_ UINT ThreadGroupCountY,
6729 _In_ UINT ThreadGroupCountZ);
6730
6731 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6732 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6733 ID3D12GraphicsCommandList1 * This,
6734 _In_ ID3D12Resource *pDstBuffer,
6735 UINT64 DstOffset,
6736 _In_ ID3D12Resource *pSrcBuffer,
6737 UINT64 SrcOffset,
6738 UINT64 NumBytes);
6739
6740 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6741 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6742 ID3D12GraphicsCommandList1 * This,
6743 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6744 UINT DstX,
6745 UINT DstY,
6746 UINT DstZ,
6747 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6748 _In_opt_ const D3D12_BOX *pSrcBox);
6749
6750 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6751 void ( STDMETHODCALLTYPE *CopyResource )(
6752 ID3D12GraphicsCommandList1 * This,
6753 _In_ ID3D12Resource *pDstResource,
6754 _In_ ID3D12Resource *pSrcResource);
6755
6756 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6757 void ( STDMETHODCALLTYPE *CopyTiles )(
6758 ID3D12GraphicsCommandList1 * This,
6759 _In_ ID3D12Resource *pTiledResource,
6760 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6761 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6762 _In_ ID3D12Resource *pBuffer,
6763 UINT64 BufferStartOffsetInBytes,
6764 D3D12_TILE_COPY_FLAGS Flags);
6765
6766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6767 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6768 ID3D12GraphicsCommandList1 * This,
6769 _In_ ID3D12Resource *pDstResource,
6770 _In_ UINT DstSubresource,
6771 _In_ ID3D12Resource *pSrcResource,
6772 _In_ UINT SrcSubresource,
6773 _In_ DXGI_FORMAT Format);
6774
6775 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6776 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6777 ID3D12GraphicsCommandList1 * This,
6778 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6779
6780 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6781 void ( STDMETHODCALLTYPE *RSSetViewports )(
6782 ID3D12GraphicsCommandList1 * This,
6783 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6784 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6785
6786 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6787 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6788 ID3D12GraphicsCommandList1 * This,
6789 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6790 _In_reads_( NumRects) const D3D12_RECT *pRects);
6791
6792 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6793 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6794 ID3D12GraphicsCommandList1 * This,
6795 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6796
6797 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6798 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6799 ID3D12GraphicsCommandList1 * This,
6800 _In_ UINT StencilRef);
6801
6802 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6803 void ( STDMETHODCALLTYPE *SetPipelineState )(
6804 ID3D12GraphicsCommandList1 * This,
6805 _In_ ID3D12PipelineState *pPipelineState);
6806
6807 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6808 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6809 ID3D12GraphicsCommandList1 * This,
6810 _In_ UINT NumBarriers,
6811 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6812
6813 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6814 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6815 ID3D12GraphicsCommandList1 * This,
6816 _In_ ID3D12GraphicsCommandList *pCommandList);
6817
6818 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6819 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6820 ID3D12GraphicsCommandList1 * This,
6821 _In_ UINT NumDescriptorHeaps,
6822 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6823
6824 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6825 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6826 ID3D12GraphicsCommandList1 * This,
6827 _In_opt_ ID3D12RootSignature *pRootSignature);
6828
6829 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
6830 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
6831 ID3D12GraphicsCommandList1 * This,
6832 _In_opt_ ID3D12RootSignature *pRootSignature);
6833
6834 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
6835 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
6836 ID3D12GraphicsCommandList1 * This,
6837 _In_ UINT RootParameterIndex,
6838 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6839
6840 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
6841 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
6842 ID3D12GraphicsCommandList1 * This,
6843 _In_ UINT RootParameterIndex,
6844 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6845
6846 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
6847 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
6848 ID3D12GraphicsCommandList1 * This,
6849 _In_ UINT RootParameterIndex,
6850 _In_ UINT SrcData,
6851 _In_ UINT DestOffsetIn32BitValues);
6852
6853 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
6854 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
6855 ID3D12GraphicsCommandList1 * This,
6856 _In_ UINT RootParameterIndex,
6857 _In_ UINT SrcData,
6858 _In_ UINT DestOffsetIn32BitValues);
6859
6860 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
6861 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
6862 ID3D12GraphicsCommandList1 * This,
6863 _In_ UINT RootParameterIndex,
6864 _In_ UINT Num32BitValuesToSet,
6865 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6866 _In_ UINT DestOffsetIn32BitValues);
6867
6868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
6869 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
6870 ID3D12GraphicsCommandList1 * This,
6871 _In_ UINT RootParameterIndex,
6872 _In_ UINT Num32BitValuesToSet,
6873 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6874 _In_ UINT DestOffsetIn32BitValues);
6875
6876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
6877 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
6878 ID3D12GraphicsCommandList1 * This,
6879 _In_ UINT RootParameterIndex,
6880 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6881
6882 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
6883 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
6884 ID3D12GraphicsCommandList1 * This,
6885 _In_ UINT RootParameterIndex,
6886 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6887
6888 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
6889 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
6890 ID3D12GraphicsCommandList1 * This,
6891 _In_ UINT RootParameterIndex,
6892 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6893
6894 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
6895 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
6896 ID3D12GraphicsCommandList1 * This,
6897 _In_ UINT RootParameterIndex,
6898 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6899
6900 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
6901 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
6902 ID3D12GraphicsCommandList1 * This,
6903 _In_ UINT RootParameterIndex,
6904 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6905
6906 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
6907 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
6908 ID3D12GraphicsCommandList1 * This,
6909 _In_ UINT RootParameterIndex,
6910 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6911
6912 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
6913 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
6914 ID3D12GraphicsCommandList1 * This,
6915 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
6916
6917 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
6918 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
6919 ID3D12GraphicsCommandList1 * This,
6920 _In_ UINT StartSlot,
6921 _In_ UINT NumViews,
6922 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
6923
6924 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
6925 void ( STDMETHODCALLTYPE *SOSetTargets )(
6926 ID3D12GraphicsCommandList1 * This,
6927 _In_ UINT StartSlot,
6928 _In_ UINT NumViews,
6929 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
6930
6931 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
6932 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
6933 ID3D12GraphicsCommandList1 * This,
6934 _In_ UINT NumRenderTargetDescriptors,
6935 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6936 _In_ BOOL RTsSingleHandleToDescriptorRange,
6937 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
6938
6939 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
6940 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
6941 ID3D12GraphicsCommandList1 * This,
6942 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6943 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6944 _In_ FLOAT Depth,
6945 _In_ UINT8 Stencil,
6946 _In_ UINT NumRects,
6947 _In_reads_(NumRects) const D3D12_RECT *pRects);
6948
6949 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
6950 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
6951 ID3D12GraphicsCommandList1 * This,
6952 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6953 _In_ const FLOAT ColorRGBA[ 4 ],
6954 _In_ UINT NumRects,
6955 _In_reads_(NumRects) const D3D12_RECT *pRects);
6956
6957 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
6958 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
6959 ID3D12GraphicsCommandList1 * This,
6960 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6961 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6962 _In_ ID3D12Resource *pResource,
6963 _In_ const UINT Values[ 4 ],
6964 _In_ UINT NumRects,
6965 _In_reads_(NumRects) const D3D12_RECT *pRects);
6966
6967 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
6968 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
6969 ID3D12GraphicsCommandList1 * This,
6970 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6971 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6972 _In_ ID3D12Resource *pResource,
6973 _In_ const FLOAT Values[ 4 ],
6974 _In_ UINT NumRects,
6975 _In_reads_(NumRects) const D3D12_RECT *pRects);
6976
6977 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
6978 void ( STDMETHODCALLTYPE *DiscardResource )(
6979 ID3D12GraphicsCommandList1 * This,
6980 _In_ ID3D12Resource *pResource,
6981 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6982
6983 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
6984 void ( STDMETHODCALLTYPE *BeginQuery )(
6985 ID3D12GraphicsCommandList1 * This,
6986 _In_ ID3D12QueryHeap *pQueryHeap,
6987 _In_ D3D12_QUERY_TYPE Type,
6988 _In_ UINT Index);
6989
6990 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
6991 void ( STDMETHODCALLTYPE *EndQuery )(
6992 ID3D12GraphicsCommandList1 * This,
6993 _In_ ID3D12QueryHeap *pQueryHeap,
6994 _In_ D3D12_QUERY_TYPE Type,
6995 _In_ UINT Index);
6996
6997 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
6998 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6999 ID3D12GraphicsCommandList1 * This,
7000 _In_ ID3D12QueryHeap *pQueryHeap,
7001 _In_ D3D12_QUERY_TYPE Type,
7002 _In_ UINT StartIndex,
7003 _In_ UINT NumQueries,
7004 _In_ ID3D12Resource *pDestinationBuffer,
7005 _In_ UINT64 AlignedDestinationBufferOffset);
7006
7007 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7008 void ( STDMETHODCALLTYPE *SetPredication )(
7009 ID3D12GraphicsCommandList1 * This,
7010 _In_opt_ ID3D12Resource *pBuffer,
7011 _In_ UINT64 AlignedBufferOffset,
7012 _In_ D3D12_PREDICATION_OP Operation);
7013
7014 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7015 void ( STDMETHODCALLTYPE *SetMarker )(
7016 ID3D12GraphicsCommandList1 * This,
7017 UINT Metadata,
7018 _In_reads_bytes_opt_(Size) const void *pData,
7019 UINT Size);
7020
7021 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7022 void ( STDMETHODCALLTYPE *BeginEvent )(
7023 ID3D12GraphicsCommandList1 * This,
7024 UINT Metadata,
7025 _In_reads_bytes_opt_(Size) const void *pData,
7026 UINT Size);
7027
7028 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7029 void ( STDMETHODCALLTYPE *EndEvent )(
7030 ID3D12GraphicsCommandList1 * This);
7031
7032 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7033 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7034 ID3D12GraphicsCommandList1 * This,
7035 _In_ ID3D12CommandSignature *pCommandSignature,
7036 _In_ UINT MaxCommandCount,
7037 _In_ ID3D12Resource *pArgumentBuffer,
7038 _In_ UINT64 ArgumentBufferOffset,
7039 _In_opt_ ID3D12Resource *pCountBuffer,
7040 _In_ UINT64 CountBufferOffset);
7041
7042 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7043 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7044 ID3D12GraphicsCommandList1 * This,
7045 _In_ ID3D12Resource *pDstBuffer,
7046 UINT64 DstOffset,
7047 _In_ ID3D12Resource *pSrcBuffer,
7048 UINT64 SrcOffset,
7049 UINT Dependencies,
7050 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7051 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7052
7053 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7054 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7055 ID3D12GraphicsCommandList1 * This,
7056 _In_ ID3D12Resource *pDstBuffer,
7057 UINT64 DstOffset,
7058 _In_ ID3D12Resource *pSrcBuffer,
7059 UINT64 SrcOffset,
7060 UINT Dependencies,
7061 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7062 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7063
7064 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7065 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7066 ID3D12GraphicsCommandList1 * This,
7067 _In_ FLOAT Min,
7068 _In_ FLOAT Max);
7069
7070 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7071 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7072 ID3D12GraphicsCommandList1 * This,
7073 _In_ UINT NumSamplesPerPixel,
7074 _In_ UINT NumPixels,
7075 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7076
7077 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7078 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7079 ID3D12GraphicsCommandList1 * This,
7080 _In_ ID3D12Resource *pDstResource,
7081 _In_ UINT DstSubresource,
7082 _In_ UINT DstX,
7083 _In_ UINT DstY,
7084 _In_ ID3D12Resource *pSrcResource,
7085 _In_ UINT SrcSubresource,
7086 _In_opt_ D3D12_RECT *pSrcRect,
7087 _In_ DXGI_FORMAT Format,
7088 _In_ D3D12_RESOLVE_MODE ResolveMode);
7089
7090 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7091 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7092 ID3D12GraphicsCommandList1 * This,
7093 _In_ UINT Mask);
7094
7095 END_INTERFACE
7096 } ID3D12GraphicsCommandList1Vtbl;
7097
7098 interface ID3D12GraphicsCommandList1
7099 {
7100 CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl;
7101 };
7102
7103
7104
7105#ifdef COBJMACROS
7106
7107
7108#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \
7109 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7110
7111#define ID3D12GraphicsCommandList1_AddRef(This) \
7112 ( (This)->lpVtbl -> AddRef(This) )
7113
7114#define ID3D12GraphicsCommandList1_Release(This) \
7115 ( (This)->lpVtbl -> Release(This) )
7116
7117
7118#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
7119 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7120
7121#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \
7122 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7123
7124#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \
7125 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7126
7127#define ID3D12GraphicsCommandList1_SetName(This,Name) \
7128 ( (This)->lpVtbl -> SetName(This,Name) )
7129
7130
7131#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \
7132 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7133
7134
7135#define ID3D12GraphicsCommandList1_GetType(This) \
7136 ( (This)->lpVtbl -> GetType(This) )
7137
7138
7139#define ID3D12GraphicsCommandList1_Close(This) \
7140 ( (This)->lpVtbl -> Close(This) )
7141
7142#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \
7143 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7144
7145#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \
7146 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7147
7148#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7149 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7150
7151#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7152 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7153
7154#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7155 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7156
7157#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7158 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7159
7160#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7161 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7162
7163#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \
7164 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7165
7166#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7167 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7168
7169#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7170 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7171
7172#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \
7173 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7174
7175#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \
7176 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7177
7178#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \
7179 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7180
7181#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \
7182 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7183
7184#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \
7185 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7186
7187#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \
7188 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7189
7190#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
7191 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7192
7193#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \
7194 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7195
7196#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7197 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7198
7199#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \
7200 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7201
7202#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \
7203 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7204
7205#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7206 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7207
7208#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7209 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7210
7211#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7212 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7213
7214#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7215 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7216
7217#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7218 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7219
7220#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7221 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7222
7223#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7224 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7225
7226#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7227 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7228
7229#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7230 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7231
7232#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7233 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7234
7235#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7236 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7237
7238#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7239 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7240
7241#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \
7242 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7243
7244#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7245 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7246
7247#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \
7248 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7249
7250#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7251 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7252
7253#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7254 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7255
7256#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7257 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7258
7259#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7260 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7261
7262#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7263 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7264
7265#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \
7266 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
7267
7268#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
7269 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
7270
7271#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
7272 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
7273
7274#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
7275 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
7276
7277#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
7278 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
7279
7280#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \
7281 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
7282
7283#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \
7284 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
7285
7286#define ID3D12GraphicsCommandList1_EndEvent(This) \
7287 ( (This)->lpVtbl -> EndEvent(This) )
7288
7289#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
7290 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
7291
7292
7293#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
7294 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
7295
7296#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
7297 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
7298
7299#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \
7300 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
7301
7302#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
7303 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
7304
7305#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
7306 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
7307
7308#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask) \
7309 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
7310
7311#endif /* COBJMACROS */
7312
7313
7314#endif /* C style interface */
7315
7316
7317
7318
7319#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
7320
7321
7322/* interface __MIDL_itf_d3d12_0000_0018 */
7323/* [local] */
7324
7325typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
7326 {
7327 D3D12_GPU_VIRTUAL_ADDRESS Dest;
7328 UINT32 Value;
7329 } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
7330
7331typedef
7332enum D3D12_WRITEBUFFERIMMEDIATE_MODE
7333 {
7334 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0,
7335 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
7336 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2
7337 } D3D12_WRITEBUFFERIMMEDIATE_MODE;
7338
7339
7340
7341extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_c_ifspec;
7342extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_s_ifspec;
7343
7344#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
7345#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
7346
7347/* interface ID3D12GraphicsCommandList2 */
7348/* [unique][local][object][uuid] */
7349
7350
7351EXTERN_C const IID IID_ID3D12GraphicsCommandList2;
7352
7353#if defined(__cplusplus) && !defined(CINTERFACE)
7354
7355 MIDL_INTERFACE("38C3E585-FF17-412C-9150-4FC6F9D72A28")
7356 ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1
7357 {
7358 public:
7359 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
7360 UINT Count,
7361 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
7362 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
7363
7364 };
7365
7366
7367#else /* C style interface */
7368
7369 typedef struct ID3D12GraphicsCommandList2Vtbl
7370 {
7371 BEGIN_INTERFACE
7372
7373 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7374 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7375 ID3D12GraphicsCommandList2 * This,
7376 REFIID riid,
7377 _COM_Outptr_ void **ppvObject);
7378
7379 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7380 ULONG ( STDMETHODCALLTYPE *AddRef )(
7381 ID3D12GraphicsCommandList2 * This);
7382
7383 DECLSPEC_XFGVIRT(IUnknown, Release)
7384 ULONG ( STDMETHODCALLTYPE *Release )(
7385 ID3D12GraphicsCommandList2 * This);
7386
7387 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7388 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7389 ID3D12GraphicsCommandList2 * This,
7390 _In_ REFGUID guid,
7391 _Inout_ UINT *pDataSize,
7392 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7393
7394 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7395 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7396 ID3D12GraphicsCommandList2 * This,
7397 _In_ REFGUID guid,
7398 _In_ UINT DataSize,
7399 _In_reads_bytes_opt_( DataSize ) const void *pData);
7400
7401 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7402 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7403 ID3D12GraphicsCommandList2 * This,
7404 _In_ REFGUID guid,
7405 _In_opt_ const IUnknown *pData);
7406
7407 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7408 HRESULT ( STDMETHODCALLTYPE *SetName )(
7409 ID3D12GraphicsCommandList2 * This,
7410 _In_z_ LPCWSTR Name);
7411
7412 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7413 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7414 ID3D12GraphicsCommandList2 * This,
7415 REFIID riid,
7416 _COM_Outptr_opt_ void **ppvDevice);
7417
7418 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
7419 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
7420 ID3D12GraphicsCommandList2 * This);
7421
7422 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
7423 HRESULT ( STDMETHODCALLTYPE *Close )(
7424 ID3D12GraphicsCommandList2 * This);
7425
7426 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
7427 HRESULT ( STDMETHODCALLTYPE *Reset )(
7428 ID3D12GraphicsCommandList2 * This,
7429 _In_ ID3D12CommandAllocator *pAllocator,
7430 _In_opt_ ID3D12PipelineState *pInitialState);
7431
7432 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
7433 void ( STDMETHODCALLTYPE *ClearState )(
7434 ID3D12GraphicsCommandList2 * This,
7435 _In_opt_ ID3D12PipelineState *pPipelineState);
7436
7437 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
7438 void ( STDMETHODCALLTYPE *DrawInstanced )(
7439 ID3D12GraphicsCommandList2 * This,
7440 _In_ UINT VertexCountPerInstance,
7441 _In_ UINT InstanceCount,
7442 _In_ UINT StartVertexLocation,
7443 _In_ UINT StartInstanceLocation);
7444
7445 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
7446 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
7447 ID3D12GraphicsCommandList2 * This,
7448 _In_ UINT IndexCountPerInstance,
7449 _In_ UINT InstanceCount,
7450 _In_ UINT StartIndexLocation,
7451 _In_ INT BaseVertexLocation,
7452 _In_ UINT StartInstanceLocation);
7453
7454 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
7455 void ( STDMETHODCALLTYPE *Dispatch )(
7456 ID3D12GraphicsCommandList2 * This,
7457 _In_ UINT ThreadGroupCountX,
7458 _In_ UINT ThreadGroupCountY,
7459 _In_ UINT ThreadGroupCountZ);
7460
7461 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
7462 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
7463 ID3D12GraphicsCommandList2 * This,
7464 _In_ ID3D12Resource *pDstBuffer,
7465 UINT64 DstOffset,
7466 _In_ ID3D12Resource *pSrcBuffer,
7467 UINT64 SrcOffset,
7468 UINT64 NumBytes);
7469
7470 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
7471 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
7472 ID3D12GraphicsCommandList2 * This,
7473 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
7474 UINT DstX,
7475 UINT DstY,
7476 UINT DstZ,
7477 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
7478 _In_opt_ const D3D12_BOX *pSrcBox);
7479
7480 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
7481 void ( STDMETHODCALLTYPE *CopyResource )(
7482 ID3D12GraphicsCommandList2 * This,
7483 _In_ ID3D12Resource *pDstResource,
7484 _In_ ID3D12Resource *pSrcResource);
7485
7486 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
7487 void ( STDMETHODCALLTYPE *CopyTiles )(
7488 ID3D12GraphicsCommandList2 * This,
7489 _In_ ID3D12Resource *pTiledResource,
7490 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
7491 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
7492 _In_ ID3D12Resource *pBuffer,
7493 UINT64 BufferStartOffsetInBytes,
7494 D3D12_TILE_COPY_FLAGS Flags);
7495
7496 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
7497 void ( STDMETHODCALLTYPE *ResolveSubresource )(
7498 ID3D12GraphicsCommandList2 * This,
7499 _In_ ID3D12Resource *pDstResource,
7500 _In_ UINT DstSubresource,
7501 _In_ ID3D12Resource *pSrcResource,
7502 _In_ UINT SrcSubresource,
7503 _In_ DXGI_FORMAT Format);
7504
7505 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
7506 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
7507 ID3D12GraphicsCommandList2 * This,
7508 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
7509
7510 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
7511 void ( STDMETHODCALLTYPE *RSSetViewports )(
7512 ID3D12GraphicsCommandList2 * This,
7513 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
7514 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
7515
7516 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
7517 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
7518 ID3D12GraphicsCommandList2 * This,
7519 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
7520 _In_reads_( NumRects) const D3D12_RECT *pRects);
7521
7522 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
7523 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
7524 ID3D12GraphicsCommandList2 * This,
7525 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
7526
7527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
7528 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
7529 ID3D12GraphicsCommandList2 * This,
7530 _In_ UINT StencilRef);
7531
7532 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
7533 void ( STDMETHODCALLTYPE *SetPipelineState )(
7534 ID3D12GraphicsCommandList2 * This,
7535 _In_ ID3D12PipelineState *pPipelineState);
7536
7537 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
7538 void ( STDMETHODCALLTYPE *ResourceBarrier )(
7539 ID3D12GraphicsCommandList2 * This,
7540 _In_ UINT NumBarriers,
7541 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
7542
7543 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
7544 void ( STDMETHODCALLTYPE *ExecuteBundle )(
7545 ID3D12GraphicsCommandList2 * This,
7546 _In_ ID3D12GraphicsCommandList *pCommandList);
7547
7548 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
7549 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
7550 ID3D12GraphicsCommandList2 * This,
7551 _In_ UINT NumDescriptorHeaps,
7552 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
7553
7554 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
7555 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
7556 ID3D12GraphicsCommandList2 * This,
7557 _In_opt_ ID3D12RootSignature *pRootSignature);
7558
7559 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
7560 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
7561 ID3D12GraphicsCommandList2 * This,
7562 _In_opt_ ID3D12RootSignature *pRootSignature);
7563
7564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7565 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7566 ID3D12GraphicsCommandList2 * This,
7567 _In_ UINT RootParameterIndex,
7568 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7569
7570 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7571 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7572 ID3D12GraphicsCommandList2 * This,
7573 _In_ UINT RootParameterIndex,
7574 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7575
7576 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7577 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7578 ID3D12GraphicsCommandList2 * This,
7579 _In_ UINT RootParameterIndex,
7580 _In_ UINT SrcData,
7581 _In_ UINT DestOffsetIn32BitValues);
7582
7583 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7584 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7585 ID3D12GraphicsCommandList2 * This,
7586 _In_ UINT RootParameterIndex,
7587 _In_ UINT SrcData,
7588 _In_ UINT DestOffsetIn32BitValues);
7589
7590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7591 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7592 ID3D12GraphicsCommandList2 * This,
7593 _In_ UINT RootParameterIndex,
7594 _In_ UINT Num32BitValuesToSet,
7595 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7596 _In_ UINT DestOffsetIn32BitValues);
7597
7598 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7599 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7600 ID3D12GraphicsCommandList2 * This,
7601 _In_ UINT RootParameterIndex,
7602 _In_ UINT Num32BitValuesToSet,
7603 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7604 _In_ UINT DestOffsetIn32BitValues);
7605
7606 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7607 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7608 ID3D12GraphicsCommandList2 * This,
7609 _In_ UINT RootParameterIndex,
7610 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7611
7612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7613 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7614 ID3D12GraphicsCommandList2 * This,
7615 _In_ UINT RootParameterIndex,
7616 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7617
7618 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7619 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7620 ID3D12GraphicsCommandList2 * This,
7621 _In_ UINT RootParameterIndex,
7622 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7623
7624 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7625 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7626 ID3D12GraphicsCommandList2 * This,
7627 _In_ UINT RootParameterIndex,
7628 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7629
7630 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7631 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7632 ID3D12GraphicsCommandList2 * This,
7633 _In_ UINT RootParameterIndex,
7634 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7635
7636 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7637 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7638 ID3D12GraphicsCommandList2 * This,
7639 _In_ UINT RootParameterIndex,
7640 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7641
7642 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7643 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7644 ID3D12GraphicsCommandList2 * This,
7645 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7646
7647 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7648 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7649 ID3D12GraphicsCommandList2 * This,
7650 _In_ UINT StartSlot,
7651 _In_ UINT NumViews,
7652 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7653
7654 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7655 void ( STDMETHODCALLTYPE *SOSetTargets )(
7656 ID3D12GraphicsCommandList2 * This,
7657 _In_ UINT StartSlot,
7658 _In_ UINT NumViews,
7659 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7660
7661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7662 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7663 ID3D12GraphicsCommandList2 * This,
7664 _In_ UINT NumRenderTargetDescriptors,
7665 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7666 _In_ BOOL RTsSingleHandleToDescriptorRange,
7667 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7668
7669 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7670 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7671 ID3D12GraphicsCommandList2 * This,
7672 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7673 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7674 _In_ FLOAT Depth,
7675 _In_ UINT8 Stencil,
7676 _In_ UINT NumRects,
7677 _In_reads_(NumRects) const D3D12_RECT *pRects);
7678
7679 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7680 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7681 ID3D12GraphicsCommandList2 * This,
7682 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7683 _In_ const FLOAT ColorRGBA[ 4 ],
7684 _In_ UINT NumRects,
7685 _In_reads_(NumRects) const D3D12_RECT *pRects);
7686
7687 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7688 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7689 ID3D12GraphicsCommandList2 * This,
7690 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7691 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7692 _In_ ID3D12Resource *pResource,
7693 _In_ const UINT Values[ 4 ],
7694 _In_ UINT NumRects,
7695 _In_reads_(NumRects) const D3D12_RECT *pRects);
7696
7697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7698 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7699 ID3D12GraphicsCommandList2 * This,
7700 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7701 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7702 _In_ ID3D12Resource *pResource,
7703 _In_ const FLOAT Values[ 4 ],
7704 _In_ UINT NumRects,
7705 _In_reads_(NumRects) const D3D12_RECT *pRects);
7706
7707 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7708 void ( STDMETHODCALLTYPE *DiscardResource )(
7709 ID3D12GraphicsCommandList2 * This,
7710 _In_ ID3D12Resource *pResource,
7711 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7712
7713 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7714 void ( STDMETHODCALLTYPE *BeginQuery )(
7715 ID3D12GraphicsCommandList2 * This,
7716 _In_ ID3D12QueryHeap *pQueryHeap,
7717 _In_ D3D12_QUERY_TYPE Type,
7718 _In_ UINT Index);
7719
7720 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7721 void ( STDMETHODCALLTYPE *EndQuery )(
7722 ID3D12GraphicsCommandList2 * This,
7723 _In_ ID3D12QueryHeap *pQueryHeap,
7724 _In_ D3D12_QUERY_TYPE Type,
7725 _In_ UINT Index);
7726
7727 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7728 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7729 ID3D12GraphicsCommandList2 * This,
7730 _In_ ID3D12QueryHeap *pQueryHeap,
7731 _In_ D3D12_QUERY_TYPE Type,
7732 _In_ UINT StartIndex,
7733 _In_ UINT NumQueries,
7734 _In_ ID3D12Resource *pDestinationBuffer,
7735 _In_ UINT64 AlignedDestinationBufferOffset);
7736
7737 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7738 void ( STDMETHODCALLTYPE *SetPredication )(
7739 ID3D12GraphicsCommandList2 * This,
7740 _In_opt_ ID3D12Resource *pBuffer,
7741 _In_ UINT64 AlignedBufferOffset,
7742 _In_ D3D12_PREDICATION_OP Operation);
7743
7744 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7745 void ( STDMETHODCALLTYPE *SetMarker )(
7746 ID3D12GraphicsCommandList2 * This,
7747 UINT Metadata,
7748 _In_reads_bytes_opt_(Size) const void *pData,
7749 UINT Size);
7750
7751 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7752 void ( STDMETHODCALLTYPE *BeginEvent )(
7753 ID3D12GraphicsCommandList2 * This,
7754 UINT Metadata,
7755 _In_reads_bytes_opt_(Size) const void *pData,
7756 UINT Size);
7757
7758 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7759 void ( STDMETHODCALLTYPE *EndEvent )(
7760 ID3D12GraphicsCommandList2 * This);
7761
7762 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7763 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7764 ID3D12GraphicsCommandList2 * This,
7765 _In_ ID3D12CommandSignature *pCommandSignature,
7766 _In_ UINT MaxCommandCount,
7767 _In_ ID3D12Resource *pArgumentBuffer,
7768 _In_ UINT64 ArgumentBufferOffset,
7769 _In_opt_ ID3D12Resource *pCountBuffer,
7770 _In_ UINT64 CountBufferOffset);
7771
7772 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7773 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7774 ID3D12GraphicsCommandList2 * This,
7775 _In_ ID3D12Resource *pDstBuffer,
7776 UINT64 DstOffset,
7777 _In_ ID3D12Resource *pSrcBuffer,
7778 UINT64 SrcOffset,
7779 UINT Dependencies,
7780 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7781 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7782
7783 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7784 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7785 ID3D12GraphicsCommandList2 * This,
7786 _In_ ID3D12Resource *pDstBuffer,
7787 UINT64 DstOffset,
7788 _In_ ID3D12Resource *pSrcBuffer,
7789 UINT64 SrcOffset,
7790 UINT Dependencies,
7791 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7792 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7793
7794 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7795 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7796 ID3D12GraphicsCommandList2 * This,
7797 _In_ FLOAT Min,
7798 _In_ FLOAT Max);
7799
7800 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7801 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7802 ID3D12GraphicsCommandList2 * This,
7803 _In_ UINT NumSamplesPerPixel,
7804 _In_ UINT NumPixels,
7805 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7806
7807 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7808 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7809 ID3D12GraphicsCommandList2 * This,
7810 _In_ ID3D12Resource *pDstResource,
7811 _In_ UINT DstSubresource,
7812 _In_ UINT DstX,
7813 _In_ UINT DstY,
7814 _In_ ID3D12Resource *pSrcResource,
7815 _In_ UINT SrcSubresource,
7816 _In_opt_ D3D12_RECT *pSrcRect,
7817 _In_ DXGI_FORMAT Format,
7818 _In_ D3D12_RESOLVE_MODE ResolveMode);
7819
7820 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7821 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7822 ID3D12GraphicsCommandList2 * This,
7823 _In_ UINT Mask);
7824
7825 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
7826 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
7827 ID3D12GraphicsCommandList2 * This,
7828 UINT Count,
7829 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
7830 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
7831
7832 END_INTERFACE
7833 } ID3D12GraphicsCommandList2Vtbl;
7834
7835 interface ID3D12GraphicsCommandList2
7836 {
7837 CONST_VTBL struct ID3D12GraphicsCommandList2Vtbl *lpVtbl;
7838 };
7839
7840
7841
7842#ifdef COBJMACROS
7843
7844
7845#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) \
7846 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7847
7848#define ID3D12GraphicsCommandList2_AddRef(This) \
7849 ( (This)->lpVtbl -> AddRef(This) )
7850
7851#define ID3D12GraphicsCommandList2_Release(This) \
7852 ( (This)->lpVtbl -> Release(This) )
7853
7854
7855#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
7856 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7857
7858#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData) \
7859 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7860
7861#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData) \
7862 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7863
7864#define ID3D12GraphicsCommandList2_SetName(This,Name) \
7865 ( (This)->lpVtbl -> SetName(This,Name) )
7866
7867
7868#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice) \
7869 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7870
7871
7872#define ID3D12GraphicsCommandList2_GetType(This) \
7873 ( (This)->lpVtbl -> GetType(This) )
7874
7875
7876#define ID3D12GraphicsCommandList2_Close(This) \
7877 ( (This)->lpVtbl -> Close(This) )
7878
7879#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState) \
7880 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7881
7882#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState) \
7883 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7884
7885#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7886 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7887
7888#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7889 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7890
7891#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7892 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7893
7894#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7895 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7896
7897#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7898 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7899
7900#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource) \
7901 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7902
7903#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7904 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7905
7906#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7907 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7908
7909#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology) \
7910 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7911
7912#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports) \
7913 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7914
7915#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects) \
7916 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7917
7918#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor) \
7919 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7920
7921#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef) \
7922 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7923
7924#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState) \
7925 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7926
7927#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
7928 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7929
7930#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList) \
7931 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7932
7933#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7934 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7935
7936#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature) \
7937 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7938
7939#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature) \
7940 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7941
7942#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7943 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7944
7945#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7946 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7947
7948#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7949 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7950
7951#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7952 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7953
7954#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7955 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7956
7957#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7958 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7959
7960#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7961 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7962
7963#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7964 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7965
7966#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7967 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7968
7969#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7970 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7971
7972#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7973 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7974
7975#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7976 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7977
7978#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView) \
7979 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7980
7981#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7982 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7983
7984#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews) \
7985 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7986
7987#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7988 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7989
7990#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7991 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7992
7993#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7994 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7995
7996#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7997 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7998
7999#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8000 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8001
8002#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion) \
8003 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8004
8005#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8006 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8007
8008#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8009 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8010
8011#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8012 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8013
8014#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8015 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8016
8017#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size) \
8018 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8019
8020#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size) \
8021 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8022
8023#define ID3D12GraphicsCommandList2_EndEvent(This) \
8024 ( (This)->lpVtbl -> EndEvent(This) )
8025
8026#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8027 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8028
8029
8030#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8031 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8032
8033#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8034 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8035
8036#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max) \
8037 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8038
8039#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8040 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8041
8042#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8043 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8044
8045#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask) \
8046 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8047
8048
8049#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8050 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8051
8052#endif /* COBJMACROS */
8053
8054
8055#endif /* C style interface */
8056
8057
8058
8059
8060#endif /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */
8061
8062
8063#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
8064#define __ID3D12CommandQueue_INTERFACE_DEFINED__
8065
8066/* interface ID3D12CommandQueue */
8067/* [unique][local][object][uuid] */
8068
8069
8070EXTERN_C const IID IID_ID3D12CommandQueue;
8071
8072#if defined(__cplusplus) && !defined(CINTERFACE)
8073
8074 MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
8075 ID3D12CommandQueue : public ID3D12Pageable
8076 {
8077 public:
8078 virtual void STDMETHODCALLTYPE UpdateTileMappings(
8079 _In_ ID3D12Resource *pResource,
8080 UINT NumResourceRegions,
8081 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8082 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8083 _In_opt_ ID3D12Heap *pHeap,
8084 UINT NumRanges,
8085 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8086 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8087 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8088 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8089
8090 virtual void STDMETHODCALLTYPE CopyTileMappings(
8091 _In_ ID3D12Resource *pDstResource,
8092 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8093 _In_ ID3D12Resource *pSrcResource,
8094 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8095 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8096 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8097
8098 virtual void STDMETHODCALLTYPE ExecuteCommandLists(
8099 _In_ UINT NumCommandLists,
8100 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0;
8101
8102 virtual void STDMETHODCALLTYPE SetMarker(
8103 UINT Metadata,
8104 _In_reads_bytes_opt_(Size) const void *pData,
8105 UINT Size) = 0;
8106
8107 virtual void STDMETHODCALLTYPE BeginEvent(
8108 UINT Metadata,
8109 _In_reads_bytes_opt_(Size) const void *pData,
8110 UINT Size) = 0;
8111
8112 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
8113
8114 virtual HRESULT STDMETHODCALLTYPE Signal(
8115 ID3D12Fence *pFence,
8116 UINT64 Value) = 0;
8117
8118 virtual HRESULT STDMETHODCALLTYPE Wait(
8119 ID3D12Fence *pFence,
8120 UINT64 Value) = 0;
8121
8122 virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
8123 _Out_ UINT64 *pFrequency) = 0;
8124
8125 virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
8126 _Out_ UINT64 *pGpuTimestamp,
8127 _Out_ UINT64 *pCpuTimestamp) = 0;
8128
8129 virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
8130
8131 };
8132
8133
8134#else /* C style interface */
8135
8136 typedef struct ID3D12CommandQueueVtbl
8137 {
8138 BEGIN_INTERFACE
8139
8140 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8141 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8142 ID3D12CommandQueue * This,
8143 REFIID riid,
8144 _COM_Outptr_ void **ppvObject);
8145
8146 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8147 ULONG ( STDMETHODCALLTYPE *AddRef )(
8148 ID3D12CommandQueue * This);
8149
8150 DECLSPEC_XFGVIRT(IUnknown, Release)
8151 ULONG ( STDMETHODCALLTYPE *Release )(
8152 ID3D12CommandQueue * This);
8153
8154 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8155 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8156 ID3D12CommandQueue * This,
8157 _In_ REFGUID guid,
8158 _Inout_ UINT *pDataSize,
8159 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8160
8161 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8162 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8163 ID3D12CommandQueue * This,
8164 _In_ REFGUID guid,
8165 _In_ UINT DataSize,
8166 _In_reads_bytes_opt_( DataSize ) const void *pData);
8167
8168 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8169 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8170 ID3D12CommandQueue * This,
8171 _In_ REFGUID guid,
8172 _In_opt_ const IUnknown *pData);
8173
8174 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8175 HRESULT ( STDMETHODCALLTYPE *SetName )(
8176 ID3D12CommandQueue * This,
8177 _In_z_ LPCWSTR Name);
8178
8179 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8180 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8181 ID3D12CommandQueue * This,
8182 REFIID riid,
8183 _COM_Outptr_opt_ void **ppvDevice);
8184
8185 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
8186 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
8187 ID3D12CommandQueue * This,
8188 _In_ ID3D12Resource *pResource,
8189 UINT NumResourceRegions,
8190 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8191 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8192 _In_opt_ ID3D12Heap *pHeap,
8193 UINT NumRanges,
8194 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8195 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8196 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8197 D3D12_TILE_MAPPING_FLAGS Flags);
8198
8199 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
8200 void ( STDMETHODCALLTYPE *CopyTileMappings )(
8201 ID3D12CommandQueue * This,
8202 _In_ ID3D12Resource *pDstResource,
8203 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8204 _In_ ID3D12Resource *pSrcResource,
8205 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8206 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8207 D3D12_TILE_MAPPING_FLAGS Flags);
8208
8209 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
8210 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
8211 ID3D12CommandQueue * This,
8212 _In_ UINT NumCommandLists,
8213 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
8214
8215 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
8216 void ( STDMETHODCALLTYPE *SetMarker )(
8217 ID3D12CommandQueue * This,
8218 UINT Metadata,
8219 _In_reads_bytes_opt_(Size) const void *pData,
8220 UINT Size);
8221
8222 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
8223 void ( STDMETHODCALLTYPE *BeginEvent )(
8224 ID3D12CommandQueue * This,
8225 UINT Metadata,
8226 _In_reads_bytes_opt_(Size) const void *pData,
8227 UINT Size);
8228
8229 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
8230 void ( STDMETHODCALLTYPE *EndEvent )(
8231 ID3D12CommandQueue * This);
8232
8233 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
8234 HRESULT ( STDMETHODCALLTYPE *Signal )(
8235 ID3D12CommandQueue * This,
8236 ID3D12Fence *pFence,
8237 UINT64 Value);
8238
8239 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
8240 HRESULT ( STDMETHODCALLTYPE *Wait )(
8241 ID3D12CommandQueue * This,
8242 ID3D12Fence *pFence,
8243 UINT64 Value);
8244
8245 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
8246 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
8247 ID3D12CommandQueue * This,
8248 _Out_ UINT64 *pFrequency);
8249
8250 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
8251 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
8252 ID3D12CommandQueue * This,
8253 _Out_ UINT64 *pGpuTimestamp,
8254 _Out_ UINT64 *pCpuTimestamp);
8255
8256 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
8257 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
8258 ID3D12CommandQueue * This,
8259 D3D12_COMMAND_QUEUE_DESC * RetVal);
8260
8261 END_INTERFACE
8262 } ID3D12CommandQueueVtbl;
8263
8264 interface ID3D12CommandQueue
8265 {
8266 CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl;
8267 };
8268
8269
8270
8271#ifdef COBJMACROS
8272
8273
8274#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \
8275 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8276
8277#define ID3D12CommandQueue_AddRef(This) \
8278 ( (This)->lpVtbl -> AddRef(This) )
8279
8280#define ID3D12CommandQueue_Release(This) \
8281 ( (This)->lpVtbl -> Release(This) )
8282
8283
8284#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \
8285 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8286
8287#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \
8288 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8289
8290#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \
8291 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8292
8293#define ID3D12CommandQueue_SetName(This,Name) \
8294 ( (This)->lpVtbl -> SetName(This,Name) )
8295
8296
8297#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \
8298 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8299
8300
8301
8302#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
8303 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
8304
8305#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
8306 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
8307
8308#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
8309 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
8310
8311#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \
8312 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8313
8314#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \
8315 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8316
8317#define ID3D12CommandQueue_EndEvent(This) \
8318 ( (This)->lpVtbl -> EndEvent(This) )
8319
8320#define ID3D12CommandQueue_Signal(This,pFence,Value) \
8321 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
8322
8323#define ID3D12CommandQueue_Wait(This,pFence,Value) \
8324 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
8325
8326#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \
8327 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
8328
8329#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
8330 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
8331
8332#define ID3D12CommandQueue_GetDesc(This,RetVal) \
8333 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
8334
8335#endif /* COBJMACROS */
8336
8337
8338#endif /* C style interface */
8339
8340
8341
8342
8343#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
8344
8345
8346/* interface __MIDL_itf_d3d12_0000_0020 */
8347/* [local] */
8348
8349#ifdef __midl
8350#ifndef LUID_DEFINED
8351#define LUID_DEFINED 1
8352typedef struct __LUID
8353 {
8354 DWORD LowPart;
8355 LONG HighPart;
8356 } LUID;
8357
8358typedef struct __LUID *PLUID;
8359
8360#endif
8361#endif
8362
8363
8364extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_c_ifspec;
8365extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_s_ifspec;
8366
8367#ifndef __ID3D12Device_INTERFACE_DEFINED__
8368#define __ID3D12Device_INTERFACE_DEFINED__
8369
8370/* interface ID3D12Device */
8371/* [unique][local][object][uuid] */
8372
8373
8374EXTERN_C const IID IID_ID3D12Device;
8375
8376#if defined(__cplusplus) && !defined(CINTERFACE)
8377
8378 MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
8379 ID3D12Device : public ID3D12Object
8380 {
8381 public:
8382 virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0;
8383
8384 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
8385 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
8386 REFIID riid,
8387 _COM_Outptr_ void **ppCommandQueue) = 0;
8388
8389 virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
8390 _In_ D3D12_COMMAND_LIST_TYPE type,
8391 REFIID riid,
8392 _COM_Outptr_ void **ppCommandAllocator) = 0;
8393
8394 virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
8395 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
8396 REFIID riid,
8397 _COM_Outptr_ void **ppPipelineState) = 0;
8398
8399 virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
8400 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
8401 REFIID riid,
8402 _COM_Outptr_ void **ppPipelineState) = 0;
8403
8404 virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
8405 _In_ UINT nodeMask,
8406 _In_ D3D12_COMMAND_LIST_TYPE type,
8407 _In_ ID3D12CommandAllocator *pCommandAllocator,
8408 _In_opt_ ID3D12PipelineState *pInitialState,
8409 REFIID riid,
8410 _COM_Outptr_ void **ppCommandList) = 0;
8411
8412 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
8413 D3D12_FEATURE Feature,
8414 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8415 UINT FeatureSupportDataSize) = 0;
8416
8417 virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
8418 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
8419 REFIID riid,
8420 _COM_Outptr_ void **ppvHeap) = 0;
8421
8422 virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
8423 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0;
8424
8425 virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
8426 _In_ UINT nodeMask,
8427 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
8428 _In_ SIZE_T blobLengthInBytes,
8429 REFIID riid,
8430 _COM_Outptr_ void **ppvRootSignature) = 0;
8431
8432 virtual void STDMETHODCALLTYPE CreateConstantBufferView(
8433 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
8434 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8435
8436 virtual void STDMETHODCALLTYPE CreateShaderResourceView(
8437 _In_opt_ ID3D12Resource *pResource,
8438 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
8439 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8440
8441 virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
8442 _In_opt_ ID3D12Resource *pResource,
8443 _In_opt_ ID3D12Resource *pCounterResource,
8444 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
8445 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8446
8447 virtual void STDMETHODCALLTYPE CreateRenderTargetView(
8448 _In_opt_ ID3D12Resource *pResource,
8449 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
8450 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8451
8452 virtual void STDMETHODCALLTYPE CreateDepthStencilView(
8453 _In_opt_ ID3D12Resource *pResource,
8454 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
8455 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8456
8457 virtual void STDMETHODCALLTYPE CreateSampler(
8458 _In_ const D3D12_SAMPLER_DESC *pDesc,
8459 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8460
8461 virtual void STDMETHODCALLTYPE CopyDescriptors(
8462 _In_ UINT NumDestDescriptorRanges,
8463 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
8464 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
8465 _In_ UINT NumSrcDescriptorRanges,
8466 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
8467 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
8468 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
8469
8470 virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
8471 _In_ UINT NumDescriptors,
8472 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
8473 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
8474 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
8475
8476 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
8477 _In_ UINT visibleMask,
8478 _In_ UINT numResourceDescs,
8479 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
8480
8481 virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
8482 _In_ UINT nodeMask,
8483 D3D12_HEAP_TYPE heapType) = 0;
8484
8485 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
8486 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
8487 D3D12_HEAP_FLAGS HeapFlags,
8488 _In_ const D3D12_RESOURCE_DESC *pDesc,
8489 D3D12_RESOURCE_STATES InitialResourceState,
8490 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8491 REFIID riidResource,
8492 _COM_Outptr_opt_ void **ppvResource) = 0;
8493
8494 virtual HRESULT STDMETHODCALLTYPE CreateHeap(
8495 _In_ const D3D12_HEAP_DESC *pDesc,
8496 REFIID riid,
8497 _COM_Outptr_opt_ void **ppvHeap) = 0;
8498
8499 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
8500 _In_ ID3D12Heap *pHeap,
8501 UINT64 HeapOffset,
8502 _In_ const D3D12_RESOURCE_DESC *pDesc,
8503 D3D12_RESOURCE_STATES InitialState,
8504 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8505 REFIID riid,
8506 _COM_Outptr_opt_ void **ppvResource) = 0;
8507
8508 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
8509 _In_ const D3D12_RESOURCE_DESC *pDesc,
8510 D3D12_RESOURCE_STATES InitialState,
8511 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8512 REFIID riid,
8513 _COM_Outptr_opt_ void **ppvResource) = 0;
8514
8515 virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
8516 _In_ ID3D12DeviceChild *pObject,
8517 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
8518 DWORD Access,
8519 _In_opt_ LPCWSTR Name,
8520 _Out_ HANDLE *pHandle) = 0;
8521
8522 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
8523 _In_ HANDLE NTHandle,
8524 REFIID riid,
8525 _COM_Outptr_opt_ void **ppvObj) = 0;
8526
8527 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
8528 _In_ LPCWSTR Name,
8529 DWORD Access,
8530 /* [annotation][out] */
8531 _Out_ HANDLE *pNTHandle) = 0;
8532
8533 virtual HRESULT STDMETHODCALLTYPE MakeResident(
8534 UINT NumObjects,
8535 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
8536
8537 virtual HRESULT STDMETHODCALLTYPE Evict(
8538 UINT NumObjects,
8539 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
8540
8541 virtual HRESULT STDMETHODCALLTYPE CreateFence(
8542 UINT64 InitialValue,
8543 D3D12_FENCE_FLAGS Flags,
8544 REFIID riid,
8545 _COM_Outptr_ void **ppFence) = 0;
8546
8547 virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
8548
8549 virtual void STDMETHODCALLTYPE GetCopyableFootprints(
8550 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
8551 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
8552 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
8553 UINT64 BaseOffset,
8554 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
8555 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
8556 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
8557 _Out_opt_ UINT64 *pTotalBytes) = 0;
8558
8559 virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
8560 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
8561 REFIID riid,
8562 _COM_Outptr_opt_ void **ppvHeap) = 0;
8563
8564 virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
8565 BOOL Enable) = 0;
8566
8567 virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
8568 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
8569 _In_opt_ ID3D12RootSignature *pRootSignature,
8570 REFIID riid,
8571 _COM_Outptr_opt_ void **ppvCommandSignature) = 0;
8572
8573 virtual void STDMETHODCALLTYPE GetResourceTiling(
8574 _In_ ID3D12Resource *pTiledResource,
8575 _Out_opt_ UINT *pNumTilesForEntireResource,
8576 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
8577 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
8578 _Inout_opt_ UINT *pNumSubresourceTilings,
8579 _In_ UINT FirstSubresourceTilingToGet,
8580 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0;
8581
8582 virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
8583
8584 };
8585
8586
8587#else /* C style interface */
8588
8589 typedef struct ID3D12DeviceVtbl
8590 {
8591 BEGIN_INTERFACE
8592
8593 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8594 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8595 ID3D12Device * This,
8596 REFIID riid,
8597 _COM_Outptr_ void **ppvObject);
8598
8599 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8600 ULONG ( STDMETHODCALLTYPE *AddRef )(
8601 ID3D12Device * This);
8602
8603 DECLSPEC_XFGVIRT(IUnknown, Release)
8604 ULONG ( STDMETHODCALLTYPE *Release )(
8605 ID3D12Device * This);
8606
8607 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8608 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8609 ID3D12Device * This,
8610 _In_ REFGUID guid,
8611 _Inout_ UINT *pDataSize,
8612 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8613
8614 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8615 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8616 ID3D12Device * This,
8617 _In_ REFGUID guid,
8618 _In_ UINT DataSize,
8619 _In_reads_bytes_opt_( DataSize ) const void *pData);
8620
8621 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8622 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8623 ID3D12Device * This,
8624 _In_ REFGUID guid,
8625 _In_opt_ const IUnknown *pData);
8626
8627 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8628 HRESULT ( STDMETHODCALLTYPE *SetName )(
8629 ID3D12Device * This,
8630 _In_z_ LPCWSTR Name);
8631
8632 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
8633 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
8634 ID3D12Device * This);
8635
8636 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
8637 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
8638 ID3D12Device * This,
8639 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
8640 REFIID riid,
8641 _COM_Outptr_ void **ppCommandQueue);
8642
8643 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
8644 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
8645 ID3D12Device * This,
8646 _In_ D3D12_COMMAND_LIST_TYPE type,
8647 REFIID riid,
8648 _COM_Outptr_ void **ppCommandAllocator);
8649
8650 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
8651 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
8652 ID3D12Device * This,
8653 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
8654 REFIID riid,
8655 _COM_Outptr_ void **ppPipelineState);
8656
8657 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
8658 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
8659 ID3D12Device * This,
8660 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
8661 REFIID riid,
8662 _COM_Outptr_ void **ppPipelineState);
8663
8664 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
8665 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
8666 ID3D12Device * This,
8667 _In_ UINT nodeMask,
8668 _In_ D3D12_COMMAND_LIST_TYPE type,
8669 _In_ ID3D12CommandAllocator *pCommandAllocator,
8670 _In_opt_ ID3D12PipelineState *pInitialState,
8671 REFIID riid,
8672 _COM_Outptr_ void **ppCommandList);
8673
8674 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
8675 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
8676 ID3D12Device * This,
8677 D3D12_FEATURE Feature,
8678 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8679 UINT FeatureSupportDataSize);
8680
8681 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
8682 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
8683 ID3D12Device * This,
8684 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
8685 REFIID riid,
8686 _COM_Outptr_ void **ppvHeap);
8687
8688 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
8689 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
8690 ID3D12Device * This,
8691 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
8692
8693 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
8694 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
8695 ID3D12Device * This,
8696 _In_ UINT nodeMask,
8697 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
8698 _In_ SIZE_T blobLengthInBytes,
8699 REFIID riid,
8700 _COM_Outptr_ void **ppvRootSignature);
8701
8702 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
8703 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
8704 ID3D12Device * This,
8705 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
8706 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8707
8708 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
8709 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
8710 ID3D12Device * This,
8711 _In_opt_ ID3D12Resource *pResource,
8712 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
8713 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8714
8715 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
8716 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
8717 ID3D12Device * This,
8718 _In_opt_ ID3D12Resource *pResource,
8719 _In_opt_ ID3D12Resource *pCounterResource,
8720 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
8721 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8722
8723 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
8724 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
8725 ID3D12Device * This,
8726 _In_opt_ ID3D12Resource *pResource,
8727 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
8728 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8729
8730 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
8731 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
8732 ID3D12Device * This,
8733 _In_opt_ ID3D12Resource *pResource,
8734 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
8735 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8736
8737 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
8738 void ( STDMETHODCALLTYPE *CreateSampler )(
8739 ID3D12Device * This,
8740 _In_ const D3D12_SAMPLER_DESC *pDesc,
8741 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8742
8743 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
8744 void ( STDMETHODCALLTYPE *CopyDescriptors )(
8745 ID3D12Device * This,
8746 _In_ UINT NumDestDescriptorRanges,
8747 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
8748 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
8749 _In_ UINT NumSrcDescriptorRanges,
8750 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
8751 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
8752 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
8753
8754 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
8755 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
8756 ID3D12Device * This,
8757 _In_ UINT NumDescriptors,
8758 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
8759 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
8760 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
8761
8762 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
8763 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
8764 ID3D12Device * This,
8765 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
8766 _In_ UINT visibleMask,
8767 _In_ UINT numResourceDescs,
8768 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
8769
8770 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
8771 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
8772 ID3D12Device * This,
8773 D3D12_HEAP_PROPERTIES * RetVal,
8774 _In_ UINT nodeMask,
8775 D3D12_HEAP_TYPE heapType);
8776
8777 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
8778 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
8779 ID3D12Device * This,
8780 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
8781 D3D12_HEAP_FLAGS HeapFlags,
8782 _In_ const D3D12_RESOURCE_DESC *pDesc,
8783 D3D12_RESOURCE_STATES InitialResourceState,
8784 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8785 REFIID riidResource,
8786 _COM_Outptr_opt_ void **ppvResource);
8787
8788 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
8789 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
8790 ID3D12Device * This,
8791 _In_ const D3D12_HEAP_DESC *pDesc,
8792 REFIID riid,
8793 _COM_Outptr_opt_ void **ppvHeap);
8794
8795 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
8796 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
8797 ID3D12Device * This,
8798 _In_ ID3D12Heap *pHeap,
8799 UINT64 HeapOffset,
8800 _In_ const D3D12_RESOURCE_DESC *pDesc,
8801 D3D12_RESOURCE_STATES InitialState,
8802 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8803 REFIID riid,
8804 _COM_Outptr_opt_ void **ppvResource);
8805
8806 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
8807 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
8808 ID3D12Device * This,
8809 _In_ const D3D12_RESOURCE_DESC *pDesc,
8810 D3D12_RESOURCE_STATES InitialState,
8811 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8812 REFIID riid,
8813 _COM_Outptr_opt_ void **ppvResource);
8814
8815 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
8816 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
8817 ID3D12Device * This,
8818 _In_ ID3D12DeviceChild *pObject,
8819 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
8820 DWORD Access,
8821 _In_opt_ LPCWSTR Name,
8822 _Out_ HANDLE *pHandle);
8823
8824 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
8825 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
8826 ID3D12Device * This,
8827 _In_ HANDLE NTHandle,
8828 REFIID riid,
8829 _COM_Outptr_opt_ void **ppvObj);
8830
8831 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
8832 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
8833 ID3D12Device * This,
8834 _In_ LPCWSTR Name,
8835 DWORD Access,
8836 /* [annotation][out] */
8837 _Out_ HANDLE *pNTHandle);
8838
8839 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
8840 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
8841 ID3D12Device * This,
8842 UINT NumObjects,
8843 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
8844
8845 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
8846 HRESULT ( STDMETHODCALLTYPE *Evict )(
8847 ID3D12Device * This,
8848 UINT NumObjects,
8849 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
8850
8851 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
8852 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
8853 ID3D12Device * This,
8854 UINT64 InitialValue,
8855 D3D12_FENCE_FLAGS Flags,
8856 REFIID riid,
8857 _COM_Outptr_ void **ppFence);
8858
8859 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
8860 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
8861 ID3D12Device * This);
8862
8863 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
8864 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
8865 ID3D12Device * This,
8866 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
8867 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
8868 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
8869 UINT64 BaseOffset,
8870 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
8871 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
8872 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
8873 _Out_opt_ UINT64 *pTotalBytes);
8874
8875 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
8876 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
8877 ID3D12Device * This,
8878 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
8879 REFIID riid,
8880 _COM_Outptr_opt_ void **ppvHeap);
8881
8882 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
8883 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
8884 ID3D12Device * This,
8885 BOOL Enable);
8886
8887 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
8888 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
8889 ID3D12Device * This,
8890 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
8891 _In_opt_ ID3D12RootSignature *pRootSignature,
8892 REFIID riid,
8893 _COM_Outptr_opt_ void **ppvCommandSignature);
8894
8895 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
8896 void ( STDMETHODCALLTYPE *GetResourceTiling )(
8897 ID3D12Device * This,
8898 _In_ ID3D12Resource *pTiledResource,
8899 _Out_opt_ UINT *pNumTilesForEntireResource,
8900 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
8901 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
8902 _Inout_opt_ UINT *pNumSubresourceTilings,
8903 _In_ UINT FirstSubresourceTilingToGet,
8904 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
8905
8906 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
8907 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
8908 ID3D12Device * This,
8909 LUID * RetVal);
8910
8911 END_INTERFACE
8912 } ID3D12DeviceVtbl;
8913
8914 interface ID3D12Device
8915 {
8916 CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl;
8917 };
8918
8919
8920
8921#ifdef COBJMACROS
8922
8923
8924#define ID3D12Device_QueryInterface(This,riid,ppvObject) \
8925 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8926
8927#define ID3D12Device_AddRef(This) \
8928 ( (This)->lpVtbl -> AddRef(This) )
8929
8930#define ID3D12Device_Release(This) \
8931 ( (This)->lpVtbl -> Release(This) )
8932
8933
8934#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \
8935 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8936
8937#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \
8938 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8939
8940#define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \
8941 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8942
8943#define ID3D12Device_SetName(This,Name) \
8944 ( (This)->lpVtbl -> SetName(This,Name) )
8945
8946
8947#define ID3D12Device_GetNodeCount(This) \
8948 ( (This)->lpVtbl -> GetNodeCount(This) )
8949
8950#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
8951 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
8952
8953#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
8954 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
8955
8956#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
8957 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
8958
8959#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
8960 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
8961
8962#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
8963 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
8964
8965#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
8966 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
8967
8968#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
8969 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
8970
8971#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
8972 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
8973
8974#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
8975 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
8976
8977#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \
8978 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
8979
8980#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
8981 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
8982
8983#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
8984 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
8985
8986#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
8987 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
8988
8989#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
8990 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
8991
8992#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \
8993 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
8994
8995#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
8996 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
8997
8998#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
8999 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
9000
9001#define ID3D12Device_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
9002 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
9003
9004#define ID3D12Device_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
9005 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
9006
9007#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
9008 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
9009
9010#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \
9011 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
9012
9013#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9014 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9015
9016#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9017 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9018
9019#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
9020 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
9021
9022#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
9023 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
9024
9025#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
9026 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
9027
9028#define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \
9029 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
9030
9031#define ID3D12Device_Evict(This,NumObjects,ppObjects) \
9032 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
9033
9034#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \
9035 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
9036
9037#define ID3D12Device_GetDeviceRemovedReason(This) \
9038 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
9039
9040#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
9041 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
9042
9043#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
9044 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
9045
9046#define ID3D12Device_SetStablePowerState(This,Enable) \
9047 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
9048
9049#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
9050 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
9051
9052#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
9053 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
9054
9055#define ID3D12Device_GetAdapterLuid(This,RetVal) \
9056 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
9057
9058#endif /* COBJMACROS */
9059
9060
9061#endif /* C style interface */
9062
9063
9064
9065
9066#endif /* __ID3D12Device_INTERFACE_DEFINED__ */
9067
9068
9069#ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
9070#define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
9071
9072/* interface ID3D12PipelineLibrary */
9073/* [unique][local][object][uuid] */
9074
9075
9076EXTERN_C const IID IID_ID3D12PipelineLibrary;
9077
9078#if defined(__cplusplus) && !defined(CINTERFACE)
9079
9080 MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
9081 ID3D12PipelineLibrary : public ID3D12DeviceChild
9082 {
9083 public:
9084 virtual HRESULT STDMETHODCALLTYPE StorePipeline(
9085 _In_opt_ LPCWSTR pName,
9086 _In_ ID3D12PipelineState *pPipeline) = 0;
9087
9088 virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
9089 _In_ LPCWSTR pName,
9090 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9091 REFIID riid,
9092 _COM_Outptr_ void **ppPipelineState) = 0;
9093
9094 virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
9095 _In_ LPCWSTR pName,
9096 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9097 REFIID riid,
9098 _COM_Outptr_ void **ppPipelineState) = 0;
9099
9100 virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0;
9101
9102 virtual HRESULT STDMETHODCALLTYPE Serialize(
9103 _Out_writes_(DataSizeInBytes) void *pData,
9104 SIZE_T DataSizeInBytes) = 0;
9105
9106 };
9107
9108
9109#else /* C style interface */
9110
9111 typedef struct ID3D12PipelineLibraryVtbl
9112 {
9113 BEGIN_INTERFACE
9114
9115 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9116 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9117 ID3D12PipelineLibrary * This,
9118 REFIID riid,
9119 _COM_Outptr_ void **ppvObject);
9120
9121 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9122 ULONG ( STDMETHODCALLTYPE *AddRef )(
9123 ID3D12PipelineLibrary * This);
9124
9125 DECLSPEC_XFGVIRT(IUnknown, Release)
9126 ULONG ( STDMETHODCALLTYPE *Release )(
9127 ID3D12PipelineLibrary * This);
9128
9129 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9130 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9131 ID3D12PipelineLibrary * This,
9132 _In_ REFGUID guid,
9133 _Inout_ UINT *pDataSize,
9134 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9135
9136 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9137 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9138 ID3D12PipelineLibrary * This,
9139 _In_ REFGUID guid,
9140 _In_ UINT DataSize,
9141 _In_reads_bytes_opt_( DataSize ) const void *pData);
9142
9143 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9144 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9145 ID3D12PipelineLibrary * This,
9146 _In_ REFGUID guid,
9147 _In_opt_ const IUnknown *pData);
9148
9149 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9150 HRESULT ( STDMETHODCALLTYPE *SetName )(
9151 ID3D12PipelineLibrary * This,
9152 _In_z_ LPCWSTR Name);
9153
9154 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9155 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9156 ID3D12PipelineLibrary * This,
9157 REFIID riid,
9158 _COM_Outptr_opt_ void **ppvDevice);
9159
9160 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
9161 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
9162 ID3D12PipelineLibrary * This,
9163 _In_opt_ LPCWSTR pName,
9164 _In_ ID3D12PipelineState *pPipeline);
9165
9166 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
9167 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
9168 ID3D12PipelineLibrary * This,
9169 _In_ LPCWSTR pName,
9170 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9171 REFIID riid,
9172 _COM_Outptr_ void **ppPipelineState);
9173
9174 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
9175 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
9176 ID3D12PipelineLibrary * This,
9177 _In_ LPCWSTR pName,
9178 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9179 REFIID riid,
9180 _COM_Outptr_ void **ppPipelineState);
9181
9182 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
9183 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
9184 ID3D12PipelineLibrary * This);
9185
9186 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
9187 HRESULT ( STDMETHODCALLTYPE *Serialize )(
9188 ID3D12PipelineLibrary * This,
9189 _Out_writes_(DataSizeInBytes) void *pData,
9190 SIZE_T DataSizeInBytes);
9191
9192 END_INTERFACE
9193 } ID3D12PipelineLibraryVtbl;
9194
9195 interface ID3D12PipelineLibrary
9196 {
9197 CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl;
9198 };
9199
9200
9201
9202#ifdef COBJMACROS
9203
9204
9205#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \
9206 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9207
9208#define ID3D12PipelineLibrary_AddRef(This) \
9209 ( (This)->lpVtbl -> AddRef(This) )
9210
9211#define ID3D12PipelineLibrary_Release(This) \
9212 ( (This)->lpVtbl -> Release(This) )
9213
9214
9215#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \
9216 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9217
9218#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \
9219 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9220
9221#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \
9222 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9223
9224#define ID3D12PipelineLibrary_SetName(This,Name) \
9225 ( (This)->lpVtbl -> SetName(This,Name) )
9226
9227
9228#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \
9229 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9230
9231
9232#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \
9233 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
9234
9235#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
9236 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
9237
9238#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
9239 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
9240
9241#define ID3D12PipelineLibrary_GetSerializedSize(This) \
9242 ( (This)->lpVtbl -> GetSerializedSize(This) )
9243
9244#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \
9245 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
9246
9247#endif /* COBJMACROS */
9248
9249
9250#endif /* C style interface */
9251
9252
9253
9254
9255#endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
9256
9257
9258#ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
9259#define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
9260
9261/* interface ID3D12PipelineLibrary1 */
9262/* [unique][local][object][uuid] */
9263
9264
9265EXTERN_C const IID IID_ID3D12PipelineLibrary1;
9266
9267#if defined(__cplusplus) && !defined(CINTERFACE)
9268
9269 MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
9270 ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
9271 {
9272 public:
9273 virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
9274 _In_ LPCWSTR pName,
9275 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
9276 REFIID riid,
9277 _COM_Outptr_ void **ppPipelineState) = 0;
9278
9279 };
9280
9281
9282#else /* C style interface */
9283
9284 typedef struct ID3D12PipelineLibrary1Vtbl
9285 {
9286 BEGIN_INTERFACE
9287
9288 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9289 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9290 ID3D12PipelineLibrary1 * This,
9291 REFIID riid,
9292 _COM_Outptr_ void **ppvObject);
9293
9294 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9295 ULONG ( STDMETHODCALLTYPE *AddRef )(
9296 ID3D12PipelineLibrary1 * This);
9297
9298 DECLSPEC_XFGVIRT(IUnknown, Release)
9299 ULONG ( STDMETHODCALLTYPE *Release )(
9300 ID3D12PipelineLibrary1 * This);
9301
9302 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9303 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9304 ID3D12PipelineLibrary1 * This,
9305 _In_ REFGUID guid,
9306 _Inout_ UINT *pDataSize,
9307 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9308
9309 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9310 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9311 ID3D12PipelineLibrary1 * This,
9312 _In_ REFGUID guid,
9313 _In_ UINT DataSize,
9314 _In_reads_bytes_opt_( DataSize ) const void *pData);
9315
9316 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9317 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9318 ID3D12PipelineLibrary1 * This,
9319 _In_ REFGUID guid,
9320 _In_opt_ const IUnknown *pData);
9321
9322 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9323 HRESULT ( STDMETHODCALLTYPE *SetName )(
9324 ID3D12PipelineLibrary1 * This,
9325 _In_z_ LPCWSTR Name);
9326
9327 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9328 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9329 ID3D12PipelineLibrary1 * This,
9330 REFIID riid,
9331 _COM_Outptr_opt_ void **ppvDevice);
9332
9333 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
9334 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
9335 ID3D12PipelineLibrary1 * This,
9336 _In_opt_ LPCWSTR pName,
9337 _In_ ID3D12PipelineState *pPipeline);
9338
9339 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
9340 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
9341 ID3D12PipelineLibrary1 * This,
9342 _In_ LPCWSTR pName,
9343 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9344 REFIID riid,
9345 _COM_Outptr_ void **ppPipelineState);
9346
9347 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
9348 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
9349 ID3D12PipelineLibrary1 * This,
9350 _In_ LPCWSTR pName,
9351 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9352 REFIID riid,
9353 _COM_Outptr_ void **ppPipelineState);
9354
9355 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
9356 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
9357 ID3D12PipelineLibrary1 * This);
9358
9359 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
9360 HRESULT ( STDMETHODCALLTYPE *Serialize )(
9361 ID3D12PipelineLibrary1 * This,
9362 _Out_writes_(DataSizeInBytes) void *pData,
9363 SIZE_T DataSizeInBytes);
9364
9365 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary1, LoadPipeline)
9366 HRESULT ( STDMETHODCALLTYPE *LoadPipeline )(
9367 ID3D12PipelineLibrary1 * This,
9368 _In_ LPCWSTR pName,
9369 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
9370 REFIID riid,
9371 _COM_Outptr_ void **ppPipelineState);
9372
9373 END_INTERFACE
9374 } ID3D12PipelineLibrary1Vtbl;
9375
9376 interface ID3D12PipelineLibrary1
9377 {
9378 CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl;
9379 };
9380
9381
9382
9383#ifdef COBJMACROS
9384
9385
9386#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \
9387 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9388
9389#define ID3D12PipelineLibrary1_AddRef(This) \
9390 ( (This)->lpVtbl -> AddRef(This) )
9391
9392#define ID3D12PipelineLibrary1_Release(This) \
9393 ( (This)->lpVtbl -> Release(This) )
9394
9395
9396#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \
9397 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9398
9399#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \
9400 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9401
9402#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \
9403 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9404
9405#define ID3D12PipelineLibrary1_SetName(This,Name) \
9406 ( (This)->lpVtbl -> SetName(This,Name) )
9407
9408
9409#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \
9410 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9411
9412
9413#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \
9414 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
9415
9416#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
9417 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
9418
9419#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
9420 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
9421
9422#define ID3D12PipelineLibrary1_GetSerializedSize(This) \
9423 ( (This)->lpVtbl -> GetSerializedSize(This) )
9424
9425#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \
9426 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
9427
9428
9429#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \
9430 ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) )
9431
9432#endif /* COBJMACROS */
9433
9434
9435#endif /* C style interface */
9436
9437
9438
9439
9440#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
9441
9442
9443/* interface __MIDL_itf_d3d12_0000_0023 */
9444/* [local] */
9445
9446typedef
9447enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
9448 {
9449 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
9450 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
9451 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
9452 } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
9453
9454DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS );
9455typedef
9456enum D3D12_RESIDENCY_PRIORITY
9457 {
9458 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
9459 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
9460 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
9461 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
9462 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
9463 } D3D12_RESIDENCY_PRIORITY;
9464
9465
9466
9467extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_c_ifspec;
9468extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_s_ifspec;
9469
9470#ifndef __ID3D12Device1_INTERFACE_DEFINED__
9471#define __ID3D12Device1_INTERFACE_DEFINED__
9472
9473/* interface ID3D12Device1 */
9474/* [unique][local][object][uuid] */
9475
9476
9477EXTERN_C const IID IID_ID3D12Device1;
9478
9479#if defined(__cplusplus) && !defined(CINTERFACE)
9480
9481 MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
9482 ID3D12Device1 : public ID3D12Device
9483 {
9484 public:
9485 virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
9486 _In_reads_(BlobLength) const void *pLibraryBlob,
9487 SIZE_T BlobLength,
9488 REFIID riid,
9489 _COM_Outptr_ void **ppPipelineLibrary) = 0;
9490
9491 virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
9492 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
9493 _In_reads_(NumFences) const UINT64 *pFenceValues,
9494 UINT NumFences,
9495 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
9496 HANDLE hEvent) = 0;
9497
9498 virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
9499 UINT NumObjects,
9500 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
9501 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0;
9502
9503 };
9504
9505
9506#else /* C style interface */
9507
9508 typedef struct ID3D12Device1Vtbl
9509 {
9510 BEGIN_INTERFACE
9511
9512 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9513 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9514 ID3D12Device1 * This,
9515 REFIID riid,
9516 _COM_Outptr_ void **ppvObject);
9517
9518 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9519 ULONG ( STDMETHODCALLTYPE *AddRef )(
9520 ID3D12Device1 * This);
9521
9522 DECLSPEC_XFGVIRT(IUnknown, Release)
9523 ULONG ( STDMETHODCALLTYPE *Release )(
9524 ID3D12Device1 * This);
9525
9526 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9527 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9528 ID3D12Device1 * This,
9529 _In_ REFGUID guid,
9530 _Inout_ UINT *pDataSize,
9531 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9532
9533 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9534 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9535 ID3D12Device1 * This,
9536 _In_ REFGUID guid,
9537 _In_ UINT DataSize,
9538 _In_reads_bytes_opt_( DataSize ) const void *pData);
9539
9540 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9541 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9542 ID3D12Device1 * This,
9543 _In_ REFGUID guid,
9544 _In_opt_ const IUnknown *pData);
9545
9546 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9547 HRESULT ( STDMETHODCALLTYPE *SetName )(
9548 ID3D12Device1 * This,
9549 _In_z_ LPCWSTR Name);
9550
9551 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
9552 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
9553 ID3D12Device1 * This);
9554
9555 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
9556 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
9557 ID3D12Device1 * This,
9558 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9559 REFIID riid,
9560 _COM_Outptr_ void **ppCommandQueue);
9561
9562 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
9563 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
9564 ID3D12Device1 * This,
9565 _In_ D3D12_COMMAND_LIST_TYPE type,
9566 REFIID riid,
9567 _COM_Outptr_ void **ppCommandAllocator);
9568
9569 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
9570 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
9571 ID3D12Device1 * This,
9572 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9573 REFIID riid,
9574 _COM_Outptr_ void **ppPipelineState);
9575
9576 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
9577 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
9578 ID3D12Device1 * This,
9579 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9580 REFIID riid,
9581 _COM_Outptr_ void **ppPipelineState);
9582
9583 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
9584 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
9585 ID3D12Device1 * This,
9586 _In_ UINT nodeMask,
9587 _In_ D3D12_COMMAND_LIST_TYPE type,
9588 _In_ ID3D12CommandAllocator *pCommandAllocator,
9589 _In_opt_ ID3D12PipelineState *pInitialState,
9590 REFIID riid,
9591 _COM_Outptr_ void **ppCommandList);
9592
9593 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
9594 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9595 ID3D12Device1 * This,
9596 D3D12_FEATURE Feature,
9597 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9598 UINT FeatureSupportDataSize);
9599
9600 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
9601 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
9602 ID3D12Device1 * This,
9603 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9604 REFIID riid,
9605 _COM_Outptr_ void **ppvHeap);
9606
9607 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
9608 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
9609 ID3D12Device1 * This,
9610 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
9611
9612 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
9613 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
9614 ID3D12Device1 * This,
9615 _In_ UINT nodeMask,
9616 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9617 _In_ SIZE_T blobLengthInBytes,
9618 REFIID riid,
9619 _COM_Outptr_ void **ppvRootSignature);
9620
9621 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
9622 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
9623 ID3D12Device1 * This,
9624 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9625 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9626
9627 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
9628 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
9629 ID3D12Device1 * This,
9630 _In_opt_ ID3D12Resource *pResource,
9631 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9632 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9633
9634 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
9635 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
9636 ID3D12Device1 * This,
9637 _In_opt_ ID3D12Resource *pResource,
9638 _In_opt_ ID3D12Resource *pCounterResource,
9639 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9640 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9641
9642 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
9643 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
9644 ID3D12Device1 * This,
9645 _In_opt_ ID3D12Resource *pResource,
9646 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9647 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9648
9649 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
9650 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
9651 ID3D12Device1 * This,
9652 _In_opt_ ID3D12Resource *pResource,
9653 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9654 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9655
9656 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
9657 void ( STDMETHODCALLTYPE *CreateSampler )(
9658 ID3D12Device1 * This,
9659 _In_ const D3D12_SAMPLER_DESC *pDesc,
9660 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9661
9662 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
9663 void ( STDMETHODCALLTYPE *CopyDescriptors )(
9664 ID3D12Device1 * This,
9665 _In_ UINT NumDestDescriptorRanges,
9666 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9667 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9668 _In_ UINT NumSrcDescriptorRanges,
9669 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9670 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9671 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9672
9673 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
9674 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
9675 ID3D12Device1 * This,
9676 _In_ UINT NumDescriptors,
9677 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9678 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9679 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9680
9681 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
9682 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9683 ID3D12Device1 * This,
9684 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9685 _In_ UINT visibleMask,
9686 _In_ UINT numResourceDescs,
9687 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9688
9689 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
9690 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9691 ID3D12Device1 * This,
9692 D3D12_HEAP_PROPERTIES * RetVal,
9693 _In_ UINT nodeMask,
9694 D3D12_HEAP_TYPE heapType);
9695
9696 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
9697 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
9698 ID3D12Device1 * This,
9699 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9700 D3D12_HEAP_FLAGS HeapFlags,
9701 _In_ const D3D12_RESOURCE_DESC *pDesc,
9702 D3D12_RESOURCE_STATES InitialResourceState,
9703 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9704 REFIID riidResource,
9705 _COM_Outptr_opt_ void **ppvResource);
9706
9707 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
9708 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
9709 ID3D12Device1 * This,
9710 _In_ const D3D12_HEAP_DESC *pDesc,
9711 REFIID riid,
9712 _COM_Outptr_opt_ void **ppvHeap);
9713
9714 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
9715 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
9716 ID3D12Device1 * This,
9717 _In_ ID3D12Heap *pHeap,
9718 UINT64 HeapOffset,
9719 _In_ const D3D12_RESOURCE_DESC *pDesc,
9720 D3D12_RESOURCE_STATES InitialState,
9721 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9722 REFIID riid,
9723 _COM_Outptr_opt_ void **ppvResource);
9724
9725 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
9726 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
9727 ID3D12Device1 * This,
9728 _In_ const D3D12_RESOURCE_DESC *pDesc,
9729 D3D12_RESOURCE_STATES InitialState,
9730 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9731 REFIID riid,
9732 _COM_Outptr_opt_ void **ppvResource);
9733
9734 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
9735 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
9736 ID3D12Device1 * This,
9737 _In_ ID3D12DeviceChild *pObject,
9738 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
9739 DWORD Access,
9740 _In_opt_ LPCWSTR Name,
9741 _Out_ HANDLE *pHandle);
9742
9743 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
9744 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
9745 ID3D12Device1 * This,
9746 _In_ HANDLE NTHandle,
9747 REFIID riid,
9748 _COM_Outptr_opt_ void **ppvObj);
9749
9750 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
9751 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
9752 ID3D12Device1 * This,
9753 _In_ LPCWSTR Name,
9754 DWORD Access,
9755 /* [annotation][out] */
9756 _Out_ HANDLE *pNTHandle);
9757
9758 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
9759 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
9760 ID3D12Device1 * This,
9761 UINT NumObjects,
9762 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
9763
9764 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
9765 HRESULT ( STDMETHODCALLTYPE *Evict )(
9766 ID3D12Device1 * This,
9767 UINT NumObjects,
9768 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
9769
9770 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
9771 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
9772 ID3D12Device1 * This,
9773 UINT64 InitialValue,
9774 D3D12_FENCE_FLAGS Flags,
9775 REFIID riid,
9776 _COM_Outptr_ void **ppFence);
9777
9778 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
9779 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
9780 ID3D12Device1 * This);
9781
9782 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
9783 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
9784 ID3D12Device1 * This,
9785 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
9786 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
9787 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
9788 UINT64 BaseOffset,
9789 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
9790 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
9791 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
9792 _Out_opt_ UINT64 *pTotalBytes);
9793
9794 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
9795 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
9796 ID3D12Device1 * This,
9797 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
9798 REFIID riid,
9799 _COM_Outptr_opt_ void **ppvHeap);
9800
9801 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
9802 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
9803 ID3D12Device1 * This,
9804 BOOL Enable);
9805
9806 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
9807 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
9808 ID3D12Device1 * This,
9809 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
9810 _In_opt_ ID3D12RootSignature *pRootSignature,
9811 REFIID riid,
9812 _COM_Outptr_opt_ void **ppvCommandSignature);
9813
9814 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
9815 void ( STDMETHODCALLTYPE *GetResourceTiling )(
9816 ID3D12Device1 * This,
9817 _In_ ID3D12Resource *pTiledResource,
9818 _Out_opt_ UINT *pNumTilesForEntireResource,
9819 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
9820 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
9821 _Inout_opt_ UINT *pNumSubresourceTilings,
9822 _In_ UINT FirstSubresourceTilingToGet,
9823 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
9824
9825 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
9826 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
9827 ID3D12Device1 * This,
9828 LUID * RetVal);
9829
9830 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
9831 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
9832 ID3D12Device1 * This,
9833 _In_reads_(BlobLength) const void *pLibraryBlob,
9834 SIZE_T BlobLength,
9835 REFIID riid,
9836 _COM_Outptr_ void **ppPipelineLibrary);
9837
9838 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
9839 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
9840 ID3D12Device1 * This,
9841 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
9842 _In_reads_(NumFences) const UINT64 *pFenceValues,
9843 UINT NumFences,
9844 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
9845 HANDLE hEvent);
9846
9847 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
9848 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
9849 ID3D12Device1 * This,
9850 UINT NumObjects,
9851 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
9852 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
9853
9854 END_INTERFACE
9855 } ID3D12Device1Vtbl;
9856
9857 interface ID3D12Device1
9858 {
9859 CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl;
9860 };
9861
9862
9863
9864#ifdef COBJMACROS
9865
9866
9867#define ID3D12Device1_QueryInterface(This,riid,ppvObject) \
9868 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9869
9870#define ID3D12Device1_AddRef(This) \
9871 ( (This)->lpVtbl -> AddRef(This) )
9872
9873#define ID3D12Device1_Release(This) \
9874 ( (This)->lpVtbl -> Release(This) )
9875
9876
9877#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \
9878 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9879
9880#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \
9881 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9882
9883#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \
9884 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9885
9886#define ID3D12Device1_SetName(This,Name) \
9887 ( (This)->lpVtbl -> SetName(This,Name) )
9888
9889
9890#define ID3D12Device1_GetNodeCount(This) \
9891 ( (This)->lpVtbl -> GetNodeCount(This) )
9892
9893#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
9894 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
9895
9896#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
9897 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
9898
9899#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
9900 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
9901
9902#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
9903 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
9904
9905#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
9906 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
9907
9908#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
9909 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
9910
9911#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
9912 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
9913
9914#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
9915 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
9916
9917#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
9918 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
9919
9920#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \
9921 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
9922
9923#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
9924 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
9925
9926#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
9927 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
9928
9929#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
9930 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
9931
9932#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
9933 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
9934
9935#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \
9936 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
9937
9938#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
9939 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
9940
9941#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
9942 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
9943
9944#define ID3D12Device1_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
9945 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
9946
9947#define ID3D12Device1_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
9948 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
9949
9950#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
9951 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
9952
9953#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \
9954 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
9955
9956#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9957 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9958
9959#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9960 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9961
9962#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
9963 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
9964
9965#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
9966 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
9967
9968#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
9969 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
9970
9971#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \
9972 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
9973
9974#define ID3D12Device1_Evict(This,NumObjects,ppObjects) \
9975 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
9976
9977#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \
9978 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
9979
9980#define ID3D12Device1_GetDeviceRemovedReason(This) \
9981 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
9982
9983#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
9984 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
9985
9986#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
9987 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
9988
9989#define ID3D12Device1_SetStablePowerState(This,Enable) \
9990 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
9991
9992#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
9993 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
9994
9995#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
9996 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
9997
9998#define ID3D12Device1_GetAdapterLuid(This,RetVal) \
9999 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10000
10001
10002#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
10003 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
10004
10005#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
10006 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
10007
10008#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
10009 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
10010
10011#endif /* COBJMACROS */
10012
10013
10014#endif /* C style interface */
10015
10016
10017
10018
10019#endif /* __ID3D12Device1_INTERFACE_DEFINED__ */
10020
10021
10022#ifndef __ID3D12Device2_INTERFACE_DEFINED__
10023#define __ID3D12Device2_INTERFACE_DEFINED__
10024
10025/* interface ID3D12Device2 */
10026/* [unique][local][object][uuid] */
10027
10028
10029EXTERN_C const IID IID_ID3D12Device2;
10030
10031#if defined(__cplusplus) && !defined(CINTERFACE)
10032
10033 MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
10034 ID3D12Device2 : public ID3D12Device1
10035 {
10036 public:
10037 virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
10038 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10039 REFIID riid,
10040 _COM_Outptr_ void **ppPipelineState) = 0;
10041
10042 };
10043
10044
10045#else /* C style interface */
10046
10047 typedef struct ID3D12Device2Vtbl
10048 {
10049 BEGIN_INTERFACE
10050
10051 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10052 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10053 ID3D12Device2 * This,
10054 REFIID riid,
10055 _COM_Outptr_ void **ppvObject);
10056
10057 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10058 ULONG ( STDMETHODCALLTYPE *AddRef )(
10059 ID3D12Device2 * This);
10060
10061 DECLSPEC_XFGVIRT(IUnknown, Release)
10062 ULONG ( STDMETHODCALLTYPE *Release )(
10063 ID3D12Device2 * This);
10064
10065 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10066 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10067 ID3D12Device2 * This,
10068 _In_ REFGUID guid,
10069 _Inout_ UINT *pDataSize,
10070 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10071
10072 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10073 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10074 ID3D12Device2 * This,
10075 _In_ REFGUID guid,
10076 _In_ UINT DataSize,
10077 _In_reads_bytes_opt_( DataSize ) const void *pData);
10078
10079 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10080 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10081 ID3D12Device2 * This,
10082 _In_ REFGUID guid,
10083 _In_opt_ const IUnknown *pData);
10084
10085 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10086 HRESULT ( STDMETHODCALLTYPE *SetName )(
10087 ID3D12Device2 * This,
10088 _In_z_ LPCWSTR Name);
10089
10090 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10091 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10092 ID3D12Device2 * This);
10093
10094 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10095 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10096 ID3D12Device2 * This,
10097 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10098 REFIID riid,
10099 _COM_Outptr_ void **ppCommandQueue);
10100
10101 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10102 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10103 ID3D12Device2 * This,
10104 _In_ D3D12_COMMAND_LIST_TYPE type,
10105 REFIID riid,
10106 _COM_Outptr_ void **ppCommandAllocator);
10107
10108 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10109 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10110 ID3D12Device2 * This,
10111 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10112 REFIID riid,
10113 _COM_Outptr_ void **ppPipelineState);
10114
10115 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10116 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10117 ID3D12Device2 * This,
10118 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10119 REFIID riid,
10120 _COM_Outptr_ void **ppPipelineState);
10121
10122 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10123 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10124 ID3D12Device2 * This,
10125 _In_ UINT nodeMask,
10126 _In_ D3D12_COMMAND_LIST_TYPE type,
10127 _In_ ID3D12CommandAllocator *pCommandAllocator,
10128 _In_opt_ ID3D12PipelineState *pInitialState,
10129 REFIID riid,
10130 _COM_Outptr_ void **ppCommandList);
10131
10132 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10133 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10134 ID3D12Device2 * This,
10135 D3D12_FEATURE Feature,
10136 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10137 UINT FeatureSupportDataSize);
10138
10139 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10140 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10141 ID3D12Device2 * This,
10142 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10143 REFIID riid,
10144 _COM_Outptr_ void **ppvHeap);
10145
10146 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10147 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10148 ID3D12Device2 * This,
10149 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10150
10151 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10152 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10153 ID3D12Device2 * This,
10154 _In_ UINT nodeMask,
10155 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10156 _In_ SIZE_T blobLengthInBytes,
10157 REFIID riid,
10158 _COM_Outptr_ void **ppvRootSignature);
10159
10160 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10161 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10162 ID3D12Device2 * This,
10163 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10164 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10165
10166 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10167 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10168 ID3D12Device2 * This,
10169 _In_opt_ ID3D12Resource *pResource,
10170 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10171 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10172
10173 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10174 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10175 ID3D12Device2 * This,
10176 _In_opt_ ID3D12Resource *pResource,
10177 _In_opt_ ID3D12Resource *pCounterResource,
10178 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10179 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10180
10181 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10182 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10183 ID3D12Device2 * This,
10184 _In_opt_ ID3D12Resource *pResource,
10185 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10186 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10187
10188 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10189 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10190 ID3D12Device2 * This,
10191 _In_opt_ ID3D12Resource *pResource,
10192 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10193 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10194
10195 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10196 void ( STDMETHODCALLTYPE *CreateSampler )(
10197 ID3D12Device2 * This,
10198 _In_ const D3D12_SAMPLER_DESC *pDesc,
10199 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10200
10201 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10202 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10203 ID3D12Device2 * This,
10204 _In_ UINT NumDestDescriptorRanges,
10205 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10206 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10207 _In_ UINT NumSrcDescriptorRanges,
10208 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10209 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10210 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10211
10212 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10213 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10214 ID3D12Device2 * This,
10215 _In_ UINT NumDescriptors,
10216 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10217 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10218 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10219
10220 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10221 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10222 ID3D12Device2 * This,
10223 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10224 _In_ UINT visibleMask,
10225 _In_ UINT numResourceDescs,
10226 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10227
10228 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10229 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10230 ID3D12Device2 * This,
10231 D3D12_HEAP_PROPERTIES * RetVal,
10232 _In_ UINT nodeMask,
10233 D3D12_HEAP_TYPE heapType);
10234
10235 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10236 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10237 ID3D12Device2 * This,
10238 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10239 D3D12_HEAP_FLAGS HeapFlags,
10240 _In_ const D3D12_RESOURCE_DESC *pDesc,
10241 D3D12_RESOURCE_STATES InitialResourceState,
10242 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10243 REFIID riidResource,
10244 _COM_Outptr_opt_ void **ppvResource);
10245
10246 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10247 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10248 ID3D12Device2 * This,
10249 _In_ const D3D12_HEAP_DESC *pDesc,
10250 REFIID riid,
10251 _COM_Outptr_opt_ void **ppvHeap);
10252
10253 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10254 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10255 ID3D12Device2 * This,
10256 _In_ ID3D12Heap *pHeap,
10257 UINT64 HeapOffset,
10258 _In_ const D3D12_RESOURCE_DESC *pDesc,
10259 D3D12_RESOURCE_STATES InitialState,
10260 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10261 REFIID riid,
10262 _COM_Outptr_opt_ void **ppvResource);
10263
10264 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10265 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10266 ID3D12Device2 * This,
10267 _In_ const D3D12_RESOURCE_DESC *pDesc,
10268 D3D12_RESOURCE_STATES InitialState,
10269 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10270 REFIID riid,
10271 _COM_Outptr_opt_ void **ppvResource);
10272
10273 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10274 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10275 ID3D12Device2 * This,
10276 _In_ ID3D12DeviceChild *pObject,
10277 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10278 DWORD Access,
10279 _In_opt_ LPCWSTR Name,
10280 _Out_ HANDLE *pHandle);
10281
10282 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10283 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10284 ID3D12Device2 * This,
10285 _In_ HANDLE NTHandle,
10286 REFIID riid,
10287 _COM_Outptr_opt_ void **ppvObj);
10288
10289 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10290 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10291 ID3D12Device2 * This,
10292 _In_ LPCWSTR Name,
10293 DWORD Access,
10294 /* [annotation][out] */
10295 _Out_ HANDLE *pNTHandle);
10296
10297 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10298 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10299 ID3D12Device2 * This,
10300 UINT NumObjects,
10301 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10302
10303 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10304 HRESULT ( STDMETHODCALLTYPE *Evict )(
10305 ID3D12Device2 * This,
10306 UINT NumObjects,
10307 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10308
10309 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10310 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10311 ID3D12Device2 * This,
10312 UINT64 InitialValue,
10313 D3D12_FENCE_FLAGS Flags,
10314 REFIID riid,
10315 _COM_Outptr_ void **ppFence);
10316
10317 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10318 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10319 ID3D12Device2 * This);
10320
10321 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10322 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10323 ID3D12Device2 * This,
10324 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10325 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10326 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10327 UINT64 BaseOffset,
10328 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10329 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10330 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10331 _Out_opt_ UINT64 *pTotalBytes);
10332
10333 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10334 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10335 ID3D12Device2 * This,
10336 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10337 REFIID riid,
10338 _COM_Outptr_opt_ void **ppvHeap);
10339
10340 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10341 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10342 ID3D12Device2 * This,
10343 BOOL Enable);
10344
10345 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10346 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10347 ID3D12Device2 * This,
10348 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10349 _In_opt_ ID3D12RootSignature *pRootSignature,
10350 REFIID riid,
10351 _COM_Outptr_opt_ void **ppvCommandSignature);
10352
10353 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10354 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10355 ID3D12Device2 * This,
10356 _In_ ID3D12Resource *pTiledResource,
10357 _Out_opt_ UINT *pNumTilesForEntireResource,
10358 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10359 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10360 _Inout_opt_ UINT *pNumSubresourceTilings,
10361 _In_ UINT FirstSubresourceTilingToGet,
10362 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10363
10364 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10365 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10366 ID3D12Device2 * This,
10367 LUID * RetVal);
10368
10369 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
10370 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
10371 ID3D12Device2 * This,
10372 _In_reads_(BlobLength) const void *pLibraryBlob,
10373 SIZE_T BlobLength,
10374 REFIID riid,
10375 _COM_Outptr_ void **ppPipelineLibrary);
10376
10377 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
10378 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
10379 ID3D12Device2 * This,
10380 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10381 _In_reads_(NumFences) const UINT64 *pFenceValues,
10382 UINT NumFences,
10383 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10384 HANDLE hEvent);
10385
10386 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
10387 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
10388 ID3D12Device2 * This,
10389 UINT NumObjects,
10390 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10391 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
10392
10393 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
10394 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
10395 ID3D12Device2 * This,
10396 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10397 REFIID riid,
10398 _COM_Outptr_ void **ppPipelineState);
10399
10400 END_INTERFACE
10401 } ID3D12Device2Vtbl;
10402
10403 interface ID3D12Device2
10404 {
10405 CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl;
10406 };
10407
10408
10409
10410#ifdef COBJMACROS
10411
10412
10413#define ID3D12Device2_QueryInterface(This,riid,ppvObject) \
10414 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10415
10416#define ID3D12Device2_AddRef(This) \
10417 ( (This)->lpVtbl -> AddRef(This) )
10418
10419#define ID3D12Device2_Release(This) \
10420 ( (This)->lpVtbl -> Release(This) )
10421
10422
10423#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \
10424 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10425
10426#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \
10427 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10428
10429#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \
10430 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10431
10432#define ID3D12Device2_SetName(This,Name) \
10433 ( (This)->lpVtbl -> SetName(This,Name) )
10434
10435
10436#define ID3D12Device2_GetNodeCount(This) \
10437 ( (This)->lpVtbl -> GetNodeCount(This) )
10438
10439#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
10440 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
10441
10442#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
10443 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
10444
10445#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
10446 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
10447
10448#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
10449 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
10450
10451#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
10452 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
10453
10454#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
10455 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
10456
10457#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
10458 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
10459
10460#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
10461 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
10462
10463#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
10464 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
10465
10466#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \
10467 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
10468
10469#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
10470 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
10471
10472#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
10473 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
10474
10475#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
10476 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
10477
10478#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
10479 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
10480
10481#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \
10482 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
10483
10484#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
10485 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
10486
10487#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
10488 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
10489
10490#define ID3D12Device2_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
10491 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
10492
10493#define ID3D12Device2_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
10494 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
10495
10496#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
10497 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
10498
10499#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \
10500 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
10501
10502#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10503 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10504
10505#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10506 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10507
10508#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
10509 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
10510
10511#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
10512 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
10513
10514#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
10515 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
10516
10517#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \
10518 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
10519
10520#define ID3D12Device2_Evict(This,NumObjects,ppObjects) \
10521 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
10522
10523#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \
10524 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
10525
10526#define ID3D12Device2_GetDeviceRemovedReason(This) \
10527 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
10528
10529#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
10530 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
10531
10532#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
10533 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
10534
10535#define ID3D12Device2_SetStablePowerState(This,Enable) \
10536 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
10537
10538#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
10539 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
10540
10541#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
10542 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
10543
10544#define ID3D12Device2_GetAdapterLuid(This,RetVal) \
10545 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10546
10547
10548#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
10549 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
10550
10551#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
10552 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
10553
10554#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
10555 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
10556
10557
10558#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
10559 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
10560
10561#endif /* COBJMACROS */
10562
10563
10564#endif /* C style interface */
10565
10566
10567
10568
10569#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
10570
10571
10572/* interface __MIDL_itf_d3d12_0000_0025 */
10573/* [local] */
10574
10575typedef
10576enum D3D12_RESIDENCY_FLAGS
10577 {
10578 D3D12_RESIDENCY_FLAG_NONE = 0,
10579 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
10580 } D3D12_RESIDENCY_FLAGS;
10581
10582DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS );
10583
10584
10585extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
10586extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
10587
10588#ifndef __ID3D12Device3_INTERFACE_DEFINED__
10589#define __ID3D12Device3_INTERFACE_DEFINED__
10590
10591/* interface ID3D12Device3 */
10592/* [unique][local][object][uuid] */
10593
10594
10595EXTERN_C const IID IID_ID3D12Device3;
10596
10597#if defined(__cplusplus) && !defined(CINTERFACE)
10598
10599 MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
10600 ID3D12Device3 : public ID3D12Device2
10601 {
10602 public:
10603 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress(
10604 _In_ const void *pAddress,
10605 REFIID riid,
10606 _COM_Outptr_ void **ppvHeap) = 0;
10607
10608 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping(
10609 _In_ HANDLE hFileMapping,
10610 REFIID riid,
10611 _COM_Outptr_ void **ppvHeap) = 0;
10612
10613 virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident(
10614 D3D12_RESIDENCY_FLAGS Flags,
10615 UINT NumObjects,
10616 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10617 _In_ ID3D12Fence *pFenceToSignal,
10618 UINT64 FenceValueToSignal) = 0;
10619
10620 };
10621
10622
10623#else /* C style interface */
10624
10625 typedef struct ID3D12Device3Vtbl
10626 {
10627 BEGIN_INTERFACE
10628
10629 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10630 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10631 ID3D12Device3 * This,
10632 REFIID riid,
10633 _COM_Outptr_ void **ppvObject);
10634
10635 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10636 ULONG ( STDMETHODCALLTYPE *AddRef )(
10637 ID3D12Device3 * This);
10638
10639 DECLSPEC_XFGVIRT(IUnknown, Release)
10640 ULONG ( STDMETHODCALLTYPE *Release )(
10641 ID3D12Device3 * This);
10642
10643 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10644 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10645 ID3D12Device3 * This,
10646 _In_ REFGUID guid,
10647 _Inout_ UINT *pDataSize,
10648 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10649
10650 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10651 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10652 ID3D12Device3 * This,
10653 _In_ REFGUID guid,
10654 _In_ UINT DataSize,
10655 _In_reads_bytes_opt_( DataSize ) const void *pData);
10656
10657 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10658 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10659 ID3D12Device3 * This,
10660 _In_ REFGUID guid,
10661 _In_opt_ const IUnknown *pData);
10662
10663 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10664 HRESULT ( STDMETHODCALLTYPE *SetName )(
10665 ID3D12Device3 * This,
10666 _In_z_ LPCWSTR Name);
10667
10668 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10669 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10670 ID3D12Device3 * This);
10671
10672 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10673 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10674 ID3D12Device3 * This,
10675 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10676 REFIID riid,
10677 _COM_Outptr_ void **ppCommandQueue);
10678
10679 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10680 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10681 ID3D12Device3 * This,
10682 _In_ D3D12_COMMAND_LIST_TYPE type,
10683 REFIID riid,
10684 _COM_Outptr_ void **ppCommandAllocator);
10685
10686 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10687 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10688 ID3D12Device3 * This,
10689 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10690 REFIID riid,
10691 _COM_Outptr_ void **ppPipelineState);
10692
10693 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10694 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10695 ID3D12Device3 * This,
10696 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10697 REFIID riid,
10698 _COM_Outptr_ void **ppPipelineState);
10699
10700 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10701 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10702 ID3D12Device3 * This,
10703 _In_ UINT nodeMask,
10704 _In_ D3D12_COMMAND_LIST_TYPE type,
10705 _In_ ID3D12CommandAllocator *pCommandAllocator,
10706 _In_opt_ ID3D12PipelineState *pInitialState,
10707 REFIID riid,
10708 _COM_Outptr_ void **ppCommandList);
10709
10710 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10711 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10712 ID3D12Device3 * This,
10713 D3D12_FEATURE Feature,
10714 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10715 UINT FeatureSupportDataSize);
10716
10717 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10718 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10719 ID3D12Device3 * This,
10720 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10721 REFIID riid,
10722 _COM_Outptr_ void **ppvHeap);
10723
10724 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10725 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10726 ID3D12Device3 * This,
10727 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10728
10729 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10730 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10731 ID3D12Device3 * This,
10732 _In_ UINT nodeMask,
10733 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10734 _In_ SIZE_T blobLengthInBytes,
10735 REFIID riid,
10736 _COM_Outptr_ void **ppvRootSignature);
10737
10738 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10739 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10740 ID3D12Device3 * This,
10741 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10742 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10743
10744 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10745 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10746 ID3D12Device3 * This,
10747 _In_opt_ ID3D12Resource *pResource,
10748 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10749 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10750
10751 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10752 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10753 ID3D12Device3 * This,
10754 _In_opt_ ID3D12Resource *pResource,
10755 _In_opt_ ID3D12Resource *pCounterResource,
10756 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10757 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10758
10759 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10760 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10761 ID3D12Device3 * This,
10762 _In_opt_ ID3D12Resource *pResource,
10763 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10764 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10765
10766 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10767 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10768 ID3D12Device3 * This,
10769 _In_opt_ ID3D12Resource *pResource,
10770 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10771 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10772
10773 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10774 void ( STDMETHODCALLTYPE *CreateSampler )(
10775 ID3D12Device3 * This,
10776 _In_ const D3D12_SAMPLER_DESC *pDesc,
10777 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10778
10779 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10780 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10781 ID3D12Device3 * This,
10782 _In_ UINT NumDestDescriptorRanges,
10783 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10784 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10785 _In_ UINT NumSrcDescriptorRanges,
10786 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10787 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10788 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10789
10790 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10791 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10792 ID3D12Device3 * This,
10793 _In_ UINT NumDescriptors,
10794 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10795 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10796 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10797
10798 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10799 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10800 ID3D12Device3 * This,
10801 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10802 _In_ UINT visibleMask,
10803 _In_ UINT numResourceDescs,
10804 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10805
10806 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10807 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10808 ID3D12Device3 * This,
10809 D3D12_HEAP_PROPERTIES * RetVal,
10810 _In_ UINT nodeMask,
10811 D3D12_HEAP_TYPE heapType);
10812
10813 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10814 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10815 ID3D12Device3 * This,
10816 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10817 D3D12_HEAP_FLAGS HeapFlags,
10818 _In_ const D3D12_RESOURCE_DESC *pDesc,
10819 D3D12_RESOURCE_STATES InitialResourceState,
10820 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10821 REFIID riidResource,
10822 _COM_Outptr_opt_ void **ppvResource);
10823
10824 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10825 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10826 ID3D12Device3 * This,
10827 _In_ const D3D12_HEAP_DESC *pDesc,
10828 REFIID riid,
10829 _COM_Outptr_opt_ void **ppvHeap);
10830
10831 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10832 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10833 ID3D12Device3 * This,
10834 _In_ ID3D12Heap *pHeap,
10835 UINT64 HeapOffset,
10836 _In_ const D3D12_RESOURCE_DESC *pDesc,
10837 D3D12_RESOURCE_STATES InitialState,
10838 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10839 REFIID riid,
10840 _COM_Outptr_opt_ void **ppvResource);
10841
10842 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10843 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10844 ID3D12Device3 * This,
10845 _In_ const D3D12_RESOURCE_DESC *pDesc,
10846 D3D12_RESOURCE_STATES InitialState,
10847 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10848 REFIID riid,
10849 _COM_Outptr_opt_ void **ppvResource);
10850
10851 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10852 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10853 ID3D12Device3 * This,
10854 _In_ ID3D12DeviceChild *pObject,
10855 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10856 DWORD Access,
10857 _In_opt_ LPCWSTR Name,
10858 _Out_ HANDLE *pHandle);
10859
10860 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10861 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10862 ID3D12Device3 * This,
10863 _In_ HANDLE NTHandle,
10864 REFIID riid,
10865 _COM_Outptr_opt_ void **ppvObj);
10866
10867 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10868 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10869 ID3D12Device3 * This,
10870 _In_ LPCWSTR Name,
10871 DWORD Access,
10872 /* [annotation][out] */
10873 _Out_ HANDLE *pNTHandle);
10874
10875 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10876 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10877 ID3D12Device3 * This,
10878 UINT NumObjects,
10879 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10880
10881 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10882 HRESULT ( STDMETHODCALLTYPE *Evict )(
10883 ID3D12Device3 * This,
10884 UINT NumObjects,
10885 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10886
10887 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10888 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10889 ID3D12Device3 * This,
10890 UINT64 InitialValue,
10891 D3D12_FENCE_FLAGS Flags,
10892 REFIID riid,
10893 _COM_Outptr_ void **ppFence);
10894
10895 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10896 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10897 ID3D12Device3 * This);
10898
10899 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10900 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10901 ID3D12Device3 * This,
10902 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10903 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10904 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10905 UINT64 BaseOffset,
10906 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10907 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10908 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10909 _Out_opt_ UINT64 *pTotalBytes);
10910
10911 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10912 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10913 ID3D12Device3 * This,
10914 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10915 REFIID riid,
10916 _COM_Outptr_opt_ void **ppvHeap);
10917
10918 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10919 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10920 ID3D12Device3 * This,
10921 BOOL Enable);
10922
10923 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10924 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10925 ID3D12Device3 * This,
10926 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10927 _In_opt_ ID3D12RootSignature *pRootSignature,
10928 REFIID riid,
10929 _COM_Outptr_opt_ void **ppvCommandSignature);
10930
10931 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10932 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10933 ID3D12Device3 * This,
10934 _In_ ID3D12Resource *pTiledResource,
10935 _Out_opt_ UINT *pNumTilesForEntireResource,
10936 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10937 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10938 _Inout_opt_ UINT *pNumSubresourceTilings,
10939 _In_ UINT FirstSubresourceTilingToGet,
10940 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10941
10942 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10943 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10944 ID3D12Device3 * This,
10945 LUID * RetVal);
10946
10947 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
10948 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
10949 ID3D12Device3 * This,
10950 _In_reads_(BlobLength) const void *pLibraryBlob,
10951 SIZE_T BlobLength,
10952 REFIID riid,
10953 _COM_Outptr_ void **ppPipelineLibrary);
10954
10955 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
10956 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
10957 ID3D12Device3 * This,
10958 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10959 _In_reads_(NumFences) const UINT64 *pFenceValues,
10960 UINT NumFences,
10961 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10962 HANDLE hEvent);
10963
10964 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
10965 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
10966 ID3D12Device3 * This,
10967 UINT NumObjects,
10968 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10969 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
10970
10971 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
10972 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
10973 ID3D12Device3 * This,
10974 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10975 REFIID riid,
10976 _COM_Outptr_ void **ppPipelineState);
10977
10978 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
10979 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
10980 ID3D12Device3 * This,
10981 _In_ const void *pAddress,
10982 REFIID riid,
10983 _COM_Outptr_ void **ppvHeap);
10984
10985 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
10986 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
10987 ID3D12Device3 * This,
10988 _In_ HANDLE hFileMapping,
10989 REFIID riid,
10990 _COM_Outptr_ void **ppvHeap);
10991
10992 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
10993 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
10994 ID3D12Device3 * This,
10995 D3D12_RESIDENCY_FLAGS Flags,
10996 UINT NumObjects,
10997 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10998 _In_ ID3D12Fence *pFenceToSignal,
10999 UINT64 FenceValueToSignal);
11000
11001 END_INTERFACE
11002 } ID3D12Device3Vtbl;
11003
11004 interface ID3D12Device3
11005 {
11006 CONST_VTBL struct ID3D12Device3Vtbl *lpVtbl;
11007 };
11008
11009
11010
11011#ifdef COBJMACROS
11012
11013
11014#define ID3D12Device3_QueryInterface(This,riid,ppvObject) \
11015 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11016
11017#define ID3D12Device3_AddRef(This) \
11018 ( (This)->lpVtbl -> AddRef(This) )
11019
11020#define ID3D12Device3_Release(This) \
11021 ( (This)->lpVtbl -> Release(This) )
11022
11023
11024#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData) \
11025 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11026
11027#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData) \
11028 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11029
11030#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData) \
11031 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11032
11033#define ID3D12Device3_SetName(This,Name) \
11034 ( (This)->lpVtbl -> SetName(This,Name) )
11035
11036
11037#define ID3D12Device3_GetNodeCount(This) \
11038 ( (This)->lpVtbl -> GetNodeCount(This) )
11039
11040#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11041 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11042
11043#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11044 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11045
11046#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11047 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11048
11049#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11050 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11051
11052#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11053 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11054
11055#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11056 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11057
11058#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11059 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11060
11061#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11062 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11063
11064#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11065 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11066
11067#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11068 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11069
11070#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11071 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11072
11073#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11074 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11075
11076#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11077 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11078
11079#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11080 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11081
11082#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor) \
11083 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11084
11085#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11086 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11087
11088#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11089 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11090
11091#define ID3D12Device3_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11092 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11093
11094#define ID3D12Device3_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11095 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11096
11097#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11098 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11099
11100#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap) \
11101 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11102
11103#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11104 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11105
11106#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11107 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11108
11109#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11110 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11111
11112#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11113 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11114
11115#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11116 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11117
11118#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects) \
11119 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11120
11121#define ID3D12Device3_Evict(This,NumObjects,ppObjects) \
11122 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11123
11124#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11125 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11126
11127#define ID3D12Device3_GetDeviceRemovedReason(This) \
11128 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11129
11130#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11131 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11132
11133#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11134 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11135
11136#define ID3D12Device3_SetStablePowerState(This,Enable) \
11137 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11138
11139#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11140 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11141
11142#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11143 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11144
11145#define ID3D12Device3_GetAdapterLuid(This,RetVal) \
11146 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11147
11148
11149#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11150 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11151
11152#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11153 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11154
11155#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11156 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11157
11158
11159#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
11160 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
11161
11162
11163#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
11164 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
11165
11166#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
11167 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
11168
11169#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
11170 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
11171
11172#endif /* COBJMACROS */
11173
11174
11175#endif /* C style interface */
11176
11177
11178
11179
11180#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */
11181
11182
11183/* interface __MIDL_itf_d3d12_0000_0026 */
11184/* [local] */
11185
11186typedef
11187enum D3D12_COMMAND_LIST_FLAGS
11188 {
11189 D3D12_COMMAND_LIST_FLAG_NONE = 0
11190 } D3D12_COMMAND_LIST_FLAGS;
11191
11192DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS );
11193typedef
11194enum D3D12_COMMAND_POOL_FLAGS
11195 {
11196 D3D12_COMMAND_POOL_FLAG_NONE = 0
11197 } D3D12_COMMAND_POOL_FLAGS;
11198
11199DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS );
11200typedef
11201enum D3D12_COMMAND_RECORDER_FLAGS
11202 {
11203 D3D12_COMMAND_RECORDER_FLAG_NONE = 0
11204 } D3D12_COMMAND_RECORDER_FLAGS;
11205
11206DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS );
11207typedef
11208enum D3D12_PROTECTED_SESSION_STATUS
11209 {
11210 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
11211 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
11212 } D3D12_PROTECTED_SESSION_STATUS;
11213
11214
11215
11216extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_c_ifspec;
11217extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_s_ifspec;
11218
11219#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
11220#define __ID3D12ProtectedSession_INTERFACE_DEFINED__
11221
11222/* interface ID3D12ProtectedSession */
11223/* [unique][local][object][uuid] */
11224
11225
11226EXTERN_C const IID IID_ID3D12ProtectedSession;
11227
11228#if defined(__cplusplus) && !defined(CINTERFACE)
11229
11230 MIDL_INTERFACE("A1533D18-0AC1-4084-85B9-89A96116806B")
11231 ID3D12ProtectedSession : public ID3D12DeviceChild
11232 {
11233 public:
11234 virtual HRESULT STDMETHODCALLTYPE GetStatusFence(
11235 REFIID riid,
11236 _COM_Outptr_opt_ void **ppFence) = 0;
11237
11238 virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus( void) = 0;
11239
11240 };
11241
11242
11243#else /* C style interface */
11244
11245 typedef struct ID3D12ProtectedSessionVtbl
11246 {
11247 BEGIN_INTERFACE
11248
11249 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11250 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11251 ID3D12ProtectedSession * This,
11252 REFIID riid,
11253 _COM_Outptr_ void **ppvObject);
11254
11255 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11256 ULONG ( STDMETHODCALLTYPE *AddRef )(
11257 ID3D12ProtectedSession * This);
11258
11259 DECLSPEC_XFGVIRT(IUnknown, Release)
11260 ULONG ( STDMETHODCALLTYPE *Release )(
11261 ID3D12ProtectedSession * This);
11262
11263 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11264 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11265 ID3D12ProtectedSession * This,
11266 _In_ REFGUID guid,
11267 _Inout_ UINT *pDataSize,
11268 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11269
11270 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11271 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11272 ID3D12ProtectedSession * This,
11273 _In_ REFGUID guid,
11274 _In_ UINT DataSize,
11275 _In_reads_bytes_opt_( DataSize ) const void *pData);
11276
11277 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11278 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11279 ID3D12ProtectedSession * This,
11280 _In_ REFGUID guid,
11281 _In_opt_ const IUnknown *pData);
11282
11283 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11284 HRESULT ( STDMETHODCALLTYPE *SetName )(
11285 ID3D12ProtectedSession * This,
11286 _In_z_ LPCWSTR Name);
11287
11288 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
11289 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
11290 ID3D12ProtectedSession * This,
11291 REFIID riid,
11292 _COM_Outptr_opt_ void **ppvDevice);
11293
11294 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
11295 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
11296 ID3D12ProtectedSession * This,
11297 REFIID riid,
11298 _COM_Outptr_opt_ void **ppFence);
11299
11300 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
11301 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
11302 ID3D12ProtectedSession * This);
11303
11304 END_INTERFACE
11305 } ID3D12ProtectedSessionVtbl;
11306
11307 interface ID3D12ProtectedSession
11308 {
11309 CONST_VTBL struct ID3D12ProtectedSessionVtbl *lpVtbl;
11310 };
11311
11312
11313
11314#ifdef COBJMACROS
11315
11316
11317#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) \
11318 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11319
11320#define ID3D12ProtectedSession_AddRef(This) \
11321 ( (This)->lpVtbl -> AddRef(This) )
11322
11323#define ID3D12ProtectedSession_Release(This) \
11324 ( (This)->lpVtbl -> Release(This) )
11325
11326
11327#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData) \
11328 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11329
11330#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData) \
11331 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11332
11333#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData) \
11334 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11335
11336#define ID3D12ProtectedSession_SetName(This,Name) \
11337 ( (This)->lpVtbl -> SetName(This,Name) )
11338
11339
11340#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice) \
11341 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
11342
11343
11344#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence) \
11345 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
11346
11347#define ID3D12ProtectedSession_GetSessionStatus(This) \
11348 ( (This)->lpVtbl -> GetSessionStatus(This) )
11349
11350#endif /* COBJMACROS */
11351
11352
11353#endif /* C style interface */
11354
11355
11356
11357
11358#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
11359
11360
11361/* interface __MIDL_itf_d3d12_0000_0027 */
11362/* [local] */
11363
11364typedef
11365enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
11366 {
11367 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0,
11368 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
11369 } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
11370
11371DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS );
11372typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
11373 {
11374 UINT NodeIndex;
11375 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support;
11376 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
11377
11378typedef
11379enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
11380 {
11381 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
11382 } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
11383
11384DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS );
11385typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
11386 {
11387 UINT NodeMask;
11388 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
11389 } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
11390
11391
11392
11393extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
11394extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
11395
11396#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
11397#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
11398
11399/* interface ID3D12ProtectedResourceSession */
11400/* [unique][local][object][uuid] */
11401
11402
11403EXTERN_C const IID IID_ID3D12ProtectedResourceSession;
11404
11405#if defined(__cplusplus) && !defined(CINTERFACE)
11406
11407 MIDL_INTERFACE("6CD696F4-F289-40CC-8091-5A6C0A099C3D")
11408 ID3D12ProtectedResourceSession : public ID3D12ProtectedSession
11409 {
11410 public:
11411 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
11412
11413 };
11414
11415
11416#else /* C style interface */
11417
11418 typedef struct ID3D12ProtectedResourceSessionVtbl
11419 {
11420 BEGIN_INTERFACE
11421
11422 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11423 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11424 ID3D12ProtectedResourceSession * This,
11425 REFIID riid,
11426 _COM_Outptr_ void **ppvObject);
11427
11428 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11429 ULONG ( STDMETHODCALLTYPE *AddRef )(
11430 ID3D12ProtectedResourceSession * This);
11431
11432 DECLSPEC_XFGVIRT(IUnknown, Release)
11433 ULONG ( STDMETHODCALLTYPE *Release )(
11434 ID3D12ProtectedResourceSession * This);
11435
11436 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11437 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11438 ID3D12ProtectedResourceSession * This,
11439 _In_ REFGUID guid,
11440 _Inout_ UINT *pDataSize,
11441 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11442
11443 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11444 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11445 ID3D12ProtectedResourceSession * This,
11446 _In_ REFGUID guid,
11447 _In_ UINT DataSize,
11448 _In_reads_bytes_opt_( DataSize ) const void *pData);
11449
11450 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11451 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11452 ID3D12ProtectedResourceSession * This,
11453 _In_ REFGUID guid,
11454 _In_opt_ const IUnknown *pData);
11455
11456 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11457 HRESULT ( STDMETHODCALLTYPE *SetName )(
11458 ID3D12ProtectedResourceSession * This,
11459 _In_z_ LPCWSTR Name);
11460
11461 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
11462 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
11463 ID3D12ProtectedResourceSession * This,
11464 REFIID riid,
11465 _COM_Outptr_opt_ void **ppvDevice);
11466
11467 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
11468 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
11469 ID3D12ProtectedResourceSession * This,
11470 REFIID riid,
11471 _COM_Outptr_opt_ void **ppFence);
11472
11473 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
11474 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
11475 ID3D12ProtectedResourceSession * This);
11476
11477 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
11478 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
11479 ID3D12ProtectedResourceSession * This,
11480 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
11481
11482 END_INTERFACE
11483 } ID3D12ProtectedResourceSessionVtbl;
11484
11485 interface ID3D12ProtectedResourceSession
11486 {
11487 CONST_VTBL struct ID3D12ProtectedResourceSessionVtbl *lpVtbl;
11488 };
11489
11490
11491
11492#ifdef COBJMACROS
11493
11494
11495#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) \
11496 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11497
11498#define ID3D12ProtectedResourceSession_AddRef(This) \
11499 ( (This)->lpVtbl -> AddRef(This) )
11500
11501#define ID3D12ProtectedResourceSession_Release(This) \
11502 ( (This)->lpVtbl -> Release(This) )
11503
11504
11505#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData) \
11506 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11507
11508#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData) \
11509 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11510
11511#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData) \
11512 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11513
11514#define ID3D12ProtectedResourceSession_SetName(This,Name) \
11515 ( (This)->lpVtbl -> SetName(This,Name) )
11516
11517
11518#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice) \
11519 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
11520
11521
11522#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence) \
11523 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
11524
11525#define ID3D12ProtectedResourceSession_GetSessionStatus(This) \
11526 ( (This)->lpVtbl -> GetSessionStatus(This) )
11527
11528
11529#define ID3D12ProtectedResourceSession_GetDesc(This,RetVal) \
11530 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
11531
11532#endif /* COBJMACROS */
11533
11534
11535#endif /* C style interface */
11536
11537
11538
11539
11540#endif /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */
11541
11542
11543#ifndef __ID3D12Device4_INTERFACE_DEFINED__
11544#define __ID3D12Device4_INTERFACE_DEFINED__
11545
11546/* interface ID3D12Device4 */
11547/* [unique][local][object][uuid] */
11548
11549
11550EXTERN_C const IID IID_ID3D12Device4;
11551
11552#if defined(__cplusplus) && !defined(CINTERFACE)
11553
11554 MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
11555 ID3D12Device4 : public ID3D12Device3
11556 {
11557 public:
11558 virtual HRESULT STDMETHODCALLTYPE CreateCommandList1(
11559 _In_ UINT nodeMask,
11560 _In_ D3D12_COMMAND_LIST_TYPE type,
11561 _In_ D3D12_COMMAND_LIST_FLAGS flags,
11562 REFIID riid,
11563 _COM_Outptr_ void **ppCommandList) = 0;
11564
11565 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession(
11566 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
11567 _In_ REFIID riid,
11568 _COM_Outptr_ void **ppSession) = 0;
11569
11570 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1(
11571 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11572 D3D12_HEAP_FLAGS HeapFlags,
11573 _In_ const D3D12_RESOURCE_DESC *pDesc,
11574 D3D12_RESOURCE_STATES InitialResourceState,
11575 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11576 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
11577 REFIID riidResource,
11578 _COM_Outptr_opt_ void **ppvResource) = 0;
11579
11580 virtual HRESULT STDMETHODCALLTYPE CreateHeap1(
11581 _In_ const D3D12_HEAP_DESC *pDesc,
11582 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
11583 REFIID riid,
11584 _COM_Outptr_opt_ void **ppvHeap) = 0;
11585
11586 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1(
11587 _In_ const D3D12_RESOURCE_DESC *pDesc,
11588 D3D12_RESOURCE_STATES InitialState,
11589 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11590 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
11591 REFIID riid,
11592 _COM_Outptr_opt_ void **ppvResource) = 0;
11593
11594 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
11595 UINT visibleMask,
11596 UINT numResourceDescs,
11597 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
11598 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
11599
11600 };
11601
11602
11603#else /* C style interface */
11604
11605 typedef struct ID3D12Device4Vtbl
11606 {
11607 BEGIN_INTERFACE
11608
11609 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11610 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11611 ID3D12Device4 * This,
11612 REFIID riid,
11613 _COM_Outptr_ void **ppvObject);
11614
11615 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11616 ULONG ( STDMETHODCALLTYPE *AddRef )(
11617 ID3D12Device4 * This);
11618
11619 DECLSPEC_XFGVIRT(IUnknown, Release)
11620 ULONG ( STDMETHODCALLTYPE *Release )(
11621 ID3D12Device4 * This);
11622
11623 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11624 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11625 ID3D12Device4 * This,
11626 _In_ REFGUID guid,
11627 _Inout_ UINT *pDataSize,
11628 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11629
11630 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11631 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11632 ID3D12Device4 * This,
11633 _In_ REFGUID guid,
11634 _In_ UINT DataSize,
11635 _In_reads_bytes_opt_( DataSize ) const void *pData);
11636
11637 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11638 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11639 ID3D12Device4 * This,
11640 _In_ REFGUID guid,
11641 _In_opt_ const IUnknown *pData);
11642
11643 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11644 HRESULT ( STDMETHODCALLTYPE *SetName )(
11645 ID3D12Device4 * This,
11646 _In_z_ LPCWSTR Name);
11647
11648 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11649 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11650 ID3D12Device4 * This);
11651
11652 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11653 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11654 ID3D12Device4 * This,
11655 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11656 REFIID riid,
11657 _COM_Outptr_ void **ppCommandQueue);
11658
11659 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11660 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11661 ID3D12Device4 * This,
11662 _In_ D3D12_COMMAND_LIST_TYPE type,
11663 REFIID riid,
11664 _COM_Outptr_ void **ppCommandAllocator);
11665
11666 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
11667 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
11668 ID3D12Device4 * This,
11669 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
11670 REFIID riid,
11671 _COM_Outptr_ void **ppPipelineState);
11672
11673 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
11674 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
11675 ID3D12Device4 * This,
11676 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
11677 REFIID riid,
11678 _COM_Outptr_ void **ppPipelineState);
11679
11680 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
11681 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
11682 ID3D12Device4 * This,
11683 _In_ UINT nodeMask,
11684 _In_ D3D12_COMMAND_LIST_TYPE type,
11685 _In_ ID3D12CommandAllocator *pCommandAllocator,
11686 _In_opt_ ID3D12PipelineState *pInitialState,
11687 REFIID riid,
11688 _COM_Outptr_ void **ppCommandList);
11689
11690 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
11691 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
11692 ID3D12Device4 * This,
11693 D3D12_FEATURE Feature,
11694 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
11695 UINT FeatureSupportDataSize);
11696
11697 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
11698 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
11699 ID3D12Device4 * This,
11700 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
11701 REFIID riid,
11702 _COM_Outptr_ void **ppvHeap);
11703
11704 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
11705 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
11706 ID3D12Device4 * This,
11707 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
11708
11709 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
11710 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
11711 ID3D12Device4 * This,
11712 _In_ UINT nodeMask,
11713 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
11714 _In_ SIZE_T blobLengthInBytes,
11715 REFIID riid,
11716 _COM_Outptr_ void **ppvRootSignature);
11717
11718 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
11719 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
11720 ID3D12Device4 * This,
11721 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
11722 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11723
11724 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
11725 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
11726 ID3D12Device4 * This,
11727 _In_opt_ ID3D12Resource *pResource,
11728 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
11729 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11730
11731 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
11732 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
11733 ID3D12Device4 * This,
11734 _In_opt_ ID3D12Resource *pResource,
11735 _In_opt_ ID3D12Resource *pCounterResource,
11736 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
11737 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11738
11739 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
11740 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
11741 ID3D12Device4 * This,
11742 _In_opt_ ID3D12Resource *pResource,
11743 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
11744 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11745
11746 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
11747 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
11748 ID3D12Device4 * This,
11749 _In_opt_ ID3D12Resource *pResource,
11750 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
11751 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11752
11753 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
11754 void ( STDMETHODCALLTYPE *CreateSampler )(
11755 ID3D12Device4 * This,
11756 _In_ const D3D12_SAMPLER_DESC *pDesc,
11757 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11758
11759 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
11760 void ( STDMETHODCALLTYPE *CopyDescriptors )(
11761 ID3D12Device4 * This,
11762 _In_ UINT NumDestDescriptorRanges,
11763 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
11764 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
11765 _In_ UINT NumSrcDescriptorRanges,
11766 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
11767 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
11768 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11769
11770 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
11771 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
11772 ID3D12Device4 * This,
11773 _In_ UINT NumDescriptors,
11774 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
11775 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
11776 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11777
11778 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
11779 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11780 ID3D12Device4 * This,
11781 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
11782 _In_ UINT visibleMask,
11783 _In_ UINT numResourceDescs,
11784 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11785
11786 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
11787 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11788 ID3D12Device4 * This,
11789 D3D12_HEAP_PROPERTIES * RetVal,
11790 _In_ UINT nodeMask,
11791 D3D12_HEAP_TYPE heapType);
11792
11793 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
11794 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
11795 ID3D12Device4 * This,
11796 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11797 D3D12_HEAP_FLAGS HeapFlags,
11798 _In_ const D3D12_RESOURCE_DESC *pDesc,
11799 D3D12_RESOURCE_STATES InitialResourceState,
11800 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11801 REFIID riidResource,
11802 _COM_Outptr_opt_ void **ppvResource);
11803
11804 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
11805 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
11806 ID3D12Device4 * This,
11807 _In_ const D3D12_HEAP_DESC *pDesc,
11808 REFIID riid,
11809 _COM_Outptr_opt_ void **ppvHeap);
11810
11811 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
11812 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
11813 ID3D12Device4 * This,
11814 _In_ ID3D12Heap *pHeap,
11815 UINT64 HeapOffset,
11816 _In_ const D3D12_RESOURCE_DESC *pDesc,
11817 D3D12_RESOURCE_STATES InitialState,
11818 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11819 REFIID riid,
11820 _COM_Outptr_opt_ void **ppvResource);
11821
11822 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
11823 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
11824 ID3D12Device4 * This,
11825 _In_ const D3D12_RESOURCE_DESC *pDesc,
11826 D3D12_RESOURCE_STATES InitialState,
11827 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11828 REFIID riid,
11829 _COM_Outptr_opt_ void **ppvResource);
11830
11831 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
11832 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
11833 ID3D12Device4 * This,
11834 _In_ ID3D12DeviceChild *pObject,
11835 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
11836 DWORD Access,
11837 _In_opt_ LPCWSTR Name,
11838 _Out_ HANDLE *pHandle);
11839
11840 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
11841 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
11842 ID3D12Device4 * This,
11843 _In_ HANDLE NTHandle,
11844 REFIID riid,
11845 _COM_Outptr_opt_ void **ppvObj);
11846
11847 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
11848 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
11849 ID3D12Device4 * This,
11850 _In_ LPCWSTR Name,
11851 DWORD Access,
11852 /* [annotation][out] */
11853 _Out_ HANDLE *pNTHandle);
11854
11855 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11856 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11857 ID3D12Device4 * This,
11858 UINT NumObjects,
11859 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11860
11861 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11862 HRESULT ( STDMETHODCALLTYPE *Evict )(
11863 ID3D12Device4 * This,
11864 UINT NumObjects,
11865 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11866
11867 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11868 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11869 ID3D12Device4 * This,
11870 UINT64 InitialValue,
11871 D3D12_FENCE_FLAGS Flags,
11872 REFIID riid,
11873 _COM_Outptr_ void **ppFence);
11874
11875 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11876 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11877 ID3D12Device4 * This);
11878
11879 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11880 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11881 ID3D12Device4 * This,
11882 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11883 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11884 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11885 UINT64 BaseOffset,
11886 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11887 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11888 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11889 _Out_opt_ UINT64 *pTotalBytes);
11890
11891 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11892 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11893 ID3D12Device4 * This,
11894 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11895 REFIID riid,
11896 _COM_Outptr_opt_ void **ppvHeap);
11897
11898 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11899 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11900 ID3D12Device4 * This,
11901 BOOL Enable);
11902
11903 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11904 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11905 ID3D12Device4 * This,
11906 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11907 _In_opt_ ID3D12RootSignature *pRootSignature,
11908 REFIID riid,
11909 _COM_Outptr_opt_ void **ppvCommandSignature);
11910
11911 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11912 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11913 ID3D12Device4 * This,
11914 _In_ ID3D12Resource *pTiledResource,
11915 _Out_opt_ UINT *pNumTilesForEntireResource,
11916 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11917 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11918 _Inout_opt_ UINT *pNumSubresourceTilings,
11919 _In_ UINT FirstSubresourceTilingToGet,
11920 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11921
11922 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11923 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11924 ID3D12Device4 * This,
11925 LUID * RetVal);
11926
11927 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11928 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11929 ID3D12Device4 * This,
11930 _In_reads_(BlobLength) const void *pLibraryBlob,
11931 SIZE_T BlobLength,
11932 REFIID riid,
11933 _COM_Outptr_ void **ppPipelineLibrary);
11934
11935 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11936 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11937 ID3D12Device4 * This,
11938 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11939 _In_reads_(NumFences) const UINT64 *pFenceValues,
11940 UINT NumFences,
11941 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11942 HANDLE hEvent);
11943
11944 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11945 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11946 ID3D12Device4 * This,
11947 UINT NumObjects,
11948 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11949 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11950
11951 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
11952 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
11953 ID3D12Device4 * This,
11954 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11955 REFIID riid,
11956 _COM_Outptr_ void **ppPipelineState);
11957
11958 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
11959 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
11960 ID3D12Device4 * This,
11961 _In_ const void *pAddress,
11962 REFIID riid,
11963 _COM_Outptr_ void **ppvHeap);
11964
11965 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
11966 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
11967 ID3D12Device4 * This,
11968 _In_ HANDLE hFileMapping,
11969 REFIID riid,
11970 _COM_Outptr_ void **ppvHeap);
11971
11972 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
11973 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
11974 ID3D12Device4 * This,
11975 D3D12_RESIDENCY_FLAGS Flags,
11976 UINT NumObjects,
11977 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11978 _In_ ID3D12Fence *pFenceToSignal,
11979 UINT64 FenceValueToSignal);
11980
11981 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
11982 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
11983 ID3D12Device4 * This,
11984 _In_ UINT nodeMask,
11985 _In_ D3D12_COMMAND_LIST_TYPE type,
11986 _In_ D3D12_COMMAND_LIST_FLAGS flags,
11987 REFIID riid,
11988 _COM_Outptr_ void **ppCommandList);
11989
11990 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
11991 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
11992 ID3D12Device4 * This,
11993 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
11994 _In_ REFIID riid,
11995 _COM_Outptr_ void **ppSession);
11996
11997 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
11998 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
11999 ID3D12Device4 * This,
12000 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12001 D3D12_HEAP_FLAGS HeapFlags,
12002 _In_ const D3D12_RESOURCE_DESC *pDesc,
12003 D3D12_RESOURCE_STATES InitialResourceState,
12004 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12005 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12006 REFIID riidResource,
12007 _COM_Outptr_opt_ void **ppvResource);
12008
12009 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
12010 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
12011 ID3D12Device4 * This,
12012 _In_ const D3D12_HEAP_DESC *pDesc,
12013 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12014 REFIID riid,
12015 _COM_Outptr_opt_ void **ppvHeap);
12016
12017 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
12018 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
12019 ID3D12Device4 * This,
12020 _In_ const D3D12_RESOURCE_DESC *pDesc,
12021 D3D12_RESOURCE_STATES InitialState,
12022 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12023 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12024 REFIID riid,
12025 _COM_Outptr_opt_ void **ppvResource);
12026
12027 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
12028 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
12029 ID3D12Device4 * This,
12030 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12031 UINT visibleMask,
12032 UINT numResourceDescs,
12033 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12034 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
12035
12036 END_INTERFACE
12037 } ID3D12Device4Vtbl;
12038
12039 interface ID3D12Device4
12040 {
12041 CONST_VTBL struct ID3D12Device4Vtbl *lpVtbl;
12042 };
12043
12044
12045
12046#ifdef COBJMACROS
12047
12048
12049#define ID3D12Device4_QueryInterface(This,riid,ppvObject) \
12050 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12051
12052#define ID3D12Device4_AddRef(This) \
12053 ( (This)->lpVtbl -> AddRef(This) )
12054
12055#define ID3D12Device4_Release(This) \
12056 ( (This)->lpVtbl -> Release(This) )
12057
12058
12059#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData) \
12060 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12061
12062#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData) \
12063 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12064
12065#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData) \
12066 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12067
12068#define ID3D12Device4_SetName(This,Name) \
12069 ( (This)->lpVtbl -> SetName(This,Name) )
12070
12071
12072#define ID3D12Device4_GetNodeCount(This) \
12073 ( (This)->lpVtbl -> GetNodeCount(This) )
12074
12075#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
12076 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
12077
12078#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
12079 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
12080
12081#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
12082 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
12083
12084#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
12085 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
12086
12087#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
12088 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
12089
12090#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
12091 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
12092
12093#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
12094 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
12095
12096#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
12097 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
12098
12099#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
12100 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
12101
12102#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor) \
12103 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
12104
12105#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
12106 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
12107
12108#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
12109 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
12110
12111#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
12112 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
12113
12114#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
12115 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
12116
12117#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor) \
12118 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
12119
12120#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
12121 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
12122
12123#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
12124 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
12125
12126#define ID3D12Device4_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
12127 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
12128
12129#define ID3D12Device4_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
12130 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
12131
12132#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
12133 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
12134
12135#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap) \
12136 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
12137
12138#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12139 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12140
12141#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12142 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12143
12144#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
12145 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
12146
12147#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
12148 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
12149
12150#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
12151 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
12152
12153#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects) \
12154 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
12155
12156#define ID3D12Device4_Evict(This,NumObjects,ppObjects) \
12157 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
12158
12159#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence) \
12160 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
12161
12162#define ID3D12Device4_GetDeviceRemovedReason(This) \
12163 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
12164
12165#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
12166 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
12167
12168#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
12169 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
12170
12171#define ID3D12Device4_SetStablePowerState(This,Enable) \
12172 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
12173
12174#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
12175 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
12176
12177#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
12178 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
12179
12180#define ID3D12Device4_GetAdapterLuid(This,RetVal) \
12181 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
12182
12183
12184#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
12185 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
12186
12187#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
12188 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
12189
12190#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
12191 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
12192
12193
12194#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
12195 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
12196
12197
12198#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
12199 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
12200
12201#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
12202 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
12203
12204#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
12205 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
12206
12207
12208#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
12209 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
12210
12211#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
12212 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
12213
12214#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
12215 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
12216
12217#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
12218 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
12219
12220#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
12221 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
12222
12223#define ID3D12Device4_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
12224 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
12225
12226#endif /* COBJMACROS */
12227
12228
12229#endif /* C style interface */
12230
12231
12232
12233
12234#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */
12235
12236
12237/* interface __MIDL_itf_d3d12_0000_0029 */
12238/* [local] */
12239
12240typedef
12241enum D3D12_LIFETIME_STATE
12242 {
12243 D3D12_LIFETIME_STATE_IN_USE = 0,
12244 D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 )
12245 } D3D12_LIFETIME_STATE;
12246
12247
12248
12249
12250extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
12251extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
12252
12253#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
12254#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
12255
12256/* interface ID3D12LifetimeOwner */
12257/* [unique][local][object][uuid] */
12258
12259
12260EXTERN_C const IID IID_ID3D12LifetimeOwner;
12261
12262#if defined(__cplusplus) && !defined(CINTERFACE)
12263
12264 MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
12265 ID3D12LifetimeOwner : public IUnknown
12266 {
12267 public:
12268 virtual void STDMETHODCALLTYPE LifetimeStateUpdated(
12269 D3D12_LIFETIME_STATE NewState) = 0;
12270
12271 };
12272
12273
12274#else /* C style interface */
12275
12276 typedef struct ID3D12LifetimeOwnerVtbl
12277 {
12278 BEGIN_INTERFACE
12279
12280 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12281 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12282 ID3D12LifetimeOwner * This,
12283 REFIID riid,
12284 _COM_Outptr_ void **ppvObject);
12285
12286 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12287 ULONG ( STDMETHODCALLTYPE *AddRef )(
12288 ID3D12LifetimeOwner * This);
12289
12290 DECLSPEC_XFGVIRT(IUnknown, Release)
12291 ULONG ( STDMETHODCALLTYPE *Release )(
12292 ID3D12LifetimeOwner * This);
12293
12294 DECLSPEC_XFGVIRT(ID3D12LifetimeOwner, LifetimeStateUpdated)
12295 void ( STDMETHODCALLTYPE *LifetimeStateUpdated )(
12296 ID3D12LifetimeOwner * This,
12297 D3D12_LIFETIME_STATE NewState);
12298
12299 END_INTERFACE
12300 } ID3D12LifetimeOwnerVtbl;
12301
12302 interface ID3D12LifetimeOwner
12303 {
12304 CONST_VTBL struct ID3D12LifetimeOwnerVtbl *lpVtbl;
12305 };
12306
12307
12308
12309#ifdef COBJMACROS
12310
12311
12312#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) \
12313 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12314
12315#define ID3D12LifetimeOwner_AddRef(This) \
12316 ( (This)->lpVtbl -> AddRef(This) )
12317
12318#define ID3D12LifetimeOwner_Release(This) \
12319 ( (This)->lpVtbl -> Release(This) )
12320
12321
12322#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) \
12323 ( (This)->lpVtbl -> LifetimeStateUpdated(This,NewState) )
12324
12325#endif /* COBJMACROS */
12326
12327
12328#endif /* C style interface */
12329
12330
12331
12332
12333#endif /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */
12334
12335
12336#ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
12337#define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
12338
12339/* interface ID3D12SwapChainAssistant */
12340/* [unique][local][object][uuid] */
12341
12342
12343EXTERN_C const IID IID_ID3D12SwapChainAssistant;
12344
12345#if defined(__cplusplus) && !defined(CINTERFACE)
12346
12347 MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
12348 ID3D12SwapChainAssistant : public IUnknown
12349 {
12350 public:
12351 virtual LUID STDMETHODCALLTYPE GetLUID( void) = 0;
12352
12353 virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject(
12354 REFIID riid,
12355 _COM_Outptr_ void **ppv) = 0;
12356
12357 virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue(
12358 REFIID riidResource,
12359 _COM_Outptr_ void **ppvResource,
12360 REFIID riidQueue,
12361 _COM_Outptr_ void **ppvQueue) = 0;
12362
12363 virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync( void) = 0;
12364
12365 };
12366
12367
12368#else /* C style interface */
12369
12370 typedef struct ID3D12SwapChainAssistantVtbl
12371 {
12372 BEGIN_INTERFACE
12373
12374 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12375 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12376 ID3D12SwapChainAssistant * This,
12377 REFIID riid,
12378 _COM_Outptr_ void **ppvObject);
12379
12380 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12381 ULONG ( STDMETHODCALLTYPE *AddRef )(
12382 ID3D12SwapChainAssistant * This);
12383
12384 DECLSPEC_XFGVIRT(IUnknown, Release)
12385 ULONG ( STDMETHODCALLTYPE *Release )(
12386 ID3D12SwapChainAssistant * This);
12387
12388 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetLUID)
12389 LUID *( STDMETHODCALLTYPE *GetLUID )(
12390 ID3D12SwapChainAssistant * This,
12391 LUID * RetVal);
12392
12393 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetSwapChainObject)
12394 HRESULT ( STDMETHODCALLTYPE *GetSwapChainObject )(
12395 ID3D12SwapChainAssistant * This,
12396 REFIID riid,
12397 _COM_Outptr_ void **ppv);
12398
12399 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetCurrentResourceAndCommandQueue)
12400 HRESULT ( STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue )(
12401 ID3D12SwapChainAssistant * This,
12402 REFIID riidResource,
12403 _COM_Outptr_ void **ppvResource,
12404 REFIID riidQueue,
12405 _COM_Outptr_ void **ppvQueue);
12406
12407 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, InsertImplicitSync)
12408 HRESULT ( STDMETHODCALLTYPE *InsertImplicitSync )(
12409 ID3D12SwapChainAssistant * This);
12410
12411 END_INTERFACE
12412 } ID3D12SwapChainAssistantVtbl;
12413
12414 interface ID3D12SwapChainAssistant
12415 {
12416 CONST_VTBL struct ID3D12SwapChainAssistantVtbl *lpVtbl;
12417 };
12418
12419
12420
12421#ifdef COBJMACROS
12422
12423
12424#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) \
12425 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12426
12427#define ID3D12SwapChainAssistant_AddRef(This) \
12428 ( (This)->lpVtbl -> AddRef(This) )
12429
12430#define ID3D12SwapChainAssistant_Release(This) \
12431 ( (This)->lpVtbl -> Release(This) )
12432
12433
12434#define ID3D12SwapChainAssistant_GetLUID(This,RetVal) \
12435 ( (This)->lpVtbl -> GetLUID(This,RetVal) )
12436
12437#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) \
12438 ( (This)->lpVtbl -> GetSwapChainObject(This,riid,ppv) )
12439
12440#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) \
12441 ( (This)->lpVtbl -> GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) )
12442
12443#define ID3D12SwapChainAssistant_InsertImplicitSync(This) \
12444 ( (This)->lpVtbl -> InsertImplicitSync(This) )
12445
12446#endif /* COBJMACROS */
12447
12448
12449#endif /* C style interface */
12450
12451
12452
12453
12454#endif /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */
12455
12456
12457#ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
12458#define __ID3D12LifetimeTracker_INTERFACE_DEFINED__
12459
12460/* interface ID3D12LifetimeTracker */
12461/* [unique][local][object][uuid] */
12462
12463
12464EXTERN_C const IID IID_ID3D12LifetimeTracker;
12465
12466#if defined(__cplusplus) && !defined(CINTERFACE)
12467
12468 MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
12469 ID3D12LifetimeTracker : public ID3D12DeviceChild
12470 {
12471 public:
12472 virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject(
12473 _In_ ID3D12DeviceChild *pObject) = 0;
12474
12475 };
12476
12477
12478#else /* C style interface */
12479
12480 typedef struct ID3D12LifetimeTrackerVtbl
12481 {
12482 BEGIN_INTERFACE
12483
12484 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12485 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12486 ID3D12LifetimeTracker * This,
12487 REFIID riid,
12488 _COM_Outptr_ void **ppvObject);
12489
12490 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12491 ULONG ( STDMETHODCALLTYPE *AddRef )(
12492 ID3D12LifetimeTracker * This);
12493
12494 DECLSPEC_XFGVIRT(IUnknown, Release)
12495 ULONG ( STDMETHODCALLTYPE *Release )(
12496 ID3D12LifetimeTracker * This);
12497
12498 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12499 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12500 ID3D12LifetimeTracker * This,
12501 _In_ REFGUID guid,
12502 _Inout_ UINT *pDataSize,
12503 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12504
12505 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12506 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12507 ID3D12LifetimeTracker * This,
12508 _In_ REFGUID guid,
12509 _In_ UINT DataSize,
12510 _In_reads_bytes_opt_( DataSize ) const void *pData);
12511
12512 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12513 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12514 ID3D12LifetimeTracker * This,
12515 _In_ REFGUID guid,
12516 _In_opt_ const IUnknown *pData);
12517
12518 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12519 HRESULT ( STDMETHODCALLTYPE *SetName )(
12520 ID3D12LifetimeTracker * This,
12521 _In_z_ LPCWSTR Name);
12522
12523 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12524 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12525 ID3D12LifetimeTracker * This,
12526 REFIID riid,
12527 _COM_Outptr_opt_ void **ppvDevice);
12528
12529 DECLSPEC_XFGVIRT(ID3D12LifetimeTracker, DestroyOwnedObject)
12530 HRESULT ( STDMETHODCALLTYPE *DestroyOwnedObject )(
12531 ID3D12LifetimeTracker * This,
12532 _In_ ID3D12DeviceChild *pObject);
12533
12534 END_INTERFACE
12535 } ID3D12LifetimeTrackerVtbl;
12536
12537 interface ID3D12LifetimeTracker
12538 {
12539 CONST_VTBL struct ID3D12LifetimeTrackerVtbl *lpVtbl;
12540 };
12541
12542
12543
12544#ifdef COBJMACROS
12545
12546
12547#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) \
12548 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12549
12550#define ID3D12LifetimeTracker_AddRef(This) \
12551 ( (This)->lpVtbl -> AddRef(This) )
12552
12553#define ID3D12LifetimeTracker_Release(This) \
12554 ( (This)->lpVtbl -> Release(This) )
12555
12556
12557#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData) \
12558 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12559
12560#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData) \
12561 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12562
12563#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData) \
12564 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12565
12566#define ID3D12LifetimeTracker_SetName(This,Name) \
12567 ( (This)->lpVtbl -> SetName(This,Name) )
12568
12569
12570#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice) \
12571 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12572
12573
12574#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject) \
12575 ( (This)->lpVtbl -> DestroyOwnedObject(This,pObject) )
12576
12577#endif /* COBJMACROS */
12578
12579
12580#endif /* C style interface */
12581
12582
12583
12584
12585#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
12586
12587
12588/* interface __MIDL_itf_d3d12_0000_0032 */
12589/* [local] */
12590
12591typedef
12592enum D3D12_META_COMMAND_PARAMETER_TYPE
12593 {
12594 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
12595 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
12596 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
12597 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
12598 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4
12599 } D3D12_META_COMMAND_PARAMETER_TYPE;
12600
12601typedef
12602enum D3D12_META_COMMAND_PARAMETER_FLAGS
12603 {
12604 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
12605 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
12606 } D3D12_META_COMMAND_PARAMETER_FLAGS;
12607
12608DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS );
12609typedef
12610enum D3D12_META_COMMAND_PARAMETER_STAGE
12611 {
12612 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
12613 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
12614 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2
12615 } D3D12_META_COMMAND_PARAMETER_STAGE;
12616
12617typedef struct D3D12_META_COMMAND_PARAMETER_DESC
12618 {
12619 LPCWSTR Name;
12620 D3D12_META_COMMAND_PARAMETER_TYPE Type;
12621 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
12622 D3D12_RESOURCE_STATES RequiredResourceState;
12623 UINT StructureOffset;
12624 } D3D12_META_COMMAND_PARAMETER_DESC;
12625
12626typedef
12627enum D3D12_GRAPHICS_STATES
12628 {
12629 D3D12_GRAPHICS_STATE_NONE = 0,
12630 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) ,
12631 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) ,
12632 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) ,
12633 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) ,
12634 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) ,
12635 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) ,
12636 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) ,
12637 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) ,
12638 D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) ,
12639 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) ,
12640 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) ,
12641 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) ,
12642 D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) ,
12643 D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) ,
12644 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) ,
12645 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) ,
12646 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 )
12647 } D3D12_GRAPHICS_STATES;
12648
12649DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES );
12650typedef struct D3D12_META_COMMAND_DESC
12651 {
12652 GUID Id;
12653 LPCWSTR Name;
12654 D3D12_GRAPHICS_STATES InitializationDirtyState;
12655 D3D12_GRAPHICS_STATES ExecutionDirtyState;
12656 } D3D12_META_COMMAND_DESC;
12657
12658
12659
12660extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_c_ifspec;
12661extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_s_ifspec;
12662
12663#ifndef __ID3D12StateObject_INTERFACE_DEFINED__
12664#define __ID3D12StateObject_INTERFACE_DEFINED__
12665
12666/* interface ID3D12StateObject */
12667/* [unique][local][object][uuid] */
12668
12669
12670EXTERN_C const IID IID_ID3D12StateObject;
12671
12672#if defined(__cplusplus) && !defined(CINTERFACE)
12673
12674 MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
12675 ID3D12StateObject : public ID3D12Pageable
12676 {
12677 public:
12678 };
12679
12680
12681#else /* C style interface */
12682
12683 typedef struct ID3D12StateObjectVtbl
12684 {
12685 BEGIN_INTERFACE
12686
12687 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12688 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12689 ID3D12StateObject * This,
12690 REFIID riid,
12691 _COM_Outptr_ void **ppvObject);
12692
12693 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12694 ULONG ( STDMETHODCALLTYPE *AddRef )(
12695 ID3D12StateObject * This);
12696
12697 DECLSPEC_XFGVIRT(IUnknown, Release)
12698 ULONG ( STDMETHODCALLTYPE *Release )(
12699 ID3D12StateObject * This);
12700
12701 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12702 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12703 ID3D12StateObject * This,
12704 _In_ REFGUID guid,
12705 _Inout_ UINT *pDataSize,
12706 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12707
12708 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12709 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12710 ID3D12StateObject * This,
12711 _In_ REFGUID guid,
12712 _In_ UINT DataSize,
12713 _In_reads_bytes_opt_( DataSize ) const void *pData);
12714
12715 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12716 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12717 ID3D12StateObject * This,
12718 _In_ REFGUID guid,
12719 _In_opt_ const IUnknown *pData);
12720
12721 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12722 HRESULT ( STDMETHODCALLTYPE *SetName )(
12723 ID3D12StateObject * This,
12724 _In_z_ LPCWSTR Name);
12725
12726 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12727 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12728 ID3D12StateObject * This,
12729 REFIID riid,
12730 _COM_Outptr_opt_ void **ppvDevice);
12731
12732 END_INTERFACE
12733 } ID3D12StateObjectVtbl;
12734
12735 interface ID3D12StateObject
12736 {
12737 CONST_VTBL struct ID3D12StateObjectVtbl *lpVtbl;
12738 };
12739
12740
12741
12742#ifdef COBJMACROS
12743
12744
12745#define ID3D12StateObject_QueryInterface(This,riid,ppvObject) \
12746 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12747
12748#define ID3D12StateObject_AddRef(This) \
12749 ( (This)->lpVtbl -> AddRef(This) )
12750
12751#define ID3D12StateObject_Release(This) \
12752 ( (This)->lpVtbl -> Release(This) )
12753
12754
12755#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData) \
12756 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12757
12758#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData) \
12759 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12760
12761#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData) \
12762 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12763
12764#define ID3D12StateObject_SetName(This,Name) \
12765 ( (This)->lpVtbl -> SetName(This,Name) )
12766
12767
12768#define ID3D12StateObject_GetDevice(This,riid,ppvDevice) \
12769 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12770
12771
12772
12773#endif /* COBJMACROS */
12774
12775
12776#endif /* C style interface */
12777
12778
12779
12780
12781#endif /* __ID3D12StateObject_INTERFACE_DEFINED__ */
12782
12783
12784#ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
12785#define __ID3D12StateObjectProperties_INTERFACE_DEFINED__
12786
12787/* interface ID3D12StateObjectProperties */
12788/* [unique][local][object][uuid] */
12789
12790
12791EXTERN_C const IID IID_ID3D12StateObjectProperties;
12792
12793#if defined(__cplusplus) && !defined(CINTERFACE)
12794
12795 MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
12796 ID3D12StateObjectProperties : public IUnknown
12797 {
12798 public:
12799 virtual void *STDMETHODCALLTYPE GetShaderIdentifier(
12800 _In_ LPCWSTR pExportName) = 0;
12801
12802 virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize(
12803 _In_ LPCWSTR pExportName) = 0;
12804
12805 virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize( void) = 0;
12806
12807 virtual void STDMETHODCALLTYPE SetPipelineStackSize(
12808 UINT64 PipelineStackSizeInBytes) = 0;
12809
12810 };
12811
12812
12813#else /* C style interface */
12814
12815 typedef struct ID3D12StateObjectPropertiesVtbl
12816 {
12817 BEGIN_INTERFACE
12818
12819 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12820 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12821 ID3D12StateObjectProperties * This,
12822 REFIID riid,
12823 _COM_Outptr_ void **ppvObject);
12824
12825 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12826 ULONG ( STDMETHODCALLTYPE *AddRef )(
12827 ID3D12StateObjectProperties * This);
12828
12829 DECLSPEC_XFGVIRT(IUnknown, Release)
12830 ULONG ( STDMETHODCALLTYPE *Release )(
12831 ID3D12StateObjectProperties * This);
12832
12833 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
12834 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
12835 ID3D12StateObjectProperties * This,
12836 _In_ LPCWSTR pExportName);
12837
12838 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
12839 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
12840 ID3D12StateObjectProperties * This,
12841 _In_ LPCWSTR pExportName);
12842
12843 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
12844 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
12845 ID3D12StateObjectProperties * This);
12846
12847 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
12848 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
12849 ID3D12StateObjectProperties * This,
12850 UINT64 PipelineStackSizeInBytes);
12851
12852 END_INTERFACE
12853 } ID3D12StateObjectPropertiesVtbl;
12854
12855 interface ID3D12StateObjectProperties
12856 {
12857 CONST_VTBL struct ID3D12StateObjectPropertiesVtbl *lpVtbl;
12858 };
12859
12860
12861
12862#ifdef COBJMACROS
12863
12864
12865#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) \
12866 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12867
12868#define ID3D12StateObjectProperties_AddRef(This) \
12869 ( (This)->lpVtbl -> AddRef(This) )
12870
12871#define ID3D12StateObjectProperties_Release(This) \
12872 ( (This)->lpVtbl -> Release(This) )
12873
12874
12875#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName) \
12876 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
12877
12878#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName) \
12879 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
12880
12881#define ID3D12StateObjectProperties_GetPipelineStackSize(This) \
12882 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
12883
12884#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
12885 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
12886
12887#endif /* COBJMACROS */
12888
12889
12890#endif /* C style interface */
12891
12892
12893
12894
12895#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
12896
12897
12898/* interface __MIDL_itf_d3d12_0000_0034 */
12899/* [local] */
12900
12901typedef
12902enum D3D12_STATE_SUBOBJECT_TYPE
12903 {
12904 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0,
12905 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1,
12906 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2,
12907 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3,
12908 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5,
12909 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6,
12910 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7,
12911 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8,
12912 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9,
12913 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,
12914 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,
12915 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,
12916 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 + 1 )
12917 } D3D12_STATE_SUBOBJECT_TYPE;
12918
12919typedef struct D3D12_STATE_SUBOBJECT
12920 {
12921 D3D12_STATE_SUBOBJECT_TYPE Type;
12922 const void *pDesc;
12923 } D3D12_STATE_SUBOBJECT;
12924
12925typedef
12926enum D3D12_STATE_OBJECT_FLAGS
12927 {
12928 D3D12_STATE_OBJECT_FLAG_NONE = 0,
12929 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
12930 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
12931 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
12932 } D3D12_STATE_OBJECT_FLAGS;
12933
12934DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS );
12935typedef struct D3D12_STATE_OBJECT_CONFIG
12936 {
12937 D3D12_STATE_OBJECT_FLAGS Flags;
12938 } D3D12_STATE_OBJECT_CONFIG;
12939
12940typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
12941 {
12942 ID3D12RootSignature *pGlobalRootSignature;
12943 } D3D12_GLOBAL_ROOT_SIGNATURE;
12944
12945typedef struct D3D12_LOCAL_ROOT_SIGNATURE
12946 {
12947 ID3D12RootSignature *pLocalRootSignature;
12948 } D3D12_LOCAL_ROOT_SIGNATURE;
12949
12950typedef struct D3D12_NODE_MASK
12951 {
12952 UINT NodeMask;
12953 } D3D12_NODE_MASK;
12954
12955typedef
12956enum D3D12_EXPORT_FLAGS
12957 {
12958 D3D12_EXPORT_FLAG_NONE = 0
12959 } D3D12_EXPORT_FLAGS;
12960
12961DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS );
12962typedef struct D3D12_EXPORT_DESC
12963 {
12964 LPCWSTR Name;
12965 _In_opt_ LPCWSTR ExportToRename;
12966 D3D12_EXPORT_FLAGS Flags;
12967 } D3D12_EXPORT_DESC;
12968
12969typedef struct D3D12_DXIL_LIBRARY_DESC
12970 {
12971 D3D12_SHADER_BYTECODE DXILLibrary;
12972 UINT NumExports;
12973 _In_reads_(NumExports) D3D12_EXPORT_DESC *pExports;
12974 } D3D12_DXIL_LIBRARY_DESC;
12975
12976typedef struct D3D12_EXISTING_COLLECTION_DESC
12977 {
12978 ID3D12StateObject *pExistingCollection;
12979 UINT NumExports;
12980 _In_reads_(NumExports) D3D12_EXPORT_DESC *pExports;
12981 } D3D12_EXISTING_COLLECTION_DESC;
12982
12983typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
12984 {
12985 const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
12986 UINT NumExports;
12987 _In_reads_(NumExports) LPCWSTR *pExports;
12988 } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
12989
12990typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
12991 {
12992 LPCWSTR SubobjectToAssociate;
12993 UINT NumExports;
12994 _In_reads_(NumExports) LPCWSTR *pExports;
12995 } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
12996
12997typedef
12998enum D3D12_HIT_GROUP_TYPE
12999 {
13000 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0,
13001 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1
13002 } D3D12_HIT_GROUP_TYPE;
13003
13004typedef struct D3D12_HIT_GROUP_DESC
13005 {
13006 LPCWSTR HitGroupExport;
13007 D3D12_HIT_GROUP_TYPE Type;
13008 _In_opt_ LPCWSTR AnyHitShaderImport;
13009 _In_opt_ LPCWSTR ClosestHitShaderImport;
13010 _In_opt_ LPCWSTR IntersectionShaderImport;
13011 } D3D12_HIT_GROUP_DESC;
13012
13013typedef struct D3D12_RAYTRACING_SHADER_CONFIG
13014 {
13015 UINT MaxPayloadSizeInBytes;
13016 UINT MaxAttributeSizeInBytes;
13017 } D3D12_RAYTRACING_SHADER_CONFIG;
13018
13019typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
13020 {
13021 UINT MaxTraceRecursionDepth;
13022 } D3D12_RAYTRACING_PIPELINE_CONFIG;
13023
13024typedef
13025enum D3D12_RAYTRACING_PIPELINE_FLAGS
13026 {
13027 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0,
13028 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
13029 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
13030 } D3D12_RAYTRACING_PIPELINE_FLAGS;
13031
13032DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS );
13033typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
13034 {
13035 UINT MaxTraceRecursionDepth;
13036 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
13037 } D3D12_RAYTRACING_PIPELINE_CONFIG1;
13038
13039typedef
13040enum D3D12_STATE_OBJECT_TYPE
13041 {
13042 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
13043 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3
13044 } D3D12_STATE_OBJECT_TYPE;
13045
13046typedef struct D3D12_STATE_OBJECT_DESC
13047 {
13048 D3D12_STATE_OBJECT_TYPE Type;
13049 UINT NumSubobjects;
13050 _In_reads_(NumSubobjects) const D3D12_STATE_SUBOBJECT *pSubobjects;
13051 } D3D12_STATE_OBJECT_DESC;
13052
13053typedef
13054enum D3D12_RAYTRACING_GEOMETRY_FLAGS
13055 {
13056 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
13057 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
13058 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
13059 } D3D12_RAYTRACING_GEOMETRY_FLAGS;
13060
13061DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS );
13062typedef
13063enum D3D12_RAYTRACING_GEOMETRY_TYPE
13064 {
13065 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0,
13066 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 )
13067 } D3D12_RAYTRACING_GEOMETRY_TYPE;
13068
13069typedef
13070enum D3D12_RAYTRACING_INSTANCE_FLAGS
13071 {
13072 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0,
13073 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
13074 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
13075 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
13076 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
13077 } D3D12_RAYTRACING_INSTANCE_FLAGS;
13078
13079DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS );
13080typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
13081 {
13082 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13083 UINT64 StrideInBytes;
13084 } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
13085
13086typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
13087 {
13088 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13089 UINT64 SizeInBytes;
13090 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
13091
13092typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
13093 {
13094 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13095 UINT64 SizeInBytes;
13096 UINT64 StrideInBytes;
13097 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
13098
13099typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
13100 {
13101 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
13102 DXGI_FORMAT IndexFormat;
13103 DXGI_FORMAT VertexFormat;
13104 UINT IndexCount;
13105 UINT VertexCount;
13106 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
13107 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
13108 } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
13109
13110typedef struct D3D12_RAYTRACING_AABB
13111 {
13112 FLOAT MinX;
13113 FLOAT MinY;
13114 FLOAT MinZ;
13115 FLOAT MaxX;
13116 FLOAT MaxY;
13117 FLOAT MaxZ;
13118 } D3D12_RAYTRACING_AABB;
13119
13120typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
13121 {
13122 UINT64 AABBCount;
13123 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
13124 } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
13125
13126typedef
13127enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
13128 {
13129 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
13130 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
13131 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
13132 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
13133 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
13134 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
13135 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
13136 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
13137
13138DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS );
13139typedef
13140enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
13141 {
13142 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
13143 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
13144 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
13145 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
13146 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
13147 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
13148
13149typedef
13150enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
13151 {
13152 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0,
13153 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
13154 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
13155
13156typedef
13157enum D3D12_ELEMENTS_LAYOUT
13158 {
13159 D3D12_ELEMENTS_LAYOUT_ARRAY = 0,
13160 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
13161 } D3D12_ELEMENTS_LAYOUT;
13162
13163typedef
13164enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
13165 {
13166 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0,
13167 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
13168 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
13169 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
13170 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
13171
13172typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
13173 {
13174 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
13175 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
13176 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
13177
13178typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
13179 {
13180 UINT64 CompactedSizeInBytes;
13181 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
13182
13183typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
13184 {
13185 UINT64 DecodedSizeInBytes;
13186 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
13187
13188typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
13189 {
13190 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
13191 UINT NumDescs;
13192 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
13193
13194// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,
13195// depending on Type field, NumDescs above is followed by either:
13196// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]
13197// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].
13198// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.
13199
13200typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
13201 {
13202 UINT64 SerializedSizeInBytes;
13203 UINT64 NumBottomLevelAccelerationStructurePointers;
13204 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
13205
13206typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
13207 {
13208 GUID DriverOpaqueGUID;
13209 BYTE DriverOpaqueVersioningData[ 16 ];
13210 } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
13211
13212typedef
13213enum D3D12_SERIALIZED_DATA_TYPE
13214 {
13215 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0
13216 } D3D12_SERIALIZED_DATA_TYPE;
13217
13218typedef
13219enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
13220 {
13221 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0,
13222 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
13223 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
13224 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
13225 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4
13226 } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
13227
13228typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
13229 {
13230 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
13231 UINT64 SerializedSizeInBytesIncludingHeader;
13232 UINT64 DeserializedSizeInBytes;
13233 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
13234 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
13235
13236typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
13237 {
13238 UINT64 CurrentSizeInBytes;
13239 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
13240
13241typedef struct D3D12_RAYTRACING_INSTANCE_DESC
13242 {
13243 FLOAT Transform[ 3 ][ 4 ];
13244 UINT InstanceID : 24;
13245 UINT InstanceMask : 8;
13246 UINT InstanceContributionToHitGroupIndex : 24;
13247 UINT Flags : 8;
13248 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
13249 } D3D12_RAYTRACING_INSTANCE_DESC;
13250
13251typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
13252 {
13253 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
13254 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
13255 union
13256 {
13257 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
13258 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
13259 } ;
13260 } D3D12_RAYTRACING_GEOMETRY_DESC;
13261
13262typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
13263 {
13264 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
13265 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
13266 UINT NumDescs;
13267 D3D12_ELEMENTS_LAYOUT DescsLayout;
13268 union
13269 {
13270 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
13271 const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
13272 const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
13273 } ;
13274 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
13275
13276typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
13277 {
13278 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
13279 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
13280 _In_opt_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
13281 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
13282 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
13283
13284typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
13285 {
13286 UINT64 ResultDataMaxSizeInBytes;
13287 UINT64 ScratchDataSizeInBytes;
13288 UINT64 UpdateScratchDataSizeInBytes;
13289 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
13290
13291typedef
13292enum D3D12_RAY_FLAGS
13293 {
13294 D3D12_RAY_FLAG_NONE = 0,
13295 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
13296 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
13297 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
13298 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
13299 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
13300 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
13301 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
13302 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
13303 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
13304 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
13305 } D3D12_RAY_FLAGS;
13306
13307DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS );
13308typedef
13309enum D3D12_HIT_KIND
13310 {
13311 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
13312 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff
13313 } D3D12_HIT_KIND;
13314
13315
13316
13317extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
13318extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
13319
13320#ifndef __ID3D12Device5_INTERFACE_DEFINED__
13321#define __ID3D12Device5_INTERFACE_DEFINED__
13322
13323/* interface ID3D12Device5 */
13324/* [unique][local][object][uuid] */
13325
13326
13327EXTERN_C const IID IID_ID3D12Device5;
13328
13329#if defined(__cplusplus) && !defined(CINTERFACE)
13330
13331 MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
13332 ID3D12Device5 : public ID3D12Device4
13333 {
13334 public:
13335 virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker(
13336 _In_ ID3D12LifetimeOwner *pOwner,
13337 REFIID riid,
13338 _COM_Outptr_ void **ppvTracker) = 0;
13339
13340 virtual void STDMETHODCALLTYPE RemoveDevice( void) = 0;
13341
13342 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands(
13343 _Inout_ UINT *pNumMetaCommands,
13344 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs) = 0;
13345
13346 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters(
13347 _In_ REFGUID CommandId,
13348 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
13349 _Out_opt_ UINT *pTotalStructureSizeInBytes,
13350 _Inout_ UINT *pParameterCount,
13351 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs) = 0;
13352
13353 virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand(
13354 _In_ REFGUID CommandId,
13355 _In_ UINT NodeMask,
13356 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
13357 _In_ SIZE_T CreationParametersDataSizeInBytes,
13358 REFIID riid,
13359 _COM_Outptr_ void **ppMetaCommand) = 0;
13360
13361 virtual HRESULT STDMETHODCALLTYPE CreateStateObject(
13362 const D3D12_STATE_OBJECT_DESC *pDesc,
13363 REFIID riid,
13364 _COM_Outptr_ void **ppStateObject) = 0;
13365
13366 virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo(
13367 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
13368 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo) = 0;
13369
13370 virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier(
13371 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
13372 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck) = 0;
13373
13374 };
13375
13376
13377#else /* C style interface */
13378
13379 typedef struct ID3D12Device5Vtbl
13380 {
13381 BEGIN_INTERFACE
13382
13383 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13384 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13385 ID3D12Device5 * This,
13386 REFIID riid,
13387 _COM_Outptr_ void **ppvObject);
13388
13389 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13390 ULONG ( STDMETHODCALLTYPE *AddRef )(
13391 ID3D12Device5 * This);
13392
13393 DECLSPEC_XFGVIRT(IUnknown, Release)
13394 ULONG ( STDMETHODCALLTYPE *Release )(
13395 ID3D12Device5 * This);
13396
13397 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13398 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13399 ID3D12Device5 * This,
13400 _In_ REFGUID guid,
13401 _Inout_ UINT *pDataSize,
13402 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13403
13404 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13405 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13406 ID3D12Device5 * This,
13407 _In_ REFGUID guid,
13408 _In_ UINT DataSize,
13409 _In_reads_bytes_opt_( DataSize ) const void *pData);
13410
13411 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13412 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13413 ID3D12Device5 * This,
13414 _In_ REFGUID guid,
13415 _In_opt_ const IUnknown *pData);
13416
13417 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13418 HRESULT ( STDMETHODCALLTYPE *SetName )(
13419 ID3D12Device5 * This,
13420 _In_z_ LPCWSTR Name);
13421
13422 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
13423 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
13424 ID3D12Device5 * This);
13425
13426 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
13427 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
13428 ID3D12Device5 * This,
13429 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
13430 REFIID riid,
13431 _COM_Outptr_ void **ppCommandQueue);
13432
13433 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
13434 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
13435 ID3D12Device5 * This,
13436 _In_ D3D12_COMMAND_LIST_TYPE type,
13437 REFIID riid,
13438 _COM_Outptr_ void **ppCommandAllocator);
13439
13440 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
13441 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
13442 ID3D12Device5 * This,
13443 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
13444 REFIID riid,
13445 _COM_Outptr_ void **ppPipelineState);
13446
13447 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
13448 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
13449 ID3D12Device5 * This,
13450 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
13451 REFIID riid,
13452 _COM_Outptr_ void **ppPipelineState);
13453
13454 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
13455 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
13456 ID3D12Device5 * This,
13457 _In_ UINT nodeMask,
13458 _In_ D3D12_COMMAND_LIST_TYPE type,
13459 _In_ ID3D12CommandAllocator *pCommandAllocator,
13460 _In_opt_ ID3D12PipelineState *pInitialState,
13461 REFIID riid,
13462 _COM_Outptr_ void **ppCommandList);
13463
13464 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
13465 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
13466 ID3D12Device5 * This,
13467 D3D12_FEATURE Feature,
13468 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
13469 UINT FeatureSupportDataSize);
13470
13471 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
13472 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
13473 ID3D12Device5 * This,
13474 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
13475 REFIID riid,
13476 _COM_Outptr_ void **ppvHeap);
13477
13478 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
13479 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
13480 ID3D12Device5 * This,
13481 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
13482
13483 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
13484 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
13485 ID3D12Device5 * This,
13486 _In_ UINT nodeMask,
13487 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
13488 _In_ SIZE_T blobLengthInBytes,
13489 REFIID riid,
13490 _COM_Outptr_ void **ppvRootSignature);
13491
13492 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
13493 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
13494 ID3D12Device5 * This,
13495 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
13496 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13497
13498 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
13499 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
13500 ID3D12Device5 * This,
13501 _In_opt_ ID3D12Resource *pResource,
13502 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
13503 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13504
13505 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
13506 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
13507 ID3D12Device5 * This,
13508 _In_opt_ ID3D12Resource *pResource,
13509 _In_opt_ ID3D12Resource *pCounterResource,
13510 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
13511 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13512
13513 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
13514 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
13515 ID3D12Device5 * This,
13516 _In_opt_ ID3D12Resource *pResource,
13517 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
13518 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13519
13520 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
13521 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
13522 ID3D12Device5 * This,
13523 _In_opt_ ID3D12Resource *pResource,
13524 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
13525 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13526
13527 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
13528 void ( STDMETHODCALLTYPE *CreateSampler )(
13529 ID3D12Device5 * This,
13530 _In_ const D3D12_SAMPLER_DESC *pDesc,
13531 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13532
13533 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
13534 void ( STDMETHODCALLTYPE *CopyDescriptors )(
13535 ID3D12Device5 * This,
13536 _In_ UINT NumDestDescriptorRanges,
13537 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
13538 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
13539 _In_ UINT NumSrcDescriptorRanges,
13540 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
13541 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
13542 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13543
13544 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
13545 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
13546 ID3D12Device5 * This,
13547 _In_ UINT NumDescriptors,
13548 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
13549 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
13550 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13551
13552 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
13553 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13554 ID3D12Device5 * This,
13555 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13556 _In_ UINT visibleMask,
13557 _In_ UINT numResourceDescs,
13558 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13559
13560 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
13561 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13562 ID3D12Device5 * This,
13563 D3D12_HEAP_PROPERTIES * RetVal,
13564 _In_ UINT nodeMask,
13565 D3D12_HEAP_TYPE heapType);
13566
13567 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
13568 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
13569 ID3D12Device5 * This,
13570 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13571 D3D12_HEAP_FLAGS HeapFlags,
13572 _In_ const D3D12_RESOURCE_DESC *pDesc,
13573 D3D12_RESOURCE_STATES InitialResourceState,
13574 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13575 REFIID riidResource,
13576 _COM_Outptr_opt_ void **ppvResource);
13577
13578 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
13579 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
13580 ID3D12Device5 * This,
13581 _In_ const D3D12_HEAP_DESC *pDesc,
13582 REFIID riid,
13583 _COM_Outptr_opt_ void **ppvHeap);
13584
13585 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
13586 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
13587 ID3D12Device5 * This,
13588 _In_ ID3D12Heap *pHeap,
13589 UINT64 HeapOffset,
13590 _In_ const D3D12_RESOURCE_DESC *pDesc,
13591 D3D12_RESOURCE_STATES InitialState,
13592 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13593 REFIID riid,
13594 _COM_Outptr_opt_ void **ppvResource);
13595
13596 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
13597 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
13598 ID3D12Device5 * This,
13599 _In_ const D3D12_RESOURCE_DESC *pDesc,
13600 D3D12_RESOURCE_STATES InitialState,
13601 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13602 REFIID riid,
13603 _COM_Outptr_opt_ void **ppvResource);
13604
13605 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
13606 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
13607 ID3D12Device5 * This,
13608 _In_ ID3D12DeviceChild *pObject,
13609 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
13610 DWORD Access,
13611 _In_opt_ LPCWSTR Name,
13612 _Out_ HANDLE *pHandle);
13613
13614 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
13615 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
13616 ID3D12Device5 * This,
13617 _In_ HANDLE NTHandle,
13618 REFIID riid,
13619 _COM_Outptr_opt_ void **ppvObj);
13620
13621 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
13622 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
13623 ID3D12Device5 * This,
13624 _In_ LPCWSTR Name,
13625 DWORD Access,
13626 /* [annotation][out] */
13627 _Out_ HANDLE *pNTHandle);
13628
13629 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
13630 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
13631 ID3D12Device5 * This,
13632 UINT NumObjects,
13633 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13634
13635 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
13636 HRESULT ( STDMETHODCALLTYPE *Evict )(
13637 ID3D12Device5 * This,
13638 UINT NumObjects,
13639 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13640
13641 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
13642 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
13643 ID3D12Device5 * This,
13644 UINT64 InitialValue,
13645 D3D12_FENCE_FLAGS Flags,
13646 REFIID riid,
13647 _COM_Outptr_ void **ppFence);
13648
13649 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
13650 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
13651 ID3D12Device5 * This);
13652
13653 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
13654 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
13655 ID3D12Device5 * This,
13656 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
13657 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
13658 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
13659 UINT64 BaseOffset,
13660 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
13661 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
13662 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
13663 _Out_opt_ UINT64 *pTotalBytes);
13664
13665 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
13666 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
13667 ID3D12Device5 * This,
13668 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
13669 REFIID riid,
13670 _COM_Outptr_opt_ void **ppvHeap);
13671
13672 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
13673 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
13674 ID3D12Device5 * This,
13675 BOOL Enable);
13676
13677 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
13678 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
13679 ID3D12Device5 * This,
13680 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
13681 _In_opt_ ID3D12RootSignature *pRootSignature,
13682 REFIID riid,
13683 _COM_Outptr_opt_ void **ppvCommandSignature);
13684
13685 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
13686 void ( STDMETHODCALLTYPE *GetResourceTiling )(
13687 ID3D12Device5 * This,
13688 _In_ ID3D12Resource *pTiledResource,
13689 _Out_opt_ UINT *pNumTilesForEntireResource,
13690 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
13691 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
13692 _Inout_opt_ UINT *pNumSubresourceTilings,
13693 _In_ UINT FirstSubresourceTilingToGet,
13694 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
13695
13696 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
13697 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
13698 ID3D12Device5 * This,
13699 LUID * RetVal);
13700
13701 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
13702 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
13703 ID3D12Device5 * This,
13704 _In_reads_(BlobLength) const void *pLibraryBlob,
13705 SIZE_T BlobLength,
13706 REFIID riid,
13707 _COM_Outptr_ void **ppPipelineLibrary);
13708
13709 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
13710 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
13711 ID3D12Device5 * This,
13712 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
13713 _In_reads_(NumFences) const UINT64 *pFenceValues,
13714 UINT NumFences,
13715 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
13716 HANDLE hEvent);
13717
13718 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
13719 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
13720 ID3D12Device5 * This,
13721 UINT NumObjects,
13722 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13723 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
13724
13725 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
13726 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
13727 ID3D12Device5 * This,
13728 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
13729 REFIID riid,
13730 _COM_Outptr_ void **ppPipelineState);
13731
13732 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
13733 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
13734 ID3D12Device5 * This,
13735 _In_ const void *pAddress,
13736 REFIID riid,
13737 _COM_Outptr_ void **ppvHeap);
13738
13739 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
13740 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
13741 ID3D12Device5 * This,
13742 _In_ HANDLE hFileMapping,
13743 REFIID riid,
13744 _COM_Outptr_ void **ppvHeap);
13745
13746 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
13747 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
13748 ID3D12Device5 * This,
13749 D3D12_RESIDENCY_FLAGS Flags,
13750 UINT NumObjects,
13751 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13752 _In_ ID3D12Fence *pFenceToSignal,
13753 UINT64 FenceValueToSignal);
13754
13755 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
13756 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
13757 ID3D12Device5 * This,
13758 _In_ UINT nodeMask,
13759 _In_ D3D12_COMMAND_LIST_TYPE type,
13760 _In_ D3D12_COMMAND_LIST_FLAGS flags,
13761 REFIID riid,
13762 _COM_Outptr_ void **ppCommandList);
13763
13764 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
13765 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
13766 ID3D12Device5 * This,
13767 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
13768 _In_ REFIID riid,
13769 _COM_Outptr_ void **ppSession);
13770
13771 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
13772 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
13773 ID3D12Device5 * This,
13774 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13775 D3D12_HEAP_FLAGS HeapFlags,
13776 _In_ const D3D12_RESOURCE_DESC *pDesc,
13777 D3D12_RESOURCE_STATES InitialResourceState,
13778 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13779 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13780 REFIID riidResource,
13781 _COM_Outptr_opt_ void **ppvResource);
13782
13783 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
13784 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
13785 ID3D12Device5 * This,
13786 _In_ const D3D12_HEAP_DESC *pDesc,
13787 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13788 REFIID riid,
13789 _COM_Outptr_opt_ void **ppvHeap);
13790
13791 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
13792 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
13793 ID3D12Device5 * This,
13794 _In_ const D3D12_RESOURCE_DESC *pDesc,
13795 D3D12_RESOURCE_STATES InitialState,
13796 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13797 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13798 REFIID riid,
13799 _COM_Outptr_opt_ void **ppvResource);
13800
13801 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
13802 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13803 ID3D12Device5 * This,
13804 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13805 UINT visibleMask,
13806 UINT numResourceDescs,
13807 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13808 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13809
13810 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
13811 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
13812 ID3D12Device5 * This,
13813 _In_ ID3D12LifetimeOwner *pOwner,
13814 REFIID riid,
13815 _COM_Outptr_ void **ppvTracker);
13816
13817 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
13818 void ( STDMETHODCALLTYPE *RemoveDevice )(
13819 ID3D12Device5 * This);
13820
13821 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
13822 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
13823 ID3D12Device5 * This,
13824 _Inout_ UINT *pNumMetaCommands,
13825 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
13826
13827 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
13828 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
13829 ID3D12Device5 * This,
13830 _In_ REFGUID CommandId,
13831 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
13832 _Out_opt_ UINT *pTotalStructureSizeInBytes,
13833 _Inout_ UINT *pParameterCount,
13834 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
13835
13836 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
13837 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
13838 ID3D12Device5 * This,
13839 _In_ REFGUID CommandId,
13840 _In_ UINT NodeMask,
13841 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
13842 _In_ SIZE_T CreationParametersDataSizeInBytes,
13843 REFIID riid,
13844 _COM_Outptr_ void **ppMetaCommand);
13845
13846 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
13847 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
13848 ID3D12Device5 * This,
13849 const D3D12_STATE_OBJECT_DESC *pDesc,
13850 REFIID riid,
13851 _COM_Outptr_ void **ppStateObject);
13852
13853 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
13854 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
13855 ID3D12Device5 * This,
13856 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
13857 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
13858
13859 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
13860 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
13861 ID3D12Device5 * This,
13862 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
13863 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
13864
13865 END_INTERFACE
13866 } ID3D12Device5Vtbl;
13867
13868 interface ID3D12Device5
13869 {
13870 CONST_VTBL struct ID3D12Device5Vtbl *lpVtbl;
13871 };
13872
13873
13874
13875#ifdef COBJMACROS
13876
13877
13878#define ID3D12Device5_QueryInterface(This,riid,ppvObject) \
13879 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13880
13881#define ID3D12Device5_AddRef(This) \
13882 ( (This)->lpVtbl -> AddRef(This) )
13883
13884#define ID3D12Device5_Release(This) \
13885 ( (This)->lpVtbl -> Release(This) )
13886
13887
13888#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData) \
13889 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
13890
13891#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData) \
13892 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
13893
13894#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData) \
13895 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
13896
13897#define ID3D12Device5_SetName(This,Name) \
13898 ( (This)->lpVtbl -> SetName(This,Name) )
13899
13900
13901#define ID3D12Device5_GetNodeCount(This) \
13902 ( (This)->lpVtbl -> GetNodeCount(This) )
13903
13904#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
13905 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
13906
13907#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
13908 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
13909
13910#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
13911 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
13912
13913#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
13914 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
13915
13916#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
13917 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
13918
13919#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
13920 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
13921
13922#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
13923 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
13924
13925#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
13926 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
13927
13928#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
13929 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
13930
13931#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor) \
13932 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
13933
13934#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
13935 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
13936
13937#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
13938 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
13939
13940#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
13941 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
13942
13943#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
13944 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
13945
13946#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor) \
13947 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
13948
13949#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
13950 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
13951
13952#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
13953 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
13954
13955#define ID3D12Device5_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
13956 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
13957
13958#define ID3D12Device5_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
13959 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
13960
13961#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
13962 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
13963
13964#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap) \
13965 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
13966
13967#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13968 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13969
13970#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13971 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13972
13973#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
13974 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
13975
13976#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
13977 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
13978
13979#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
13980 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
13981
13982#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects) \
13983 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
13984
13985#define ID3D12Device5_Evict(This,NumObjects,ppObjects) \
13986 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
13987
13988#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence) \
13989 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
13990
13991#define ID3D12Device5_GetDeviceRemovedReason(This) \
13992 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
13993
13994#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
13995 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
13996
13997#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
13998 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
13999
14000#define ID3D12Device5_SetStablePowerState(This,Enable) \
14001 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
14002
14003#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
14004 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
14005
14006#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
14007 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
14008
14009#define ID3D12Device5_GetAdapterLuid(This,RetVal) \
14010 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
14011
14012
14013#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
14014 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
14015
14016#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
14017 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
14018
14019#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
14020 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
14021
14022
14023#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
14024 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
14025
14026
14027#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
14028 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
14029
14030#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
14031 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
14032
14033#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
14034 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
14035
14036
14037#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
14038 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
14039
14040#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
14041 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
14042
14043#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
14044 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
14045
14046#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
14047 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
14048
14049#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
14050 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
14051
14052#define ID3D12Device5_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
14053 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
14054
14055
14056#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
14057 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
14058
14059#define ID3D12Device5_RemoveDevice(This) \
14060 ( (This)->lpVtbl -> RemoveDevice(This) )
14061
14062#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
14063 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
14064
14065#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
14066 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
14067
14068#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
14069 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
14070
14071#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject) \
14072 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
14073
14074#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
14075 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
14076
14077#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
14078 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
14079
14080#endif /* COBJMACROS */
14081
14082
14083#endif /* C style interface */
14084
14085
14086
14087
14088#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */
14089
14090
14091/* interface __MIDL_itf_d3d12_0000_0035 */
14092/* [local] */
14093
14094typedef
14095enum D3D12_AUTO_BREADCRUMB_OP
14096 {
14097 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
14098 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
14099 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
14100 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
14101 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
14102 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
14103 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
14104 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
14105 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
14106 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
14107 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
14108 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
14109 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
14110 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
14111 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
14112 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
14113 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
14114 D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
14115 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
14116 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
14117 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
14118 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
14119 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
14120 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
14121 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
14122 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
14123 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
14124 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
14125 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
14126 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
14127 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
14128 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
14129 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
14130 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
14131 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
14132 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
14133 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
14134 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
14135 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
14136 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
14137 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
14138 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
14139 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
14140 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
14141 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44
14142 } D3D12_AUTO_BREADCRUMB_OP;
14143
14144typedef struct D3D12_AUTO_BREADCRUMB_NODE
14145 {
14146 const char *pCommandListDebugNameA;
14147 const wchar_t *pCommandListDebugNameW;
14148 const char *pCommandQueueDebugNameA;
14149 const wchar_t *pCommandQueueDebugNameW;
14150 ID3D12GraphicsCommandList *pCommandList;
14151 ID3D12CommandQueue *pCommandQueue;
14152 UINT32 BreadcrumbCount;
14153 const UINT32 *pLastBreadcrumbValue;
14154 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
14155 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext;
14156 } D3D12_AUTO_BREADCRUMB_NODE;
14157
14158typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
14159 {
14160 UINT BreadcrumbIndex;
14161 const wchar_t *pContextString;
14162 } D3D12_DRED_BREADCRUMB_CONTEXT;
14163
14164typedef struct D3D12_AUTO_BREADCRUMB_NODE1
14165 {
14166 const char *pCommandListDebugNameA;
14167 const wchar_t *pCommandListDebugNameW;
14168 const char *pCommandQueueDebugNameA;
14169 const wchar_t *pCommandQueueDebugNameW;
14170 ID3D12GraphicsCommandList *pCommandList;
14171 ID3D12CommandQueue *pCommandQueue;
14172 UINT BreadcrumbCount;
14173 const UINT *pLastBreadcrumbValue;
14174 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
14175 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext;
14176 UINT BreadcrumbContextsCount;
14177 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
14178 } D3D12_AUTO_BREADCRUMB_NODE1;
14179
14180typedef
14181enum D3D12_DRED_VERSION
14182 {
14183 D3D12_DRED_VERSION_1_0 = 0x1,
14184 D3D12_DRED_VERSION_1_1 = 0x2,
14185 D3D12_DRED_VERSION_1_2 = 0x3,
14186 D3D12_DRED_VERSION_1_3 = 0x4
14187 } D3D12_DRED_VERSION;
14188
14189typedef
14190enum D3D12_DRED_FLAGS
14191 {
14192 D3D12_DRED_FLAG_NONE = 0,
14193 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
14194 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2
14195 } D3D12_DRED_FLAGS;
14196
14197DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS );
14198typedef
14199enum D3D12_DRED_ENABLEMENT
14200 {
14201 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
14202 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
14203 D3D12_DRED_ENABLEMENT_FORCED_ON = 2
14204 } D3D12_DRED_ENABLEMENT;
14205
14206typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
14207 {
14208 _In_ D3D12_DRED_FLAGS Flags;
14209 _Out_ D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
14210 } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
14211
14212typedef
14213enum D3D12_DRED_ALLOCATION_TYPE
14214 {
14215 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
14216 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
14217 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
14218 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
14219 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
14220 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
14221 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
14222 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
14223 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
14224 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
14225 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
14226 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
14227 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
14228 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
14229 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
14230 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
14231 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
14232 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
14233 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
14234 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
14235 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
14236 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
14237 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
14238 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
14239 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
14240 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
14241 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
14242 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
14243 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff
14244 } D3D12_DRED_ALLOCATION_TYPE;
14245
14246typedef struct D3D12_DRED_ALLOCATION_NODE
14247 {
14248 const char *ObjectNameA;
14249 const wchar_t *ObjectNameW;
14250 D3D12_DRED_ALLOCATION_TYPE AllocationType;
14251 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
14252 } D3D12_DRED_ALLOCATION_NODE;
14253
14254typedef struct D3D12_DRED_ALLOCATION_NODE1
14255 {
14256 const char *ObjectNameA;
14257 const wchar_t *ObjectNameW;
14258 D3D12_DRED_ALLOCATION_TYPE AllocationType;
14259 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
14260 const IUnknown *pObject;
14261 } D3D12_DRED_ALLOCATION_NODE1;
14262
14263typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
14264 {
14265 _Out_ const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
14266 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
14267
14268typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
14269 {
14270 _Out_ const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
14271 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
14272
14273typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
14274 {
14275 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
14276 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
14277 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
14278 } D3D12_DRED_PAGE_FAULT_OUTPUT;
14279
14280typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
14281 {
14282 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
14283 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
14284 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
14285 } D3D12_DRED_PAGE_FAULT_OUTPUT1;
14286
14287typedef
14288enum D3D12_DRED_PAGE_FAULT_FLAGS
14289 {
14290 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0
14291 } D3D12_DRED_PAGE_FAULT_FLAGS;
14292
14293DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS );
14294typedef
14295enum D3D12_DRED_DEVICE_STATE
14296 {
14297 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0,
14298 D3D12_DRED_DEVICE_STATE_HUNG = 3,
14299 D3D12_DRED_DEVICE_STATE_FAULT = 6,
14300 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7
14301 } D3D12_DRED_DEVICE_STATE;
14302
14303typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
14304 {
14305 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
14306 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
14307 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
14308 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
14309 } D3D12_DRED_PAGE_FAULT_OUTPUT2;
14310
14311typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
14312 {
14313 HRESULT DeviceRemovedReason;
14314 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
14315 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
14316 } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
14317
14318typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
14319 {
14320 HRESULT DeviceRemovedReason;
14321 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
14322 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
14323 } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
14324
14325typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
14326 {
14327 HRESULT DeviceRemovedReason;
14328 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
14329 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
14330 D3D12_DRED_DEVICE_STATE DeviceState;
14331 } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
14332
14333typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
14334 {
14335 D3D12_DRED_VERSION Version;
14336 union
14337 {
14338 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
14339 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
14340 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
14341 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
14342 } ;
14343 } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
14344
14345
14346
14347extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_c_ifspec;
14348extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_s_ifspec;
14349
14350#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
14351#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
14352
14353/* interface ID3D12DeviceRemovedExtendedDataSettings */
14354/* [unique][local][object][uuid] */
14355
14356
14357EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings;
14358
14359#if defined(__cplusplus) && !defined(CINTERFACE)
14360
14361 MIDL_INTERFACE("82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63")
14362 ID3D12DeviceRemovedExtendedDataSettings : public IUnknown
14363 {
14364 public:
14365 virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement(
14366 D3D12_DRED_ENABLEMENT Enablement) = 0;
14367
14368 virtual void STDMETHODCALLTYPE SetPageFaultEnablement(
14369 D3D12_DRED_ENABLEMENT Enablement) = 0;
14370
14371 virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement(
14372 D3D12_DRED_ENABLEMENT Enablement) = 0;
14373
14374 };
14375
14376
14377#else /* C style interface */
14378
14379 typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl
14380 {
14381 BEGIN_INTERFACE
14382
14383 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14384 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14385 ID3D12DeviceRemovedExtendedDataSettings * This,
14386 REFIID riid,
14387 _COM_Outptr_ void **ppvObject);
14388
14389 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14390 ULONG ( STDMETHODCALLTYPE *AddRef )(
14391 ID3D12DeviceRemovedExtendedDataSettings * This);
14392
14393 DECLSPEC_XFGVIRT(IUnknown, Release)
14394 ULONG ( STDMETHODCALLTYPE *Release )(
14395 ID3D12DeviceRemovedExtendedDataSettings * This);
14396
14397 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
14398 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
14399 ID3D12DeviceRemovedExtendedDataSettings * This,
14400 D3D12_DRED_ENABLEMENT Enablement);
14401
14402 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
14403 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
14404 ID3D12DeviceRemovedExtendedDataSettings * This,
14405 D3D12_DRED_ENABLEMENT Enablement);
14406
14407 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
14408 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
14409 ID3D12DeviceRemovedExtendedDataSettings * This,
14410 D3D12_DRED_ENABLEMENT Enablement);
14411
14412 END_INTERFACE
14413 } ID3D12DeviceRemovedExtendedDataSettingsVtbl;
14414
14415 interface ID3D12DeviceRemovedExtendedDataSettings
14416 {
14417 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettingsVtbl *lpVtbl;
14418 };
14419
14420
14421
14422#ifdef COBJMACROS
14423
14424
14425#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) \
14426 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14427
14428#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) \
14429 ( (This)->lpVtbl -> AddRef(This) )
14430
14431#define ID3D12DeviceRemovedExtendedDataSettings_Release(This) \
14432 ( (This)->lpVtbl -> Release(This) )
14433
14434
14435#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,Enablement) \
14436 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
14437
14438#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,Enablement) \
14439 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
14440
14441#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,Enablement) \
14442 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
14443
14444#endif /* COBJMACROS */
14445
14446
14447#endif /* C style interface */
14448
14449
14450
14451
14452#endif /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */
14453
14454
14455#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
14456#define __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
14457
14458/* interface ID3D12DeviceRemovedExtendedDataSettings1 */
14459/* [unique][local][object][uuid] */
14460
14461
14462EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings1;
14463
14464#if defined(__cplusplus) && !defined(CINTERFACE)
14465
14466 MIDL_INTERFACE("DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B")
14467 ID3D12DeviceRemovedExtendedDataSettings1 : public ID3D12DeviceRemovedExtendedDataSettings
14468 {
14469 public:
14470 virtual void STDMETHODCALLTYPE SetBreadcrumbContextEnablement(
14471 D3D12_DRED_ENABLEMENT Enablement) = 0;
14472
14473 };
14474
14475
14476#else /* C style interface */
14477
14478 typedef struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl
14479 {
14480 BEGIN_INTERFACE
14481
14482 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14483 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14484 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14485 REFIID riid,
14486 _COM_Outptr_ void **ppvObject);
14487
14488 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14489 ULONG ( STDMETHODCALLTYPE *AddRef )(
14490 ID3D12DeviceRemovedExtendedDataSettings1 * This);
14491
14492 DECLSPEC_XFGVIRT(IUnknown, Release)
14493 ULONG ( STDMETHODCALLTYPE *Release )(
14494 ID3D12DeviceRemovedExtendedDataSettings1 * This);
14495
14496 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
14497 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
14498 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14499 D3D12_DRED_ENABLEMENT Enablement);
14500
14501 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
14502 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
14503 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14504 D3D12_DRED_ENABLEMENT Enablement);
14505
14506 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
14507 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
14508 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14509 D3D12_DRED_ENABLEMENT Enablement);
14510
14511 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
14512 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
14513 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14514 D3D12_DRED_ENABLEMENT Enablement);
14515
14516 END_INTERFACE
14517 } ID3D12DeviceRemovedExtendedDataSettings1Vtbl;
14518
14519 interface ID3D12DeviceRemovedExtendedDataSettings1
14520 {
14521 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl *lpVtbl;
14522 };
14523
14524
14525
14526#ifdef COBJMACROS
14527
14528
14529#define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject) \
14530 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14531
14532#define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This) \
14533 ( (This)->lpVtbl -> AddRef(This) )
14534
14535#define ID3D12DeviceRemovedExtendedDataSettings1_Release(This) \
14536 ( (This)->lpVtbl -> Release(This) )
14537
14538
14539#define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,Enablement) \
14540 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
14541
14542#define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,Enablement) \
14543 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
14544
14545#define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,Enablement) \
14546 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
14547
14548
14549#define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,Enablement) \
14550 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
14551
14552#endif /* COBJMACROS */
14553
14554
14555#endif /* C style interface */
14556
14557
14558
14559
14560#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__ */
14561
14562
14563#ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
14564#define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
14565
14566/* interface ID3D12DeviceRemovedExtendedData */
14567/* [unique][local][object][uuid] */
14568
14569
14570EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData;
14571
14572#if defined(__cplusplus) && !defined(CINTERFACE)
14573
14574 MIDL_INTERFACE("98931D33-5AE8-4791-AA3C-1A73A2934E71")
14575 ID3D12DeviceRemovedExtendedData : public IUnknown
14576 {
14577 public:
14578 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput(
14579 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput) = 0;
14580
14581 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput(
14582 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput) = 0;
14583
14584 };
14585
14586
14587#else /* C style interface */
14588
14589 typedef struct ID3D12DeviceRemovedExtendedDataVtbl
14590 {
14591 BEGIN_INTERFACE
14592
14593 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14594 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14595 ID3D12DeviceRemovedExtendedData * This,
14596 REFIID riid,
14597 _COM_Outptr_ void **ppvObject);
14598
14599 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14600 ULONG ( STDMETHODCALLTYPE *AddRef )(
14601 ID3D12DeviceRemovedExtendedData * This);
14602
14603 DECLSPEC_XFGVIRT(IUnknown, Release)
14604 ULONG ( STDMETHODCALLTYPE *Release )(
14605 ID3D12DeviceRemovedExtendedData * This);
14606
14607 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
14608 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
14609 ID3D12DeviceRemovedExtendedData * This,
14610 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
14611
14612 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
14613 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
14614 ID3D12DeviceRemovedExtendedData * This,
14615 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
14616
14617 END_INTERFACE
14618 } ID3D12DeviceRemovedExtendedDataVtbl;
14619
14620 interface ID3D12DeviceRemovedExtendedData
14621 {
14622 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataVtbl *lpVtbl;
14623 };
14624
14625
14626
14627#ifdef COBJMACROS
14628
14629
14630#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) \
14631 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14632
14633#define ID3D12DeviceRemovedExtendedData_AddRef(This) \
14634 ( (This)->lpVtbl -> AddRef(This) )
14635
14636#define ID3D12DeviceRemovedExtendedData_Release(This) \
14637 ( (This)->lpVtbl -> Release(This) )
14638
14639
14640#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput) \
14641 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
14642
14643#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput) \
14644 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
14645
14646#endif /* COBJMACROS */
14647
14648
14649#endif /* C style interface */
14650
14651
14652
14653
14654#endif /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */
14655
14656
14657#ifndef __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
14658#define __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
14659
14660/* interface ID3D12DeviceRemovedExtendedData1 */
14661/* [unique][local][object][uuid] */
14662
14663
14664EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData1;
14665
14666#if defined(__cplusplus) && !defined(CINTERFACE)
14667
14668 MIDL_INTERFACE("9727A022-CF1D-4DDA-9EBA-EFFA653FC506")
14669 ID3D12DeviceRemovedExtendedData1 : public ID3D12DeviceRemovedExtendedData
14670 {
14671 public:
14672 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput1(
14673 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput) = 0;
14674
14675 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput1(
14676 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput) = 0;
14677
14678 };
14679
14680
14681#else /* C style interface */
14682
14683 typedef struct ID3D12DeviceRemovedExtendedData1Vtbl
14684 {
14685 BEGIN_INTERFACE
14686
14687 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14688 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14689 ID3D12DeviceRemovedExtendedData1 * This,
14690 REFIID riid,
14691 _COM_Outptr_ void **ppvObject);
14692
14693 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14694 ULONG ( STDMETHODCALLTYPE *AddRef )(
14695 ID3D12DeviceRemovedExtendedData1 * This);
14696
14697 DECLSPEC_XFGVIRT(IUnknown, Release)
14698 ULONG ( STDMETHODCALLTYPE *Release )(
14699 ID3D12DeviceRemovedExtendedData1 * This);
14700
14701 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
14702 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
14703 ID3D12DeviceRemovedExtendedData1 * This,
14704 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
14705
14706 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
14707 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
14708 ID3D12DeviceRemovedExtendedData1 * This,
14709 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
14710
14711 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
14712 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
14713 ID3D12DeviceRemovedExtendedData1 * This,
14714 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
14715
14716 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
14717 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
14718 ID3D12DeviceRemovedExtendedData1 * This,
14719 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
14720
14721 END_INTERFACE
14722 } ID3D12DeviceRemovedExtendedData1Vtbl;
14723
14724 interface ID3D12DeviceRemovedExtendedData1
14725 {
14726 CONST_VTBL struct ID3D12DeviceRemovedExtendedData1Vtbl *lpVtbl;
14727 };
14728
14729
14730
14731#ifdef COBJMACROS
14732
14733
14734#define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject) \
14735 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14736
14737#define ID3D12DeviceRemovedExtendedData1_AddRef(This) \
14738 ( (This)->lpVtbl -> AddRef(This) )
14739
14740#define ID3D12DeviceRemovedExtendedData1_Release(This) \
14741 ( (This)->lpVtbl -> Release(This) )
14742
14743
14744#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,pOutput) \
14745 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
14746
14747#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,pOutput) \
14748 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
14749
14750
14751#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,pOutput) \
14752 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
14753
14754#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,pOutput) \
14755 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
14756
14757#endif /* COBJMACROS */
14758
14759
14760#endif /* C style interface */
14761
14762
14763
14764
14765#endif /* __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__ */
14766
14767
14768#ifndef __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
14769#define __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
14770
14771/* interface ID3D12DeviceRemovedExtendedData2 */
14772/* [unique][local][object][uuid] */
14773
14774
14775EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData2;
14776
14777#if defined(__cplusplus) && !defined(CINTERFACE)
14778
14779 MIDL_INTERFACE("67FC5816-E4CA-4915-BF18-42541272DA54")
14780 ID3D12DeviceRemovedExtendedData2 : public ID3D12DeviceRemovedExtendedData1
14781 {
14782 public:
14783 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput2(
14784 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput) = 0;
14785
14786 virtual D3D12_DRED_DEVICE_STATE STDMETHODCALLTYPE GetDeviceState( void) = 0;
14787
14788 };
14789
14790
14791#else /* C style interface */
14792
14793 typedef struct ID3D12DeviceRemovedExtendedData2Vtbl
14794 {
14795 BEGIN_INTERFACE
14796
14797 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14798 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14799 ID3D12DeviceRemovedExtendedData2 * This,
14800 REFIID riid,
14801 _COM_Outptr_ void **ppvObject);
14802
14803 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14804 ULONG ( STDMETHODCALLTYPE *AddRef )(
14805 ID3D12DeviceRemovedExtendedData2 * This);
14806
14807 DECLSPEC_XFGVIRT(IUnknown, Release)
14808 ULONG ( STDMETHODCALLTYPE *Release )(
14809 ID3D12DeviceRemovedExtendedData2 * This);
14810
14811 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
14812 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
14813 ID3D12DeviceRemovedExtendedData2 * This,
14814 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
14815
14816 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
14817 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
14818 ID3D12DeviceRemovedExtendedData2 * This,
14819 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
14820
14821 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
14822 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
14823 ID3D12DeviceRemovedExtendedData2 * This,
14824 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
14825
14826 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
14827 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
14828 ID3D12DeviceRemovedExtendedData2 * This,
14829 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
14830
14831 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetPageFaultAllocationOutput2)
14832 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput2 )(
14833 ID3D12DeviceRemovedExtendedData2 * This,
14834 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
14835
14836 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetDeviceState)
14837 D3D12_DRED_DEVICE_STATE ( STDMETHODCALLTYPE *GetDeviceState )(
14838 ID3D12DeviceRemovedExtendedData2 * This);
14839
14840 END_INTERFACE
14841 } ID3D12DeviceRemovedExtendedData2Vtbl;
14842
14843 interface ID3D12DeviceRemovedExtendedData2
14844 {
14845 CONST_VTBL struct ID3D12DeviceRemovedExtendedData2Vtbl *lpVtbl;
14846 };
14847
14848
14849
14850#ifdef COBJMACROS
14851
14852
14853#define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject) \
14854 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14855
14856#define ID3D12DeviceRemovedExtendedData2_AddRef(This) \
14857 ( (This)->lpVtbl -> AddRef(This) )
14858
14859#define ID3D12DeviceRemovedExtendedData2_Release(This) \
14860 ( (This)->lpVtbl -> Release(This) )
14861
14862
14863#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,pOutput) \
14864 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
14865
14866#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,pOutput) \
14867 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
14868
14869
14870#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,pOutput) \
14871 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
14872
14873#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,pOutput) \
14874 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
14875
14876
14877#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,pOutput) \
14878 ( (This)->lpVtbl -> GetPageFaultAllocationOutput2(This,pOutput) )
14879
14880#define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This) \
14881 ( (This)->lpVtbl -> GetDeviceState(This) )
14882
14883#endif /* COBJMACROS */
14884
14885
14886#endif /* C style interface */
14887
14888
14889
14890
14891#endif /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
14892
14893
14894/* interface __MIDL_itf_d3d12_0000_0040 */
14895/* [local] */
14896
14897typedef
14898enum D3D12_BACKGROUND_PROCESSING_MODE
14899 {
14900 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0,
14901 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) ,
14902 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) ,
14903 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 )
14904 } D3D12_BACKGROUND_PROCESSING_MODE;
14905
14906typedef
14907enum D3D12_MEASUREMENTS_ACTION
14908 {
14909 D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0,
14910 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) ,
14911 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) ,
14912 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 )
14913 } D3D12_MEASUREMENTS_ACTION;
14914
14915
14916
14917extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_c_ifspec;
14918extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_s_ifspec;
14919
14920#ifndef __ID3D12Device6_INTERFACE_DEFINED__
14921#define __ID3D12Device6_INTERFACE_DEFINED__
14922
14923/* interface ID3D12Device6 */
14924/* [unique][local][object][uuid] */
14925
14926
14927EXTERN_C const IID IID_ID3D12Device6;
14928
14929#if defined(__cplusplus) && !defined(CINTERFACE)
14930
14931 MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
14932 ID3D12Device6 : public ID3D12Device5
14933 {
14934 public:
14935 virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode(
14936 D3D12_BACKGROUND_PROCESSING_MODE Mode,
14937 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
14938 _In_opt_ HANDLE hEventToSignalUponCompletion,
14939 _Out_opt_ BOOL *pbFurtherMeasurementsDesired) = 0;
14940
14941 };
14942
14943
14944#else /* C style interface */
14945
14946 typedef struct ID3D12Device6Vtbl
14947 {
14948 BEGIN_INTERFACE
14949
14950 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14951 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14952 ID3D12Device6 * This,
14953 REFIID riid,
14954 _COM_Outptr_ void **ppvObject);
14955
14956 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14957 ULONG ( STDMETHODCALLTYPE *AddRef )(
14958 ID3D12Device6 * This);
14959
14960 DECLSPEC_XFGVIRT(IUnknown, Release)
14961 ULONG ( STDMETHODCALLTYPE *Release )(
14962 ID3D12Device6 * This);
14963
14964 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
14965 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
14966 ID3D12Device6 * This,
14967 _In_ REFGUID guid,
14968 _Inout_ UINT *pDataSize,
14969 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
14970
14971 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
14972 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
14973 ID3D12Device6 * This,
14974 _In_ REFGUID guid,
14975 _In_ UINT DataSize,
14976 _In_reads_bytes_opt_( DataSize ) const void *pData);
14977
14978 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
14979 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
14980 ID3D12Device6 * This,
14981 _In_ REFGUID guid,
14982 _In_opt_ const IUnknown *pData);
14983
14984 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
14985 HRESULT ( STDMETHODCALLTYPE *SetName )(
14986 ID3D12Device6 * This,
14987 _In_z_ LPCWSTR Name);
14988
14989 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
14990 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
14991 ID3D12Device6 * This);
14992
14993 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
14994 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
14995 ID3D12Device6 * This,
14996 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
14997 REFIID riid,
14998 _COM_Outptr_ void **ppCommandQueue);
14999
15000 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15001 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15002 ID3D12Device6 * This,
15003 _In_ D3D12_COMMAND_LIST_TYPE type,
15004 REFIID riid,
15005 _COM_Outptr_ void **ppCommandAllocator);
15006
15007 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15008 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15009 ID3D12Device6 * This,
15010 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15011 REFIID riid,
15012 _COM_Outptr_ void **ppPipelineState);
15013
15014 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15015 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15016 ID3D12Device6 * This,
15017 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15018 REFIID riid,
15019 _COM_Outptr_ void **ppPipelineState);
15020
15021 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15022 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15023 ID3D12Device6 * This,
15024 _In_ UINT nodeMask,
15025 _In_ D3D12_COMMAND_LIST_TYPE type,
15026 _In_ ID3D12CommandAllocator *pCommandAllocator,
15027 _In_opt_ ID3D12PipelineState *pInitialState,
15028 REFIID riid,
15029 _COM_Outptr_ void **ppCommandList);
15030
15031 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15032 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15033 ID3D12Device6 * This,
15034 D3D12_FEATURE Feature,
15035 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15036 UINT FeatureSupportDataSize);
15037
15038 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15039 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15040 ID3D12Device6 * This,
15041 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15042 REFIID riid,
15043 _COM_Outptr_ void **ppvHeap);
15044
15045 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15046 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15047 ID3D12Device6 * This,
15048 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15049
15050 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15051 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15052 ID3D12Device6 * This,
15053 _In_ UINT nodeMask,
15054 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15055 _In_ SIZE_T blobLengthInBytes,
15056 REFIID riid,
15057 _COM_Outptr_ void **ppvRootSignature);
15058
15059 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
15060 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
15061 ID3D12Device6 * This,
15062 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
15063 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15064
15065 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
15066 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
15067 ID3D12Device6 * This,
15068 _In_opt_ ID3D12Resource *pResource,
15069 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
15070 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15071
15072 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
15073 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
15074 ID3D12Device6 * This,
15075 _In_opt_ ID3D12Resource *pResource,
15076 _In_opt_ ID3D12Resource *pCounterResource,
15077 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
15078 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15079
15080 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
15081 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
15082 ID3D12Device6 * This,
15083 _In_opt_ ID3D12Resource *pResource,
15084 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
15085 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15086
15087 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
15088 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
15089 ID3D12Device6 * This,
15090 _In_opt_ ID3D12Resource *pResource,
15091 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
15092 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15093
15094 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
15095 void ( STDMETHODCALLTYPE *CreateSampler )(
15096 ID3D12Device6 * This,
15097 _In_ const D3D12_SAMPLER_DESC *pDesc,
15098 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15099
15100 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
15101 void ( STDMETHODCALLTYPE *CopyDescriptors )(
15102 ID3D12Device6 * This,
15103 _In_ UINT NumDestDescriptorRanges,
15104 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
15105 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
15106 _In_ UINT NumSrcDescriptorRanges,
15107 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
15108 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
15109 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15110
15111 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
15112 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
15113 ID3D12Device6 * This,
15114 _In_ UINT NumDescriptors,
15115 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
15116 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
15117 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15118
15119 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
15120 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15121 ID3D12Device6 * This,
15122 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15123 _In_ UINT visibleMask,
15124 _In_ UINT numResourceDescs,
15125 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15126
15127 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
15128 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15129 ID3D12Device6 * This,
15130 D3D12_HEAP_PROPERTIES * RetVal,
15131 _In_ UINT nodeMask,
15132 D3D12_HEAP_TYPE heapType);
15133
15134 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
15135 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
15136 ID3D12Device6 * This,
15137 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15138 D3D12_HEAP_FLAGS HeapFlags,
15139 _In_ const D3D12_RESOURCE_DESC *pDesc,
15140 D3D12_RESOURCE_STATES InitialResourceState,
15141 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15142 REFIID riidResource,
15143 _COM_Outptr_opt_ void **ppvResource);
15144
15145 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
15146 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
15147 ID3D12Device6 * This,
15148 _In_ const D3D12_HEAP_DESC *pDesc,
15149 REFIID riid,
15150 _COM_Outptr_opt_ void **ppvHeap);
15151
15152 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
15153 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
15154 ID3D12Device6 * This,
15155 _In_ ID3D12Heap *pHeap,
15156 UINT64 HeapOffset,
15157 _In_ const D3D12_RESOURCE_DESC *pDesc,
15158 D3D12_RESOURCE_STATES InitialState,
15159 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15160 REFIID riid,
15161 _COM_Outptr_opt_ void **ppvResource);
15162
15163 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
15164 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
15165 ID3D12Device6 * This,
15166 _In_ const D3D12_RESOURCE_DESC *pDesc,
15167 D3D12_RESOURCE_STATES InitialState,
15168 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15169 REFIID riid,
15170 _COM_Outptr_opt_ void **ppvResource);
15171
15172 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
15173 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
15174 ID3D12Device6 * This,
15175 _In_ ID3D12DeviceChild *pObject,
15176 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
15177 DWORD Access,
15178 _In_opt_ LPCWSTR Name,
15179 _Out_ HANDLE *pHandle);
15180
15181 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
15182 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
15183 ID3D12Device6 * This,
15184 _In_ HANDLE NTHandle,
15185 REFIID riid,
15186 _COM_Outptr_opt_ void **ppvObj);
15187
15188 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
15189 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
15190 ID3D12Device6 * This,
15191 _In_ LPCWSTR Name,
15192 DWORD Access,
15193 /* [annotation][out] */
15194 _Out_ HANDLE *pNTHandle);
15195
15196 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
15197 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
15198 ID3D12Device6 * This,
15199 UINT NumObjects,
15200 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15201
15202 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
15203 HRESULT ( STDMETHODCALLTYPE *Evict )(
15204 ID3D12Device6 * This,
15205 UINT NumObjects,
15206 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15207
15208 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
15209 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
15210 ID3D12Device6 * This,
15211 UINT64 InitialValue,
15212 D3D12_FENCE_FLAGS Flags,
15213 REFIID riid,
15214 _COM_Outptr_ void **ppFence);
15215
15216 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
15217 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
15218 ID3D12Device6 * This);
15219
15220 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
15221 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
15222 ID3D12Device6 * This,
15223 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
15224 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
15225 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
15226 UINT64 BaseOffset,
15227 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
15228 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
15229 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
15230 _Out_opt_ UINT64 *pTotalBytes);
15231
15232 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
15233 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
15234 ID3D12Device6 * This,
15235 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
15236 REFIID riid,
15237 _COM_Outptr_opt_ void **ppvHeap);
15238
15239 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
15240 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
15241 ID3D12Device6 * This,
15242 BOOL Enable);
15243
15244 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
15245 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
15246 ID3D12Device6 * This,
15247 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
15248 _In_opt_ ID3D12RootSignature *pRootSignature,
15249 REFIID riid,
15250 _COM_Outptr_opt_ void **ppvCommandSignature);
15251
15252 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
15253 void ( STDMETHODCALLTYPE *GetResourceTiling )(
15254 ID3D12Device6 * This,
15255 _In_ ID3D12Resource *pTiledResource,
15256 _Out_opt_ UINT *pNumTilesForEntireResource,
15257 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
15258 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
15259 _Inout_opt_ UINT *pNumSubresourceTilings,
15260 _In_ UINT FirstSubresourceTilingToGet,
15261 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
15262
15263 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
15264 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
15265 ID3D12Device6 * This,
15266 LUID * RetVal);
15267
15268 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
15269 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
15270 ID3D12Device6 * This,
15271 _In_reads_(BlobLength) const void *pLibraryBlob,
15272 SIZE_T BlobLength,
15273 REFIID riid,
15274 _COM_Outptr_ void **ppPipelineLibrary);
15275
15276 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
15277 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
15278 ID3D12Device6 * This,
15279 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
15280 _In_reads_(NumFences) const UINT64 *pFenceValues,
15281 UINT NumFences,
15282 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
15283 HANDLE hEvent);
15284
15285 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
15286 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
15287 ID3D12Device6 * This,
15288 UINT NumObjects,
15289 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
15290 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
15291
15292 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
15293 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
15294 ID3D12Device6 * This,
15295 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
15296 REFIID riid,
15297 _COM_Outptr_ void **ppPipelineState);
15298
15299 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
15300 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
15301 ID3D12Device6 * This,
15302 _In_ const void *pAddress,
15303 REFIID riid,
15304 _COM_Outptr_ void **ppvHeap);
15305
15306 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
15307 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
15308 ID3D12Device6 * This,
15309 _In_ HANDLE hFileMapping,
15310 REFIID riid,
15311 _COM_Outptr_ void **ppvHeap);
15312
15313 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
15314 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
15315 ID3D12Device6 * This,
15316 D3D12_RESIDENCY_FLAGS Flags,
15317 UINT NumObjects,
15318 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
15319 _In_ ID3D12Fence *pFenceToSignal,
15320 UINT64 FenceValueToSignal);
15321
15322 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
15323 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
15324 ID3D12Device6 * This,
15325 _In_ UINT nodeMask,
15326 _In_ D3D12_COMMAND_LIST_TYPE type,
15327 _In_ D3D12_COMMAND_LIST_FLAGS flags,
15328 REFIID riid,
15329 _COM_Outptr_ void **ppCommandList);
15330
15331 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
15332 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
15333 ID3D12Device6 * This,
15334 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
15335 _In_ REFIID riid,
15336 _COM_Outptr_ void **ppSession);
15337
15338 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
15339 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
15340 ID3D12Device6 * This,
15341 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15342 D3D12_HEAP_FLAGS HeapFlags,
15343 _In_ const D3D12_RESOURCE_DESC *pDesc,
15344 D3D12_RESOURCE_STATES InitialResourceState,
15345 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15346 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
15347 REFIID riidResource,
15348 _COM_Outptr_opt_ void **ppvResource);
15349
15350 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
15351 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
15352 ID3D12Device6 * This,
15353 _In_ const D3D12_HEAP_DESC *pDesc,
15354 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
15355 REFIID riid,
15356 _COM_Outptr_opt_ void **ppvHeap);
15357
15358 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
15359 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
15360 ID3D12Device6 * This,
15361 _In_ const D3D12_RESOURCE_DESC *pDesc,
15362 D3D12_RESOURCE_STATES InitialState,
15363 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15364 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
15365 REFIID riid,
15366 _COM_Outptr_opt_ void **ppvResource);
15367
15368 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
15369 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
15370 ID3D12Device6 * This,
15371 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15372 UINT visibleMask,
15373 UINT numResourceDescs,
15374 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
15375 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
15376
15377 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
15378 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
15379 ID3D12Device6 * This,
15380 _In_ ID3D12LifetimeOwner *pOwner,
15381 REFIID riid,
15382 _COM_Outptr_ void **ppvTracker);
15383
15384 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
15385 void ( STDMETHODCALLTYPE *RemoveDevice )(
15386 ID3D12Device6 * This);
15387
15388 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
15389 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
15390 ID3D12Device6 * This,
15391 _Inout_ UINT *pNumMetaCommands,
15392 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
15393
15394 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
15395 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
15396 ID3D12Device6 * This,
15397 _In_ REFGUID CommandId,
15398 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
15399 _Out_opt_ UINT *pTotalStructureSizeInBytes,
15400 _Inout_ UINT *pParameterCount,
15401 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
15402
15403 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
15404 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
15405 ID3D12Device6 * This,
15406 _In_ REFGUID CommandId,
15407 _In_ UINT NodeMask,
15408 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
15409 _In_ SIZE_T CreationParametersDataSizeInBytes,
15410 REFIID riid,
15411 _COM_Outptr_ void **ppMetaCommand);
15412
15413 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
15414 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
15415 ID3D12Device6 * This,
15416 const D3D12_STATE_OBJECT_DESC *pDesc,
15417 REFIID riid,
15418 _COM_Outptr_ void **ppStateObject);
15419
15420 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
15421 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
15422 ID3D12Device6 * This,
15423 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
15424 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
15425
15426 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
15427 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
15428 ID3D12Device6 * This,
15429 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
15430 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
15431
15432 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
15433 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
15434 ID3D12Device6 * This,
15435 D3D12_BACKGROUND_PROCESSING_MODE Mode,
15436 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
15437 _In_opt_ HANDLE hEventToSignalUponCompletion,
15438 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
15439
15440 END_INTERFACE
15441 } ID3D12Device6Vtbl;
15442
15443 interface ID3D12Device6
15444 {
15445 CONST_VTBL struct ID3D12Device6Vtbl *lpVtbl;
15446 };
15447
15448
15449
15450#ifdef COBJMACROS
15451
15452
15453#define ID3D12Device6_QueryInterface(This,riid,ppvObject) \
15454 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
15455
15456#define ID3D12Device6_AddRef(This) \
15457 ( (This)->lpVtbl -> AddRef(This) )
15458
15459#define ID3D12Device6_Release(This) \
15460 ( (This)->lpVtbl -> Release(This) )
15461
15462
15463#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData) \
15464 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
15465
15466#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData) \
15467 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
15468
15469#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData) \
15470 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
15471
15472#define ID3D12Device6_SetName(This,Name) \
15473 ( (This)->lpVtbl -> SetName(This,Name) )
15474
15475
15476#define ID3D12Device6_GetNodeCount(This) \
15477 ( (This)->lpVtbl -> GetNodeCount(This) )
15478
15479#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
15480 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
15481
15482#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
15483 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
15484
15485#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
15486 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
15487
15488#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
15489 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
15490
15491#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
15492 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
15493
15494#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
15495 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
15496
15497#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
15498 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
15499
15500#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
15501 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
15502
15503#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
15504 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
15505
15506#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor) \
15507 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
15508
15509#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
15510 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
15511
15512#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
15513 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
15514
15515#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
15516 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
15517
15518#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
15519 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
15520
15521#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor) \
15522 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
15523
15524#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
15525 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
15526
15527#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
15528 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
15529
15530#define ID3D12Device6_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
15531 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
15532
15533#define ID3D12Device6_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
15534 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
15535
15536#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
15537 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
15538
15539#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap) \
15540 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
15541
15542#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
15543 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
15544
15545#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
15546 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
15547
15548#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
15549 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
15550
15551#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
15552 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
15553
15554#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
15555 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
15556
15557#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects) \
15558 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
15559
15560#define ID3D12Device6_Evict(This,NumObjects,ppObjects) \
15561 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
15562
15563#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence) \
15564 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
15565
15566#define ID3D12Device6_GetDeviceRemovedReason(This) \
15567 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
15568
15569#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
15570 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
15571
15572#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
15573 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
15574
15575#define ID3D12Device6_SetStablePowerState(This,Enable) \
15576 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
15577
15578#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
15579 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
15580
15581#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
15582 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
15583
15584#define ID3D12Device6_GetAdapterLuid(This,RetVal) \
15585 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
15586
15587
15588#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
15589 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
15590
15591#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
15592 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
15593
15594#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
15595 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
15596
15597
15598#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
15599 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
15600
15601
15602#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
15603 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
15604
15605#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
15606 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
15607
15608#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
15609 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
15610
15611
15612#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
15613 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
15614
15615#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
15616 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
15617
15618#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
15619 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
15620
15621#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
15622 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
15623
15624#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
15625 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
15626
15627#define ID3D12Device6_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
15628 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
15629
15630
15631#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
15632 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
15633
15634#define ID3D12Device6_RemoveDevice(This) \
15635 ( (This)->lpVtbl -> RemoveDevice(This) )
15636
15637#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
15638 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
15639
15640#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
15641 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
15642
15643#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
15644 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
15645
15646#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject) \
15647 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
15648
15649#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
15650 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
15651
15652#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
15653 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
15654
15655
15656#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
15657 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
15658
15659#endif /* COBJMACROS */
15660
15661
15662#endif /* C style interface */
15663
15664
15665
15666
15667#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */
15668
15669
15670/* interface __MIDL_itf_d3d12_0000_0041 */
15671/* [local] */
15672
15673DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82);
15674typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
15675 {
15676 UINT NodeIndex;
15677 UINT Count;
15678 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
15679
15680typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
15681 {
15682 UINT NodeIndex;
15683 UINT Count;
15684 GUID *pTypes;
15685 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
15686
15687typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
15688 {
15689 UINT NodeMask;
15690 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
15691 GUID ProtectionType;
15692 } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
15693
15694
15695
15696extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_c_ifspec;
15697extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_s_ifspec;
15698
15699#ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
15700#define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
15701
15702/* interface ID3D12ProtectedResourceSession1 */
15703/* [unique][local][object][uuid] */
15704
15705
15706EXTERN_C const IID IID_ID3D12ProtectedResourceSession1;
15707
15708#if defined(__cplusplus) && !defined(CINTERFACE)
15709
15710 MIDL_INTERFACE("D6F12DD6-76FB-406E-8961-4296EEFC0409")
15711 ID3D12ProtectedResourceSession1 : public ID3D12ProtectedResourceSession
15712 {
15713 public:
15714 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
15715
15716 };
15717
15718
15719#else /* C style interface */
15720
15721 typedef struct ID3D12ProtectedResourceSession1Vtbl
15722 {
15723 BEGIN_INTERFACE
15724
15725 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15726 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15727 ID3D12ProtectedResourceSession1 * This,
15728 REFIID riid,
15729 _COM_Outptr_ void **ppvObject);
15730
15731 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15732 ULONG ( STDMETHODCALLTYPE *AddRef )(
15733 ID3D12ProtectedResourceSession1 * This);
15734
15735 DECLSPEC_XFGVIRT(IUnknown, Release)
15736 ULONG ( STDMETHODCALLTYPE *Release )(
15737 ID3D12ProtectedResourceSession1 * This);
15738
15739 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15740 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15741 ID3D12ProtectedResourceSession1 * This,
15742 _In_ REFGUID guid,
15743 _Inout_ UINT *pDataSize,
15744 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
15745
15746 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
15747 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
15748 ID3D12ProtectedResourceSession1 * This,
15749 _In_ REFGUID guid,
15750 _In_ UINT DataSize,
15751 _In_reads_bytes_opt_( DataSize ) const void *pData);
15752
15753 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
15754 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
15755 ID3D12ProtectedResourceSession1 * This,
15756 _In_ REFGUID guid,
15757 _In_opt_ const IUnknown *pData);
15758
15759 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15760 HRESULT ( STDMETHODCALLTYPE *SetName )(
15761 ID3D12ProtectedResourceSession1 * This,
15762 _In_z_ LPCWSTR Name);
15763
15764 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
15765 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
15766 ID3D12ProtectedResourceSession1 * This,
15767 REFIID riid,
15768 _COM_Outptr_opt_ void **ppvDevice);
15769
15770 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
15771 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
15772 ID3D12ProtectedResourceSession1 * This,
15773 REFIID riid,
15774 _COM_Outptr_opt_ void **ppFence);
15775
15776 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
15777 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
15778 ID3D12ProtectedResourceSession1 * This);
15779
15780 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
15781 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
15782 ID3D12ProtectedResourceSession1 * This,
15783 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
15784
15785 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession1, GetDesc1)
15786 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
15787 ID3D12ProtectedResourceSession1 * This,
15788 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal);
15789
15790 END_INTERFACE
15791 } ID3D12ProtectedResourceSession1Vtbl;
15792
15793 interface ID3D12ProtectedResourceSession1
15794 {
15795 CONST_VTBL struct ID3D12ProtectedResourceSession1Vtbl *lpVtbl;
15796 };
15797
15798
15799
15800#ifdef COBJMACROS
15801
15802
15803#define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject) \
15804 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
15805
15806#define ID3D12ProtectedResourceSession1_AddRef(This) \
15807 ( (This)->lpVtbl -> AddRef(This) )
15808
15809#define ID3D12ProtectedResourceSession1_Release(This) \
15810 ( (This)->lpVtbl -> Release(This) )
15811
15812
15813#define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,pDataSize,pData) \
15814 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
15815
15816#define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,DataSize,pData) \
15817 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
15818
15819#define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,pData) \
15820 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
15821
15822#define ID3D12ProtectedResourceSession1_SetName(This,Name) \
15823 ( (This)->lpVtbl -> SetName(This,Name) )
15824
15825
15826#define ID3D12ProtectedResourceSession1_GetDevice(This,riid,ppvDevice) \
15827 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
15828
15829
15830#define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,ppFence) \
15831 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
15832
15833#define ID3D12ProtectedResourceSession1_GetSessionStatus(This) \
15834 ( (This)->lpVtbl -> GetSessionStatus(This) )
15835
15836
15837#define ID3D12ProtectedResourceSession1_GetDesc(This,RetVal) \
15838 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
15839
15840
15841#define ID3D12ProtectedResourceSession1_GetDesc1(This,RetVal) \
15842 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
15843
15844#endif /* COBJMACROS */
15845
15846
15847#endif /* C style interface */
15848
15849
15850
15851
15852#endif /* __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__ */
15853
15854
15855#ifndef __ID3D12Device7_INTERFACE_DEFINED__
15856#define __ID3D12Device7_INTERFACE_DEFINED__
15857
15858/* interface ID3D12Device7 */
15859/* [unique][local][object][uuid] */
15860
15861
15862EXTERN_C const IID IID_ID3D12Device7;
15863
15864#if defined(__cplusplus) && !defined(CINTERFACE)
15865
15866 MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
15867 ID3D12Device7 : public ID3D12Device6
15868 {
15869 public:
15870 virtual HRESULT STDMETHODCALLTYPE AddToStateObject(
15871 const D3D12_STATE_OBJECT_DESC *pAddition,
15872 ID3D12StateObject *pStateObjectToGrowFrom,
15873 REFIID riid,
15874 _COM_Outptr_ void **ppNewStateObject) = 0;
15875
15876 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession1(
15877 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
15878 _In_ REFIID riid,
15879 _COM_Outptr_ void **ppSession) = 0;
15880
15881 };
15882
15883
15884#else /* C style interface */
15885
15886 typedef struct ID3D12Device7Vtbl
15887 {
15888 BEGIN_INTERFACE
15889
15890 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15891 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15892 ID3D12Device7 * This,
15893 REFIID riid,
15894 _COM_Outptr_ void **ppvObject);
15895
15896 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15897 ULONG ( STDMETHODCALLTYPE *AddRef )(
15898 ID3D12Device7 * This);
15899
15900 DECLSPEC_XFGVIRT(IUnknown, Release)
15901 ULONG ( STDMETHODCALLTYPE *Release )(
15902 ID3D12Device7 * This);
15903
15904 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15905 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15906 ID3D12Device7 * This,
15907 _In_ REFGUID guid,
15908 _Inout_ UINT *pDataSize,
15909 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
15910
15911 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
15912 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
15913 ID3D12Device7 * This,
15914 _In_ REFGUID guid,
15915 _In_ UINT DataSize,
15916 _In_reads_bytes_opt_( DataSize ) const void *pData);
15917
15918 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
15919 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
15920 ID3D12Device7 * This,
15921 _In_ REFGUID guid,
15922 _In_opt_ const IUnknown *pData);
15923
15924 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15925 HRESULT ( STDMETHODCALLTYPE *SetName )(
15926 ID3D12Device7 * This,
15927 _In_z_ LPCWSTR Name);
15928
15929 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
15930 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
15931 ID3D12Device7 * This);
15932
15933 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
15934 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
15935 ID3D12Device7 * This,
15936 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
15937 REFIID riid,
15938 _COM_Outptr_ void **ppCommandQueue);
15939
15940 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15941 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15942 ID3D12Device7 * This,
15943 _In_ D3D12_COMMAND_LIST_TYPE type,
15944 REFIID riid,
15945 _COM_Outptr_ void **ppCommandAllocator);
15946
15947 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15948 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15949 ID3D12Device7 * This,
15950 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15951 REFIID riid,
15952 _COM_Outptr_ void **ppPipelineState);
15953
15954 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15955 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15956 ID3D12Device7 * This,
15957 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15958 REFIID riid,
15959 _COM_Outptr_ void **ppPipelineState);
15960
15961 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15962 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15963 ID3D12Device7 * This,
15964 _In_ UINT nodeMask,
15965 _In_ D3D12_COMMAND_LIST_TYPE type,
15966 _In_ ID3D12CommandAllocator *pCommandAllocator,
15967 _In_opt_ ID3D12PipelineState *pInitialState,
15968 REFIID riid,
15969 _COM_Outptr_ void **ppCommandList);
15970
15971 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15972 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15973 ID3D12Device7 * This,
15974 D3D12_FEATURE Feature,
15975 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15976 UINT FeatureSupportDataSize);
15977
15978 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15979 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15980 ID3D12Device7 * This,
15981 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15982 REFIID riid,
15983 _COM_Outptr_ void **ppvHeap);
15984
15985 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15986 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15987 ID3D12Device7 * This,
15988 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15989
15990 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15991 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15992 ID3D12Device7 * This,
15993 _In_ UINT nodeMask,
15994 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15995 _In_ SIZE_T blobLengthInBytes,
15996 REFIID riid,
15997 _COM_Outptr_ void **ppvRootSignature);
15998
15999 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
16000 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
16001 ID3D12Device7 * This,
16002 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
16003 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16004
16005 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
16006 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
16007 ID3D12Device7 * This,
16008 _In_opt_ ID3D12Resource *pResource,
16009 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
16010 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16011
16012 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
16013 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
16014 ID3D12Device7 * This,
16015 _In_opt_ ID3D12Resource *pResource,
16016 _In_opt_ ID3D12Resource *pCounterResource,
16017 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
16018 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16019
16020 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
16021 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
16022 ID3D12Device7 * This,
16023 _In_opt_ ID3D12Resource *pResource,
16024 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
16025 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16026
16027 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
16028 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
16029 ID3D12Device7 * This,
16030 _In_opt_ ID3D12Resource *pResource,
16031 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
16032 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16033
16034 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
16035 void ( STDMETHODCALLTYPE *CreateSampler )(
16036 ID3D12Device7 * This,
16037 _In_ const D3D12_SAMPLER_DESC *pDesc,
16038 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16039
16040 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
16041 void ( STDMETHODCALLTYPE *CopyDescriptors )(
16042 ID3D12Device7 * This,
16043 _In_ UINT NumDestDescriptorRanges,
16044 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
16045 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
16046 _In_ UINT NumSrcDescriptorRanges,
16047 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
16048 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
16049 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16050
16051 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
16052 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
16053 ID3D12Device7 * This,
16054 _In_ UINT NumDescriptors,
16055 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
16056 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
16057 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16058
16059 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
16060 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
16061 ID3D12Device7 * This,
16062 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16063 _In_ UINT visibleMask,
16064 _In_ UINT numResourceDescs,
16065 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
16066
16067 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
16068 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
16069 ID3D12Device7 * This,
16070 D3D12_HEAP_PROPERTIES * RetVal,
16071 _In_ UINT nodeMask,
16072 D3D12_HEAP_TYPE heapType);
16073
16074 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
16075 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
16076 ID3D12Device7 * This,
16077 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16078 D3D12_HEAP_FLAGS HeapFlags,
16079 _In_ const D3D12_RESOURCE_DESC *pDesc,
16080 D3D12_RESOURCE_STATES InitialResourceState,
16081 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16082 REFIID riidResource,
16083 _COM_Outptr_opt_ void **ppvResource);
16084
16085 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
16086 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
16087 ID3D12Device7 * This,
16088 _In_ const D3D12_HEAP_DESC *pDesc,
16089 REFIID riid,
16090 _COM_Outptr_opt_ void **ppvHeap);
16091
16092 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
16093 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
16094 ID3D12Device7 * This,
16095 _In_ ID3D12Heap *pHeap,
16096 UINT64 HeapOffset,
16097 _In_ const D3D12_RESOURCE_DESC *pDesc,
16098 D3D12_RESOURCE_STATES InitialState,
16099 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16100 REFIID riid,
16101 _COM_Outptr_opt_ void **ppvResource);
16102
16103 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
16104 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
16105 ID3D12Device7 * This,
16106 _In_ const D3D12_RESOURCE_DESC *pDesc,
16107 D3D12_RESOURCE_STATES InitialState,
16108 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16109 REFIID riid,
16110 _COM_Outptr_opt_ void **ppvResource);
16111
16112 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
16113 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
16114 ID3D12Device7 * This,
16115 _In_ ID3D12DeviceChild *pObject,
16116 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
16117 DWORD Access,
16118 _In_opt_ LPCWSTR Name,
16119 _Out_ HANDLE *pHandle);
16120
16121 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
16122 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
16123 ID3D12Device7 * This,
16124 _In_ HANDLE NTHandle,
16125 REFIID riid,
16126 _COM_Outptr_opt_ void **ppvObj);
16127
16128 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
16129 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
16130 ID3D12Device7 * This,
16131 _In_ LPCWSTR Name,
16132 DWORD Access,
16133 /* [annotation][out] */
16134 _Out_ HANDLE *pNTHandle);
16135
16136 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
16137 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
16138 ID3D12Device7 * This,
16139 UINT NumObjects,
16140 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16141
16142 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
16143 HRESULT ( STDMETHODCALLTYPE *Evict )(
16144 ID3D12Device7 * This,
16145 UINT NumObjects,
16146 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16147
16148 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16149 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16150 ID3D12Device7 * This,
16151 UINT64 InitialValue,
16152 D3D12_FENCE_FLAGS Flags,
16153 REFIID riid,
16154 _COM_Outptr_ void **ppFence);
16155
16156 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16157 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16158 ID3D12Device7 * This);
16159
16160 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16161 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16162 ID3D12Device7 * This,
16163 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16166 UINT64 BaseOffset,
16167 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16168 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16169 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16170 _Out_opt_ UINT64 *pTotalBytes);
16171
16172 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16173 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16174 ID3D12Device7 * This,
16175 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16176 REFIID riid,
16177 _COM_Outptr_opt_ void **ppvHeap);
16178
16179 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16180 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16181 ID3D12Device7 * This,
16182 BOOL Enable);
16183
16184 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16185 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16186 ID3D12Device7 * This,
16187 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16188 _In_opt_ ID3D12RootSignature *pRootSignature,
16189 REFIID riid,
16190 _COM_Outptr_opt_ void **ppvCommandSignature);
16191
16192 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16193 void ( STDMETHODCALLTYPE *GetResourceTiling )(
16194 ID3D12Device7 * This,
16195 _In_ ID3D12Resource *pTiledResource,
16196 _Out_opt_ UINT *pNumTilesForEntireResource,
16197 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
16198 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
16199 _Inout_opt_ UINT *pNumSubresourceTilings,
16200 _In_ UINT FirstSubresourceTilingToGet,
16201 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
16202
16203 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
16204 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
16205 ID3D12Device7 * This,
16206 LUID * RetVal);
16207
16208 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
16209 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
16210 ID3D12Device7 * This,
16211 _In_reads_(BlobLength) const void *pLibraryBlob,
16212 SIZE_T BlobLength,
16213 REFIID riid,
16214 _COM_Outptr_ void **ppPipelineLibrary);
16215
16216 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
16217 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
16218 ID3D12Device7 * This,
16219 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
16220 _In_reads_(NumFences) const UINT64 *pFenceValues,
16221 UINT NumFences,
16222 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
16223 HANDLE hEvent);
16224
16225 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
16226 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
16227 ID3D12Device7 * This,
16228 UINT NumObjects,
16229 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16230 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
16231
16232 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
16233 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
16234 ID3D12Device7 * This,
16235 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
16236 REFIID riid,
16237 _COM_Outptr_ void **ppPipelineState);
16238
16239 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
16240 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
16241 ID3D12Device7 * This,
16242 _In_ const void *pAddress,
16243 REFIID riid,
16244 _COM_Outptr_ void **ppvHeap);
16245
16246 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
16247 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
16248 ID3D12Device7 * This,
16249 _In_ HANDLE hFileMapping,
16250 REFIID riid,
16251 _COM_Outptr_ void **ppvHeap);
16252
16253 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
16254 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
16255 ID3D12Device7 * This,
16256 D3D12_RESIDENCY_FLAGS Flags,
16257 UINT NumObjects,
16258 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16259 _In_ ID3D12Fence *pFenceToSignal,
16260 UINT64 FenceValueToSignal);
16261
16262 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
16263 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
16264 ID3D12Device7 * This,
16265 _In_ UINT nodeMask,
16266 _In_ D3D12_COMMAND_LIST_TYPE type,
16267 _In_ D3D12_COMMAND_LIST_FLAGS flags,
16268 REFIID riid,
16269 _COM_Outptr_ void **ppCommandList);
16270
16271 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
16272 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
16273 ID3D12Device7 * This,
16274 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
16275 _In_ REFIID riid,
16276 _COM_Outptr_ void **ppSession);
16277
16278 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
16279 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
16280 ID3D12Device7 * This,
16281 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16282 D3D12_HEAP_FLAGS HeapFlags,
16283 _In_ const D3D12_RESOURCE_DESC *pDesc,
16284 D3D12_RESOURCE_STATES InitialResourceState,
16285 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16286 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16287 REFIID riidResource,
16288 _COM_Outptr_opt_ void **ppvResource);
16289
16290 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
16291 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
16292 ID3D12Device7 * This,
16293 _In_ const D3D12_HEAP_DESC *pDesc,
16294 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16295 REFIID riid,
16296 _COM_Outptr_opt_ void **ppvHeap);
16297
16298 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
16299 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
16300 ID3D12Device7 * This,
16301 _In_ const D3D12_RESOURCE_DESC *pDesc,
16302 D3D12_RESOURCE_STATES InitialState,
16303 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16304 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16305 REFIID riid,
16306 _COM_Outptr_opt_ void **ppvResource);
16307
16308 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
16309 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16310 ID3D12Device7 * This,
16311 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16312 UINT visibleMask,
16313 UINT numResourceDescs,
16314 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16315 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16316
16317 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
16318 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
16319 ID3D12Device7 * This,
16320 _In_ ID3D12LifetimeOwner *pOwner,
16321 REFIID riid,
16322 _COM_Outptr_ void **ppvTracker);
16323
16324 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
16325 void ( STDMETHODCALLTYPE *RemoveDevice )(
16326 ID3D12Device7 * This);
16327
16328 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
16329 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
16330 ID3D12Device7 * This,
16331 _Inout_ UINT *pNumMetaCommands,
16332 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
16333
16334 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
16335 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
16336 ID3D12Device7 * This,
16337 _In_ REFGUID CommandId,
16338 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
16339 _Out_opt_ UINT *pTotalStructureSizeInBytes,
16340 _Inout_ UINT *pParameterCount,
16341 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
16342
16343 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
16344 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
16345 ID3D12Device7 * This,
16346 _In_ REFGUID CommandId,
16347 _In_ UINT NodeMask,
16348 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
16349 _In_ SIZE_T CreationParametersDataSizeInBytes,
16350 REFIID riid,
16351 _COM_Outptr_ void **ppMetaCommand);
16352
16353 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
16354 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
16355 ID3D12Device7 * This,
16356 const D3D12_STATE_OBJECT_DESC *pDesc,
16357 REFIID riid,
16358 _COM_Outptr_ void **ppStateObject);
16359
16360 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
16361 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
16362 ID3D12Device7 * This,
16363 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
16364 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
16365
16366 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
16367 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
16368 ID3D12Device7 * This,
16369 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
16370 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
16371
16372 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
16373 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
16374 ID3D12Device7 * This,
16375 D3D12_BACKGROUND_PROCESSING_MODE Mode,
16376 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
16377 _In_opt_ HANDLE hEventToSignalUponCompletion,
16378 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
16379
16380 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
16381 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
16382 ID3D12Device7 * This,
16383 const D3D12_STATE_OBJECT_DESC *pAddition,
16384 ID3D12StateObject *pStateObjectToGrowFrom,
16385 REFIID riid,
16386 _COM_Outptr_ void **ppNewStateObject);
16387
16388 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
16389 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
16390 ID3D12Device7 * This,
16391 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
16392 _In_ REFIID riid,
16393 _COM_Outptr_ void **ppSession);
16394
16395 END_INTERFACE
16396 } ID3D12Device7Vtbl;
16397
16398 interface ID3D12Device7
16399 {
16400 CONST_VTBL struct ID3D12Device7Vtbl *lpVtbl;
16401 };
16402
16403
16404
16405#ifdef COBJMACROS
16406
16407
16408#define ID3D12Device7_QueryInterface(This,riid,ppvObject) \
16409 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16410
16411#define ID3D12Device7_AddRef(This) \
16412 ( (This)->lpVtbl -> AddRef(This) )
16413
16414#define ID3D12Device7_Release(This) \
16415 ( (This)->lpVtbl -> Release(This) )
16416
16417
16418#define ID3D12Device7_GetPrivateData(This,guid,pDataSize,pData) \
16419 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
16420
16421#define ID3D12Device7_SetPrivateData(This,guid,DataSize,pData) \
16422 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
16423
16424#define ID3D12Device7_SetPrivateDataInterface(This,guid,pData) \
16425 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
16426
16427#define ID3D12Device7_SetName(This,Name) \
16428 ( (This)->lpVtbl -> SetName(This,Name) )
16429
16430
16431#define ID3D12Device7_GetNodeCount(This) \
16432 ( (This)->lpVtbl -> GetNodeCount(This) )
16433
16434#define ID3D12Device7_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
16435 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
16436
16437#define ID3D12Device7_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
16438 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
16439
16440#define ID3D12Device7_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
16441 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
16442
16443#define ID3D12Device7_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
16444 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
16445
16446#define ID3D12Device7_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
16447 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
16448
16449#define ID3D12Device7_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
16450 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
16451
16452#define ID3D12Device7_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
16453 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
16454
16455#define ID3D12Device7_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
16456 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
16457
16458#define ID3D12Device7_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
16459 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
16460
16461#define ID3D12Device7_CreateConstantBufferView(This,pDesc,DestDescriptor) \
16462 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
16463
16464#define ID3D12Device7_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
16465 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
16466
16467#define ID3D12Device7_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
16468 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
16469
16470#define ID3D12Device7_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
16471 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
16472
16473#define ID3D12Device7_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
16474 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
16475
16476#define ID3D12Device7_CreateSampler(This,pDesc,DestDescriptor) \
16477 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
16478
16479#define ID3D12Device7_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
16480 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
16481
16482#define ID3D12Device7_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
16483 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
16484
16485#define ID3D12Device7_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
16486 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
16487
16488#define ID3D12Device7_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
16489 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
16490
16491#define ID3D12Device7_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
16492 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
16493
16494#define ID3D12Device7_CreateHeap(This,pDesc,riid,ppvHeap) \
16495 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
16496
16497#define ID3D12Device7_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16498 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16499
16500#define ID3D12Device7_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16501 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16502
16503#define ID3D12Device7_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
16504 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
16505
16506#define ID3D12Device7_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
16507 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
16508
16509#define ID3D12Device7_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
16510 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
16511
16512#define ID3D12Device7_MakeResident(This,NumObjects,ppObjects) \
16513 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
16514
16515#define ID3D12Device7_Evict(This,NumObjects,ppObjects) \
16516 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
16517
16518#define ID3D12Device7_CreateFence(This,InitialValue,Flags,riid,ppFence) \
16519 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
16520
16521#define ID3D12Device7_GetDeviceRemovedReason(This) \
16522 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
16523
16524#define ID3D12Device7_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
16525 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
16526
16527#define ID3D12Device7_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
16528 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
16529
16530#define ID3D12Device7_SetStablePowerState(This,Enable) \
16531 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
16532
16533#define ID3D12Device7_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
16534 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
16535
16536#define ID3D12Device7_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
16537 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
16538
16539#define ID3D12Device7_GetAdapterLuid(This,RetVal) \
16540 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
16541
16542
16543#define ID3D12Device7_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
16544 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
16545
16546#define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
16547 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
16548
16549#define ID3D12Device7_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
16550 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
16551
16552
16553#define ID3D12Device7_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
16554 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
16555
16556
16557#define ID3D12Device7_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
16558 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
16559
16560#define ID3D12Device7_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
16561 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
16562
16563#define ID3D12Device7_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
16564 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
16565
16566
16567#define ID3D12Device7_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
16568 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
16569
16570#define ID3D12Device7_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
16571 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
16572
16573#define ID3D12Device7_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
16574 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
16575
16576#define ID3D12Device7_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
16577 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
16578
16579#define ID3D12Device7_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
16580 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
16581
16582#define ID3D12Device7_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16583 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16584
16585
16586#define ID3D12Device7_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
16587 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
16588
16589#define ID3D12Device7_RemoveDevice(This) \
16590 ( (This)->lpVtbl -> RemoveDevice(This) )
16591
16592#define ID3D12Device7_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
16593 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
16594
16595#define ID3D12Device7_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
16596 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
16597
16598#define ID3D12Device7_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
16599 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
16600
16601#define ID3D12Device7_CreateStateObject(This,pDesc,riid,ppStateObject) \
16602 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
16603
16604#define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
16605 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
16606
16607#define ID3D12Device7_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
16608 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
16609
16610
16611#define ID3D12Device7_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
16612 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
16613
16614
16615#define ID3D12Device7_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
16616 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
16617
16618#define ID3D12Device7_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
16619 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
16620
16621#endif /* COBJMACROS */
16622
16623
16624#endif /* C style interface */
16625
16626
16627
16628
16629#endif /* __ID3D12Device7_INTERFACE_DEFINED__ */
16630
16631
16632#ifndef __ID3D12Device8_INTERFACE_DEFINED__
16633#define __ID3D12Device8_INTERFACE_DEFINED__
16634
16635/* interface ID3D12Device8 */
16636/* [unique][local][object][uuid] */
16637
16638
16639EXTERN_C const IID IID_ID3D12Device8;
16640
16641#if defined(__cplusplus) && !defined(CINTERFACE)
16642
16643 MIDL_INTERFACE("9218E6BB-F944-4F7E-A75C-B1B2C7B701F3")
16644 ID3D12Device8 : public ID3D12Device7
16645 {
16646 public:
16647 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
16648 UINT visibleMask,
16649 UINT numResourceDescs,
16650 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
16651 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
16652
16653 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource2(
16654 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16655 D3D12_HEAP_FLAGS HeapFlags,
16656 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
16657 D3D12_RESOURCE_STATES InitialResourceState,
16658 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16659 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16660 REFIID riidResource,
16661 _COM_Outptr_opt_ void **ppvResource) = 0;
16662
16663 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource1(
16664 _In_ ID3D12Heap *pHeap,
16665 UINT64 HeapOffset,
16666 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
16667 D3D12_RESOURCE_STATES InitialState,
16668 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16669 REFIID riid,
16670 _COM_Outptr_opt_ void **ppvResource) = 0;
16671
16672 virtual void STDMETHODCALLTYPE CreateSamplerFeedbackUnorderedAccessView(
16673 _In_opt_ ID3D12Resource *pTargetedResource,
16674 _In_opt_ ID3D12Resource *pFeedbackResource,
16675 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
16676
16677 virtual void STDMETHODCALLTYPE GetCopyableFootprints1(
16678 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
16679 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16680 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16681 UINT64 BaseOffset,
16682 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16683 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16684 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16685 _Out_opt_ UINT64 *pTotalBytes) = 0;
16686
16687 };
16688
16689
16690#else /* C style interface */
16691
16692 typedef struct ID3D12Device8Vtbl
16693 {
16694 BEGIN_INTERFACE
16695
16696 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16697 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16698 ID3D12Device8 * This,
16699 REFIID riid,
16700 _COM_Outptr_ void **ppvObject);
16701
16702 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16703 ULONG ( STDMETHODCALLTYPE *AddRef )(
16704 ID3D12Device8 * This);
16705
16706 DECLSPEC_XFGVIRT(IUnknown, Release)
16707 ULONG ( STDMETHODCALLTYPE *Release )(
16708 ID3D12Device8 * This);
16709
16710 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
16711 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
16712 ID3D12Device8 * This,
16713 _In_ REFGUID guid,
16714 _Inout_ UINT *pDataSize,
16715 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
16716
16717 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
16718 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
16719 ID3D12Device8 * This,
16720 _In_ REFGUID guid,
16721 _In_ UINT DataSize,
16722 _In_reads_bytes_opt_( DataSize ) const void *pData);
16723
16724 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
16725 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
16726 ID3D12Device8 * This,
16727 _In_ REFGUID guid,
16728 _In_opt_ const IUnknown *pData);
16729
16730 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
16731 HRESULT ( STDMETHODCALLTYPE *SetName )(
16732 ID3D12Device8 * This,
16733 _In_z_ LPCWSTR Name);
16734
16735 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
16736 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
16737 ID3D12Device8 * This);
16738
16739 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
16740 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
16741 ID3D12Device8 * This,
16742 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
16743 REFIID riid,
16744 _COM_Outptr_ void **ppCommandQueue);
16745
16746 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
16747 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
16748 ID3D12Device8 * This,
16749 _In_ D3D12_COMMAND_LIST_TYPE type,
16750 REFIID riid,
16751 _COM_Outptr_ void **ppCommandAllocator);
16752
16753 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
16754 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
16755 ID3D12Device8 * This,
16756 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
16757 REFIID riid,
16758 _COM_Outptr_ void **ppPipelineState);
16759
16760 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
16761 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
16762 ID3D12Device8 * This,
16763 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
16764 REFIID riid,
16765 _COM_Outptr_ void **ppPipelineState);
16766
16767 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
16768 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
16769 ID3D12Device8 * This,
16770 _In_ UINT nodeMask,
16771 _In_ D3D12_COMMAND_LIST_TYPE type,
16772 _In_ ID3D12CommandAllocator *pCommandAllocator,
16773 _In_opt_ ID3D12PipelineState *pInitialState,
16774 REFIID riid,
16775 _COM_Outptr_ void **ppCommandList);
16776
16777 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
16778 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
16779 ID3D12Device8 * This,
16780 D3D12_FEATURE Feature,
16781 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
16782 UINT FeatureSupportDataSize);
16783
16784 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
16785 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
16786 ID3D12Device8 * This,
16787 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
16788 REFIID riid,
16789 _COM_Outptr_ void **ppvHeap);
16790
16791 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
16792 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
16793 ID3D12Device8 * This,
16794 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
16795
16796 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
16797 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
16798 ID3D12Device8 * This,
16799 _In_ UINT nodeMask,
16800 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
16801 _In_ SIZE_T blobLengthInBytes,
16802 REFIID riid,
16803 _COM_Outptr_ void **ppvRootSignature);
16804
16805 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
16806 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
16807 ID3D12Device8 * This,
16808 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
16809 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16810
16811 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
16812 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
16813 ID3D12Device8 * This,
16814 _In_opt_ ID3D12Resource *pResource,
16815 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
16816 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16817
16818 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
16819 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
16820 ID3D12Device8 * This,
16821 _In_opt_ ID3D12Resource *pResource,
16822 _In_opt_ ID3D12Resource *pCounterResource,
16823 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
16824 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16825
16826 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
16827 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
16828 ID3D12Device8 * This,
16829 _In_opt_ ID3D12Resource *pResource,
16830 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
16831 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16832
16833 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
16834 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
16835 ID3D12Device8 * This,
16836 _In_opt_ ID3D12Resource *pResource,
16837 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
16838 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16839
16840 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
16841 void ( STDMETHODCALLTYPE *CreateSampler )(
16842 ID3D12Device8 * This,
16843 _In_ const D3D12_SAMPLER_DESC *pDesc,
16844 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16845
16846 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
16847 void ( STDMETHODCALLTYPE *CopyDescriptors )(
16848 ID3D12Device8 * This,
16849 _In_ UINT NumDestDescriptorRanges,
16850 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
16851 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
16852 _In_ UINT NumSrcDescriptorRanges,
16853 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
16854 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
16855 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16856
16857 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
16858 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
16859 ID3D12Device8 * This,
16860 _In_ UINT NumDescriptors,
16861 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
16862 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
16863 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16864
16865 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
16866 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
16867 ID3D12Device8 * This,
16868 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16869 _In_ UINT visibleMask,
16870 _In_ UINT numResourceDescs,
16871 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
16872
16873 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
16874 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
16875 ID3D12Device8 * This,
16876 D3D12_HEAP_PROPERTIES * RetVal,
16877 _In_ UINT nodeMask,
16878 D3D12_HEAP_TYPE heapType);
16879
16880 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
16881 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
16882 ID3D12Device8 * This,
16883 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16884 D3D12_HEAP_FLAGS HeapFlags,
16885 _In_ const D3D12_RESOURCE_DESC *pDesc,
16886 D3D12_RESOURCE_STATES InitialResourceState,
16887 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16888 REFIID riidResource,
16889 _COM_Outptr_opt_ void **ppvResource);
16890
16891 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
16892 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
16893 ID3D12Device8 * This,
16894 _In_ const D3D12_HEAP_DESC *pDesc,
16895 REFIID riid,
16896 _COM_Outptr_opt_ void **ppvHeap);
16897
16898 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
16899 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
16900 ID3D12Device8 * This,
16901 _In_ ID3D12Heap *pHeap,
16902 UINT64 HeapOffset,
16903 _In_ const D3D12_RESOURCE_DESC *pDesc,
16904 D3D12_RESOURCE_STATES InitialState,
16905 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16906 REFIID riid,
16907 _COM_Outptr_opt_ void **ppvResource);
16908
16909 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
16910 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
16911 ID3D12Device8 * This,
16912 _In_ const D3D12_RESOURCE_DESC *pDesc,
16913 D3D12_RESOURCE_STATES InitialState,
16914 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16915 REFIID riid,
16916 _COM_Outptr_opt_ void **ppvResource);
16917
16918 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
16919 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
16920 ID3D12Device8 * This,
16921 _In_ ID3D12DeviceChild *pObject,
16922 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
16923 DWORD Access,
16924 _In_opt_ LPCWSTR Name,
16925 _Out_ HANDLE *pHandle);
16926
16927 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
16928 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
16929 ID3D12Device8 * This,
16930 _In_ HANDLE NTHandle,
16931 REFIID riid,
16932 _COM_Outptr_opt_ void **ppvObj);
16933
16934 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
16935 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
16936 ID3D12Device8 * This,
16937 _In_ LPCWSTR Name,
16938 DWORD Access,
16939 /* [annotation][out] */
16940 _Out_ HANDLE *pNTHandle);
16941
16942 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
16943 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
16944 ID3D12Device8 * This,
16945 UINT NumObjects,
16946 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16947
16948 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
16949 HRESULT ( STDMETHODCALLTYPE *Evict )(
16950 ID3D12Device8 * This,
16951 UINT NumObjects,
16952 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16953
16954 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16955 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16956 ID3D12Device8 * This,
16957 UINT64 InitialValue,
16958 D3D12_FENCE_FLAGS Flags,
16959 REFIID riid,
16960 _COM_Outptr_ void **ppFence);
16961
16962 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16963 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16964 ID3D12Device8 * This);
16965
16966 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16967 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16968 ID3D12Device8 * This,
16969 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16970 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16971 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16972 UINT64 BaseOffset,
16973 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16974 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16975 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16976 _Out_opt_ UINT64 *pTotalBytes);
16977
16978 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16979 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16980 ID3D12Device8 * This,
16981 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16982 REFIID riid,
16983 _COM_Outptr_opt_ void **ppvHeap);
16984
16985 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16986 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16987 ID3D12Device8 * This,
16988 BOOL Enable);
16989
16990 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16991 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16992 ID3D12Device8 * This,
16993 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16994 _In_opt_ ID3D12RootSignature *pRootSignature,
16995 REFIID riid,
16996 _COM_Outptr_opt_ void **ppvCommandSignature);
16997
16998 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16999 void ( STDMETHODCALLTYPE *GetResourceTiling )(
17000 ID3D12Device8 * This,
17001 _In_ ID3D12Resource *pTiledResource,
17002 _Out_opt_ UINT *pNumTilesForEntireResource,
17003 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
17004 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
17005 _Inout_opt_ UINT *pNumSubresourceTilings,
17006 _In_ UINT FirstSubresourceTilingToGet,
17007 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
17008
17009 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
17010 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
17011 ID3D12Device8 * This,
17012 LUID * RetVal);
17013
17014 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
17015 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
17016 ID3D12Device8 * This,
17017 _In_reads_(BlobLength) const void *pLibraryBlob,
17018 SIZE_T BlobLength,
17019 REFIID riid,
17020 _COM_Outptr_ void **ppPipelineLibrary);
17021
17022 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
17023 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
17024 ID3D12Device8 * This,
17025 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
17026 _In_reads_(NumFences) const UINT64 *pFenceValues,
17027 UINT NumFences,
17028 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
17029 HANDLE hEvent);
17030
17031 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
17032 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
17033 ID3D12Device8 * This,
17034 UINT NumObjects,
17035 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17036 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
17037
17038 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
17039 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
17040 ID3D12Device8 * This,
17041 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
17042 REFIID riid,
17043 _COM_Outptr_ void **ppPipelineState);
17044
17045 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
17046 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
17047 ID3D12Device8 * This,
17048 _In_ const void *pAddress,
17049 REFIID riid,
17050 _COM_Outptr_ void **ppvHeap);
17051
17052 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
17053 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
17054 ID3D12Device8 * This,
17055 _In_ HANDLE hFileMapping,
17056 REFIID riid,
17057 _COM_Outptr_ void **ppvHeap);
17058
17059 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
17060 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
17061 ID3D12Device8 * This,
17062 D3D12_RESIDENCY_FLAGS Flags,
17063 UINT NumObjects,
17064 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17065 _In_ ID3D12Fence *pFenceToSignal,
17066 UINT64 FenceValueToSignal);
17067
17068 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
17069 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
17070 ID3D12Device8 * This,
17071 _In_ UINT nodeMask,
17072 _In_ D3D12_COMMAND_LIST_TYPE type,
17073 _In_ D3D12_COMMAND_LIST_FLAGS flags,
17074 REFIID riid,
17075 _COM_Outptr_ void **ppCommandList);
17076
17077 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
17078 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
17079 ID3D12Device8 * This,
17080 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
17081 _In_ REFIID riid,
17082 _COM_Outptr_ void **ppSession);
17083
17084 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
17085 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
17086 ID3D12Device8 * This,
17087 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17088 D3D12_HEAP_FLAGS HeapFlags,
17089 _In_ const D3D12_RESOURCE_DESC *pDesc,
17090 D3D12_RESOURCE_STATES InitialResourceState,
17091 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17092 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17093 REFIID riidResource,
17094 _COM_Outptr_opt_ void **ppvResource);
17095
17096 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
17097 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
17098 ID3D12Device8 * This,
17099 _In_ const D3D12_HEAP_DESC *pDesc,
17100 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17101 REFIID riid,
17102 _COM_Outptr_opt_ void **ppvHeap);
17103
17104 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
17105 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
17106 ID3D12Device8 * This,
17107 _In_ const D3D12_RESOURCE_DESC *pDesc,
17108 D3D12_RESOURCE_STATES InitialState,
17109 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17110 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17111 REFIID riid,
17112 _COM_Outptr_opt_ void **ppvResource);
17113
17114 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
17115 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17116 ID3D12Device8 * This,
17117 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17118 UINT visibleMask,
17119 UINT numResourceDescs,
17120 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17121 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17122
17123 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
17124 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
17125 ID3D12Device8 * This,
17126 _In_ ID3D12LifetimeOwner *pOwner,
17127 REFIID riid,
17128 _COM_Outptr_ void **ppvTracker);
17129
17130 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
17131 void ( STDMETHODCALLTYPE *RemoveDevice )(
17132 ID3D12Device8 * This);
17133
17134 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
17135 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
17136 ID3D12Device8 * This,
17137 _Inout_ UINT *pNumMetaCommands,
17138 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
17139
17140 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
17141 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
17142 ID3D12Device8 * This,
17143 _In_ REFGUID CommandId,
17144 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
17145 _Out_opt_ UINT *pTotalStructureSizeInBytes,
17146 _Inout_ UINT *pParameterCount,
17147 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
17148
17149 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
17150 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
17151 ID3D12Device8 * This,
17152 _In_ REFGUID CommandId,
17153 _In_ UINT NodeMask,
17154 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
17155 _In_ SIZE_T CreationParametersDataSizeInBytes,
17156 REFIID riid,
17157 _COM_Outptr_ void **ppMetaCommand);
17158
17159 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
17160 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
17161 ID3D12Device8 * This,
17162 const D3D12_STATE_OBJECT_DESC *pDesc,
17163 REFIID riid,
17164 _COM_Outptr_ void **ppStateObject);
17165
17166 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
17167 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
17168 ID3D12Device8 * This,
17169 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
17170 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
17171
17172 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
17173 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
17174 ID3D12Device8 * This,
17175 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
17176 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
17177
17178 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
17179 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
17180 ID3D12Device8 * This,
17181 D3D12_BACKGROUND_PROCESSING_MODE Mode,
17182 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
17183 _In_opt_ HANDLE hEventToSignalUponCompletion,
17184 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
17185
17186 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
17187 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
17188 ID3D12Device8 * This,
17189 const D3D12_STATE_OBJECT_DESC *pAddition,
17190 ID3D12StateObject *pStateObjectToGrowFrom,
17191 REFIID riid,
17192 _COM_Outptr_ void **ppNewStateObject);
17193
17194 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
17195 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
17196 ID3D12Device8 * This,
17197 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
17198 _In_ REFIID riid,
17199 _COM_Outptr_ void **ppSession);
17200
17201 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
17202 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
17203 ID3D12Device8 * This,
17204 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17205 UINT visibleMask,
17206 UINT numResourceDescs,
17207 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
17208 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17209
17210 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
17211 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
17212 ID3D12Device8 * This,
17213 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17214 D3D12_HEAP_FLAGS HeapFlags,
17215 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
17216 D3D12_RESOURCE_STATES InitialResourceState,
17217 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17218 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17219 REFIID riidResource,
17220 _COM_Outptr_opt_ void **ppvResource);
17221
17222 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
17223 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
17224 ID3D12Device8 * This,
17225 _In_ ID3D12Heap *pHeap,
17226 UINT64 HeapOffset,
17227 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
17228 D3D12_RESOURCE_STATES InitialState,
17229 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17230 REFIID riid,
17231 _COM_Outptr_opt_ void **ppvResource);
17232
17233 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
17234 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
17235 ID3D12Device8 * This,
17236 _In_opt_ ID3D12Resource *pTargetedResource,
17237 _In_opt_ ID3D12Resource *pFeedbackResource,
17238 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17239
17240 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
17241 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
17242 ID3D12Device8 * This,
17243 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
17244 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
17245 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
17246 UINT64 BaseOffset,
17247 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
17248 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
17249 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
17250 _Out_opt_ UINT64 *pTotalBytes);
17251
17252 END_INTERFACE
17253 } ID3D12Device8Vtbl;
17254
17255 interface ID3D12Device8
17256 {
17257 CONST_VTBL struct ID3D12Device8Vtbl *lpVtbl;
17258 };
17259
17260
17261
17262#ifdef COBJMACROS
17263
17264
17265#define ID3D12Device8_QueryInterface(This,riid,ppvObject) \
17266 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17267
17268#define ID3D12Device8_AddRef(This) \
17269 ( (This)->lpVtbl -> AddRef(This) )
17270
17271#define ID3D12Device8_Release(This) \
17272 ( (This)->lpVtbl -> Release(This) )
17273
17274
17275#define ID3D12Device8_GetPrivateData(This,guid,pDataSize,pData) \
17276 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
17277
17278#define ID3D12Device8_SetPrivateData(This,guid,DataSize,pData) \
17279 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
17280
17281#define ID3D12Device8_SetPrivateDataInterface(This,guid,pData) \
17282 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
17283
17284#define ID3D12Device8_SetName(This,Name) \
17285 ( (This)->lpVtbl -> SetName(This,Name) )
17286
17287
17288#define ID3D12Device8_GetNodeCount(This) \
17289 ( (This)->lpVtbl -> GetNodeCount(This) )
17290
17291#define ID3D12Device8_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
17292 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
17293
17294#define ID3D12Device8_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
17295 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
17296
17297#define ID3D12Device8_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
17298 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
17299
17300#define ID3D12Device8_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
17301 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
17302
17303#define ID3D12Device8_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
17304 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
17305
17306#define ID3D12Device8_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
17307 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
17308
17309#define ID3D12Device8_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
17310 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
17311
17312#define ID3D12Device8_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
17313 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
17314
17315#define ID3D12Device8_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
17316 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
17317
17318#define ID3D12Device8_CreateConstantBufferView(This,pDesc,DestDescriptor) \
17319 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
17320
17321#define ID3D12Device8_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
17322 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
17323
17324#define ID3D12Device8_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
17325 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
17326
17327#define ID3D12Device8_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
17328 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
17329
17330#define ID3D12Device8_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
17331 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
17332
17333#define ID3D12Device8_CreateSampler(This,pDesc,DestDescriptor) \
17334 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
17335
17336#define ID3D12Device8_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
17337 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
17338
17339#define ID3D12Device8_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
17340 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
17341
17342#define ID3D12Device8_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
17343 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
17344
17345#define ID3D12Device8_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
17346 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
17347
17348#define ID3D12Device8_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
17349 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
17350
17351#define ID3D12Device8_CreateHeap(This,pDesc,riid,ppvHeap) \
17352 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
17353
17354#define ID3D12Device8_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
17355 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
17356
17357#define ID3D12Device8_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
17358 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
17359
17360#define ID3D12Device8_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
17361 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
17362
17363#define ID3D12Device8_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
17364 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
17365
17366#define ID3D12Device8_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
17367 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
17368
17369#define ID3D12Device8_MakeResident(This,NumObjects,ppObjects) \
17370 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
17371
17372#define ID3D12Device8_Evict(This,NumObjects,ppObjects) \
17373 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
17374
17375#define ID3D12Device8_CreateFence(This,InitialValue,Flags,riid,ppFence) \
17376 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
17377
17378#define ID3D12Device8_GetDeviceRemovedReason(This) \
17379 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
17380
17381#define ID3D12Device8_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
17382 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
17383
17384#define ID3D12Device8_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
17385 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
17386
17387#define ID3D12Device8_SetStablePowerState(This,Enable) \
17388 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
17389
17390#define ID3D12Device8_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
17391 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
17392
17393#define ID3D12Device8_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
17394 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
17395
17396#define ID3D12Device8_GetAdapterLuid(This,RetVal) \
17397 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
17398
17399
17400#define ID3D12Device8_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
17401 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
17402
17403#define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
17404 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
17405
17406#define ID3D12Device8_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
17407 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
17408
17409
17410#define ID3D12Device8_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
17411 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
17412
17413
17414#define ID3D12Device8_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
17415 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
17416
17417#define ID3D12Device8_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
17418 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
17419
17420#define ID3D12Device8_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
17421 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
17422
17423
17424#define ID3D12Device8_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
17425 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
17426
17427#define ID3D12Device8_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
17428 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
17429
17430#define ID3D12Device8_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
17431 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
17432
17433#define ID3D12Device8_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
17434 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
17435
17436#define ID3D12Device8_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
17437 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
17438
17439#define ID3D12Device8_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
17440 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
17441
17442
17443#define ID3D12Device8_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
17444 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
17445
17446#define ID3D12Device8_RemoveDevice(This) \
17447 ( (This)->lpVtbl -> RemoveDevice(This) )
17448
17449#define ID3D12Device8_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
17450 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
17451
17452#define ID3D12Device8_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
17453 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
17454
17455#define ID3D12Device8_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
17456 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
17457
17458#define ID3D12Device8_CreateStateObject(This,pDesc,riid,ppStateObject) \
17459 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
17460
17461#define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
17462 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
17463
17464#define ID3D12Device8_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
17465 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
17466
17467
17468#define ID3D12Device8_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
17469 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
17470
17471
17472#define ID3D12Device8_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
17473 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
17474
17475#define ID3D12Device8_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
17476 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
17477
17478
17479#define ID3D12Device8_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
17480 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
17481
17482#define ID3D12Device8_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
17483 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
17484
17485#define ID3D12Device8_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
17486 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
17487
17488#define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
17489 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
17490
17491#define ID3D12Device8_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
17492 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
17493
17494#endif /* COBJMACROS */
17495
17496
17497#endif /* C style interface */
17498
17499
17500
17501
17502#endif /* __ID3D12Device8_INTERFACE_DEFINED__ */
17503
17504
17505#ifndef __ID3D12Resource1_INTERFACE_DEFINED__
17506#define __ID3D12Resource1_INTERFACE_DEFINED__
17507
17508/* interface ID3D12Resource1 */
17509/* [unique][local][object][uuid] */
17510
17511
17512EXTERN_C const IID IID_ID3D12Resource1;
17513
17514#if defined(__cplusplus) && !defined(CINTERFACE)
17515
17516 MIDL_INTERFACE("9D5E227A-4430-4161-88B3-3ECA6BB16E19")
17517 ID3D12Resource1 : public ID3D12Resource
17518 {
17519 public:
17520 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
17521 REFIID riid,
17522 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
17523
17524 };
17525
17526
17527#else /* C style interface */
17528
17529 typedef struct ID3D12Resource1Vtbl
17530 {
17531 BEGIN_INTERFACE
17532
17533 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17534 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17535 ID3D12Resource1 * This,
17536 REFIID riid,
17537 _COM_Outptr_ void **ppvObject);
17538
17539 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17540 ULONG ( STDMETHODCALLTYPE *AddRef )(
17541 ID3D12Resource1 * This);
17542
17543 DECLSPEC_XFGVIRT(IUnknown, Release)
17544 ULONG ( STDMETHODCALLTYPE *Release )(
17545 ID3D12Resource1 * This);
17546
17547 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17548 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17549 ID3D12Resource1 * This,
17550 _In_ REFGUID guid,
17551 _Inout_ UINT *pDataSize,
17552 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17553
17554 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17555 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17556 ID3D12Resource1 * This,
17557 _In_ REFGUID guid,
17558 _In_ UINT DataSize,
17559 _In_reads_bytes_opt_( DataSize ) const void *pData);
17560
17561 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17562 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17563 ID3D12Resource1 * This,
17564 _In_ REFGUID guid,
17565 _In_opt_ const IUnknown *pData);
17566
17567 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17568 HRESULT ( STDMETHODCALLTYPE *SetName )(
17569 ID3D12Resource1 * This,
17570 _In_z_ LPCWSTR Name);
17571
17572 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
17573 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
17574 ID3D12Resource1 * This,
17575 REFIID riid,
17576 _COM_Outptr_opt_ void **ppvDevice);
17577
17578 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
17579 HRESULT ( STDMETHODCALLTYPE *Map )(
17580 ID3D12Resource1 * This,
17581 UINT Subresource,
17582 _In_opt_ const D3D12_RANGE *pReadRange,
17583 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
17584
17585 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
17586 void ( STDMETHODCALLTYPE *Unmap )(
17587 ID3D12Resource1 * This,
17588 UINT Subresource,
17589 _In_opt_ const D3D12_RANGE *pWrittenRange);
17590
17591 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
17592 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
17593 ID3D12Resource1 * This,
17594 D3D12_RESOURCE_DESC * RetVal);
17595
17596 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
17597 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
17598 ID3D12Resource1 * This);
17599
17600 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
17601 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
17602 ID3D12Resource1 * This,
17603 UINT DstSubresource,
17604 _In_opt_ const D3D12_BOX *pDstBox,
17605 _In_ const void *pSrcData,
17606 UINT SrcRowPitch,
17607 UINT SrcDepthPitch);
17608
17609 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
17610 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
17611 ID3D12Resource1 * This,
17612 _Out_ void *pDstData,
17613 UINT DstRowPitch,
17614 UINT DstDepthPitch,
17615 UINT SrcSubresource,
17616 _In_opt_ const D3D12_BOX *pSrcBox);
17617
17618 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
17619 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
17620 ID3D12Resource1 * This,
17621 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
17622 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
17623
17624 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
17625 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
17626 ID3D12Resource1 * This,
17627 REFIID riid,
17628 _COM_Outptr_opt_ void **ppProtectedSession);
17629
17630 END_INTERFACE
17631 } ID3D12Resource1Vtbl;
17632
17633 interface ID3D12Resource1
17634 {
17635 CONST_VTBL struct ID3D12Resource1Vtbl *lpVtbl;
17636 };
17637
17638
17639
17640#ifdef COBJMACROS
17641
17642
17643#define ID3D12Resource1_QueryInterface(This,riid,ppvObject) \
17644 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17645
17646#define ID3D12Resource1_AddRef(This) \
17647 ( (This)->lpVtbl -> AddRef(This) )
17648
17649#define ID3D12Resource1_Release(This) \
17650 ( (This)->lpVtbl -> Release(This) )
17651
17652
17653#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData) \
17654 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
17655
17656#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData) \
17657 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
17658
17659#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData) \
17660 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
17661
17662#define ID3D12Resource1_SetName(This,Name) \
17663 ( (This)->lpVtbl -> SetName(This,Name) )
17664
17665
17666#define ID3D12Resource1_GetDevice(This,riid,ppvDevice) \
17667 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
17668
17669
17670
17671#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData) \
17672 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
17673
17674#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange) \
17675 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
17676
17677#define ID3D12Resource1_GetDesc(This,RetVal) \
17678 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
17679
17680#define ID3D12Resource1_GetGPUVirtualAddress(This) \
17681 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
17682
17683#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
17684 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
17685
17686#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
17687 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
17688
17689#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
17690 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
17691
17692
17693#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
17694 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
17695
17696#endif /* COBJMACROS */
17697
17698
17699#endif /* C style interface */
17700
17701
17702
17703
17704#endif /* __ID3D12Resource1_INTERFACE_DEFINED__ */
17705
17706
17707#ifndef __ID3D12Resource2_INTERFACE_DEFINED__
17708#define __ID3D12Resource2_INTERFACE_DEFINED__
17709
17710/* interface ID3D12Resource2 */
17711/* [unique][local][object][uuid] */
17712
17713
17714EXTERN_C const IID IID_ID3D12Resource2;
17715
17716#if defined(__cplusplus) && !defined(CINTERFACE)
17717
17718 MIDL_INTERFACE("BE36EC3B-EA85-4AEB-A45A-E9D76404A495")
17719 ID3D12Resource2 : public ID3D12Resource1
17720 {
17721 public:
17722 virtual D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
17723
17724 };
17725
17726
17727#else /* C style interface */
17728
17729 typedef struct ID3D12Resource2Vtbl
17730 {
17731 BEGIN_INTERFACE
17732
17733 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17734 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17735 ID3D12Resource2 * This,
17736 REFIID riid,
17737 _COM_Outptr_ void **ppvObject);
17738
17739 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17740 ULONG ( STDMETHODCALLTYPE *AddRef )(
17741 ID3D12Resource2 * This);
17742
17743 DECLSPEC_XFGVIRT(IUnknown, Release)
17744 ULONG ( STDMETHODCALLTYPE *Release )(
17745 ID3D12Resource2 * This);
17746
17747 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17748 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17749 ID3D12Resource2 * This,
17750 _In_ REFGUID guid,
17751 _Inout_ UINT *pDataSize,
17752 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17753
17754 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17755 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17756 ID3D12Resource2 * This,
17757 _In_ REFGUID guid,
17758 _In_ UINT DataSize,
17759 _In_reads_bytes_opt_( DataSize ) const void *pData);
17760
17761 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17762 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17763 ID3D12Resource2 * This,
17764 _In_ REFGUID guid,
17765 _In_opt_ const IUnknown *pData);
17766
17767 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17768 HRESULT ( STDMETHODCALLTYPE *SetName )(
17769 ID3D12Resource2 * This,
17770 _In_z_ LPCWSTR Name);
17771
17772 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
17773 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
17774 ID3D12Resource2 * This,
17775 REFIID riid,
17776 _COM_Outptr_opt_ void **ppvDevice);
17777
17778 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
17779 HRESULT ( STDMETHODCALLTYPE *Map )(
17780 ID3D12Resource2 * This,
17781 UINT Subresource,
17782 _In_opt_ const D3D12_RANGE *pReadRange,
17783 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
17784
17785 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
17786 void ( STDMETHODCALLTYPE *Unmap )(
17787 ID3D12Resource2 * This,
17788 UINT Subresource,
17789 _In_opt_ const D3D12_RANGE *pWrittenRange);
17790
17791 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
17792 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
17793 ID3D12Resource2 * This,
17794 D3D12_RESOURCE_DESC * RetVal);
17795
17796 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
17797 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
17798 ID3D12Resource2 * This);
17799
17800 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
17801 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
17802 ID3D12Resource2 * This,
17803 UINT DstSubresource,
17804 _In_opt_ const D3D12_BOX *pDstBox,
17805 _In_ const void *pSrcData,
17806 UINT SrcRowPitch,
17807 UINT SrcDepthPitch);
17808
17809 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
17810 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
17811 ID3D12Resource2 * This,
17812 _Out_ void *pDstData,
17813 UINT DstRowPitch,
17814 UINT DstDepthPitch,
17815 UINT SrcSubresource,
17816 _In_opt_ const D3D12_BOX *pSrcBox);
17817
17818 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
17819 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
17820 ID3D12Resource2 * This,
17821 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
17822 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
17823
17824 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
17825 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
17826 ID3D12Resource2 * This,
17827 REFIID riid,
17828 _COM_Outptr_opt_ void **ppProtectedSession);
17829
17830 DECLSPEC_XFGVIRT(ID3D12Resource2, GetDesc1)
17831 D3D12_RESOURCE_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
17832 ID3D12Resource2 * This,
17833 D3D12_RESOURCE_DESC1 * RetVal);
17834
17835 END_INTERFACE
17836 } ID3D12Resource2Vtbl;
17837
17838 interface ID3D12Resource2
17839 {
17840 CONST_VTBL struct ID3D12Resource2Vtbl *lpVtbl;
17841 };
17842
17843
17844
17845#ifdef COBJMACROS
17846
17847
17848#define ID3D12Resource2_QueryInterface(This,riid,ppvObject) \
17849 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17850
17851#define ID3D12Resource2_AddRef(This) \
17852 ( (This)->lpVtbl -> AddRef(This) )
17853
17854#define ID3D12Resource2_Release(This) \
17855 ( (This)->lpVtbl -> Release(This) )
17856
17857
17858#define ID3D12Resource2_GetPrivateData(This,guid,pDataSize,pData) \
17859 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
17860
17861#define ID3D12Resource2_SetPrivateData(This,guid,DataSize,pData) \
17862 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
17863
17864#define ID3D12Resource2_SetPrivateDataInterface(This,guid,pData) \
17865 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
17866
17867#define ID3D12Resource2_SetName(This,Name) \
17868 ( (This)->lpVtbl -> SetName(This,Name) )
17869
17870
17871#define ID3D12Resource2_GetDevice(This,riid,ppvDevice) \
17872 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
17873
17874
17875
17876#define ID3D12Resource2_Map(This,Subresource,pReadRange,ppData) \
17877 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
17878
17879#define ID3D12Resource2_Unmap(This,Subresource,pWrittenRange) \
17880 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
17881
17882#define ID3D12Resource2_GetDesc(This,RetVal) \
17883 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
17884
17885#define ID3D12Resource2_GetGPUVirtualAddress(This) \
17886 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
17887
17888#define ID3D12Resource2_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
17889 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
17890
17891#define ID3D12Resource2_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
17892 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
17893
17894#define ID3D12Resource2_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
17895 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
17896
17897
17898#define ID3D12Resource2_GetProtectedResourceSession(This,riid,ppProtectedSession) \
17899 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
17900
17901
17902#define ID3D12Resource2_GetDesc1(This,RetVal) \
17903 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
17904
17905#endif /* COBJMACROS */
17906
17907
17908#endif /* C style interface */
17909
17910
17911
17912
17913#endif /* __ID3D12Resource2_INTERFACE_DEFINED__ */
17914
17915
17916#ifndef __ID3D12Heap1_INTERFACE_DEFINED__
17917#define __ID3D12Heap1_INTERFACE_DEFINED__
17918
17919/* interface ID3D12Heap1 */
17920/* [unique][local][object][uuid] */
17921
17922
17923EXTERN_C const IID IID_ID3D12Heap1;
17924
17925#if defined(__cplusplus) && !defined(CINTERFACE)
17926
17927 MIDL_INTERFACE("572F7389-2168-49E3-9693-D6DF5871BF6D")
17928 ID3D12Heap1 : public ID3D12Heap
17929 {
17930 public:
17931 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
17932 REFIID riid,
17933 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
17934
17935 };
17936
17937
17938#else /* C style interface */
17939
17940 typedef struct ID3D12Heap1Vtbl
17941 {
17942 BEGIN_INTERFACE
17943
17944 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17945 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17946 ID3D12Heap1 * This,
17947 REFIID riid,
17948 _COM_Outptr_ void **ppvObject);
17949
17950 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17951 ULONG ( STDMETHODCALLTYPE *AddRef )(
17952 ID3D12Heap1 * This);
17953
17954 DECLSPEC_XFGVIRT(IUnknown, Release)
17955 ULONG ( STDMETHODCALLTYPE *Release )(
17956 ID3D12Heap1 * This);
17957
17958 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17959 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17960 ID3D12Heap1 * This,
17961 _In_ REFGUID guid,
17962 _Inout_ UINT *pDataSize,
17963 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17964
17965 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17966 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17967 ID3D12Heap1 * This,
17968 _In_ REFGUID guid,
17969 _In_ UINT DataSize,
17970 _In_reads_bytes_opt_( DataSize ) const void *pData);
17971
17972 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17973 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17974 ID3D12Heap1 * This,
17975 _In_ REFGUID guid,
17976 _In_opt_ const IUnknown *pData);
17977
17978 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17979 HRESULT ( STDMETHODCALLTYPE *SetName )(
17980 ID3D12Heap1 * This,
17981 _In_z_ LPCWSTR Name);
17982
17983 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
17984 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
17985 ID3D12Heap1 * This,
17986 REFIID riid,
17987 _COM_Outptr_opt_ void **ppvDevice);
17988
17989 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
17990 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
17991 ID3D12Heap1 * This,
17992 D3D12_HEAP_DESC * RetVal);
17993
17994 DECLSPEC_XFGVIRT(ID3D12Heap1, GetProtectedResourceSession)
17995 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
17996 ID3D12Heap1 * This,
17997 REFIID riid,
17998 _COM_Outptr_opt_ void **ppProtectedSession);
17999
18000 END_INTERFACE
18001 } ID3D12Heap1Vtbl;
18002
18003 interface ID3D12Heap1
18004 {
18005 CONST_VTBL struct ID3D12Heap1Vtbl *lpVtbl;
18006 };
18007
18008
18009
18010#ifdef COBJMACROS
18011
18012
18013#define ID3D12Heap1_QueryInterface(This,riid,ppvObject) \
18014 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18015
18016#define ID3D12Heap1_AddRef(This) \
18017 ( (This)->lpVtbl -> AddRef(This) )
18018
18019#define ID3D12Heap1_Release(This) \
18020 ( (This)->lpVtbl -> Release(This) )
18021
18022
18023#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData) \
18024 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18025
18026#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData) \
18027 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18028
18029#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData) \
18030 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18031
18032#define ID3D12Heap1_SetName(This,Name) \
18033 ( (This)->lpVtbl -> SetName(This,Name) )
18034
18035
18036#define ID3D12Heap1_GetDevice(This,riid,ppvDevice) \
18037 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18038
18039
18040
18041#define ID3D12Heap1_GetDesc(This,RetVal) \
18042 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
18043
18044
18045#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
18046 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
18047
18048#endif /* COBJMACROS */
18049
18050
18051#endif /* C style interface */
18052
18053
18054
18055
18056#endif /* __ID3D12Heap1_INTERFACE_DEFINED__ */
18057
18058
18059#ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
18060#define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
18061
18062/* interface ID3D12GraphicsCommandList3 */
18063/* [unique][local][object][uuid] */
18064
18065
18066EXTERN_C const IID IID_ID3D12GraphicsCommandList3;
18067
18068#if defined(__cplusplus) && !defined(CINTERFACE)
18069
18070 MIDL_INTERFACE("6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")
18071 ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2
18072 {
18073 public:
18074 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
18075 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
18076
18077 };
18078
18079
18080#else /* C style interface */
18081
18082 typedef struct ID3D12GraphicsCommandList3Vtbl
18083 {
18084 BEGIN_INTERFACE
18085
18086 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18087 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18088 ID3D12GraphicsCommandList3 * This,
18089 REFIID riid,
18090 _COM_Outptr_ void **ppvObject);
18091
18092 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18093 ULONG ( STDMETHODCALLTYPE *AddRef )(
18094 ID3D12GraphicsCommandList3 * This);
18095
18096 DECLSPEC_XFGVIRT(IUnknown, Release)
18097 ULONG ( STDMETHODCALLTYPE *Release )(
18098 ID3D12GraphicsCommandList3 * This);
18099
18100 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18101 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18102 ID3D12GraphicsCommandList3 * This,
18103 _In_ REFGUID guid,
18104 _Inout_ UINT *pDataSize,
18105 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18106
18107 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18108 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18109 ID3D12GraphicsCommandList3 * This,
18110 _In_ REFGUID guid,
18111 _In_ UINT DataSize,
18112 _In_reads_bytes_opt_( DataSize ) const void *pData);
18113
18114 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18115 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18116 ID3D12GraphicsCommandList3 * This,
18117 _In_ REFGUID guid,
18118 _In_opt_ const IUnknown *pData);
18119
18120 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18121 HRESULT ( STDMETHODCALLTYPE *SetName )(
18122 ID3D12GraphicsCommandList3 * This,
18123 _In_z_ LPCWSTR Name);
18124
18125 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18126 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18127 ID3D12GraphicsCommandList3 * This,
18128 REFIID riid,
18129 _COM_Outptr_opt_ void **ppvDevice);
18130
18131 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
18132 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
18133 ID3D12GraphicsCommandList3 * This);
18134
18135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
18136 HRESULT ( STDMETHODCALLTYPE *Close )(
18137 ID3D12GraphicsCommandList3 * This);
18138
18139 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
18140 HRESULT ( STDMETHODCALLTYPE *Reset )(
18141 ID3D12GraphicsCommandList3 * This,
18142 _In_ ID3D12CommandAllocator *pAllocator,
18143 _In_opt_ ID3D12PipelineState *pInitialState);
18144
18145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
18146 void ( STDMETHODCALLTYPE *ClearState )(
18147 ID3D12GraphicsCommandList3 * This,
18148 _In_opt_ ID3D12PipelineState *pPipelineState);
18149
18150 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
18151 void ( STDMETHODCALLTYPE *DrawInstanced )(
18152 ID3D12GraphicsCommandList3 * This,
18153 _In_ UINT VertexCountPerInstance,
18154 _In_ UINT InstanceCount,
18155 _In_ UINT StartVertexLocation,
18156 _In_ UINT StartInstanceLocation);
18157
18158 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
18159 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
18160 ID3D12GraphicsCommandList3 * This,
18161 _In_ UINT IndexCountPerInstance,
18162 _In_ UINT InstanceCount,
18163 _In_ UINT StartIndexLocation,
18164 _In_ INT BaseVertexLocation,
18165 _In_ UINT StartInstanceLocation);
18166
18167 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
18168 void ( STDMETHODCALLTYPE *Dispatch )(
18169 ID3D12GraphicsCommandList3 * This,
18170 _In_ UINT ThreadGroupCountX,
18171 _In_ UINT ThreadGroupCountY,
18172 _In_ UINT ThreadGroupCountZ);
18173
18174 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
18175 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
18176 ID3D12GraphicsCommandList3 * This,
18177 _In_ ID3D12Resource *pDstBuffer,
18178 UINT64 DstOffset,
18179 _In_ ID3D12Resource *pSrcBuffer,
18180 UINT64 SrcOffset,
18181 UINT64 NumBytes);
18182
18183 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
18184 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
18185 ID3D12GraphicsCommandList3 * This,
18186 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
18187 UINT DstX,
18188 UINT DstY,
18189 UINT DstZ,
18190 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
18191 _In_opt_ const D3D12_BOX *pSrcBox);
18192
18193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
18194 void ( STDMETHODCALLTYPE *CopyResource )(
18195 ID3D12GraphicsCommandList3 * This,
18196 _In_ ID3D12Resource *pDstResource,
18197 _In_ ID3D12Resource *pSrcResource);
18198
18199 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
18200 void ( STDMETHODCALLTYPE *CopyTiles )(
18201 ID3D12GraphicsCommandList3 * This,
18202 _In_ ID3D12Resource *pTiledResource,
18203 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
18204 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
18205 _In_ ID3D12Resource *pBuffer,
18206 UINT64 BufferStartOffsetInBytes,
18207 D3D12_TILE_COPY_FLAGS Flags);
18208
18209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
18210 void ( STDMETHODCALLTYPE *ResolveSubresource )(
18211 ID3D12GraphicsCommandList3 * This,
18212 _In_ ID3D12Resource *pDstResource,
18213 _In_ UINT DstSubresource,
18214 _In_ ID3D12Resource *pSrcResource,
18215 _In_ UINT SrcSubresource,
18216 _In_ DXGI_FORMAT Format);
18217
18218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
18219 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
18220 ID3D12GraphicsCommandList3 * This,
18221 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
18222
18223 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
18224 void ( STDMETHODCALLTYPE *RSSetViewports )(
18225 ID3D12GraphicsCommandList3 * This,
18226 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
18227 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
18228
18229 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
18230 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
18231 ID3D12GraphicsCommandList3 * This,
18232 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
18233 _In_reads_( NumRects) const D3D12_RECT *pRects);
18234
18235 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
18236 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
18237 ID3D12GraphicsCommandList3 * This,
18238 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
18239
18240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
18241 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
18242 ID3D12GraphicsCommandList3 * This,
18243 _In_ UINT StencilRef);
18244
18245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
18246 void ( STDMETHODCALLTYPE *SetPipelineState )(
18247 ID3D12GraphicsCommandList3 * This,
18248 _In_ ID3D12PipelineState *pPipelineState);
18249
18250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
18251 void ( STDMETHODCALLTYPE *ResourceBarrier )(
18252 ID3D12GraphicsCommandList3 * This,
18253 _In_ UINT NumBarriers,
18254 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
18255
18256 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
18257 void ( STDMETHODCALLTYPE *ExecuteBundle )(
18258 ID3D12GraphicsCommandList3 * This,
18259 _In_ ID3D12GraphicsCommandList *pCommandList);
18260
18261 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
18262 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
18263 ID3D12GraphicsCommandList3 * This,
18264 _In_ UINT NumDescriptorHeaps,
18265 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
18266
18267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
18268 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
18269 ID3D12GraphicsCommandList3 * This,
18270 _In_opt_ ID3D12RootSignature *pRootSignature);
18271
18272 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
18273 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
18274 ID3D12GraphicsCommandList3 * This,
18275 _In_opt_ ID3D12RootSignature *pRootSignature);
18276
18277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
18278 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
18279 ID3D12GraphicsCommandList3 * This,
18280 _In_ UINT RootParameterIndex,
18281 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
18282
18283 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
18284 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
18285 ID3D12GraphicsCommandList3 * This,
18286 _In_ UINT RootParameterIndex,
18287 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
18288
18289 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
18290 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
18291 ID3D12GraphicsCommandList3 * This,
18292 _In_ UINT RootParameterIndex,
18293 _In_ UINT SrcData,
18294 _In_ UINT DestOffsetIn32BitValues);
18295
18296 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
18297 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
18298 ID3D12GraphicsCommandList3 * This,
18299 _In_ UINT RootParameterIndex,
18300 _In_ UINT SrcData,
18301 _In_ UINT DestOffsetIn32BitValues);
18302
18303 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
18304 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
18305 ID3D12GraphicsCommandList3 * This,
18306 _In_ UINT RootParameterIndex,
18307 _In_ UINT Num32BitValuesToSet,
18308 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
18309 _In_ UINT DestOffsetIn32BitValues);
18310
18311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
18312 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
18313 ID3D12GraphicsCommandList3 * This,
18314 _In_ UINT RootParameterIndex,
18315 _In_ UINT Num32BitValuesToSet,
18316 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
18317 _In_ UINT DestOffsetIn32BitValues);
18318
18319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
18320 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
18321 ID3D12GraphicsCommandList3 * This,
18322 _In_ UINT RootParameterIndex,
18323 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18324
18325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
18326 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
18327 ID3D12GraphicsCommandList3 * This,
18328 _In_ UINT RootParameterIndex,
18329 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18330
18331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
18332 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
18333 ID3D12GraphicsCommandList3 * This,
18334 _In_ UINT RootParameterIndex,
18335 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18336
18337 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
18338 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
18339 ID3D12GraphicsCommandList3 * This,
18340 _In_ UINT RootParameterIndex,
18341 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18342
18343 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
18344 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
18345 ID3D12GraphicsCommandList3 * This,
18346 _In_ UINT RootParameterIndex,
18347 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18348
18349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
18350 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
18351 ID3D12GraphicsCommandList3 * This,
18352 _In_ UINT RootParameterIndex,
18353 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18354
18355 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
18356 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
18357 ID3D12GraphicsCommandList3 * This,
18358 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
18359
18360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
18361 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
18362 ID3D12GraphicsCommandList3 * This,
18363 _In_ UINT StartSlot,
18364 _In_ UINT NumViews,
18365 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
18366
18367 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
18368 void ( STDMETHODCALLTYPE *SOSetTargets )(
18369 ID3D12GraphicsCommandList3 * This,
18370 _In_ UINT StartSlot,
18371 _In_ UINT NumViews,
18372 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
18373
18374 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
18375 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
18376 ID3D12GraphicsCommandList3 * This,
18377 _In_ UINT NumRenderTargetDescriptors,
18378 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
18379 _In_ BOOL RTsSingleHandleToDescriptorRange,
18380 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
18381
18382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
18383 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
18384 ID3D12GraphicsCommandList3 * This,
18385 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
18386 _In_ D3D12_CLEAR_FLAGS ClearFlags,
18387 _In_ FLOAT Depth,
18388 _In_ UINT8 Stencil,
18389 _In_ UINT NumRects,
18390 _In_reads_(NumRects) const D3D12_RECT *pRects);
18391
18392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
18393 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
18394 ID3D12GraphicsCommandList3 * This,
18395 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
18396 _In_ const FLOAT ColorRGBA[ 4 ],
18397 _In_ UINT NumRects,
18398 _In_reads_(NumRects) const D3D12_RECT *pRects);
18399
18400 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
18401 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
18402 ID3D12GraphicsCommandList3 * This,
18403 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
18404 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
18405 _In_ ID3D12Resource *pResource,
18406 _In_ const UINT Values[ 4 ],
18407 _In_ UINT NumRects,
18408 _In_reads_(NumRects) const D3D12_RECT *pRects);
18409
18410 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
18411 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
18412 ID3D12GraphicsCommandList3 * This,
18413 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
18414 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
18415 _In_ ID3D12Resource *pResource,
18416 _In_ const FLOAT Values[ 4 ],
18417 _In_ UINT NumRects,
18418 _In_reads_(NumRects) const D3D12_RECT *pRects);
18419
18420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
18421 void ( STDMETHODCALLTYPE *DiscardResource )(
18422 ID3D12GraphicsCommandList3 * This,
18423 _In_ ID3D12Resource *pResource,
18424 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
18425
18426 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
18427 void ( STDMETHODCALLTYPE *BeginQuery )(
18428 ID3D12GraphicsCommandList3 * This,
18429 _In_ ID3D12QueryHeap *pQueryHeap,
18430 _In_ D3D12_QUERY_TYPE Type,
18431 _In_ UINT Index);
18432
18433 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
18434 void ( STDMETHODCALLTYPE *EndQuery )(
18435 ID3D12GraphicsCommandList3 * This,
18436 _In_ ID3D12QueryHeap *pQueryHeap,
18437 _In_ D3D12_QUERY_TYPE Type,
18438 _In_ UINT Index);
18439
18440 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
18441 void ( STDMETHODCALLTYPE *ResolveQueryData )(
18442 ID3D12GraphicsCommandList3 * This,
18443 _In_ ID3D12QueryHeap *pQueryHeap,
18444 _In_ D3D12_QUERY_TYPE Type,
18445 _In_ UINT StartIndex,
18446 _In_ UINT NumQueries,
18447 _In_ ID3D12Resource *pDestinationBuffer,
18448 _In_ UINT64 AlignedDestinationBufferOffset);
18449
18450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
18451 void ( STDMETHODCALLTYPE *SetPredication )(
18452 ID3D12GraphicsCommandList3 * This,
18453 _In_opt_ ID3D12Resource *pBuffer,
18454 _In_ UINT64 AlignedBufferOffset,
18455 _In_ D3D12_PREDICATION_OP Operation);
18456
18457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
18458 void ( STDMETHODCALLTYPE *SetMarker )(
18459 ID3D12GraphicsCommandList3 * This,
18460 UINT Metadata,
18461 _In_reads_bytes_opt_(Size) const void *pData,
18462 UINT Size);
18463
18464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
18465 void ( STDMETHODCALLTYPE *BeginEvent )(
18466 ID3D12GraphicsCommandList3 * This,
18467 UINT Metadata,
18468 _In_reads_bytes_opt_(Size) const void *pData,
18469 UINT Size);
18470
18471 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
18472 void ( STDMETHODCALLTYPE *EndEvent )(
18473 ID3D12GraphicsCommandList3 * This);
18474
18475 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
18476 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
18477 ID3D12GraphicsCommandList3 * This,
18478 _In_ ID3D12CommandSignature *pCommandSignature,
18479 _In_ UINT MaxCommandCount,
18480 _In_ ID3D12Resource *pArgumentBuffer,
18481 _In_ UINT64 ArgumentBufferOffset,
18482 _In_opt_ ID3D12Resource *pCountBuffer,
18483 _In_ UINT64 CountBufferOffset);
18484
18485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
18486 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
18487 ID3D12GraphicsCommandList3 * This,
18488 _In_ ID3D12Resource *pDstBuffer,
18489 UINT64 DstOffset,
18490 _In_ ID3D12Resource *pSrcBuffer,
18491 UINT64 SrcOffset,
18492 UINT Dependencies,
18493 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
18494 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
18495
18496 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
18497 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
18498 ID3D12GraphicsCommandList3 * This,
18499 _In_ ID3D12Resource *pDstBuffer,
18500 UINT64 DstOffset,
18501 _In_ ID3D12Resource *pSrcBuffer,
18502 UINT64 SrcOffset,
18503 UINT Dependencies,
18504 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
18505 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
18506
18507 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
18508 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
18509 ID3D12GraphicsCommandList3 * This,
18510 _In_ FLOAT Min,
18511 _In_ FLOAT Max);
18512
18513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
18514 void ( STDMETHODCALLTYPE *SetSamplePositions )(
18515 ID3D12GraphicsCommandList3 * This,
18516 _In_ UINT NumSamplesPerPixel,
18517 _In_ UINT NumPixels,
18518 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
18519
18520 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
18521 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
18522 ID3D12GraphicsCommandList3 * This,
18523 _In_ ID3D12Resource *pDstResource,
18524 _In_ UINT DstSubresource,
18525 _In_ UINT DstX,
18526 _In_ UINT DstY,
18527 _In_ ID3D12Resource *pSrcResource,
18528 _In_ UINT SrcSubresource,
18529 _In_opt_ D3D12_RECT *pSrcRect,
18530 _In_ DXGI_FORMAT Format,
18531 _In_ D3D12_RESOLVE_MODE ResolveMode);
18532
18533 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
18534 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
18535 ID3D12GraphicsCommandList3 * This,
18536 _In_ UINT Mask);
18537
18538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
18539 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
18540 ID3D12GraphicsCommandList3 * This,
18541 UINT Count,
18542 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
18543 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
18544
18545 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
18546 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
18547 ID3D12GraphicsCommandList3 * This,
18548 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
18549
18550 END_INTERFACE
18551 } ID3D12GraphicsCommandList3Vtbl;
18552
18553 interface ID3D12GraphicsCommandList3
18554 {
18555 CONST_VTBL struct ID3D12GraphicsCommandList3Vtbl *lpVtbl;
18556 };
18557
18558
18559
18560#ifdef COBJMACROS
18561
18562
18563#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) \
18564 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18565
18566#define ID3D12GraphicsCommandList3_AddRef(This) \
18567 ( (This)->lpVtbl -> AddRef(This) )
18568
18569#define ID3D12GraphicsCommandList3_Release(This) \
18570 ( (This)->lpVtbl -> Release(This) )
18571
18572
18573#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
18574 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18575
18576#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData) \
18577 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18578
18579#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData) \
18580 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18581
18582#define ID3D12GraphicsCommandList3_SetName(This,Name) \
18583 ( (This)->lpVtbl -> SetName(This,Name) )
18584
18585
18586#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice) \
18587 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18588
18589
18590#define ID3D12GraphicsCommandList3_GetType(This) \
18591 ( (This)->lpVtbl -> GetType(This) )
18592
18593
18594#define ID3D12GraphicsCommandList3_Close(This) \
18595 ( (This)->lpVtbl -> Close(This) )
18596
18597#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState) \
18598 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
18599
18600#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState) \
18601 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
18602
18603#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
18604 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
18605
18606#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
18607 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
18608
18609#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
18610 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
18611
18612#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
18613 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
18614
18615#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
18616 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
18617
18618#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource) \
18619 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
18620
18621#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
18622 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
18623
18624#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
18625 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
18626
18627#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology) \
18628 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
18629
18630#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports) \
18631 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
18632
18633#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects) \
18634 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
18635
18636#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor) \
18637 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
18638
18639#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef) \
18640 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
18641
18642#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState) \
18643 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
18644
18645#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
18646 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
18647
18648#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList) \
18649 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
18650
18651#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
18652 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
18653
18654#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature) \
18655 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
18656
18657#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature) \
18658 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
18659
18660#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
18661 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
18662
18663#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
18664 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
18665
18666#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
18667 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
18668
18669#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
18670 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
18671
18672#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
18673 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
18674
18675#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
18676 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
18677
18678#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
18679 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
18680
18681#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
18682 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
18683
18684#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
18685 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
18686
18687#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
18688 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
18689
18690#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
18691 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
18692
18693#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
18694 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
18695
18696#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView) \
18697 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
18698
18699#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
18700 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
18701
18702#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews) \
18703 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
18704
18705#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
18706 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
18707
18708#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
18709 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
18710
18711#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
18712 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
18713
18714#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
18715 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
18716
18717#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
18718 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
18719
18720#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion) \
18721 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
18722
18723#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
18724 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
18725
18726#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
18727 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
18728
18729#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
18730 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
18731
18732#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
18733 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
18734
18735#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size) \
18736 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
18737
18738#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size) \
18739 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
18740
18741#define ID3D12GraphicsCommandList3_EndEvent(This) \
18742 ( (This)->lpVtbl -> EndEvent(This) )
18743
18744#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
18745 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
18746
18747
18748#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
18749 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
18750
18751#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
18752 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
18753
18754#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max) \
18755 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
18756
18757#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
18758 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
18759
18760#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
18761 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
18762
18763#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask) \
18764 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
18765
18766
18767#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
18768 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
18769
18770
18771#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
18772 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
18773
18774#endif /* COBJMACROS */
18775
18776
18777#endif /* C style interface */
18778
18779
18780
18781
18782#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
18783
18784
18785/* interface __MIDL_itf_d3d12_0000_0048 */
18786/* [local] */
18787
18788typedef
18789enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
18790 {
18791 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0,
18792 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) ,
18793 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) ,
18794 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 )
18795 } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
18796
18797typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
18798 {
18799 D3D12_CLEAR_VALUE ClearValue;
18800 } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
18801
18802typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
18803 {
18804 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
18805 union
18806 {
18807 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
18808 } ;
18809 } D3D12_RENDER_PASS_BEGINNING_ACCESS;
18810
18811typedef
18812enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
18813 {
18814 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0,
18815 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) ,
18816 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) ,
18817 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 )
18818 } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
18819
18820typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
18821 {
18822 UINT SrcSubresource;
18823 UINT DstSubresource;
18824 UINT DstX;
18825 UINT DstY;
18826 D3D12_RECT SrcRect;
18827 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
18828
18829typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
18830 {
18831 ID3D12Resource *pSrcResource;
18832 ID3D12Resource *pDstResource;
18833 UINT SubresourceCount;
18834 _Field_size_full_(SubresourceCount) const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
18835 DXGI_FORMAT Format;
18836 D3D12_RESOLVE_MODE ResolveMode;
18837 BOOL PreserveResolveSource;
18838 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
18839
18840typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
18841 {
18842 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
18843 union
18844 {
18845 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
18846 } ;
18847 } D3D12_RENDER_PASS_ENDING_ACCESS;
18848
18849typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
18850 {
18851 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
18852 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
18853 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
18854 } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
18855
18856typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
18857 {
18858 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
18859 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
18860 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
18861 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
18862 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
18863 } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
18864
18865typedef
18866enum D3D12_RENDER_PASS_FLAGS
18867 {
18868 D3D12_RENDER_PASS_FLAG_NONE = 0,
18869 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
18870 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
18871 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4
18872 } D3D12_RENDER_PASS_FLAGS;
18873
18874DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS );
18875
18876
18877extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0048_v0_0_c_ifspec;
18878extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0048_v0_0_s_ifspec;
18879
18880#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
18881#define __ID3D12MetaCommand_INTERFACE_DEFINED__
18882
18883/* interface ID3D12MetaCommand */
18884/* [unique][local][object][uuid] */
18885
18886
18887EXTERN_C const IID IID_ID3D12MetaCommand;
18888
18889#if defined(__cplusplus) && !defined(CINTERFACE)
18890
18891 MIDL_INTERFACE("DBB84C27-36CE-4FC9-B801-F048C46AC570")
18892 ID3D12MetaCommand : public ID3D12Pageable
18893 {
18894 public:
18895 virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize(
18896 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18897 _In_ UINT ParameterIndex) = 0;
18898
18899 };
18900
18901
18902#else /* C style interface */
18903
18904 typedef struct ID3D12MetaCommandVtbl
18905 {
18906 BEGIN_INTERFACE
18907
18908 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18909 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18910 ID3D12MetaCommand * This,
18911 REFIID riid,
18912 _COM_Outptr_ void **ppvObject);
18913
18914 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18915 ULONG ( STDMETHODCALLTYPE *AddRef )(
18916 ID3D12MetaCommand * This);
18917
18918 DECLSPEC_XFGVIRT(IUnknown, Release)
18919 ULONG ( STDMETHODCALLTYPE *Release )(
18920 ID3D12MetaCommand * This);
18921
18922 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18923 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18924 ID3D12MetaCommand * This,
18925 _In_ REFGUID guid,
18926 _Inout_ UINT *pDataSize,
18927 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18928
18929 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18930 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18931 ID3D12MetaCommand * This,
18932 _In_ REFGUID guid,
18933 _In_ UINT DataSize,
18934 _In_reads_bytes_opt_( DataSize ) const void *pData);
18935
18936 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18937 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18938 ID3D12MetaCommand * This,
18939 _In_ REFGUID guid,
18940 _In_opt_ const IUnknown *pData);
18941
18942 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18943 HRESULT ( STDMETHODCALLTYPE *SetName )(
18944 ID3D12MetaCommand * This,
18945 _In_z_ LPCWSTR Name);
18946
18947 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18948 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18949 ID3D12MetaCommand * This,
18950 REFIID riid,
18951 _COM_Outptr_opt_ void **ppvDevice);
18952
18953 DECLSPEC_XFGVIRT(ID3D12MetaCommand, GetRequiredParameterResourceSize)
18954 UINT64 ( STDMETHODCALLTYPE *GetRequiredParameterResourceSize )(
18955 ID3D12MetaCommand * This,
18956 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18957 _In_ UINT ParameterIndex);
18958
18959 END_INTERFACE
18960 } ID3D12MetaCommandVtbl;
18961
18962 interface ID3D12MetaCommand
18963 {
18964 CONST_VTBL struct ID3D12MetaCommandVtbl *lpVtbl;
18965 };
18966
18967
18968
18969#ifdef COBJMACROS
18970
18971
18972#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) \
18973 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18974
18975#define ID3D12MetaCommand_AddRef(This) \
18976 ( (This)->lpVtbl -> AddRef(This) )
18977
18978#define ID3D12MetaCommand_Release(This) \
18979 ( (This)->lpVtbl -> Release(This) )
18980
18981
18982#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData) \
18983 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18984
18985#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData) \
18986 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18987
18988#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData) \
18989 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18990
18991#define ID3D12MetaCommand_SetName(This,Name) \
18992 ( (This)->lpVtbl -> SetName(This,Name) )
18993
18994
18995#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice) \
18996 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18997
18998
18999
19000#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex) \
19001 ( (This)->lpVtbl -> GetRequiredParameterResourceSize(This,Stage,ParameterIndex) )
19002
19003#endif /* COBJMACROS */
19004
19005
19006#endif /* C style interface */
19007
19008
19009
19010
19011#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
19012
19013
19014/* interface __MIDL_itf_d3d12_0000_0049 */
19015/* [local] */
19016
19017typedef struct D3D12_DISPATCH_RAYS_DESC
19018 {
19019 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
19020 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
19021 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
19022 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
19023 UINT Width;
19024 UINT Height;
19025 UINT Depth;
19026 } D3D12_DISPATCH_RAYS_DESC;
19027
19028
19029
19030extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0049_v0_0_c_ifspec;
19031extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0049_v0_0_s_ifspec;
19032
19033#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
19034#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
19035
19036/* interface ID3D12GraphicsCommandList4 */
19037/* [unique][local][object][uuid] */
19038
19039
19040EXTERN_C const IID IID_ID3D12GraphicsCommandList4;
19041
19042#if defined(__cplusplus) && !defined(CINTERFACE)
19043
19044 MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
19045 ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3
19046 {
19047 public:
19048 virtual void STDMETHODCALLTYPE BeginRenderPass(
19049 _In_ UINT NumRenderTargets,
19050 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
19051 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
19052 D3D12_RENDER_PASS_FLAGS Flags) = 0;
19053
19054 virtual void STDMETHODCALLTYPE EndRenderPass( void) = 0;
19055
19056 virtual void STDMETHODCALLTYPE InitializeMetaCommand(
19057 _In_ ID3D12MetaCommand *pMetaCommand,
19058 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
19059 _In_ SIZE_T InitializationParametersDataSizeInBytes) = 0;
19060
19061 virtual void STDMETHODCALLTYPE ExecuteMetaCommand(
19062 _In_ ID3D12MetaCommand *pMetaCommand,
19063 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
19064 _In_ SIZE_T ExecutionParametersDataSizeInBytes) = 0;
19065
19066 virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure(
19067 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
19068 _In_ UINT NumPostbuildInfoDescs,
19069 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs) = 0;
19070
19071 virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo(
19072 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
19073 _In_ UINT NumSourceAccelerationStructures,
19074 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData) = 0;
19075
19076 virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure(
19077 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
19078 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
19079 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode) = 0;
19080
19081 virtual void STDMETHODCALLTYPE SetPipelineState1(
19082 _In_ ID3D12StateObject *pStateObject) = 0;
19083
19084 virtual void STDMETHODCALLTYPE DispatchRays(
19085 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc) = 0;
19086
19087 };
19088
19089
19090#else /* C style interface */
19091
19092 typedef struct ID3D12GraphicsCommandList4Vtbl
19093 {
19094 BEGIN_INTERFACE
19095
19096 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19097 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19098 ID3D12GraphicsCommandList4 * This,
19099 REFIID riid,
19100 _COM_Outptr_ void **ppvObject);
19101
19102 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19103 ULONG ( STDMETHODCALLTYPE *AddRef )(
19104 ID3D12GraphicsCommandList4 * This);
19105
19106 DECLSPEC_XFGVIRT(IUnknown, Release)
19107 ULONG ( STDMETHODCALLTYPE *Release )(
19108 ID3D12GraphicsCommandList4 * This);
19109
19110 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19111 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19112 ID3D12GraphicsCommandList4 * This,
19113 _In_ REFGUID guid,
19114 _Inout_ UINT *pDataSize,
19115 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19116
19117 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19118 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19119 ID3D12GraphicsCommandList4 * This,
19120 _In_ REFGUID guid,
19121 _In_ UINT DataSize,
19122 _In_reads_bytes_opt_( DataSize ) const void *pData);
19123
19124 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19125 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19126 ID3D12GraphicsCommandList4 * This,
19127 _In_ REFGUID guid,
19128 _In_opt_ const IUnknown *pData);
19129
19130 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19131 HRESULT ( STDMETHODCALLTYPE *SetName )(
19132 ID3D12GraphicsCommandList4 * This,
19133 _In_z_ LPCWSTR Name);
19134
19135 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
19136 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
19137 ID3D12GraphicsCommandList4 * This,
19138 REFIID riid,
19139 _COM_Outptr_opt_ void **ppvDevice);
19140
19141 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
19142 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
19143 ID3D12GraphicsCommandList4 * This);
19144
19145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
19146 HRESULT ( STDMETHODCALLTYPE *Close )(
19147 ID3D12GraphicsCommandList4 * This);
19148
19149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
19150 HRESULT ( STDMETHODCALLTYPE *Reset )(
19151 ID3D12GraphicsCommandList4 * This,
19152 _In_ ID3D12CommandAllocator *pAllocator,
19153 _In_opt_ ID3D12PipelineState *pInitialState);
19154
19155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
19156 void ( STDMETHODCALLTYPE *ClearState )(
19157 ID3D12GraphicsCommandList4 * This,
19158 _In_opt_ ID3D12PipelineState *pPipelineState);
19159
19160 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
19161 void ( STDMETHODCALLTYPE *DrawInstanced )(
19162 ID3D12GraphicsCommandList4 * This,
19163 _In_ UINT VertexCountPerInstance,
19164 _In_ UINT InstanceCount,
19165 _In_ UINT StartVertexLocation,
19166 _In_ UINT StartInstanceLocation);
19167
19168 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
19169 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
19170 ID3D12GraphicsCommandList4 * This,
19171 _In_ UINT IndexCountPerInstance,
19172 _In_ UINT InstanceCount,
19173 _In_ UINT StartIndexLocation,
19174 _In_ INT BaseVertexLocation,
19175 _In_ UINT StartInstanceLocation);
19176
19177 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
19178 void ( STDMETHODCALLTYPE *Dispatch )(
19179 ID3D12GraphicsCommandList4 * This,
19180 _In_ UINT ThreadGroupCountX,
19181 _In_ UINT ThreadGroupCountY,
19182 _In_ UINT ThreadGroupCountZ);
19183
19184 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
19185 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
19186 ID3D12GraphicsCommandList4 * This,
19187 _In_ ID3D12Resource *pDstBuffer,
19188 UINT64 DstOffset,
19189 _In_ ID3D12Resource *pSrcBuffer,
19190 UINT64 SrcOffset,
19191 UINT64 NumBytes);
19192
19193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
19194 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
19195 ID3D12GraphicsCommandList4 * This,
19196 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
19197 UINT DstX,
19198 UINT DstY,
19199 UINT DstZ,
19200 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
19201 _In_opt_ const D3D12_BOX *pSrcBox);
19202
19203 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
19204 void ( STDMETHODCALLTYPE *CopyResource )(
19205 ID3D12GraphicsCommandList4 * This,
19206 _In_ ID3D12Resource *pDstResource,
19207 _In_ ID3D12Resource *pSrcResource);
19208
19209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
19210 void ( STDMETHODCALLTYPE *CopyTiles )(
19211 ID3D12GraphicsCommandList4 * This,
19212 _In_ ID3D12Resource *pTiledResource,
19213 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
19214 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
19215 _In_ ID3D12Resource *pBuffer,
19216 UINT64 BufferStartOffsetInBytes,
19217 D3D12_TILE_COPY_FLAGS Flags);
19218
19219 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
19220 void ( STDMETHODCALLTYPE *ResolveSubresource )(
19221 ID3D12GraphicsCommandList4 * This,
19222 _In_ ID3D12Resource *pDstResource,
19223 _In_ UINT DstSubresource,
19224 _In_ ID3D12Resource *pSrcResource,
19225 _In_ UINT SrcSubresource,
19226 _In_ DXGI_FORMAT Format);
19227
19228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
19229 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
19230 ID3D12GraphicsCommandList4 * This,
19231 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
19232
19233 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
19234 void ( STDMETHODCALLTYPE *RSSetViewports )(
19235 ID3D12GraphicsCommandList4 * This,
19236 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
19237 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
19238
19239 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
19240 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
19241 ID3D12GraphicsCommandList4 * This,
19242 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
19243 _In_reads_( NumRects) const D3D12_RECT *pRects);
19244
19245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
19246 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
19247 ID3D12GraphicsCommandList4 * This,
19248 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
19249
19250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
19251 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
19252 ID3D12GraphicsCommandList4 * This,
19253 _In_ UINT StencilRef);
19254
19255 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
19256 void ( STDMETHODCALLTYPE *SetPipelineState )(
19257 ID3D12GraphicsCommandList4 * This,
19258 _In_ ID3D12PipelineState *pPipelineState);
19259
19260 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
19261 void ( STDMETHODCALLTYPE *ResourceBarrier )(
19262 ID3D12GraphicsCommandList4 * This,
19263 _In_ UINT NumBarriers,
19264 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
19265
19266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
19267 void ( STDMETHODCALLTYPE *ExecuteBundle )(
19268 ID3D12GraphicsCommandList4 * This,
19269 _In_ ID3D12GraphicsCommandList *pCommandList);
19270
19271 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
19272 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
19273 ID3D12GraphicsCommandList4 * This,
19274 _In_ UINT NumDescriptorHeaps,
19275 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
19276
19277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
19278 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
19279 ID3D12GraphicsCommandList4 * This,
19280 _In_opt_ ID3D12RootSignature *pRootSignature);
19281
19282 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
19283 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
19284 ID3D12GraphicsCommandList4 * This,
19285 _In_opt_ ID3D12RootSignature *pRootSignature);
19286
19287 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
19288 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
19289 ID3D12GraphicsCommandList4 * This,
19290 _In_ UINT RootParameterIndex,
19291 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
19292
19293 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
19294 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
19295 ID3D12GraphicsCommandList4 * This,
19296 _In_ UINT RootParameterIndex,
19297 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
19298
19299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
19300 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
19301 ID3D12GraphicsCommandList4 * This,
19302 _In_ UINT RootParameterIndex,
19303 _In_ UINT SrcData,
19304 _In_ UINT DestOffsetIn32BitValues);
19305
19306 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
19307 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
19308 ID3D12GraphicsCommandList4 * This,
19309 _In_ UINT RootParameterIndex,
19310 _In_ UINT SrcData,
19311 _In_ UINT DestOffsetIn32BitValues);
19312
19313 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
19314 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
19315 ID3D12GraphicsCommandList4 * This,
19316 _In_ UINT RootParameterIndex,
19317 _In_ UINT Num32BitValuesToSet,
19318 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
19319 _In_ UINT DestOffsetIn32BitValues);
19320
19321 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
19322 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
19323 ID3D12GraphicsCommandList4 * This,
19324 _In_ UINT RootParameterIndex,
19325 _In_ UINT Num32BitValuesToSet,
19326 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
19327 _In_ UINT DestOffsetIn32BitValues);
19328
19329 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
19330 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
19331 ID3D12GraphicsCommandList4 * This,
19332 _In_ UINT RootParameterIndex,
19333 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19334
19335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
19336 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
19337 ID3D12GraphicsCommandList4 * This,
19338 _In_ UINT RootParameterIndex,
19339 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19340
19341 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
19342 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
19343 ID3D12GraphicsCommandList4 * This,
19344 _In_ UINT RootParameterIndex,
19345 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19346
19347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
19348 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
19349 ID3D12GraphicsCommandList4 * This,
19350 _In_ UINT RootParameterIndex,
19351 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19352
19353 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
19354 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
19355 ID3D12GraphicsCommandList4 * This,
19356 _In_ UINT RootParameterIndex,
19357 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19358
19359 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
19360 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
19361 ID3D12GraphicsCommandList4 * This,
19362 _In_ UINT RootParameterIndex,
19363 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19364
19365 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
19366 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
19367 ID3D12GraphicsCommandList4 * This,
19368 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
19369
19370 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
19371 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
19372 ID3D12GraphicsCommandList4 * This,
19373 _In_ UINT StartSlot,
19374 _In_ UINT NumViews,
19375 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
19376
19377 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
19378 void ( STDMETHODCALLTYPE *SOSetTargets )(
19379 ID3D12GraphicsCommandList4 * This,
19380 _In_ UINT StartSlot,
19381 _In_ UINT NumViews,
19382 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
19383
19384 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
19385 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
19386 ID3D12GraphicsCommandList4 * This,
19387 _In_ UINT NumRenderTargetDescriptors,
19388 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
19389 _In_ BOOL RTsSingleHandleToDescriptorRange,
19390 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
19391
19392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
19393 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
19394 ID3D12GraphicsCommandList4 * This,
19395 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
19396 _In_ D3D12_CLEAR_FLAGS ClearFlags,
19397 _In_ FLOAT Depth,
19398 _In_ UINT8 Stencil,
19399 _In_ UINT NumRects,
19400 _In_reads_(NumRects) const D3D12_RECT *pRects);
19401
19402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
19403 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
19404 ID3D12GraphicsCommandList4 * This,
19405 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
19406 _In_ const FLOAT ColorRGBA[ 4 ],
19407 _In_ UINT NumRects,
19408 _In_reads_(NumRects) const D3D12_RECT *pRects);
19409
19410 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
19411 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
19412 ID3D12GraphicsCommandList4 * This,
19413 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
19414 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
19415 _In_ ID3D12Resource *pResource,
19416 _In_ const UINT Values[ 4 ],
19417 _In_ UINT NumRects,
19418 _In_reads_(NumRects) const D3D12_RECT *pRects);
19419
19420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
19421 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
19422 ID3D12GraphicsCommandList4 * This,
19423 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
19424 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
19425 _In_ ID3D12Resource *pResource,
19426 _In_ const FLOAT Values[ 4 ],
19427 _In_ UINT NumRects,
19428 _In_reads_(NumRects) const D3D12_RECT *pRects);
19429
19430 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
19431 void ( STDMETHODCALLTYPE *DiscardResource )(
19432 ID3D12GraphicsCommandList4 * This,
19433 _In_ ID3D12Resource *pResource,
19434 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
19435
19436 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
19437 void ( STDMETHODCALLTYPE *BeginQuery )(
19438 ID3D12GraphicsCommandList4 * This,
19439 _In_ ID3D12QueryHeap *pQueryHeap,
19440 _In_ D3D12_QUERY_TYPE Type,
19441 _In_ UINT Index);
19442
19443 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
19444 void ( STDMETHODCALLTYPE *EndQuery )(
19445 ID3D12GraphicsCommandList4 * This,
19446 _In_ ID3D12QueryHeap *pQueryHeap,
19447 _In_ D3D12_QUERY_TYPE Type,
19448 _In_ UINT Index);
19449
19450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
19451 void ( STDMETHODCALLTYPE *ResolveQueryData )(
19452 ID3D12GraphicsCommandList4 * This,
19453 _In_ ID3D12QueryHeap *pQueryHeap,
19454 _In_ D3D12_QUERY_TYPE Type,
19455 _In_ UINT StartIndex,
19456 _In_ UINT NumQueries,
19457 _In_ ID3D12Resource *pDestinationBuffer,
19458 _In_ UINT64 AlignedDestinationBufferOffset);
19459
19460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
19461 void ( STDMETHODCALLTYPE *SetPredication )(
19462 ID3D12GraphicsCommandList4 * This,
19463 _In_opt_ ID3D12Resource *pBuffer,
19464 _In_ UINT64 AlignedBufferOffset,
19465 _In_ D3D12_PREDICATION_OP Operation);
19466
19467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
19468 void ( STDMETHODCALLTYPE *SetMarker )(
19469 ID3D12GraphicsCommandList4 * This,
19470 UINT Metadata,
19471 _In_reads_bytes_opt_(Size) const void *pData,
19472 UINT Size);
19473
19474 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
19475 void ( STDMETHODCALLTYPE *BeginEvent )(
19476 ID3D12GraphicsCommandList4 * This,
19477 UINT Metadata,
19478 _In_reads_bytes_opt_(Size) const void *pData,
19479 UINT Size);
19480
19481 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
19482 void ( STDMETHODCALLTYPE *EndEvent )(
19483 ID3D12GraphicsCommandList4 * This);
19484
19485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
19486 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
19487 ID3D12GraphicsCommandList4 * This,
19488 _In_ ID3D12CommandSignature *pCommandSignature,
19489 _In_ UINT MaxCommandCount,
19490 _In_ ID3D12Resource *pArgumentBuffer,
19491 _In_ UINT64 ArgumentBufferOffset,
19492 _In_opt_ ID3D12Resource *pCountBuffer,
19493 _In_ UINT64 CountBufferOffset);
19494
19495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
19496 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
19497 ID3D12GraphicsCommandList4 * This,
19498 _In_ ID3D12Resource *pDstBuffer,
19499 UINT64 DstOffset,
19500 _In_ ID3D12Resource *pSrcBuffer,
19501 UINT64 SrcOffset,
19502 UINT Dependencies,
19503 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
19504 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
19505
19506 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
19507 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
19508 ID3D12GraphicsCommandList4 * This,
19509 _In_ ID3D12Resource *pDstBuffer,
19510 UINT64 DstOffset,
19511 _In_ ID3D12Resource *pSrcBuffer,
19512 UINT64 SrcOffset,
19513 UINT Dependencies,
19514 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
19515 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
19516
19517 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
19518 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
19519 ID3D12GraphicsCommandList4 * This,
19520 _In_ FLOAT Min,
19521 _In_ FLOAT Max);
19522
19523 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
19524 void ( STDMETHODCALLTYPE *SetSamplePositions )(
19525 ID3D12GraphicsCommandList4 * This,
19526 _In_ UINT NumSamplesPerPixel,
19527 _In_ UINT NumPixels,
19528 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
19529
19530 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
19531 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
19532 ID3D12GraphicsCommandList4 * This,
19533 _In_ ID3D12Resource *pDstResource,
19534 _In_ UINT DstSubresource,
19535 _In_ UINT DstX,
19536 _In_ UINT DstY,
19537 _In_ ID3D12Resource *pSrcResource,
19538 _In_ UINT SrcSubresource,
19539 _In_opt_ D3D12_RECT *pSrcRect,
19540 _In_ DXGI_FORMAT Format,
19541 _In_ D3D12_RESOLVE_MODE ResolveMode);
19542
19543 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
19544 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
19545 ID3D12GraphicsCommandList4 * This,
19546 _In_ UINT Mask);
19547
19548 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
19549 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
19550 ID3D12GraphicsCommandList4 * This,
19551 UINT Count,
19552 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
19553 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
19554
19555 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
19556 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
19557 ID3D12GraphicsCommandList4 * This,
19558 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
19559
19560 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
19561 void ( STDMETHODCALLTYPE *BeginRenderPass )(
19562 ID3D12GraphicsCommandList4 * This,
19563 _In_ UINT NumRenderTargets,
19564 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
19565 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
19566 D3D12_RENDER_PASS_FLAGS Flags);
19567
19568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
19569 void ( STDMETHODCALLTYPE *EndRenderPass )(
19570 ID3D12GraphicsCommandList4 * This);
19571
19572 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
19573 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
19574 ID3D12GraphicsCommandList4 * This,
19575 _In_ ID3D12MetaCommand *pMetaCommand,
19576 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
19577 _In_ SIZE_T InitializationParametersDataSizeInBytes);
19578
19579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
19580 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
19581 ID3D12GraphicsCommandList4 * This,
19582 _In_ ID3D12MetaCommand *pMetaCommand,
19583 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
19584 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
19585
19586 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
19587 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
19588 ID3D12GraphicsCommandList4 * This,
19589 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
19590 _In_ UINT NumPostbuildInfoDescs,
19591 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
19592
19593 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
19594 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
19595 ID3D12GraphicsCommandList4 * This,
19596 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
19597 _In_ UINT NumSourceAccelerationStructures,
19598 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
19599
19600 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
19601 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
19602 ID3D12GraphicsCommandList4 * This,
19603 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
19604 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
19605 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
19606
19607 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
19608 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
19609 ID3D12GraphicsCommandList4 * This,
19610 _In_ ID3D12StateObject *pStateObject);
19611
19612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
19613 void ( STDMETHODCALLTYPE *DispatchRays )(
19614 ID3D12GraphicsCommandList4 * This,
19615 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
19616
19617 END_INTERFACE
19618 } ID3D12GraphicsCommandList4Vtbl;
19619
19620 interface ID3D12GraphicsCommandList4
19621 {
19622 CONST_VTBL struct ID3D12GraphicsCommandList4Vtbl *lpVtbl;
19623 };
19624
19625
19626
19627#ifdef COBJMACROS
19628
19629
19630#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) \
19631 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
19632
19633#define ID3D12GraphicsCommandList4_AddRef(This) \
19634 ( (This)->lpVtbl -> AddRef(This) )
19635
19636#define ID3D12GraphicsCommandList4_Release(This) \
19637 ( (This)->lpVtbl -> Release(This) )
19638
19639
19640#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
19641 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
19642
19643#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData) \
19644 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
19645
19646#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData) \
19647 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
19648
19649#define ID3D12GraphicsCommandList4_SetName(This,Name) \
19650 ( (This)->lpVtbl -> SetName(This,Name) )
19651
19652
19653#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice) \
19654 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
19655
19656
19657#define ID3D12GraphicsCommandList4_GetType(This) \
19658 ( (This)->lpVtbl -> GetType(This) )
19659
19660
19661#define ID3D12GraphicsCommandList4_Close(This) \
19662 ( (This)->lpVtbl -> Close(This) )
19663
19664#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState) \
19665 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
19666
19667#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState) \
19668 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
19669
19670#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
19671 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
19672
19673#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
19674 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
19675
19676#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
19677 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
19678
19679#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
19680 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
19681
19682#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
19683 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
19684
19685#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource) \
19686 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
19687
19688#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
19689 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
19690
19691#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
19692 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
19693
19694#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology) \
19695 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
19696
19697#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports) \
19698 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
19699
19700#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects) \
19701 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
19702
19703#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor) \
19704 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
19705
19706#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef) \
19707 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
19708
19709#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState) \
19710 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
19711
19712#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
19713 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
19714
19715#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList) \
19716 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
19717
19718#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
19719 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
19720
19721#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature) \
19722 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
19723
19724#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature) \
19725 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
19726
19727#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
19728 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
19729
19730#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
19731 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
19732
19733#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
19734 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
19735
19736#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
19737 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
19738
19739#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
19740 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
19741
19742#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
19743 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
19744
19745#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
19746 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
19747
19748#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
19749 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
19750
19751#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
19752 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
19753
19754#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
19755 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
19756
19757#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
19758 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
19759
19760#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
19761 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
19762
19763#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView) \
19764 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
19765
19766#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
19767 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
19768
19769#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews) \
19770 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
19771
19772#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
19773 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
19774
19775#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
19776 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
19777
19778#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
19779 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
19780
19781#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
19782 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
19783
19784#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
19785 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
19786
19787#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion) \
19788 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
19789
19790#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
19791 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
19792
19793#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
19794 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
19795
19796#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
19797 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
19798
19799#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
19800 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
19801
19802#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size) \
19803 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
19804
19805#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size) \
19806 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
19807
19808#define ID3D12GraphicsCommandList4_EndEvent(This) \
19809 ( (This)->lpVtbl -> EndEvent(This) )
19810
19811#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
19812 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
19813
19814
19815#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
19816 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
19817
19818#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
19819 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
19820
19821#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max) \
19822 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
19823
19824#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
19825 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
19826
19827#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
19828 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
19829
19830#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask) \
19831 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
19832
19833
19834#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
19835 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
19836
19837
19838#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
19839 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
19840
19841
19842#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
19843 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
19844
19845#define ID3D12GraphicsCommandList4_EndRenderPass(This) \
19846 ( (This)->lpVtbl -> EndRenderPass(This) )
19847
19848#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
19849 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
19850
19851#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
19852 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
19853
19854#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
19855 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
19856
19857#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
19858 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
19859
19860#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
19861 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
19862
19863#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject) \
19864 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
19865
19866#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc) \
19867 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
19868
19869#endif /* COBJMACROS */
19870
19871
19872#endif /* C style interface */
19873
19874
19875
19876
19877#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
19878
19879
19880/* interface __MIDL_itf_d3d12_0000_0050 */
19881/* [local] */
19882
19883typedef
19884enum D3D12_SHADER_CACHE_MODE
19885 {
19886 D3D12_SHADER_CACHE_MODE_MEMORY = 0,
19887 D3D12_SHADER_CACHE_MODE_DISK = ( D3D12_SHADER_CACHE_MODE_MEMORY + 1 )
19888 } D3D12_SHADER_CACHE_MODE;
19889
19890typedef
19891enum D3D12_SHADER_CACHE_FLAGS
19892 {
19893 D3D12_SHADER_CACHE_FLAG_NONE = 0,
19894 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
19895 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
19896 } D3D12_SHADER_CACHE_FLAGS;
19897
19898DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS );
19899typedef struct D3D12_SHADER_CACHE_SESSION_DESC
19900 {
19901 GUID Identifier;
19902 D3D12_SHADER_CACHE_MODE Mode;
19903 D3D12_SHADER_CACHE_FLAGS Flags;
19904 UINT MaximumInMemoryCacheSizeBytes;
19905 UINT MaximumInMemoryCacheEntries;
19906 UINT MaximumValueFileSizeBytes;
19907 UINT64 Version;
19908 } D3D12_SHADER_CACHE_SESSION_DESC;
19909
19910
19911
19912extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0050_v0_0_c_ifspec;
19913extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0050_v0_0_s_ifspec;
19914
19915#ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
19916#define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
19917
19918/* interface ID3D12ShaderCacheSession */
19919/* [unique][local][object][uuid] */
19920
19921
19922EXTERN_C const IID IID_ID3D12ShaderCacheSession;
19923
19924#if defined(__cplusplus) && !defined(CINTERFACE)
19925
19926 MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
19927 ID3D12ShaderCacheSession : public ID3D12DeviceChild
19928 {
19929 public:
19930 virtual HRESULT STDMETHODCALLTYPE FindValue(
19931 /* [annotation][in] */
19932 _In_reads_bytes_(KeySize) const void *pKey,
19933 UINT KeySize,
19934 /* [annotation][out] */
19935 _Out_writes_bytes_(*pValueSize) void *pValue,
19936 _Inout_ UINT *pValueSize) = 0;
19937
19938 virtual HRESULT STDMETHODCALLTYPE StoreValue(
19939 /* [annotation][in] */
19940 _In_reads_bytes_(KeySize) const void *pKey,
19941 UINT KeySize,
19942 /* [annotation][in] */
19943 _In_reads_bytes_(ValueSize) const void *pValue,
19944 UINT ValueSize) = 0;
19945
19946 virtual void STDMETHODCALLTYPE SetDeleteOnDestroy( void) = 0;
19947
19948 virtual D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
19949
19950 };
19951
19952
19953#else /* C style interface */
19954
19955 typedef struct ID3D12ShaderCacheSessionVtbl
19956 {
19957 BEGIN_INTERFACE
19958
19959 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19960 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19961 ID3D12ShaderCacheSession * This,
19962 REFIID riid,
19963 _COM_Outptr_ void **ppvObject);
19964
19965 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19966 ULONG ( STDMETHODCALLTYPE *AddRef )(
19967 ID3D12ShaderCacheSession * This);
19968
19969 DECLSPEC_XFGVIRT(IUnknown, Release)
19970 ULONG ( STDMETHODCALLTYPE *Release )(
19971 ID3D12ShaderCacheSession * This);
19972
19973 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19974 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19975 ID3D12ShaderCacheSession * This,
19976 _In_ REFGUID guid,
19977 _Inout_ UINT *pDataSize,
19978 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19979
19980 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19981 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19982 ID3D12ShaderCacheSession * This,
19983 _In_ REFGUID guid,
19984 _In_ UINT DataSize,
19985 _In_reads_bytes_opt_( DataSize ) const void *pData);
19986
19987 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19988 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19989 ID3D12ShaderCacheSession * This,
19990 _In_ REFGUID guid,
19991 _In_opt_ const IUnknown *pData);
19992
19993 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19994 HRESULT ( STDMETHODCALLTYPE *SetName )(
19995 ID3D12ShaderCacheSession * This,
19996 _In_z_ LPCWSTR Name);
19997
19998 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
19999 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20000 ID3D12ShaderCacheSession * This,
20001 REFIID riid,
20002 _COM_Outptr_opt_ void **ppvDevice);
20003
20004 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, FindValue)
20005 HRESULT ( STDMETHODCALLTYPE *FindValue )(
20006 ID3D12ShaderCacheSession * This,
20007 /* [annotation][in] */
20008 _In_reads_bytes_(KeySize) const void *pKey,
20009 UINT KeySize,
20010 /* [annotation][out] */
20011 _Out_writes_bytes_(*pValueSize) void *pValue,
20012 _Inout_ UINT *pValueSize);
20013
20014 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, StoreValue)
20015 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
20016 ID3D12ShaderCacheSession * This,
20017 /* [annotation][in] */
20018 _In_reads_bytes_(KeySize) const void *pKey,
20019 UINT KeySize,
20020 /* [annotation][in] */
20021 _In_reads_bytes_(ValueSize) const void *pValue,
20022 UINT ValueSize);
20023
20024 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, SetDeleteOnDestroy)
20025 void ( STDMETHODCALLTYPE *SetDeleteOnDestroy )(
20026 ID3D12ShaderCacheSession * This);
20027
20028 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, GetDesc)
20029 D3D12_SHADER_CACHE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
20030 ID3D12ShaderCacheSession * This,
20031 D3D12_SHADER_CACHE_SESSION_DESC * RetVal);
20032
20033 END_INTERFACE
20034 } ID3D12ShaderCacheSessionVtbl;
20035
20036 interface ID3D12ShaderCacheSession
20037 {
20038 CONST_VTBL struct ID3D12ShaderCacheSessionVtbl *lpVtbl;
20039 };
20040
20041
20042
20043#ifdef COBJMACROS
20044
20045
20046#define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject) \
20047 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20048
20049#define ID3D12ShaderCacheSession_AddRef(This) \
20050 ( (This)->lpVtbl -> AddRef(This) )
20051
20052#define ID3D12ShaderCacheSession_Release(This) \
20053 ( (This)->lpVtbl -> Release(This) )
20054
20055
20056#define ID3D12ShaderCacheSession_GetPrivateData(This,guid,pDataSize,pData) \
20057 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20058
20059#define ID3D12ShaderCacheSession_SetPrivateData(This,guid,DataSize,pData) \
20060 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20061
20062#define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,pData) \
20063 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20064
20065#define ID3D12ShaderCacheSession_SetName(This,Name) \
20066 ( (This)->lpVtbl -> SetName(This,Name) )
20067
20068
20069#define ID3D12ShaderCacheSession_GetDevice(This,riid,ppvDevice) \
20070 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20071
20072
20073#define ID3D12ShaderCacheSession_FindValue(This,pKey,KeySize,pValue,pValueSize) \
20074 ( (This)->lpVtbl -> FindValue(This,pKey,KeySize,pValue,pValueSize) )
20075
20076#define ID3D12ShaderCacheSession_StoreValue(This,pKey,KeySize,pValue,ValueSize) \
20077 ( (This)->lpVtbl -> StoreValue(This,pKey,KeySize,pValue,ValueSize) )
20078
20079#define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This) \
20080 ( (This)->lpVtbl -> SetDeleteOnDestroy(This) )
20081
20082#define ID3D12ShaderCacheSession_GetDesc(This,RetVal) \
20083 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20084
20085#endif /* COBJMACROS */
20086
20087
20088#endif /* C style interface */
20089
20090
20091
20092
20093#endif /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
20094
20095
20096/* interface __MIDL_itf_d3d12_0000_0051 */
20097/* [local] */
20098
20099typedef
20100enum D3D12_SHADER_CACHE_KIND_FLAGS
20101 {
20102 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
20103 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
20104 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
20105 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
20106 } D3D12_SHADER_CACHE_KIND_FLAGS;
20107
20108DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS );
20109typedef
20110enum D3D12_SHADER_CACHE_CONTROL_FLAGS
20111 {
20112 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
20113 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
20114 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
20115 } D3D12_SHADER_CACHE_CONTROL_FLAGS;
20116
20117DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS );
20118
20119
20120extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0051_v0_0_c_ifspec;
20121extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0051_v0_0_s_ifspec;
20122
20123#ifndef __ID3D12Device9_INTERFACE_DEFINED__
20124#define __ID3D12Device9_INTERFACE_DEFINED__
20125
20126/* interface ID3D12Device9 */
20127/* [unique][local][object][uuid] */
20128
20129
20130EXTERN_C const IID IID_ID3D12Device9;
20131
20132#if defined(__cplusplus) && !defined(CINTERFACE)
20133
20134 MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
20135 ID3D12Device9 : public ID3D12Device8
20136 {
20137 public:
20138 virtual HRESULT STDMETHODCALLTYPE CreateShaderCacheSession(
20139 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
20140 REFIID riid,
20141 _COM_Outptr_opt_ void **ppvSession) = 0;
20142
20143 virtual HRESULT STDMETHODCALLTYPE ShaderCacheControl(
20144 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
20145 D3D12_SHADER_CACHE_CONTROL_FLAGS Control) = 0;
20146
20147 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue1(
20148 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
20149 REFIID CreatorID,
20150 REFIID riid,
20151 _COM_Outptr_ void **ppCommandQueue) = 0;
20152
20153 };
20154
20155
20156#else /* C style interface */
20157
20158 typedef struct ID3D12Device9Vtbl
20159 {
20160 BEGIN_INTERFACE
20161
20162 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20163 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20164 ID3D12Device9 * This,
20165 REFIID riid,
20166 _COM_Outptr_ void **ppvObject);
20167
20168 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20169 ULONG ( STDMETHODCALLTYPE *AddRef )(
20170 ID3D12Device9 * This);
20171
20172 DECLSPEC_XFGVIRT(IUnknown, Release)
20173 ULONG ( STDMETHODCALLTYPE *Release )(
20174 ID3D12Device9 * This);
20175
20176 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20177 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20178 ID3D12Device9 * This,
20179 _In_ REFGUID guid,
20180 _Inout_ UINT *pDataSize,
20181 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20182
20183 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20184 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20185 ID3D12Device9 * This,
20186 _In_ REFGUID guid,
20187 _In_ UINT DataSize,
20188 _In_reads_bytes_opt_( DataSize ) const void *pData);
20189
20190 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20191 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20192 ID3D12Device9 * This,
20193 _In_ REFGUID guid,
20194 _In_opt_ const IUnknown *pData);
20195
20196 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20197 HRESULT ( STDMETHODCALLTYPE *SetName )(
20198 ID3D12Device9 * This,
20199 _In_z_ LPCWSTR Name);
20200
20201 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
20202 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
20203 ID3D12Device9 * This);
20204
20205 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
20206 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
20207 ID3D12Device9 * This,
20208 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
20209 REFIID riid,
20210 _COM_Outptr_ void **ppCommandQueue);
20211
20212 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
20213 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
20214 ID3D12Device9 * This,
20215 _In_ D3D12_COMMAND_LIST_TYPE type,
20216 REFIID riid,
20217 _COM_Outptr_ void **ppCommandAllocator);
20218
20219 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
20220 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
20221 ID3D12Device9 * This,
20222 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
20223 REFIID riid,
20224 _COM_Outptr_ void **ppPipelineState);
20225
20226 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
20227 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
20228 ID3D12Device9 * This,
20229 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
20230 REFIID riid,
20231 _COM_Outptr_ void **ppPipelineState);
20232
20233 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
20234 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
20235 ID3D12Device9 * This,
20236 _In_ UINT nodeMask,
20237 _In_ D3D12_COMMAND_LIST_TYPE type,
20238 _In_ ID3D12CommandAllocator *pCommandAllocator,
20239 _In_opt_ ID3D12PipelineState *pInitialState,
20240 REFIID riid,
20241 _COM_Outptr_ void **ppCommandList);
20242
20243 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
20244 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
20245 ID3D12Device9 * This,
20246 D3D12_FEATURE Feature,
20247 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
20248 UINT FeatureSupportDataSize);
20249
20250 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
20251 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
20252 ID3D12Device9 * This,
20253 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
20254 REFIID riid,
20255 _COM_Outptr_ void **ppvHeap);
20256
20257 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
20258 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
20259 ID3D12Device9 * This,
20260 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
20261
20262 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
20263 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
20264 ID3D12Device9 * This,
20265 _In_ UINT nodeMask,
20266 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
20267 _In_ SIZE_T blobLengthInBytes,
20268 REFIID riid,
20269 _COM_Outptr_ void **ppvRootSignature);
20270
20271 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
20272 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
20273 ID3D12Device9 * This,
20274 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
20275 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20276
20277 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
20278 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
20279 ID3D12Device9 * This,
20280 _In_opt_ ID3D12Resource *pResource,
20281 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
20282 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20283
20284 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
20285 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
20286 ID3D12Device9 * This,
20287 _In_opt_ ID3D12Resource *pResource,
20288 _In_opt_ ID3D12Resource *pCounterResource,
20289 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
20290 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20291
20292 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
20293 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
20294 ID3D12Device9 * This,
20295 _In_opt_ ID3D12Resource *pResource,
20296 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
20297 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20298
20299 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
20300 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
20301 ID3D12Device9 * This,
20302 _In_opt_ ID3D12Resource *pResource,
20303 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
20304 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20305
20306 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
20307 void ( STDMETHODCALLTYPE *CreateSampler )(
20308 ID3D12Device9 * This,
20309 _In_ const D3D12_SAMPLER_DESC *pDesc,
20310 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20311
20312 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
20313 void ( STDMETHODCALLTYPE *CopyDescriptors )(
20314 ID3D12Device9 * This,
20315 _In_ UINT NumDestDescriptorRanges,
20316 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
20317 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
20318 _In_ UINT NumSrcDescriptorRanges,
20319 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
20320 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
20321 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
20322
20323 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
20324 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
20325 ID3D12Device9 * This,
20326 _In_ UINT NumDescriptors,
20327 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
20328 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
20329 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
20330
20331 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
20332 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
20333 ID3D12Device9 * This,
20334 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
20335 _In_ UINT visibleMask,
20336 _In_ UINT numResourceDescs,
20337 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
20338
20339 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
20340 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
20341 ID3D12Device9 * This,
20342 D3D12_HEAP_PROPERTIES * RetVal,
20343 _In_ UINT nodeMask,
20344 D3D12_HEAP_TYPE heapType);
20345
20346 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
20347 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
20348 ID3D12Device9 * This,
20349 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20350 D3D12_HEAP_FLAGS HeapFlags,
20351 _In_ const D3D12_RESOURCE_DESC *pDesc,
20352 D3D12_RESOURCE_STATES InitialResourceState,
20353 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20354 REFIID riidResource,
20355 _COM_Outptr_opt_ void **ppvResource);
20356
20357 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
20358 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
20359 ID3D12Device9 * This,
20360 _In_ const D3D12_HEAP_DESC *pDesc,
20361 REFIID riid,
20362 _COM_Outptr_opt_ void **ppvHeap);
20363
20364 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
20365 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
20366 ID3D12Device9 * This,
20367 _In_ ID3D12Heap *pHeap,
20368 UINT64 HeapOffset,
20369 _In_ const D3D12_RESOURCE_DESC *pDesc,
20370 D3D12_RESOURCE_STATES InitialState,
20371 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20372 REFIID riid,
20373 _COM_Outptr_opt_ void **ppvResource);
20374
20375 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
20376 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
20377 ID3D12Device9 * This,
20378 _In_ const D3D12_RESOURCE_DESC *pDesc,
20379 D3D12_RESOURCE_STATES InitialState,
20380 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20381 REFIID riid,
20382 _COM_Outptr_opt_ void **ppvResource);
20383
20384 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
20385 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
20386 ID3D12Device9 * This,
20387 _In_ ID3D12DeviceChild *pObject,
20388 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
20389 DWORD Access,
20390 _In_opt_ LPCWSTR Name,
20391 _Out_ HANDLE *pHandle);
20392
20393 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
20394 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
20395 ID3D12Device9 * This,
20396 _In_ HANDLE NTHandle,
20397 REFIID riid,
20398 _COM_Outptr_opt_ void **ppvObj);
20399
20400 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
20401 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
20402 ID3D12Device9 * This,
20403 _In_ LPCWSTR Name,
20404 DWORD Access,
20405 /* [annotation][out] */
20406 _Out_ HANDLE *pNTHandle);
20407
20408 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
20409 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
20410 ID3D12Device9 * This,
20411 UINT NumObjects,
20412 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
20413
20414 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
20415 HRESULT ( STDMETHODCALLTYPE *Evict )(
20416 ID3D12Device9 * This,
20417 UINT NumObjects,
20418 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
20419
20420 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
20421 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
20422 ID3D12Device9 * This,
20423 UINT64 InitialValue,
20424 D3D12_FENCE_FLAGS Flags,
20425 REFIID riid,
20426 _COM_Outptr_ void **ppFence);
20427
20428 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
20429 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
20430 ID3D12Device9 * This);
20431
20432 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
20433 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
20434 ID3D12Device9 * This,
20435 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
20436 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20437 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20438 UINT64 BaseOffset,
20439 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20440 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20441 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20442 _Out_opt_ UINT64 *pTotalBytes);
20443
20444 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
20445 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
20446 ID3D12Device9 * This,
20447 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
20448 REFIID riid,
20449 _COM_Outptr_opt_ void **ppvHeap);
20450
20451 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
20452 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
20453 ID3D12Device9 * This,
20454 BOOL Enable);
20455
20456 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
20457 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
20458 ID3D12Device9 * This,
20459 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
20460 _In_opt_ ID3D12RootSignature *pRootSignature,
20461 REFIID riid,
20462 _COM_Outptr_opt_ void **ppvCommandSignature);
20463
20464 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
20465 void ( STDMETHODCALLTYPE *GetResourceTiling )(
20466 ID3D12Device9 * This,
20467 _In_ ID3D12Resource *pTiledResource,
20468 _Out_opt_ UINT *pNumTilesForEntireResource,
20469 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
20470 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
20471 _Inout_opt_ UINT *pNumSubresourceTilings,
20472 _In_ UINT FirstSubresourceTilingToGet,
20473 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
20474
20475 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
20476 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
20477 ID3D12Device9 * This,
20478 LUID * RetVal);
20479
20480 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
20481 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
20482 ID3D12Device9 * This,
20483 _In_reads_(BlobLength) const void *pLibraryBlob,
20484 SIZE_T BlobLength,
20485 REFIID riid,
20486 _COM_Outptr_ void **ppPipelineLibrary);
20487
20488 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
20489 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
20490 ID3D12Device9 * This,
20491 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
20492 _In_reads_(NumFences) const UINT64 *pFenceValues,
20493 UINT NumFences,
20494 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
20495 HANDLE hEvent);
20496
20497 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
20498 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
20499 ID3D12Device9 * This,
20500 UINT NumObjects,
20501 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
20502 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
20503
20504 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
20505 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
20506 ID3D12Device9 * This,
20507 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
20508 REFIID riid,
20509 _COM_Outptr_ void **ppPipelineState);
20510
20511 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
20512 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
20513 ID3D12Device9 * This,
20514 _In_ const void *pAddress,
20515 REFIID riid,
20516 _COM_Outptr_ void **ppvHeap);
20517
20518 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
20519 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
20520 ID3D12Device9 * This,
20521 _In_ HANDLE hFileMapping,
20522 REFIID riid,
20523 _COM_Outptr_ void **ppvHeap);
20524
20525 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
20526 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
20527 ID3D12Device9 * This,
20528 D3D12_RESIDENCY_FLAGS Flags,
20529 UINT NumObjects,
20530 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
20531 _In_ ID3D12Fence *pFenceToSignal,
20532 UINT64 FenceValueToSignal);
20533
20534 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
20535 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
20536 ID3D12Device9 * This,
20537 _In_ UINT nodeMask,
20538 _In_ D3D12_COMMAND_LIST_TYPE type,
20539 _In_ D3D12_COMMAND_LIST_FLAGS flags,
20540 REFIID riid,
20541 _COM_Outptr_ void **ppCommandList);
20542
20543 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
20544 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
20545 ID3D12Device9 * This,
20546 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
20547 _In_ REFIID riid,
20548 _COM_Outptr_ void **ppSession);
20549
20550 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
20551 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
20552 ID3D12Device9 * This,
20553 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20554 D3D12_HEAP_FLAGS HeapFlags,
20555 _In_ const D3D12_RESOURCE_DESC *pDesc,
20556 D3D12_RESOURCE_STATES InitialResourceState,
20557 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20558 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20559 REFIID riidResource,
20560 _COM_Outptr_opt_ void **ppvResource);
20561
20562 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
20563 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
20564 ID3D12Device9 * This,
20565 _In_ const D3D12_HEAP_DESC *pDesc,
20566 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20567 REFIID riid,
20568 _COM_Outptr_opt_ void **ppvHeap);
20569
20570 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
20571 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
20572 ID3D12Device9 * This,
20573 _In_ const D3D12_RESOURCE_DESC *pDesc,
20574 D3D12_RESOURCE_STATES InitialState,
20575 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20576 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20577 REFIID riid,
20578 _COM_Outptr_opt_ void **ppvResource);
20579
20580 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
20581 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
20582 ID3D12Device9 * This,
20583 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
20584 UINT visibleMask,
20585 UINT numResourceDescs,
20586 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
20587 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
20588
20589 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
20590 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
20591 ID3D12Device9 * This,
20592 _In_ ID3D12LifetimeOwner *pOwner,
20593 REFIID riid,
20594 _COM_Outptr_ void **ppvTracker);
20595
20596 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
20597 void ( STDMETHODCALLTYPE *RemoveDevice )(
20598 ID3D12Device9 * This);
20599
20600 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
20601 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
20602 ID3D12Device9 * This,
20603 _Inout_ UINT *pNumMetaCommands,
20604 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
20605
20606 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
20607 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
20608 ID3D12Device9 * This,
20609 _In_ REFGUID CommandId,
20610 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
20611 _Out_opt_ UINT *pTotalStructureSizeInBytes,
20612 _Inout_ UINT *pParameterCount,
20613 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
20614
20615 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
20616 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
20617 ID3D12Device9 * This,
20618 _In_ REFGUID CommandId,
20619 _In_ UINT NodeMask,
20620 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
20621 _In_ SIZE_T CreationParametersDataSizeInBytes,
20622 REFIID riid,
20623 _COM_Outptr_ void **ppMetaCommand);
20624
20625 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
20626 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
20627 ID3D12Device9 * This,
20628 const D3D12_STATE_OBJECT_DESC *pDesc,
20629 REFIID riid,
20630 _COM_Outptr_ void **ppStateObject);
20631
20632 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
20633 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
20634 ID3D12Device9 * This,
20635 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
20636 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
20637
20638 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
20639 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
20640 ID3D12Device9 * This,
20641 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
20642 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
20643
20644 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
20645 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
20646 ID3D12Device9 * This,
20647 D3D12_BACKGROUND_PROCESSING_MODE Mode,
20648 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
20649 _In_opt_ HANDLE hEventToSignalUponCompletion,
20650 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
20651
20652 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
20653 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
20654 ID3D12Device9 * This,
20655 const D3D12_STATE_OBJECT_DESC *pAddition,
20656 ID3D12StateObject *pStateObjectToGrowFrom,
20657 REFIID riid,
20658 _COM_Outptr_ void **ppNewStateObject);
20659
20660 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
20661 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
20662 ID3D12Device9 * This,
20663 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
20664 _In_ REFIID riid,
20665 _COM_Outptr_ void **ppSession);
20666
20667 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
20668 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
20669 ID3D12Device9 * This,
20670 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
20671 UINT visibleMask,
20672 UINT numResourceDescs,
20673 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
20674 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
20675
20676 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
20677 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
20678 ID3D12Device9 * This,
20679 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20680 D3D12_HEAP_FLAGS HeapFlags,
20681 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20682 D3D12_RESOURCE_STATES InitialResourceState,
20683 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20684 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20685 REFIID riidResource,
20686 _COM_Outptr_opt_ void **ppvResource);
20687
20688 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
20689 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
20690 ID3D12Device9 * This,
20691 _In_ ID3D12Heap *pHeap,
20692 UINT64 HeapOffset,
20693 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20694 D3D12_RESOURCE_STATES InitialState,
20695 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20696 REFIID riid,
20697 _COM_Outptr_opt_ void **ppvResource);
20698
20699 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
20700 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
20701 ID3D12Device9 * This,
20702 _In_opt_ ID3D12Resource *pTargetedResource,
20703 _In_opt_ ID3D12Resource *pFeedbackResource,
20704 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20705
20706 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
20707 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
20708 ID3D12Device9 * This,
20709 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
20710 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20711 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20712 UINT64 BaseOffset,
20713 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20714 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20715 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20716 _Out_opt_ UINT64 *pTotalBytes);
20717
20718 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
20719 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
20720 ID3D12Device9 * This,
20721 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
20722 REFIID riid,
20723 _COM_Outptr_opt_ void **ppvSession);
20724
20725 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
20726 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
20727 ID3D12Device9 * This,
20728 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
20729 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
20730
20731 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
20732 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
20733 ID3D12Device9 * This,
20734 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
20735 REFIID CreatorID,
20736 REFIID riid,
20737 _COM_Outptr_ void **ppCommandQueue);
20738
20739 END_INTERFACE
20740 } ID3D12Device9Vtbl;
20741
20742 interface ID3D12Device9
20743 {
20744 CONST_VTBL struct ID3D12Device9Vtbl *lpVtbl;
20745 };
20746
20747
20748
20749#ifdef COBJMACROS
20750
20751
20752#define ID3D12Device9_QueryInterface(This,riid,ppvObject) \
20753 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20754
20755#define ID3D12Device9_AddRef(This) \
20756 ( (This)->lpVtbl -> AddRef(This) )
20757
20758#define ID3D12Device9_Release(This) \
20759 ( (This)->lpVtbl -> Release(This) )
20760
20761
20762#define ID3D12Device9_GetPrivateData(This,guid,pDataSize,pData) \
20763 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20764
20765#define ID3D12Device9_SetPrivateData(This,guid,DataSize,pData) \
20766 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20767
20768#define ID3D12Device9_SetPrivateDataInterface(This,guid,pData) \
20769 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20770
20771#define ID3D12Device9_SetName(This,Name) \
20772 ( (This)->lpVtbl -> SetName(This,Name) )
20773
20774
20775#define ID3D12Device9_GetNodeCount(This) \
20776 ( (This)->lpVtbl -> GetNodeCount(This) )
20777
20778#define ID3D12Device9_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
20779 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
20780
20781#define ID3D12Device9_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
20782 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
20783
20784#define ID3D12Device9_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
20785 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
20786
20787#define ID3D12Device9_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
20788 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
20789
20790#define ID3D12Device9_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
20791 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
20792
20793#define ID3D12Device9_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
20794 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
20795
20796#define ID3D12Device9_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
20797 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
20798
20799#define ID3D12Device9_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
20800 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
20801
20802#define ID3D12Device9_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
20803 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
20804
20805#define ID3D12Device9_CreateConstantBufferView(This,pDesc,DestDescriptor) \
20806 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
20807
20808#define ID3D12Device9_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
20809 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
20810
20811#define ID3D12Device9_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
20812 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
20813
20814#define ID3D12Device9_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
20815 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
20816
20817#define ID3D12Device9_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
20818 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
20819
20820#define ID3D12Device9_CreateSampler(This,pDesc,DestDescriptor) \
20821 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
20822
20823#define ID3D12Device9_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
20824 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
20825
20826#define ID3D12Device9_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
20827 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
20828
20829#define ID3D12Device9_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
20830 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
20831
20832#define ID3D12Device9_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
20833 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
20834
20835#define ID3D12Device9_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
20836 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
20837
20838#define ID3D12Device9_CreateHeap(This,pDesc,riid,ppvHeap) \
20839 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
20840
20841#define ID3D12Device9_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20842 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20843
20844#define ID3D12Device9_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20845 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20846
20847#define ID3D12Device9_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
20848 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
20849
20850#define ID3D12Device9_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
20851 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
20852
20853#define ID3D12Device9_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
20854 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
20855
20856#define ID3D12Device9_MakeResident(This,NumObjects,ppObjects) \
20857 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
20858
20859#define ID3D12Device9_Evict(This,NumObjects,ppObjects) \
20860 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
20861
20862#define ID3D12Device9_CreateFence(This,InitialValue,Flags,riid,ppFence) \
20863 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
20864
20865#define ID3D12Device9_GetDeviceRemovedReason(This) \
20866 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
20867
20868#define ID3D12Device9_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20869 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20870
20871#define ID3D12Device9_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
20872 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
20873
20874#define ID3D12Device9_SetStablePowerState(This,Enable) \
20875 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
20876
20877#define ID3D12Device9_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
20878 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
20879
20880#define ID3D12Device9_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
20881 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
20882
20883#define ID3D12Device9_GetAdapterLuid(This,RetVal) \
20884 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
20885
20886
20887#define ID3D12Device9_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
20888 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
20889
20890#define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
20891 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
20892
20893#define ID3D12Device9_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
20894 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
20895
20896
20897#define ID3D12Device9_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
20898 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
20899
20900
20901#define ID3D12Device9_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
20902 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
20903
20904#define ID3D12Device9_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
20905 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
20906
20907#define ID3D12Device9_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
20908 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
20909
20910
20911#define ID3D12Device9_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
20912 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
20913
20914#define ID3D12Device9_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
20915 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
20916
20917#define ID3D12Device9_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20918 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20919
20920#define ID3D12Device9_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
20921 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
20922
20923#define ID3D12Device9_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
20924 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
20925
20926#define ID3D12Device9_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20927 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20928
20929
20930#define ID3D12Device9_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
20931 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
20932
20933#define ID3D12Device9_RemoveDevice(This) \
20934 ( (This)->lpVtbl -> RemoveDevice(This) )
20935
20936#define ID3D12Device9_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
20937 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
20938
20939#define ID3D12Device9_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
20940 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
20941
20942#define ID3D12Device9_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
20943 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
20944
20945#define ID3D12Device9_CreateStateObject(This,pDesc,riid,ppStateObject) \
20946 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
20947
20948#define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
20949 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
20950
20951#define ID3D12Device9_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
20952 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
20953
20954
20955#define ID3D12Device9_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
20956 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
20957
20958
20959#define ID3D12Device9_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
20960 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
20961
20962#define ID3D12Device9_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
20963 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
20964
20965
20966#define ID3D12Device9_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20967 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20968
20969#define ID3D12Device9_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20970 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20971
20972#define ID3D12Device9_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20973 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20974
20975#define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
20976 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
20977
20978#define ID3D12Device9_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20979 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20980
20981
20982#define ID3D12Device9_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
20983 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
20984
20985#define ID3D12Device9_ShaderCacheControl(This,Kinds,Control) \
20986 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
20987
20988#define ID3D12Device9_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
20989 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
20990
20991#endif /* COBJMACROS */
20992
20993
20994#endif /* C style interface */
20995
20996
20997
20998
20999#endif /* __ID3D12Device9_INTERFACE_DEFINED__ */
21000
21001
21002#ifndef __ID3D12Tools_INTERFACE_DEFINED__
21003#define __ID3D12Tools_INTERFACE_DEFINED__
21004
21005/* interface ID3D12Tools */
21006/* [unique][local][object][uuid] */
21007
21008
21009EXTERN_C const IID IID_ID3D12Tools;
21010
21011#if defined(__cplusplus) && !defined(CINTERFACE)
21012
21013 MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
21014 ID3D12Tools : public IUnknown
21015 {
21016 public:
21017 virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
21018 BOOL bEnable) = 0;
21019
21020 virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0;
21021
21022 };
21023
21024
21025#else /* C style interface */
21026
21027 typedef struct ID3D12ToolsVtbl
21028 {
21029 BEGIN_INTERFACE
21030
21031 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21032 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21033 ID3D12Tools * This,
21034 REFIID riid,
21035 _COM_Outptr_ void **ppvObject);
21036
21037 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21038 ULONG ( STDMETHODCALLTYPE *AddRef )(
21039 ID3D12Tools * This);
21040
21041 DECLSPEC_XFGVIRT(IUnknown, Release)
21042 ULONG ( STDMETHODCALLTYPE *Release )(
21043 ID3D12Tools * This);
21044
21045 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
21046 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
21047 ID3D12Tools * This,
21048 BOOL bEnable);
21049
21050 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
21051 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
21052 ID3D12Tools * This);
21053
21054 END_INTERFACE
21055 } ID3D12ToolsVtbl;
21056
21057 interface ID3D12Tools
21058 {
21059 CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl;
21060 };
21061
21062
21063
21064#ifdef COBJMACROS
21065
21066
21067#define ID3D12Tools_QueryInterface(This,riid,ppvObject) \
21068 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21069
21070#define ID3D12Tools_AddRef(This) \
21071 ( (This)->lpVtbl -> AddRef(This) )
21072
21073#define ID3D12Tools_Release(This) \
21074 ( (This)->lpVtbl -> Release(This) )
21075
21076
21077#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \
21078 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
21079
21080#define ID3D12Tools_ShaderInstrumentationEnabled(This) \
21081 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
21082
21083#endif /* COBJMACROS */
21084
21085
21086#endif /* C style interface */
21087
21088
21089
21090
21091#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
21092
21093
21094/* interface __MIDL_itf_d3d12_0000_0053 */
21095/* [local] */
21096
21097typedef struct D3D12_SUBRESOURCE_DATA
21098 {
21099 const void *pData;
21100 LONG_PTR RowPitch;
21101 LONG_PTR SlicePitch;
21102 } D3D12_SUBRESOURCE_DATA;
21103
21104typedef struct D3D12_MEMCPY_DEST
21105 {
21106 void *pData;
21107 SIZE_T RowPitch;
21108 SIZE_T SlicePitch;
21109 } D3D12_MEMCPY_DEST;
21110
21111#if !defined( D3D12_IGNORE_SDK_LAYERS )
21112#include "d3d12sdklayers.h"
21113#endif
21114
21115///////////////////////////////////////////////////////////////////////////
21116// D3D12CreateDevice
21117// ------------------
21118//
21119// pAdapter
21120// If NULL, D3D12CreateDevice will choose the primary adapter.
21121// If non-NULL, D3D12CreateDevice will use the provided adapter.
21122// MinimumFeatureLevel
21123// The minimum feature level required for successful device creation.
21124// riid
21125// The interface IID of the device to be returned. Expected: ID3D12Device.
21126// ppDevice
21127// Pointer to returned interface. May be NULL.
21128//
21129// Return Values
21130// Any of those documented for
21131// CreateDXGIFactory1
21132// IDXGIFactory::EnumAdapters
21133// D3D12CreateDevice
21134//
21135///////////////////////////////////////////////////////////////////////////
21136typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*,
21137 D3D_FEATURE_LEVEL,
21138 _In_ REFIID, _COM_Outptr_opt_ void** );
21139
21140HRESULT WINAPI D3D12CreateDevice(
21141 _In_opt_ IUnknown* pAdapter,
21142 D3D_FEATURE_LEVEL MinimumFeatureLevel,
21143 _In_ REFIID riid, // Expected: ID3D12Device
21144 _COM_Outptr_opt_ void** ppDevice );
21145
21146
21147typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );
21148
21149HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
21150
21151// --------------------------------------------------------------------------------------------------------------------------------
21152// D3D12EnableExperimentalFeatures
21153//
21154// Pass in a list of feature GUIDs to be enabled together.
21155//
21156// If a particular feature requires some configuration information on enablement, it will have
21157// a configuration struct that can be passed alongside the GUID.
21158//
21159// Some features might use an interface IID as the GUID. For these, once the feature is enabled via
21160// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface
21161// for manipulating the feature. This allows for control that might not cleanly be expressed by just
21162// the configuration struct that D3D12EnableExperimentalFeatures provides.
21163//
21164// If this method is called and a change to existing feature enablement is made,
21165// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one
21166// singleton device for a process. Removing the devices when configuration changes prevents
21167// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.
21168//
21169// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.
21170// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed
21171// in are known to be incompatible with each other, or other errors.
21172// Returns S_OK otherwise.
21173//
21174// --------------------------------------------------------------------------------------------------------------------------------
21175HRESULT WINAPI D3D12EnableExperimentalFeatures(
21176 UINT NumFeatures,
21177 _In_count_(NumFeatures) const IID* pIIDs,
21178 _In_opt_count_(NumFeatures) void* pConfigurationStructs,
21179 _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);
21180
21181// --------------------------------------------------------------------------------------------------------------------------------
21182// Experimental Feature: D3D12ExperimentalShaderModels
21183//
21184// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,
21185// meaning shader models that haven't been finalized for use in retail.
21186//
21187// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.
21188//
21189// --------------------------------------------------------------------------------------------------------------------------------
21190static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */
21191 0x76f5573e,
21192 0xf13a,
21193 0x40f5,
21194 { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }
21195};
21196// --------------------------------------------------------------------------------------------------------------------------------
21197// Experimental Feature: D3D12TiledResourceTier4
21198//
21199// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,
21200// meaning texture tile data-inheritance is allowed.
21201//
21202// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.
21203//
21204// --------------------------------------------------------------------------------------------------------------------------------
21205static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */
21206 0xc9c4725f,
21207 0xa81a,
21208 0x4f56,
21209 { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
21210};
21211// --------------------------------------------------------------------------------------------------------------------------------
21212// Experimental Feature: D3D12MetaCommand
21213//
21214// Use with D3D12EnableExperimentalFeatures to enable the D3D12 Meta Command.
21215//
21216// Enabling D3D12MetaCommand needs no configuration struct, pass NULL in the pConfigurationStructs array.
21217//
21218// --------------------------------------------------------------------------------------------------------------------------------
21219static const UUID D3D12MetaCommand = { /* C734C97E-8077-48C8-9FDC-D9D1DD31DD77 */
21220 0xc734c97e,
21221 0x8077,
21222 0x48c8,
21223 { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77 }
21224};
21225// --------------------------------------------------------------------------------------------------------------------------------
21226// D3D12GetInterface
21227//
21228// Retrieve Global D3D12 Interface.
21229//
21230
21231DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
21232DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
21233DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
21234DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
21235
21236typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
21237
21238HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
21239
21240
21241
21242extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0053_v0_0_c_ifspec;
21243extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0053_v0_0_s_ifspec;
21244
21245#ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
21246#define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
21247
21248/* interface ID3D12SDKConfiguration */
21249/* [unique][local][object][uuid] */
21250
21251
21252EXTERN_C const IID IID_ID3D12SDKConfiguration;
21253
21254#if defined(__cplusplus) && !defined(CINTERFACE)
21255
21256 MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
21257 ID3D12SDKConfiguration : public IUnknown
21258 {
21259 public:
21260 virtual HRESULT STDMETHODCALLTYPE SetSDKVersion(
21261 UINT SDKVersion,
21262 _In_z_ LPCSTR SDKPath) = 0;
21263
21264 };
21265
21266
21267#else /* C style interface */
21268
21269 typedef struct ID3D12SDKConfigurationVtbl
21270 {
21271 BEGIN_INTERFACE
21272
21273 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21274 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21275 ID3D12SDKConfiguration * This,
21276 REFIID riid,
21277 _COM_Outptr_ void **ppvObject);
21278
21279 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21280 ULONG ( STDMETHODCALLTYPE *AddRef )(
21281 ID3D12SDKConfiguration * This);
21282
21283 DECLSPEC_XFGVIRT(IUnknown, Release)
21284 ULONG ( STDMETHODCALLTYPE *Release )(
21285 ID3D12SDKConfiguration * This);
21286
21287 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
21288 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
21289 ID3D12SDKConfiguration * This,
21290 UINT SDKVersion,
21291 _In_z_ LPCSTR SDKPath);
21292
21293 END_INTERFACE
21294 } ID3D12SDKConfigurationVtbl;
21295
21296 interface ID3D12SDKConfiguration
21297 {
21298 CONST_VTBL struct ID3D12SDKConfigurationVtbl *lpVtbl;
21299 };
21300
21301
21302
21303#ifdef COBJMACROS
21304
21305
21306#define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject) \
21307 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21308
21309#define ID3D12SDKConfiguration_AddRef(This) \
21310 ( (This)->lpVtbl -> AddRef(This) )
21311
21312#define ID3D12SDKConfiguration_Release(This) \
21313 ( (This)->lpVtbl -> Release(This) )
21314
21315
21316#define ID3D12SDKConfiguration_SetSDKVersion(This,SDKVersion,SDKPath) \
21317 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
21318
21319#endif /* COBJMACROS */
21320
21321
21322#endif /* C style interface */
21323
21324
21325
21326
21327#endif /* __ID3D12SDKConfiguration_INTERFACE_DEFINED__ */
21328
21329
21330/* interface __MIDL_itf_d3d12_0000_0054 */
21331/* [local] */
21332
21333typedef
21334enum D3D12_AXIS_SHADING_RATE
21335 {
21336 D3D12_AXIS_SHADING_RATE_1X = 0,
21337 D3D12_AXIS_SHADING_RATE_2X = 0x1,
21338 D3D12_AXIS_SHADING_RATE_4X = 0x2
21339 } D3D12_AXIS_SHADING_RATE;
21340
21341#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2
21342#define D3D12_SHADING_RATE_VALID_MASK 3
21343#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))
21344#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)
21345#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)
21346typedef
21347enum D3D12_SHADING_RATE
21348 {
21349 D3D12_SHADING_RATE_1X1 = 0,
21350 D3D12_SHADING_RATE_1X2 = 0x1,
21351 D3D12_SHADING_RATE_2X1 = 0x4,
21352 D3D12_SHADING_RATE_2X2 = 0x5,
21353 D3D12_SHADING_RATE_2X4 = 0x6,
21354 D3D12_SHADING_RATE_4X2 = 0x9,
21355 D3D12_SHADING_RATE_4X4 = 0xa
21356 } D3D12_SHADING_RATE;
21357
21358typedef
21359enum D3D12_SHADING_RATE_COMBINER
21360 {
21361 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
21362 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
21363 D3D12_SHADING_RATE_COMBINER_MIN = 2,
21364 D3D12_SHADING_RATE_COMBINER_MAX = 3,
21365 D3D12_SHADING_RATE_COMBINER_SUM = 4
21366 } D3D12_SHADING_RATE_COMBINER;
21367
21368
21369
21370extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_c_ifspec;
21371extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_s_ifspec;
21372
21373#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
21374#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
21375
21376/* interface ID3D12GraphicsCommandList5 */
21377/* [unique][local][object][uuid] */
21378
21379
21380EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
21381
21382#if defined(__cplusplus) && !defined(CINTERFACE)
21383
21384 MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
21385 ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4
21386 {
21387 public:
21388 virtual void STDMETHODCALLTYPE RSSetShadingRate(
21389 _In_ D3D12_SHADING_RATE baseShadingRate,
21390 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners) = 0;
21391
21392 virtual void STDMETHODCALLTYPE RSSetShadingRateImage(
21393 _In_opt_ ID3D12Resource *shadingRateImage) = 0;
21394
21395 };
21396
21397
21398#else /* C style interface */
21399
21400 typedef struct ID3D12GraphicsCommandList5Vtbl
21401 {
21402 BEGIN_INTERFACE
21403
21404 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21405 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21406 ID3D12GraphicsCommandList5 * This,
21407 REFIID riid,
21408 _COM_Outptr_ void **ppvObject);
21409
21410 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21411 ULONG ( STDMETHODCALLTYPE *AddRef )(
21412 ID3D12GraphicsCommandList5 * This);
21413
21414 DECLSPEC_XFGVIRT(IUnknown, Release)
21415 ULONG ( STDMETHODCALLTYPE *Release )(
21416 ID3D12GraphicsCommandList5 * This);
21417
21418 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
21419 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
21420 ID3D12GraphicsCommandList5 * This,
21421 _In_ REFGUID guid,
21422 _Inout_ UINT *pDataSize,
21423 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
21424
21425 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
21426 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
21427 ID3D12GraphicsCommandList5 * This,
21428 _In_ REFGUID guid,
21429 _In_ UINT DataSize,
21430 _In_reads_bytes_opt_( DataSize ) const void *pData);
21431
21432 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
21433 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
21434 ID3D12GraphicsCommandList5 * This,
21435 _In_ REFGUID guid,
21436 _In_opt_ const IUnknown *pData);
21437
21438 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
21439 HRESULT ( STDMETHODCALLTYPE *SetName )(
21440 ID3D12GraphicsCommandList5 * This,
21441 _In_z_ LPCWSTR Name);
21442
21443 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
21444 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
21445 ID3D12GraphicsCommandList5 * This,
21446 REFIID riid,
21447 _COM_Outptr_opt_ void **ppvDevice);
21448
21449 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
21450 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
21451 ID3D12GraphicsCommandList5 * This);
21452
21453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
21454 HRESULT ( STDMETHODCALLTYPE *Close )(
21455 ID3D12GraphicsCommandList5 * This);
21456
21457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
21458 HRESULT ( STDMETHODCALLTYPE *Reset )(
21459 ID3D12GraphicsCommandList5 * This,
21460 _In_ ID3D12CommandAllocator *pAllocator,
21461 _In_opt_ ID3D12PipelineState *pInitialState);
21462
21463 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
21464 void ( STDMETHODCALLTYPE *ClearState )(
21465 ID3D12GraphicsCommandList5 * This,
21466 _In_opt_ ID3D12PipelineState *pPipelineState);
21467
21468 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
21469 void ( STDMETHODCALLTYPE *DrawInstanced )(
21470 ID3D12GraphicsCommandList5 * This,
21471 _In_ UINT VertexCountPerInstance,
21472 _In_ UINT InstanceCount,
21473 _In_ UINT StartVertexLocation,
21474 _In_ UINT StartInstanceLocation);
21475
21476 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
21477 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
21478 ID3D12GraphicsCommandList5 * This,
21479 _In_ UINT IndexCountPerInstance,
21480 _In_ UINT InstanceCount,
21481 _In_ UINT StartIndexLocation,
21482 _In_ INT BaseVertexLocation,
21483 _In_ UINT StartInstanceLocation);
21484
21485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
21486 void ( STDMETHODCALLTYPE *Dispatch )(
21487 ID3D12GraphicsCommandList5 * This,
21488 _In_ UINT ThreadGroupCountX,
21489 _In_ UINT ThreadGroupCountY,
21490 _In_ UINT ThreadGroupCountZ);
21491
21492 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
21493 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
21494 ID3D12GraphicsCommandList5 * This,
21495 _In_ ID3D12Resource *pDstBuffer,
21496 UINT64 DstOffset,
21497 _In_ ID3D12Resource *pSrcBuffer,
21498 UINT64 SrcOffset,
21499 UINT64 NumBytes);
21500
21501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
21502 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
21503 ID3D12GraphicsCommandList5 * This,
21504 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
21505 UINT DstX,
21506 UINT DstY,
21507 UINT DstZ,
21508 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
21509 _In_opt_ const D3D12_BOX *pSrcBox);
21510
21511 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
21512 void ( STDMETHODCALLTYPE *CopyResource )(
21513 ID3D12GraphicsCommandList5 * This,
21514 _In_ ID3D12Resource *pDstResource,
21515 _In_ ID3D12Resource *pSrcResource);
21516
21517 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
21518 void ( STDMETHODCALLTYPE *CopyTiles )(
21519 ID3D12GraphicsCommandList5 * This,
21520 _In_ ID3D12Resource *pTiledResource,
21521 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
21522 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
21523 _In_ ID3D12Resource *pBuffer,
21524 UINT64 BufferStartOffsetInBytes,
21525 D3D12_TILE_COPY_FLAGS Flags);
21526
21527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
21528 void ( STDMETHODCALLTYPE *ResolveSubresource )(
21529 ID3D12GraphicsCommandList5 * This,
21530 _In_ ID3D12Resource *pDstResource,
21531 _In_ UINT DstSubresource,
21532 _In_ ID3D12Resource *pSrcResource,
21533 _In_ UINT SrcSubresource,
21534 _In_ DXGI_FORMAT Format);
21535
21536 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
21537 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
21538 ID3D12GraphicsCommandList5 * This,
21539 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
21540
21541 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
21542 void ( STDMETHODCALLTYPE *RSSetViewports )(
21543 ID3D12GraphicsCommandList5 * This,
21544 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
21545 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
21546
21547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
21548 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
21549 ID3D12GraphicsCommandList5 * This,
21550 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
21551 _In_reads_( NumRects) const D3D12_RECT *pRects);
21552
21553 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
21554 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
21555 ID3D12GraphicsCommandList5 * This,
21556 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
21557
21558 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
21559 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
21560 ID3D12GraphicsCommandList5 * This,
21561 _In_ UINT StencilRef);
21562
21563 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
21564 void ( STDMETHODCALLTYPE *SetPipelineState )(
21565 ID3D12GraphicsCommandList5 * This,
21566 _In_ ID3D12PipelineState *pPipelineState);
21567
21568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
21569 void ( STDMETHODCALLTYPE *ResourceBarrier )(
21570 ID3D12GraphicsCommandList5 * This,
21571 _In_ UINT NumBarriers,
21572 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
21573
21574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
21575 void ( STDMETHODCALLTYPE *ExecuteBundle )(
21576 ID3D12GraphicsCommandList5 * This,
21577 _In_ ID3D12GraphicsCommandList *pCommandList);
21578
21579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
21580 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
21581 ID3D12GraphicsCommandList5 * This,
21582 _In_ UINT NumDescriptorHeaps,
21583 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
21584
21585 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
21586 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
21587 ID3D12GraphicsCommandList5 * This,
21588 _In_opt_ ID3D12RootSignature *pRootSignature);
21589
21590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
21591 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
21592 ID3D12GraphicsCommandList5 * This,
21593 _In_opt_ ID3D12RootSignature *pRootSignature);
21594
21595 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
21596 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
21597 ID3D12GraphicsCommandList5 * This,
21598 _In_ UINT RootParameterIndex,
21599 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21600
21601 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
21602 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
21603 ID3D12GraphicsCommandList5 * This,
21604 _In_ UINT RootParameterIndex,
21605 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21606
21607 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
21608 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
21609 ID3D12GraphicsCommandList5 * This,
21610 _In_ UINT RootParameterIndex,
21611 _In_ UINT SrcData,
21612 _In_ UINT DestOffsetIn32BitValues);
21613
21614 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
21615 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
21616 ID3D12GraphicsCommandList5 * This,
21617 _In_ UINT RootParameterIndex,
21618 _In_ UINT SrcData,
21619 _In_ UINT DestOffsetIn32BitValues);
21620
21621 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
21622 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
21623 ID3D12GraphicsCommandList5 * This,
21624 _In_ UINT RootParameterIndex,
21625 _In_ UINT Num32BitValuesToSet,
21626 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21627 _In_ UINT DestOffsetIn32BitValues);
21628
21629 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
21630 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
21631 ID3D12GraphicsCommandList5 * This,
21632 _In_ UINT RootParameterIndex,
21633 _In_ UINT Num32BitValuesToSet,
21634 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21635 _In_ UINT DestOffsetIn32BitValues);
21636
21637 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
21638 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
21639 ID3D12GraphicsCommandList5 * This,
21640 _In_ UINT RootParameterIndex,
21641 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21642
21643 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
21644 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
21645 ID3D12GraphicsCommandList5 * This,
21646 _In_ UINT RootParameterIndex,
21647 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21648
21649 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
21650 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
21651 ID3D12GraphicsCommandList5 * This,
21652 _In_ UINT RootParameterIndex,
21653 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21654
21655 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
21656 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
21657 ID3D12GraphicsCommandList5 * This,
21658 _In_ UINT RootParameterIndex,
21659 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21660
21661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
21662 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
21663 ID3D12GraphicsCommandList5 * This,
21664 _In_ UINT RootParameterIndex,
21665 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21666
21667 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
21668 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
21669 ID3D12GraphicsCommandList5 * This,
21670 _In_ UINT RootParameterIndex,
21671 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21672
21673 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
21674 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
21675 ID3D12GraphicsCommandList5 * This,
21676 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
21677
21678 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
21679 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
21680 ID3D12GraphicsCommandList5 * This,
21681 _In_ UINT StartSlot,
21682 _In_ UINT NumViews,
21683 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
21684
21685 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
21686 void ( STDMETHODCALLTYPE *SOSetTargets )(
21687 ID3D12GraphicsCommandList5 * This,
21688 _In_ UINT StartSlot,
21689 _In_ UINT NumViews,
21690 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
21691
21692 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
21693 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
21694 ID3D12GraphicsCommandList5 * This,
21695 _In_ UINT NumRenderTargetDescriptors,
21696 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
21697 _In_ BOOL RTsSingleHandleToDescriptorRange,
21698 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
21699
21700 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
21701 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
21702 ID3D12GraphicsCommandList5 * This,
21703 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
21704 _In_ D3D12_CLEAR_FLAGS ClearFlags,
21705 _In_ FLOAT Depth,
21706 _In_ UINT8 Stencil,
21707 _In_ UINT NumRects,
21708 _In_reads_(NumRects) const D3D12_RECT *pRects);
21709
21710 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
21711 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
21712 ID3D12GraphicsCommandList5 * This,
21713 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
21714 _In_ const FLOAT ColorRGBA[ 4 ],
21715 _In_ UINT NumRects,
21716 _In_reads_(NumRects) const D3D12_RECT *pRects);
21717
21718 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
21719 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
21720 ID3D12GraphicsCommandList5 * This,
21721 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21722 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21723 _In_ ID3D12Resource *pResource,
21724 _In_ const UINT Values[ 4 ],
21725 _In_ UINT NumRects,
21726 _In_reads_(NumRects) const D3D12_RECT *pRects);
21727
21728 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
21729 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
21730 ID3D12GraphicsCommandList5 * This,
21731 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21732 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21733 _In_ ID3D12Resource *pResource,
21734 _In_ const FLOAT Values[ 4 ],
21735 _In_ UINT NumRects,
21736 _In_reads_(NumRects) const D3D12_RECT *pRects);
21737
21738 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
21739 void ( STDMETHODCALLTYPE *DiscardResource )(
21740 ID3D12GraphicsCommandList5 * This,
21741 _In_ ID3D12Resource *pResource,
21742 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
21743
21744 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
21745 void ( STDMETHODCALLTYPE *BeginQuery )(
21746 ID3D12GraphicsCommandList5 * This,
21747 _In_ ID3D12QueryHeap *pQueryHeap,
21748 _In_ D3D12_QUERY_TYPE Type,
21749 _In_ UINT Index);
21750
21751 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
21752 void ( STDMETHODCALLTYPE *EndQuery )(
21753 ID3D12GraphicsCommandList5 * This,
21754 _In_ ID3D12QueryHeap *pQueryHeap,
21755 _In_ D3D12_QUERY_TYPE Type,
21756 _In_ UINT Index);
21757
21758 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
21759 void ( STDMETHODCALLTYPE *ResolveQueryData )(
21760 ID3D12GraphicsCommandList5 * This,
21761 _In_ ID3D12QueryHeap *pQueryHeap,
21762 _In_ D3D12_QUERY_TYPE Type,
21763 _In_ UINT StartIndex,
21764 _In_ UINT NumQueries,
21765 _In_ ID3D12Resource *pDestinationBuffer,
21766 _In_ UINT64 AlignedDestinationBufferOffset);
21767
21768 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
21769 void ( STDMETHODCALLTYPE *SetPredication )(
21770 ID3D12GraphicsCommandList5 * This,
21771 _In_opt_ ID3D12Resource *pBuffer,
21772 _In_ UINT64 AlignedBufferOffset,
21773 _In_ D3D12_PREDICATION_OP Operation);
21774
21775 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
21776 void ( STDMETHODCALLTYPE *SetMarker )(
21777 ID3D12GraphicsCommandList5 * This,
21778 UINT Metadata,
21779 _In_reads_bytes_opt_(Size) const void *pData,
21780 UINT Size);
21781
21782 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
21783 void ( STDMETHODCALLTYPE *BeginEvent )(
21784 ID3D12GraphicsCommandList5 * This,
21785 UINT Metadata,
21786 _In_reads_bytes_opt_(Size) const void *pData,
21787 UINT Size);
21788
21789 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
21790 void ( STDMETHODCALLTYPE *EndEvent )(
21791 ID3D12GraphicsCommandList5 * This);
21792
21793 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
21794 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
21795 ID3D12GraphicsCommandList5 * This,
21796 _In_ ID3D12CommandSignature *pCommandSignature,
21797 _In_ UINT MaxCommandCount,
21798 _In_ ID3D12Resource *pArgumentBuffer,
21799 _In_ UINT64 ArgumentBufferOffset,
21800 _In_opt_ ID3D12Resource *pCountBuffer,
21801 _In_ UINT64 CountBufferOffset);
21802
21803 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
21804 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
21805 ID3D12GraphicsCommandList5 * This,
21806 _In_ ID3D12Resource *pDstBuffer,
21807 UINT64 DstOffset,
21808 _In_ ID3D12Resource *pSrcBuffer,
21809 UINT64 SrcOffset,
21810 UINT Dependencies,
21811 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21812 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21813
21814 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
21815 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
21816 ID3D12GraphicsCommandList5 * This,
21817 _In_ ID3D12Resource *pDstBuffer,
21818 UINT64 DstOffset,
21819 _In_ ID3D12Resource *pSrcBuffer,
21820 UINT64 SrcOffset,
21821 UINT Dependencies,
21822 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21823 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21824
21825 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
21826 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
21827 ID3D12GraphicsCommandList5 * This,
21828 _In_ FLOAT Min,
21829 _In_ FLOAT Max);
21830
21831 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
21832 void ( STDMETHODCALLTYPE *SetSamplePositions )(
21833 ID3D12GraphicsCommandList5 * This,
21834 _In_ UINT NumSamplesPerPixel,
21835 _In_ UINT NumPixels,
21836 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
21837
21838 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
21839 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
21840 ID3D12GraphicsCommandList5 * This,
21841 _In_ ID3D12Resource *pDstResource,
21842 _In_ UINT DstSubresource,
21843 _In_ UINT DstX,
21844 _In_ UINT DstY,
21845 _In_ ID3D12Resource *pSrcResource,
21846 _In_ UINT SrcSubresource,
21847 _In_opt_ D3D12_RECT *pSrcRect,
21848 _In_ DXGI_FORMAT Format,
21849 _In_ D3D12_RESOLVE_MODE ResolveMode);
21850
21851 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
21852 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
21853 ID3D12GraphicsCommandList5 * This,
21854 _In_ UINT Mask);
21855
21856 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
21857 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
21858 ID3D12GraphicsCommandList5 * This,
21859 UINT Count,
21860 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
21861 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
21862
21863 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
21864 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
21865 ID3D12GraphicsCommandList5 * This,
21866 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
21867
21868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
21869 void ( STDMETHODCALLTYPE *BeginRenderPass )(
21870 ID3D12GraphicsCommandList5 * This,
21871 _In_ UINT NumRenderTargets,
21872 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
21873 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
21874 D3D12_RENDER_PASS_FLAGS Flags);
21875
21876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
21877 void ( STDMETHODCALLTYPE *EndRenderPass )(
21878 ID3D12GraphicsCommandList5 * This);
21879
21880 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
21881 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
21882 ID3D12GraphicsCommandList5 * This,
21883 _In_ ID3D12MetaCommand *pMetaCommand,
21884 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
21885 _In_ SIZE_T InitializationParametersDataSizeInBytes);
21886
21887 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
21888 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
21889 ID3D12GraphicsCommandList5 * This,
21890 _In_ ID3D12MetaCommand *pMetaCommand,
21891 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
21892 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
21893
21894 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
21895 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
21896 ID3D12GraphicsCommandList5 * This,
21897 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
21898 _In_ UINT NumPostbuildInfoDescs,
21899 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
21900
21901 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
21902 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
21903 ID3D12GraphicsCommandList5 * This,
21904 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
21905 _In_ UINT NumSourceAccelerationStructures,
21906 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
21907
21908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
21909 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
21910 ID3D12GraphicsCommandList5 * This,
21911 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
21912 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
21913 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
21914
21915 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
21916 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
21917 ID3D12GraphicsCommandList5 * This,
21918 _In_ ID3D12StateObject *pStateObject);
21919
21920 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
21921 void ( STDMETHODCALLTYPE *DispatchRays )(
21922 ID3D12GraphicsCommandList5 * This,
21923 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
21924
21925 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
21926 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
21927 ID3D12GraphicsCommandList5 * This,
21928 _In_ D3D12_SHADING_RATE baseShadingRate,
21929 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
21930
21931 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
21932 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
21933 ID3D12GraphicsCommandList5 * This,
21934 _In_opt_ ID3D12Resource *shadingRateImage);
21935
21936 END_INTERFACE
21937 } ID3D12GraphicsCommandList5Vtbl;
21938
21939 interface ID3D12GraphicsCommandList5
21940 {
21941 CONST_VTBL struct ID3D12GraphicsCommandList5Vtbl *lpVtbl;
21942 };
21943
21944
21945
21946#ifdef COBJMACROS
21947
21948
21949#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) \
21950 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21951
21952#define ID3D12GraphicsCommandList5_AddRef(This) \
21953 ( (This)->lpVtbl -> AddRef(This) )
21954
21955#define ID3D12GraphicsCommandList5_Release(This) \
21956 ( (This)->lpVtbl -> Release(This) )
21957
21958
21959#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData) \
21960 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21961
21962#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData) \
21963 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21964
21965#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData) \
21966 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21967
21968#define ID3D12GraphicsCommandList5_SetName(This,Name) \
21969 ( (This)->lpVtbl -> SetName(This,Name) )
21970
21971
21972#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice) \
21973 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21974
21975
21976#define ID3D12GraphicsCommandList5_GetType(This) \
21977 ( (This)->lpVtbl -> GetType(This) )
21978
21979
21980#define ID3D12GraphicsCommandList5_Close(This) \
21981 ( (This)->lpVtbl -> Close(This) )
21982
21983#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState) \
21984 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
21985
21986#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState) \
21987 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
21988
21989#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
21990 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
21991
21992#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
21993 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
21994
21995#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
21996 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
21997
21998#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
21999 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22000
22001#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22002 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22003
22004#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource) \
22005 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22006
22007#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22008 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22009
22010#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22011 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22012
22013#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology) \
22014 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22015
22016#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports) \
22017 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22018
22019#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects) \
22020 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22021
22022#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor) \
22023 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22024
22025#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef) \
22026 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22027
22028#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState) \
22029 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22030
22031#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers) \
22032 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22033
22034#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList) \
22035 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22036
22037#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22038 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22039
22040#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature) \
22041 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22042
22043#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature) \
22044 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22045
22046#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22047 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22048
22049#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22050 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22051
22052#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22053 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22054
22055#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22056 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22057
22058#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22059 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22060
22061#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22062 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22063
22064#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22065 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22066
22067#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22068 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22069
22070#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22071 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22072
22073#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22074 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22075
22076#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22077 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22078
22079#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22080 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22081
22082#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView) \
22083 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22084
22085#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22086 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22087
22088#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews) \
22089 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22090
22091#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22092 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22093
22094#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22095 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22096
22097#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22098 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22099
22100#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22101 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22102
22103#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22104 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22105
22106#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion) \
22107 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22108
22109#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index) \
22110 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22111
22112#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index) \
22113 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22114
22115#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22116 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22117
22118#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22119 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22120
22121#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size) \
22122 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22123
22124#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size) \
22125 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22126
22127#define ID3D12GraphicsCommandList5_EndEvent(This) \
22128 ( (This)->lpVtbl -> EndEvent(This) )
22129
22130#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22131 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22132
22133
22134#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22135 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22136
22137#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22138 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22139
22140#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max) \
22141 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22142
22143#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22144 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22145
22146#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
22147 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
22148
22149#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask) \
22150 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
22151
22152
22153#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes) \
22154 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
22155
22156
22157#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession) \
22158 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
22159
22160
22161#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
22162 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
22163
22164#define ID3D12GraphicsCommandList5_EndRenderPass(This) \
22165 ( (This)->lpVtbl -> EndRenderPass(This) )
22166
22167#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
22168 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
22169
22170#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
22171 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
22172
22173#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
22174 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
22175
22176#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
22177 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
22178
22179#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
22180 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
22181
22182#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject) \
22183 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
22184
22185#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc) \
22186 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
22187
22188
22189#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners) \
22190 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
22191
22192#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage) \
22193 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
22194
22195#endif /* COBJMACROS */
22196
22197
22198#endif /* C style interface */
22199
22200
22201
22202
22203#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
22204
22205
22206/* interface __MIDL_itf_d3d12_0000_0055 */
22207/* [local] */
22208
22209typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
22210 {
22211 UINT ThreadGroupCountX;
22212 UINT ThreadGroupCountY;
22213 UINT ThreadGroupCountZ;
22214 } D3D12_DISPATCH_MESH_ARGUMENTS;
22215
22216
22217
22218extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_c_ifspec;
22219extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_s_ifspec;
22220
22221#ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
22222#define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
22223
22224/* interface ID3D12GraphicsCommandList6 */
22225/* [unique][local][object][uuid] */
22226
22227
22228EXTERN_C const IID IID_ID3D12GraphicsCommandList6;
22229
22230#if defined(__cplusplus) && !defined(CINTERFACE)
22231
22232 MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
22233 ID3D12GraphicsCommandList6 : public ID3D12GraphicsCommandList5
22234 {
22235 public:
22236 virtual void STDMETHODCALLTYPE DispatchMesh(
22237 _In_ UINT ThreadGroupCountX,
22238 _In_ UINT ThreadGroupCountY,
22239 _In_ UINT ThreadGroupCountZ) = 0;
22240
22241 };
22242
22243
22244#else /* C style interface */
22245
22246 typedef struct ID3D12GraphicsCommandList6Vtbl
22247 {
22248 BEGIN_INTERFACE
22249
22250 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
22251 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
22252 ID3D12GraphicsCommandList6 * This,
22253 REFIID riid,
22254 _COM_Outptr_ void **ppvObject);
22255
22256 DECLSPEC_XFGVIRT(IUnknown, AddRef)
22257 ULONG ( STDMETHODCALLTYPE *AddRef )(
22258 ID3D12GraphicsCommandList6 * This);
22259
22260 DECLSPEC_XFGVIRT(IUnknown, Release)
22261 ULONG ( STDMETHODCALLTYPE *Release )(
22262 ID3D12GraphicsCommandList6 * This);
22263
22264 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
22265 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
22266 ID3D12GraphicsCommandList6 * This,
22267 _In_ REFGUID guid,
22268 _Inout_ UINT *pDataSize,
22269 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
22270
22271 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
22272 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
22273 ID3D12GraphicsCommandList6 * This,
22274 _In_ REFGUID guid,
22275 _In_ UINT DataSize,
22276 _In_reads_bytes_opt_( DataSize ) const void *pData);
22277
22278 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
22279 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
22280 ID3D12GraphicsCommandList6 * This,
22281 _In_ REFGUID guid,
22282 _In_opt_ const IUnknown *pData);
22283
22284 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
22285 HRESULT ( STDMETHODCALLTYPE *SetName )(
22286 ID3D12GraphicsCommandList6 * This,
22287 _In_z_ LPCWSTR Name);
22288
22289 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
22290 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
22291 ID3D12GraphicsCommandList6 * This,
22292 REFIID riid,
22293 _COM_Outptr_opt_ void **ppvDevice);
22294
22295 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
22296 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
22297 ID3D12GraphicsCommandList6 * This);
22298
22299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
22300 HRESULT ( STDMETHODCALLTYPE *Close )(
22301 ID3D12GraphicsCommandList6 * This);
22302
22303 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
22304 HRESULT ( STDMETHODCALLTYPE *Reset )(
22305 ID3D12GraphicsCommandList6 * This,
22306 _In_ ID3D12CommandAllocator *pAllocator,
22307 _In_opt_ ID3D12PipelineState *pInitialState);
22308
22309 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
22310 void ( STDMETHODCALLTYPE *ClearState )(
22311 ID3D12GraphicsCommandList6 * This,
22312 _In_opt_ ID3D12PipelineState *pPipelineState);
22313
22314 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
22315 void ( STDMETHODCALLTYPE *DrawInstanced )(
22316 ID3D12GraphicsCommandList6 * This,
22317 _In_ UINT VertexCountPerInstance,
22318 _In_ UINT InstanceCount,
22319 _In_ UINT StartVertexLocation,
22320 _In_ UINT StartInstanceLocation);
22321
22322 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
22323 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
22324 ID3D12GraphicsCommandList6 * This,
22325 _In_ UINT IndexCountPerInstance,
22326 _In_ UINT InstanceCount,
22327 _In_ UINT StartIndexLocation,
22328 _In_ INT BaseVertexLocation,
22329 _In_ UINT StartInstanceLocation);
22330
22331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
22332 void ( STDMETHODCALLTYPE *Dispatch )(
22333 ID3D12GraphicsCommandList6 * This,
22334 _In_ UINT ThreadGroupCountX,
22335 _In_ UINT ThreadGroupCountY,
22336 _In_ UINT ThreadGroupCountZ);
22337
22338 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
22339 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
22340 ID3D12GraphicsCommandList6 * This,
22341 _In_ ID3D12Resource *pDstBuffer,
22342 UINT64 DstOffset,
22343 _In_ ID3D12Resource *pSrcBuffer,
22344 UINT64 SrcOffset,
22345 UINT64 NumBytes);
22346
22347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
22348 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
22349 ID3D12GraphicsCommandList6 * This,
22350 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
22351 UINT DstX,
22352 UINT DstY,
22353 UINT DstZ,
22354 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
22355 _In_opt_ const D3D12_BOX *pSrcBox);
22356
22357 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
22358 void ( STDMETHODCALLTYPE *CopyResource )(
22359 ID3D12GraphicsCommandList6 * This,
22360 _In_ ID3D12Resource *pDstResource,
22361 _In_ ID3D12Resource *pSrcResource);
22362
22363 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
22364 void ( STDMETHODCALLTYPE *CopyTiles )(
22365 ID3D12GraphicsCommandList6 * This,
22366 _In_ ID3D12Resource *pTiledResource,
22367 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
22368 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
22369 _In_ ID3D12Resource *pBuffer,
22370 UINT64 BufferStartOffsetInBytes,
22371 D3D12_TILE_COPY_FLAGS Flags);
22372
22373 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
22374 void ( STDMETHODCALLTYPE *ResolveSubresource )(
22375 ID3D12GraphicsCommandList6 * This,
22376 _In_ ID3D12Resource *pDstResource,
22377 _In_ UINT DstSubresource,
22378 _In_ ID3D12Resource *pSrcResource,
22379 _In_ UINT SrcSubresource,
22380 _In_ DXGI_FORMAT Format);
22381
22382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
22383 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
22384 ID3D12GraphicsCommandList6 * This,
22385 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
22386
22387 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
22388 void ( STDMETHODCALLTYPE *RSSetViewports )(
22389 ID3D12GraphicsCommandList6 * This,
22390 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
22391 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
22392
22393 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
22394 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
22395 ID3D12GraphicsCommandList6 * This,
22396 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
22397 _In_reads_( NumRects) const D3D12_RECT *pRects);
22398
22399 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
22400 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
22401 ID3D12GraphicsCommandList6 * This,
22402 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
22403
22404 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
22405 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
22406 ID3D12GraphicsCommandList6 * This,
22407 _In_ UINT StencilRef);
22408
22409 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
22410 void ( STDMETHODCALLTYPE *SetPipelineState )(
22411 ID3D12GraphicsCommandList6 * This,
22412 _In_ ID3D12PipelineState *pPipelineState);
22413
22414 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
22415 void ( STDMETHODCALLTYPE *ResourceBarrier )(
22416 ID3D12GraphicsCommandList6 * This,
22417 _In_ UINT NumBarriers,
22418 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
22419
22420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
22421 void ( STDMETHODCALLTYPE *ExecuteBundle )(
22422 ID3D12GraphicsCommandList6 * This,
22423 _In_ ID3D12GraphicsCommandList *pCommandList);
22424
22425 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
22426 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
22427 ID3D12GraphicsCommandList6 * This,
22428 _In_ UINT NumDescriptorHeaps,
22429 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
22430
22431 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
22432 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
22433 ID3D12GraphicsCommandList6 * This,
22434 _In_opt_ ID3D12RootSignature *pRootSignature);
22435
22436 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
22437 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
22438 ID3D12GraphicsCommandList6 * This,
22439 _In_opt_ ID3D12RootSignature *pRootSignature);
22440
22441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
22442 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
22443 ID3D12GraphicsCommandList6 * This,
22444 _In_ UINT RootParameterIndex,
22445 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22446
22447 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
22448 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
22449 ID3D12GraphicsCommandList6 * This,
22450 _In_ UINT RootParameterIndex,
22451 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22452
22453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
22454 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
22455 ID3D12GraphicsCommandList6 * This,
22456 _In_ UINT RootParameterIndex,
22457 _In_ UINT SrcData,
22458 _In_ UINT DestOffsetIn32BitValues);
22459
22460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
22461 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
22462 ID3D12GraphicsCommandList6 * This,
22463 _In_ UINT RootParameterIndex,
22464 _In_ UINT SrcData,
22465 _In_ UINT DestOffsetIn32BitValues);
22466
22467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
22468 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
22469 ID3D12GraphicsCommandList6 * This,
22470 _In_ UINT RootParameterIndex,
22471 _In_ UINT Num32BitValuesToSet,
22472 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22473 _In_ UINT DestOffsetIn32BitValues);
22474
22475 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
22476 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
22477 ID3D12GraphicsCommandList6 * This,
22478 _In_ UINT RootParameterIndex,
22479 _In_ UINT Num32BitValuesToSet,
22480 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22481 _In_ UINT DestOffsetIn32BitValues);
22482
22483 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
22484 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
22485 ID3D12GraphicsCommandList6 * This,
22486 _In_ UINT RootParameterIndex,
22487 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22488
22489 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
22490 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
22491 ID3D12GraphicsCommandList6 * This,
22492 _In_ UINT RootParameterIndex,
22493 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22494
22495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
22496 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
22497 ID3D12GraphicsCommandList6 * This,
22498 _In_ UINT RootParameterIndex,
22499 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22500
22501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
22502 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
22503 ID3D12GraphicsCommandList6 * This,
22504 _In_ UINT RootParameterIndex,
22505 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22506
22507 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
22508 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
22509 ID3D12GraphicsCommandList6 * This,
22510 _In_ UINT RootParameterIndex,
22511 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22512
22513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
22514 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
22515 ID3D12GraphicsCommandList6 * This,
22516 _In_ UINT RootParameterIndex,
22517 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22518
22519 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
22520 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
22521 ID3D12GraphicsCommandList6 * This,
22522 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
22523
22524 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
22525 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
22526 ID3D12GraphicsCommandList6 * This,
22527 _In_ UINT StartSlot,
22528 _In_ UINT NumViews,
22529 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
22530
22531 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
22532 void ( STDMETHODCALLTYPE *SOSetTargets )(
22533 ID3D12GraphicsCommandList6 * This,
22534 _In_ UINT StartSlot,
22535 _In_ UINT NumViews,
22536 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
22537
22538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
22539 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
22540 ID3D12GraphicsCommandList6 * This,
22541 _In_ UINT NumRenderTargetDescriptors,
22542 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
22543 _In_ BOOL RTsSingleHandleToDescriptorRange,
22544 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
22545
22546 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
22547 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
22548 ID3D12GraphicsCommandList6 * This,
22549 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
22550 _In_ D3D12_CLEAR_FLAGS ClearFlags,
22551 _In_ FLOAT Depth,
22552 _In_ UINT8 Stencil,
22553 _In_ UINT NumRects,
22554 _In_reads_(NumRects) const D3D12_RECT *pRects);
22555
22556 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
22557 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
22558 ID3D12GraphicsCommandList6 * This,
22559 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
22560 _In_ const FLOAT ColorRGBA[ 4 ],
22561 _In_ UINT NumRects,
22562 _In_reads_(NumRects) const D3D12_RECT *pRects);
22563
22564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
22565 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
22566 ID3D12GraphicsCommandList6 * This,
22567 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22568 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22569 _In_ ID3D12Resource *pResource,
22570 _In_ const UINT Values[ 4 ],
22571 _In_ UINT NumRects,
22572 _In_reads_(NumRects) const D3D12_RECT *pRects);
22573
22574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
22575 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
22576 ID3D12GraphicsCommandList6 * This,
22577 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22578 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22579 _In_ ID3D12Resource *pResource,
22580 _In_ const FLOAT Values[ 4 ],
22581 _In_ UINT NumRects,
22582 _In_reads_(NumRects) const D3D12_RECT *pRects);
22583
22584 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
22585 void ( STDMETHODCALLTYPE *DiscardResource )(
22586 ID3D12GraphicsCommandList6 * This,
22587 _In_ ID3D12Resource *pResource,
22588 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
22589
22590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
22591 void ( STDMETHODCALLTYPE *BeginQuery )(
22592 ID3D12GraphicsCommandList6 * This,
22593 _In_ ID3D12QueryHeap *pQueryHeap,
22594 _In_ D3D12_QUERY_TYPE Type,
22595 _In_ UINT Index);
22596
22597 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
22598 void ( STDMETHODCALLTYPE *EndQuery )(
22599 ID3D12GraphicsCommandList6 * This,
22600 _In_ ID3D12QueryHeap *pQueryHeap,
22601 _In_ D3D12_QUERY_TYPE Type,
22602 _In_ UINT Index);
22603
22604 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
22605 void ( STDMETHODCALLTYPE *ResolveQueryData )(
22606 ID3D12GraphicsCommandList6 * This,
22607 _In_ ID3D12QueryHeap *pQueryHeap,
22608 _In_ D3D12_QUERY_TYPE Type,
22609 _In_ UINT StartIndex,
22610 _In_ UINT NumQueries,
22611 _In_ ID3D12Resource *pDestinationBuffer,
22612 _In_ UINT64 AlignedDestinationBufferOffset);
22613
22614 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
22615 void ( STDMETHODCALLTYPE *SetPredication )(
22616 ID3D12GraphicsCommandList6 * This,
22617 _In_opt_ ID3D12Resource *pBuffer,
22618 _In_ UINT64 AlignedBufferOffset,
22619 _In_ D3D12_PREDICATION_OP Operation);
22620
22621 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
22622 void ( STDMETHODCALLTYPE *SetMarker )(
22623 ID3D12GraphicsCommandList6 * This,
22624 UINT Metadata,
22625 _In_reads_bytes_opt_(Size) const void *pData,
22626 UINT Size);
22627
22628 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
22629 void ( STDMETHODCALLTYPE *BeginEvent )(
22630 ID3D12GraphicsCommandList6 * This,
22631 UINT Metadata,
22632 _In_reads_bytes_opt_(Size) const void *pData,
22633 UINT Size);
22634
22635 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
22636 void ( STDMETHODCALLTYPE *EndEvent )(
22637 ID3D12GraphicsCommandList6 * This);
22638
22639 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
22640 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
22641 ID3D12GraphicsCommandList6 * This,
22642 _In_ ID3D12CommandSignature *pCommandSignature,
22643 _In_ UINT MaxCommandCount,
22644 _In_ ID3D12Resource *pArgumentBuffer,
22645 _In_ UINT64 ArgumentBufferOffset,
22646 _In_opt_ ID3D12Resource *pCountBuffer,
22647 _In_ UINT64 CountBufferOffset);
22648
22649 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
22650 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
22651 ID3D12GraphicsCommandList6 * This,
22652 _In_ ID3D12Resource *pDstBuffer,
22653 UINT64 DstOffset,
22654 _In_ ID3D12Resource *pSrcBuffer,
22655 UINT64 SrcOffset,
22656 UINT Dependencies,
22657 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22658 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22659
22660 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
22661 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
22662 ID3D12GraphicsCommandList6 * This,
22663 _In_ ID3D12Resource *pDstBuffer,
22664 UINT64 DstOffset,
22665 _In_ ID3D12Resource *pSrcBuffer,
22666 UINT64 SrcOffset,
22667 UINT Dependencies,
22668 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22669 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22670
22671 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
22672 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
22673 ID3D12GraphicsCommandList6 * This,
22674 _In_ FLOAT Min,
22675 _In_ FLOAT Max);
22676
22677 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
22678 void ( STDMETHODCALLTYPE *SetSamplePositions )(
22679 ID3D12GraphicsCommandList6 * This,
22680 _In_ UINT NumSamplesPerPixel,
22681 _In_ UINT NumPixels,
22682 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
22683
22684 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
22685 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
22686 ID3D12GraphicsCommandList6 * This,
22687 _In_ ID3D12Resource *pDstResource,
22688 _In_ UINT DstSubresource,
22689 _In_ UINT DstX,
22690 _In_ UINT DstY,
22691 _In_ ID3D12Resource *pSrcResource,
22692 _In_ UINT SrcSubresource,
22693 _In_opt_ D3D12_RECT *pSrcRect,
22694 _In_ DXGI_FORMAT Format,
22695 _In_ D3D12_RESOLVE_MODE ResolveMode);
22696
22697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
22698 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
22699 ID3D12GraphicsCommandList6 * This,
22700 _In_ UINT Mask);
22701
22702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
22703 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
22704 ID3D12GraphicsCommandList6 * This,
22705 UINT Count,
22706 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
22707 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
22708
22709 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
22710 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
22711 ID3D12GraphicsCommandList6 * This,
22712 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
22713
22714 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
22715 void ( STDMETHODCALLTYPE *BeginRenderPass )(
22716 ID3D12GraphicsCommandList6 * This,
22717 _In_ UINT NumRenderTargets,
22718 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22719 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22720 D3D12_RENDER_PASS_FLAGS Flags);
22721
22722 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
22723 void ( STDMETHODCALLTYPE *EndRenderPass )(
22724 ID3D12GraphicsCommandList6 * This);
22725
22726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
22727 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
22728 ID3D12GraphicsCommandList6 * This,
22729 _In_ ID3D12MetaCommand *pMetaCommand,
22730 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22731 _In_ SIZE_T InitializationParametersDataSizeInBytes);
22732
22733 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
22734 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
22735 ID3D12GraphicsCommandList6 * This,
22736 _In_ ID3D12MetaCommand *pMetaCommand,
22737 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22738 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
22739
22740 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
22741 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
22742 ID3D12GraphicsCommandList6 * This,
22743 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22744 _In_ UINT NumPostbuildInfoDescs,
22745 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
22746
22747 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
22748 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
22749 ID3D12GraphicsCommandList6 * This,
22750 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22751 _In_ UINT NumSourceAccelerationStructures,
22752 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
22753
22754 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
22755 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
22756 ID3D12GraphicsCommandList6 * This,
22757 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22758 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22759 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
22760
22761 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
22762 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
22763 ID3D12GraphicsCommandList6 * This,
22764 _In_ ID3D12StateObject *pStateObject);
22765
22766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
22767 void ( STDMETHODCALLTYPE *DispatchRays )(
22768 ID3D12GraphicsCommandList6 * This,
22769 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
22770
22771 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
22772 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
22773 ID3D12GraphicsCommandList6 * This,
22774 _In_ D3D12_SHADING_RATE baseShadingRate,
22775 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
22776
22777 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
22778 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
22779 ID3D12GraphicsCommandList6 * This,
22780 _In_opt_ ID3D12Resource *shadingRateImage);
22781
22782 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
22783 void ( STDMETHODCALLTYPE *DispatchMesh )(
22784 ID3D12GraphicsCommandList6 * This,
22785 _In_ UINT ThreadGroupCountX,
22786 _In_ UINT ThreadGroupCountY,
22787 _In_ UINT ThreadGroupCountZ);
22788
22789 END_INTERFACE
22790 } ID3D12GraphicsCommandList6Vtbl;
22791
22792 interface ID3D12GraphicsCommandList6
22793 {
22794 CONST_VTBL struct ID3D12GraphicsCommandList6Vtbl *lpVtbl;
22795 };
22796
22797
22798
22799#ifdef COBJMACROS
22800
22801
22802#define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject) \
22803 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
22804
22805#define ID3D12GraphicsCommandList6_AddRef(This) \
22806 ( (This)->lpVtbl -> AddRef(This) )
22807
22808#define ID3D12GraphicsCommandList6_Release(This) \
22809 ( (This)->lpVtbl -> Release(This) )
22810
22811
22812#define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,pDataSize,pData) \
22813 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
22814
22815#define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,DataSize,pData) \
22816 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
22817
22818#define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,pData) \
22819 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
22820
22821#define ID3D12GraphicsCommandList6_SetName(This,Name) \
22822 ( (This)->lpVtbl -> SetName(This,Name) )
22823
22824
22825#define ID3D12GraphicsCommandList6_GetDevice(This,riid,ppvDevice) \
22826 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
22827
22828
22829#define ID3D12GraphicsCommandList6_GetType(This) \
22830 ( (This)->lpVtbl -> GetType(This) )
22831
22832
22833#define ID3D12GraphicsCommandList6_Close(This) \
22834 ( (This)->lpVtbl -> Close(This) )
22835
22836#define ID3D12GraphicsCommandList6_Reset(This,pAllocator,pInitialState) \
22837 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
22838
22839#define ID3D12GraphicsCommandList6_ClearState(This,pPipelineState) \
22840 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
22841
22842#define ID3D12GraphicsCommandList6_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
22843 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
22844
22845#define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
22846 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
22847
22848#define ID3D12GraphicsCommandList6_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
22849 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
22850
22851#define ID3D12GraphicsCommandList6_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
22852 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22853
22854#define ID3D12GraphicsCommandList6_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22855 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22856
22857#define ID3D12GraphicsCommandList6_CopyResource(This,pDstResource,pSrcResource) \
22858 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22859
22860#define ID3D12GraphicsCommandList6_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22861 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22862
22863#define ID3D12GraphicsCommandList6_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22864 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22865
22866#define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,PrimitiveTopology) \
22867 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22868
22869#define ID3D12GraphicsCommandList6_RSSetViewports(This,NumViewports,pViewports) \
22870 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22871
22872#define ID3D12GraphicsCommandList6_RSSetScissorRects(This,NumRects,pRects) \
22873 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22874
22875#define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,BlendFactor) \
22876 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22877
22878#define ID3D12GraphicsCommandList6_OMSetStencilRef(This,StencilRef) \
22879 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22880
22881#define ID3D12GraphicsCommandList6_SetPipelineState(This,pPipelineState) \
22882 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22883
22884#define ID3D12GraphicsCommandList6_ResourceBarrier(This,NumBarriers,pBarriers) \
22885 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22886
22887#define ID3D12GraphicsCommandList6_ExecuteBundle(This,pCommandList) \
22888 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22889
22890#define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22891 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22892
22893#define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,pRootSignature) \
22894 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22895
22896#define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,pRootSignature) \
22897 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22898
22899#define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22900 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22901
22902#define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22903 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22904
22905#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22906 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22907
22908#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22909 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22910
22911#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22912 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22913
22914#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22915 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22916
22917#define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22918 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22919
22920#define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22921 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22922
22923#define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22924 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22925
22926#define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22927 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22928
22929#define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22930 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22931
22932#define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22933 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22934
22935#define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,pView) \
22936 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22937
22938#define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22939 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22940
22941#define ID3D12GraphicsCommandList6_SOSetTargets(This,StartSlot,NumViews,pViews) \
22942 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22943
22944#define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22945 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22946
22947#define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22948 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22949
22950#define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22951 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22952
22953#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22954 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22955
22956#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22957 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22958
22959#define ID3D12GraphicsCommandList6_DiscardResource(This,pResource,pRegion) \
22960 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22961
22962#define ID3D12GraphicsCommandList6_BeginQuery(This,pQueryHeap,Type,Index) \
22963 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22964
22965#define ID3D12GraphicsCommandList6_EndQuery(This,pQueryHeap,Type,Index) \
22966 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22967
22968#define ID3D12GraphicsCommandList6_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22969 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22970
22971#define ID3D12GraphicsCommandList6_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22972 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22973
22974#define ID3D12GraphicsCommandList6_SetMarker(This,Metadata,pData,Size) \
22975 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22976
22977#define ID3D12GraphicsCommandList6_BeginEvent(This,Metadata,pData,Size) \
22978 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22979
22980#define ID3D12GraphicsCommandList6_EndEvent(This) \
22981 ( (This)->lpVtbl -> EndEvent(This) )
22982
22983#define ID3D12GraphicsCommandList6_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22984 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22985
22986
22987#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22988 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22989
22990#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22991 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22992
22993#define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,Min,Max) \
22994 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22995
22996#define ID3D12GraphicsCommandList6_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22997 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22998
22999#define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
23000 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
23001
23002#define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,Mask) \
23003 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
23004
23005
23006#define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,Count,pParams,pModes) \
23007 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
23008
23009
23010#define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,pProtectedResourceSession) \
23011 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
23012
23013
23014#define ID3D12GraphicsCommandList6_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
23015 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
23016
23017#define ID3D12GraphicsCommandList6_EndRenderPass(This) \
23018 ( (This)->lpVtbl -> EndRenderPass(This) )
23019
23020#define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
23021 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
23022
23023#define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
23024 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
23025
23026#define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
23027 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
23028
23029#define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
23030 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
23031
23032#define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
23033 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
23034
23035#define ID3D12GraphicsCommandList6_SetPipelineState1(This,pStateObject) \
23036 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
23037
23038#define ID3D12GraphicsCommandList6_DispatchRays(This,pDesc) \
23039 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
23040
23041
23042#define ID3D12GraphicsCommandList6_RSSetShadingRate(This,baseShadingRate,combiners) \
23043 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
23044
23045#define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shadingRateImage) \
23046 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
23047
23048
23049#define ID3D12GraphicsCommandList6_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
23050 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
23051
23052#endif /* COBJMACROS */
23053
23054
23055#endif /* C style interface */
23056
23057
23058
23059
23060#endif /* __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__ */
23061
23062
23063/* interface __MIDL_itf_d3d12_0000_0056 */
23064/* [local] */
23065
23066#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
23067#pragma endregion
23068DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);
23069DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);
23070DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);
23071DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);
23072DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);
23073DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);
23074DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);
23075DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);
23076DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);
23077DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
23078DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
23079DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
23080DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
23081DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
23082DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
23083DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);
23084DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);
23085DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
23086DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);
23087DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
23088DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
23089DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
23090DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
23091DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);
23092DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);
23093DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);
23094DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);
23095DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);
23096DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);
23097DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);
23098DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
23099DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);
23100DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);
23101DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);
23102DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);
23103DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);
23104DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);
23105DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);
23106DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);
23107DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);
23108DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);
23109DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);
23110DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);
23111DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);
23112DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);
23113DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);
23114DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);
23115DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);
23116DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);
23117DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);
23118DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);
23119DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
23120DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
23121DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
23122DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);
23123DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);
23124
23125
23126extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_c_ifspec;
23127extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_s_ifspec;
23128
23129/* Additional Prototypes for ALL interfaces */
23130
23131/* end of Additional Prototypes */
23132
23133#ifdef __cplusplus
23134}
23135#endif
23136
23137#endif
23138
23139
diff --git a/contrib/DirectX-Headers/include/directx/d3d12.idl b/contrib/DirectX-Headers/include/directx/d3d12.idl
new file mode 100644
index 0000000..838dea0
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12.idl
@@ -0,0 +1,5457 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10import "dxgicommon.idl";
11import "dxgiformat.idl";
12
13import "d3dcommon.idl";
14
15cpp_quote("#include <winapifamily.h>")
16
17#pragma region App Family
18cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
19
20// NOTE: The following constants are generated from the D3D12 hardware spec. Do not edit these values directly.
21cpp_quote( "#ifndef _D3D12_CONSTANTS" )
22cpp_quote( "#define _D3D12_CONSTANTS" )
23const UINT D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
24const UINT D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
25const UINT D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
26const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
27const UINT D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
28const UINT D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8;
29const UINT D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
30const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
31const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
32const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
33const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
34const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
35const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
36const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
37const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
38const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
39const UINT D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
40const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
41const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
42const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
43const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
44const UINT D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
45const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
46const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
47const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
48const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
49const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
50const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
51const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
52const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
53const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
54const UINT D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
55const UINT D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
56const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
57const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
58const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
59const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
60const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
61const UINT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
62const INT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
63const INT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
64const UINT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
65const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
66const UINT D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
67const UINT D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
68const UINT D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
69const UINT D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
70const UINT D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
71const UINT D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
72const UINT D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
73const UINT D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
74const UINT D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
75const UINT D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
76const UINT D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
77const UINT D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
78const UINT D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
79const UINT D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
80const UINT D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
81const UINT D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
82const UINT D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
83const UINT D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
84const UINT D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
85const UINT D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
86const UINT D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
87const UINT D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
88const UINT D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
89const UINT D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
90const UINT D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
91const UINT D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
92const UINT D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
93const UINT D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
94const UINT D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
95const UINT D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
96const UINT D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
97const UINT D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
98const UINT D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
99const UINT D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
100const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
101const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768;
102const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768;
103const UINT D3D12_CS_4_X_UAV_REGISTER_COUNT = 1;
104const UINT D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
105const UINT D3D12_CS_TGSM_REGISTER_COUNT = 8192;
106const UINT D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1;
107const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
108const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
109const UINT D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3;
110const UINT D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1;
111const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1;
112const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1;
113const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3;
114const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1;
115const UINT D3D12_CS_THREADID_REGISTER_COMPONENTS = 3;
116const UINT D3D12_CS_THREADID_REGISTER_COUNT = 1;
117const UINT D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
118const UINT D3D12_CS_THREAD_GROUP_MAX_X = 1024;
119const UINT D3D12_CS_THREAD_GROUP_MAX_Y = 1024;
120const UINT D3D12_CS_THREAD_GROUP_MAX_Z = 64;
121const UINT D3D12_CS_THREAD_GROUP_MIN_X = 1;
122const UINT D3D12_CS_THREAD_GROUP_MIN_Y = 1;
123const UINT D3D12_CS_THREAD_GROUP_MIN_Z = 1;
124const UINT D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
125cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )" )
126cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )" )
127cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )" )
128cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )" )
129cpp_quote( "#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )" )
130const UINT D3D12_DEFAULT_DEPTH_BIAS = 0;
131cpp_quote( "#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )" )
132const UINT D3D12_DEFAULT_MAX_ANISOTROPY = 16;
133cpp_quote( "#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )" )
134const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
135const UINT D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
136const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
137const UINT D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff;
138const UINT D3D12_DEFAULT_SCISSOR_ENDX = 0;
139const UINT D3D12_DEFAULT_SCISSOR_ENDY = 0;
140const UINT D3D12_DEFAULT_SCISSOR_STARTX = 0;
141const UINT D3D12_DEFAULT_SCISSOR_STARTY = 0;
142cpp_quote( "#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )" )
143const UINT D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
144const UINT D3D12_DEFAULT_STENCIL_REFERENCE = 0;
145const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
146const UINT D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
147const UINT D3D12_DEFAULT_VIEWPORT_HEIGHT = 0;
148cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )" )
149cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )" )
150const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0;
151const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0;
152const UINT D3D12_DEFAULT_VIEWPORT_WIDTH = 0;
153const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
154const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7;
155const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
156const UINT D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
157const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
158const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
159const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
160const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
161const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
162const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
163const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
164const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
165const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
166const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
167const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
168const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
169const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
170const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
171const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
172const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
173const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
174const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
175const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
176const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
177const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4;
178const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
179const UINT D3D12_DS_OUTPUT_REGISTER_COUNT = 32;
180cpp_quote( "#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )" )
181cpp_quote( "#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )" )
182cpp_quote( "#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )" )
183cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )" )
184cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )" )
185cpp_quote( "#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )" )
186cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )" )
187cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )" )
188cpp_quote( "#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )" )
189cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )" )
190cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )" )
191cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )" )
192cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )" )
193const UINT D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
194const UINT D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
195const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
196const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
197const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
198const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
199const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
200const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
201const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
202const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
203const UINT D3D12_GS_INPUT_REGISTER_COMPONENTS = 4;
204const UINT D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
205const UINT D3D12_GS_INPUT_REGISTER_COUNT = 32;
206const UINT D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2;
207const UINT D3D12_GS_INPUT_REGISTER_READ_PORTS = 1;
208const UINT D3D12_GS_INPUT_REGISTER_VERTICES = 32;
209const UINT D3D12_GS_MAX_INSTANCE_COUNT = 32;
210const UINT D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
211const UINT D3D12_GS_OUTPUT_ELEMENTS = 32;
212const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4;
213const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
214const UINT D3D12_GS_OUTPUT_REGISTER_COUNT = 32;
215const UINT D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
216const UINT D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
217const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
218const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
219const UINT D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
220const UINT D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
221const UINT D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
222const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
223const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
224const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
225const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
226const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
227const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
228const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
229const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
230const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
231const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
232const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
233const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
234const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
235const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
236const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
237const UINT D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
238cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )" )
239cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )" )
240const UINT D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
241const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
242const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
243const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
244const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
245const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
246const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
247const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
248const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
249const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
250const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
251const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128;
252const UINT D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
253const UINT D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
254const UINT D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
255const UINT D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
256const UINT D3D12_IA_INSTANCE_ID_BIT_COUNT = 32;
257const UINT D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
258const UINT D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
259const UINT D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32;
260const UINT D3D12_IA_VERTEX_ID_BIT_COUNT = 32;
261const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
262const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
263const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
264const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
265const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
266const UINT D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
267const UINT D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
268cpp_quote( "#define D3D12_LINEAR_GAMMA ( 1.0f )" )
269const UINT D3D12_MAJOR_VERSION = 12;
270cpp_quote( "#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )" )
271cpp_quote( "#define D3D12_MAX_DEPTH ( 1.0f )" )
272const UINT D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032;
273const UINT D3D12_MAX_MAXANISOTROPY = 16;
274const UINT D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
275cpp_quote( "#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )" )
276const UINT D3D12_MAX_ROOT_COST = 64;
277const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000;
278const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000;
279const UINT D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048;
280const UINT D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
281const UINT D3D12_MAX_VIEW_INSTANCE_COUNT = 4;
282const UINT D3D12_MINOR_VERSION = 0;
283cpp_quote( "#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )" )
284cpp_quote( "#define D3D12_MIN_DEPTH ( 0.0f )" )
285const UINT D3D12_MIN_MAXANISOTROPY = 0;
286cpp_quote( "#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )" )
287cpp_quote( "#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )" )
288const UINT D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
289const UINT D3D12_MIP_LOD_RANGE_BIT_COUNT = 8;
290cpp_quote( "#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )" )
291const UINT D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
292const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
293const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
294const UINT D3D12_PACKED_TILE = 0xffffffff;
295const UINT D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
296const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
297const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
298const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
299const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
300const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
301const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
302const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
303const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
304const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
305const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
306const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
307const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
308const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
309cpp_quote( "#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )" )
310const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
311const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
312const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
313const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
314const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
315const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
316const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
317const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
318const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
319cpp_quote( "#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )" )
320const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
321const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
322const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
323const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
324const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
325const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
326const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
327const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
328const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
329const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
330const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
331const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
332const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
333const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
334const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
335const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
336const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
337const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
338const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
339const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
340const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
341const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
342const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
343const UINT D3D12_REQ_MAXANISOTROPY = 16;
344const UINT D3D12_REQ_MIP_LEVELS = 15;
345const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
346const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
347const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
348const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
349cpp_quote( "#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )" )
350const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
351const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
352const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
353const UINT D3D12_REQ_SUBRESOURCES = 30720;
354const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
355const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
356const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
357const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
358const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
359const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
360const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
361const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
362const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
363const UINT D3D12_SDK_VERSION = 4;
364const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
365const UINT D3D12_SHADER_MAJOR_VERSION = 5;
366const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
367const UINT D3D12_SHADER_MAX_INTERFACES = 253;
368const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
369const UINT D3D12_SHADER_MAX_TYPES = 65535;
370const UINT D3D12_SHADER_MINOR_VERSION = 1;
371const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
372const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
373const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
374const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
375const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
376const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
377const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
378const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
379const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
380const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
381const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
382const UINT D3D12_SO_STREAM_COUNT = 4;
383const UINT D3D12_SPEC_DATE_DAY = 14;
384const UINT D3D12_SPEC_DATE_MONTH = 11;
385const UINT D3D12_SPEC_DATE_YEAR = 2014;
386cpp_quote( "#define D3D12_SPEC_VERSION ( 1.16 )" )
387cpp_quote( "#define D3D12_SRGB_GAMMA ( 2.2f )" )
388cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )" )
389cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )" )
390cpp_quote( "#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )" )
391cpp_quote( "#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )" )
392cpp_quote( "#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )" )
393cpp_quote( "#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )" )
394const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
395const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
396const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
397const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
398const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
399const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
400const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
401const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
402const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
403const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
404const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
405const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
406const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
407const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
408const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
409const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
410const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
411const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
412const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
413const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
414const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
415const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
416const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
417const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
418const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
419const UINT D3D12_UAV_SLOT_COUNT = 64;
420const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
421const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
422const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
423const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
424const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
425const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
426const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
427const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
428const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
429const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
430const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
431const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
432const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
433const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
434const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
435const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
436const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
437const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
438const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
439const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
440const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
441const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
442const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
443cpp_quote( "#endif" )
444
445
446// Forward declarations
447interface ID3D12CommandQueue;
448
449
450typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
451
452typedef enum D3D12_COMMAND_LIST_TYPE
453{
454 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
455 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
456 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
457 D3D12_COMMAND_LIST_TYPE_COPY = 3,
458 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
459 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
460 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
461
462} D3D12_COMMAND_LIST_TYPE;
463
464typedef enum D3D12_COMMAND_QUEUE_FLAGS
465{
466 D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
467 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
468} D3D12_COMMAND_QUEUE_FLAGS;
469cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS );" )
470
471typedef enum D3D12_COMMAND_QUEUE_PRIORITY
472{
473 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
474 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
475 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
476} D3D12_COMMAND_QUEUE_PRIORITY;
477
478typedef struct D3D12_COMMAND_QUEUE_DESC
479{
480 D3D12_COMMAND_LIST_TYPE Type;
481 INT Priority;
482 D3D12_COMMAND_QUEUE_FLAGS Flags;
483 UINT NodeMask;
484} D3D12_COMMAND_QUEUE_DESC;
485
486typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
487{
488 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
489 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
490 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
491 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
492 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
493} D3D12_PRIMITIVE_TOPOLOGY_TYPE;
494
495typedef enum D3D12_INPUT_CLASSIFICATION
496{
497 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
498 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
499} D3D12_INPUT_CLASSIFICATION;
500
501typedef struct D3D12_INPUT_ELEMENT_DESC
502{
503 LPCSTR SemanticName;
504 UINT SemanticIndex;
505 DXGI_FORMAT Format;
506 UINT InputSlot;
507 UINT AlignedByteOffset;
508 D3D12_INPUT_CLASSIFICATION InputSlotClass;
509 UINT InstanceDataStepRate;
510} D3D12_INPUT_ELEMENT_DESC;
511
512// Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
513typedef enum D3D12_FILL_MODE
514{
515 // 1 was POINT in D3D, unused in D3D12
516 D3D12_FILL_MODE_WIREFRAME = 2,
517 D3D12_FILL_MODE_SOLID = 3
518} D3D12_FILL_MODE;
519
520typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
521
522typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
523
524// Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
525typedef enum D3D12_CULL_MODE
526{
527 D3D12_CULL_MODE_NONE = 1,
528 D3D12_CULL_MODE_FRONT = 2,
529 D3D12_CULL_MODE_BACK = 3
530} D3D12_CULL_MODE;
531
532typedef struct D3D12_SO_DECLARATION_ENTRY
533{
534 UINT Stream;
535 LPCSTR SemanticName;
536 UINT SemanticIndex;
537 BYTE StartComponent;
538 BYTE ComponentCount;
539 BYTE OutputSlot;
540} D3D12_SO_DECLARATION_ENTRY;
541
542typedef struct D3D12_VIEWPORT
543{
544 FLOAT TopLeftX;
545 FLOAT TopLeftY;
546 FLOAT Width;
547 FLOAT Height;
548 FLOAT MinDepth;
549 FLOAT MaxDepth;
550} D3D12_VIEWPORT;
551
552
553typedef RECT D3D12_RECT;
554
555
556typedef struct D3D12_BOX
557{
558 UINT left;
559 UINT top;
560 UINT front;
561 UINT right;
562 UINT bottom;
563 UINT back;
564} D3D12_BOX;
565
566
567////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
568//
569// Depth-Stencil State
570//
571////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
572
573// Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
574typedef enum D3D12_COMPARISON_FUNC
575{
576 D3D12_COMPARISON_FUNC_NEVER = 1,
577 D3D12_COMPARISON_FUNC_LESS = 2,
578 D3D12_COMPARISON_FUNC_EQUAL = 3,
579 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
580 D3D12_COMPARISON_FUNC_GREATER = 5,
581 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
582 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
583 D3D12_COMPARISON_FUNC_ALWAYS = 8
584} D3D12_COMPARISON_FUNC;
585
586typedef enum D3D12_DEPTH_WRITE_MASK
587{
588 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
589 D3D12_DEPTH_WRITE_MASK_ALL = 1
590} D3D12_DEPTH_WRITE_MASK;
591
592// Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
593typedef enum D3D12_STENCIL_OP
594{
595 D3D12_STENCIL_OP_KEEP = 1,
596 D3D12_STENCIL_OP_ZERO = 2,
597 D3D12_STENCIL_OP_REPLACE = 3,
598 D3D12_STENCIL_OP_INCR_SAT = 4,
599 D3D12_STENCIL_OP_DECR_SAT = 5,
600 D3D12_STENCIL_OP_INVERT = 6,
601 D3D12_STENCIL_OP_INCR = 7,
602 D3D12_STENCIL_OP_DECR = 8
603} D3D12_STENCIL_OP;
604
605typedef struct D3D12_DEPTH_STENCILOP_DESC
606{
607 D3D12_STENCIL_OP StencilFailOp;
608 D3D12_STENCIL_OP StencilDepthFailOp;
609 D3D12_STENCIL_OP StencilPassOp;
610 D3D12_COMPARISON_FUNC StencilFunc;
611} D3D12_DEPTH_STENCILOP_DESC;
612
613typedef struct D3D12_DEPTH_STENCIL_DESC
614{
615 BOOL DepthEnable;
616 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
617 D3D12_COMPARISON_FUNC DepthFunc;
618 BOOL StencilEnable;
619 UINT8 StencilReadMask;
620 UINT8 StencilWriteMask;
621 D3D12_DEPTH_STENCILOP_DESC FrontFace;
622 D3D12_DEPTH_STENCILOP_DESC BackFace;
623} D3D12_DEPTH_STENCIL_DESC;
624
625typedef struct D3D12_DEPTH_STENCIL_DESC1
626{
627 BOOL DepthEnable;
628 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
629 D3D12_COMPARISON_FUNC DepthFunc;
630 BOOL StencilEnable;
631 UINT8 StencilReadMask;
632 UINT8 StencilWriteMask;
633 D3D12_DEPTH_STENCILOP_DESC FrontFace;
634 D3D12_DEPTH_STENCILOP_DESC BackFace;
635 BOOL DepthBoundsTestEnable;
636} D3D12_DEPTH_STENCIL_DESC1;
637
638
639////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
640//
641// Blend State
642//
643////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
644
645// Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
646typedef enum D3D12_BLEND
647{
648 D3D12_BLEND_ZERO = 1,
649 D3D12_BLEND_ONE = 2,
650 D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
651 D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
652 D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
653 D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
654 D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
655 D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
656 D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
657 D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
658 D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
659 // 12 reserved (was BOTHSRCALPHA)
660 // 13 reserved (was BOTHSRCALPHA)
661 D3D12_BLEND_BLEND_FACTOR = 14,
662 D3D12_BLEND_INV_BLEND_FACTOR = 15,
663 D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
664 D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
665 D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
666 D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
667} D3D12_BLEND;
668
669// Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
670typedef enum D3D12_BLEND_OP
671{
672 D3D12_BLEND_OP_ADD = 1,
673 D3D12_BLEND_OP_SUBTRACT = 2,
674 D3D12_BLEND_OP_REV_SUBTRACT = 3,
675 D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
676 D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
677} D3D12_BLEND_OP;
678
679typedef enum D3D12_COLOR_WRITE_ENABLE
680{
681 D3D12_COLOR_WRITE_ENABLE_RED = 1,
682 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
683 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
684 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
685 D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
686 D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
687} D3D12_COLOR_WRITE_ENABLE;
688
689typedef enum D3D12_LOGIC_OP
690{
691 // Operation:
692 // (s == PS output, d = RTV contents)
693 D3D12_LOGIC_OP_CLEAR = 0, // 0
694 D3D12_LOGIC_OP_SET, // 1
695 D3D12_LOGIC_OP_COPY, // s
696 D3D12_LOGIC_OP_COPY_INVERTED, // ~s
697 D3D12_LOGIC_OP_NOOP, // d
698 D3D12_LOGIC_OP_INVERT, // ~d
699 D3D12_LOGIC_OP_AND, // s & d
700 D3D12_LOGIC_OP_NAND, // ~(s & d)
701 D3D12_LOGIC_OP_OR, // s | d
702 D3D12_LOGIC_OP_NOR, // ~(s | d)
703 D3D12_LOGIC_OP_XOR, // s ^ d
704 D3D12_LOGIC_OP_EQUIV, // ~(s ^ d)
705 D3D12_LOGIC_OP_AND_REVERSE, // s & ~d
706 D3D12_LOGIC_OP_AND_INVERTED, // ~s & d
707 D3D12_LOGIC_OP_OR_REVERSE, // s | ~d
708 D3D12_LOGIC_OP_OR_INVERTED, // ~s | d
709} D3D12_LOGIC_OP;
710
711typedef struct D3D12_RENDER_TARGET_BLEND_DESC
712{
713 BOOL BlendEnable;
714 BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
715 D3D12_BLEND SrcBlend;
716 D3D12_BLEND DestBlend;
717 D3D12_BLEND_OP BlendOp;
718 D3D12_BLEND SrcBlendAlpha;
719 D3D12_BLEND DestBlendAlpha;
720 D3D12_BLEND_OP BlendOpAlpha;
721 D3D12_LOGIC_OP LogicOp; // applies to RGBA
722 UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
723} D3D12_RENDER_TARGET_BLEND_DESC;
724
725typedef struct D3D12_BLEND_DESC
726{
727 BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
728 BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
729 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
730} D3D12_BLEND_DESC;
731
732cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
733cpp_quote( " IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" )
734
735
736////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
737//
738// Rasterizer State
739//
740////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
741
742typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
743{
744 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, // Default
745 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
746} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
747
748typedef struct D3D12_RASTERIZER_DESC
749{
750 D3D12_FILL_MODE FillMode;
751 D3D12_CULL_MODE CullMode;
752 BOOL FrontCounterClockwise;
753 INT DepthBias;
754 FLOAT DepthBiasClamp;
755 FLOAT SlopeScaledDepthBias;
756 BOOL DepthClipEnable;
757 BOOL MultisampleEnable;
758 BOOL AntialiasedLineEnable;
759 UINT ForcedSampleCount;
760 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
761} D3D12_RASTERIZER_DESC;
762
763////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
764//
765// Pipeline State v1
766//
767////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
768
769[ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
770interface ID3D12RootSignature
771 : ID3D12DeviceChild
772{
773}
774
775typedef struct D3D12_SHADER_BYTECODE
776{
777 [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
778 SIZE_T BytecodeLength;
779} D3D12_SHADER_BYTECODE;
780
781typedef struct D3D12_STREAM_OUTPUT_DESC
782{
783 [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
784 UINT NumEntries;
785 [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
786 UINT NumStrides;
787 UINT RasterizedStream;
788} D3D12_STREAM_OUTPUT_DESC;
789
790typedef struct D3D12_INPUT_LAYOUT_DESC
791{
792 [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
793 UINT NumElements;
794} D3D12_INPUT_LAYOUT_DESC;
795
796typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
797{
798 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
799 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
800 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
801} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
802
803typedef struct D3D12_CACHED_PIPELINE_STATE
804{
805 [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
806 SIZE_T CachedBlobSizeInBytes;
807} D3D12_CACHED_PIPELINE_STATE;
808
809typedef enum D3D12_PIPELINE_STATE_FLAGS
810{
811 D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
812 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
813
814} D3D12_PIPELINE_STATE_FLAGS;
815cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS );" )
816
817typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
818{
819 ID3D12RootSignature* pRootSignature;
820 D3D12_SHADER_BYTECODE VS;
821 D3D12_SHADER_BYTECODE PS;
822 D3D12_SHADER_BYTECODE DS;
823 D3D12_SHADER_BYTECODE HS;
824 D3D12_SHADER_BYTECODE GS;
825 D3D12_STREAM_OUTPUT_DESC StreamOutput;
826 D3D12_BLEND_DESC BlendState;
827 UINT SampleMask;
828 D3D12_RASTERIZER_DESC RasterizerState;
829 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
830 D3D12_INPUT_LAYOUT_DESC InputLayout;
831 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
832 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
833 UINT NumRenderTargets;
834 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
835 DXGI_FORMAT DSVFormat;
836 DXGI_SAMPLE_DESC SampleDesc;
837 UINT NodeMask;
838 D3D12_CACHED_PIPELINE_STATE CachedPSO;
839 D3D12_PIPELINE_STATE_FLAGS Flags;
840} D3D12_GRAPHICS_PIPELINE_STATE_DESC;
841
842typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
843{
844 ID3D12RootSignature* pRootSignature;
845 D3D12_SHADER_BYTECODE CS;
846 UINT NodeMask;
847 D3D12_CACHED_PIPELINE_STATE CachedPSO;
848 D3D12_PIPELINE_STATE_FLAGS Flags;
849} D3D12_COMPUTE_PIPELINE_STATE_DESC;
850
851////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
852//
853// Pipeline State v2
854//
855////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
856
857struct D3D12_RT_FORMAT_ARRAY
858{
859 DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
860 UINT NumRenderTargets;
861};
862
863typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
864{
865 [annotation("_In_")] SIZE_T SizeInBytes;
866 [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
867} D3D12_PIPELINE_STATE_STREAM_DESC;
868
869typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
870{
871 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
872 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
873 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
874 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
875 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
876 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
877 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
878 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
879 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
880 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
881 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
882 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
883 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
884 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
885 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
886 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
887 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
888 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
889 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
890 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
891 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
892 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
893 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
894 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
895 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
896 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
897} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
898
899////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
900//
901// D3D12 Caps
902//
903////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
904
905typedef enum D3D12_FEATURE
906{
907 D3D12_FEATURE_D3D12_OPTIONS = 0,
908 D3D12_FEATURE_ARCHITECTURE = 1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
909 D3D12_FEATURE_FEATURE_LEVELS = 2,
910 D3D12_FEATURE_FORMAT_SUPPORT = 3,
911 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
912 D3D12_FEATURE_FORMAT_INFO = 5,
913 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
914 D3D12_FEATURE_SHADER_MODEL = 7,
915 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
916 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
917 D3D12_FEATURE_ROOT_SIGNATURE = 12,
918 D3D12_FEATURE_ARCHITECTURE1 = 16,
919 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
920 D3D12_FEATURE_SHADER_CACHE = 19,
921 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
922 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
923 D3D12_FEATURE_EXISTING_HEAPS = 22,
924 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
925 D3D12_FEATURE_SERIALIZATION = 24,
926 D3D12_FEATURE_CROSS_NODE = 25,
927 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
928 D3D12_FEATURE_DISPLAYABLE = 28,
929 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
930 D3D12_FEATURE_QUERY_META_COMMAND = 31,
931 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
932 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
933 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
934 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
935 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
936 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
937 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
938} D3D12_FEATURE;
939
940typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
941{
942 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
943 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
944 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
945} D3D12_SHADER_MIN_PRECISION_SUPPORT;
946cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT );" )
947
948typedef enum D3D12_TILED_RESOURCES_TIER
949{
950 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
951 D3D12_TILED_RESOURCES_TIER_1 = 1,
952 D3D12_TILED_RESOURCES_TIER_2 = 2,
953 D3D12_TILED_RESOURCES_TIER_3 = 3,
954 D3D12_TILED_RESOURCES_TIER_4 = 4,
955} D3D12_TILED_RESOURCES_TIER;
956
957typedef enum D3D12_RESOURCE_BINDING_TIER
958{
959 D3D12_RESOURCE_BINDING_TIER_1 = 1,
960 D3D12_RESOURCE_BINDING_TIER_2 = 2,
961 D3D12_RESOURCE_BINDING_TIER_3 = 3,
962} D3D12_RESOURCE_BINDING_TIER;
963
964typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
965 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
966 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
967 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
968 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
969} D3D12_CONSERVATIVE_RASTERIZATION_TIER;
970
971
972typedef enum D3D12_FORMAT_SUPPORT1
973{
974 D3D12_FORMAT_SUPPORT1_NONE = 0,
975 D3D12_FORMAT_SUPPORT1_BUFFER = 0x00000001,
976 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x00000002,
977 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x00000004,
978 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x00000008,
979 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x00000010,
980 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x00000020,
981 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x00000040,
982 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x00000080,
983 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x00000100,
984 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x00000200,
985 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x00000400,
986 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x00000800,
987 D3D12_FORMAT_SUPPORT1_MIP = 0x00001000,
988 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x00004000,
989 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x00008000,
990 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x00010000,
991 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x00040000,
992 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x00080000,
993 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x00100000,
994 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x00200000,
995 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x00400000,
996 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x00800000,
997 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x01000000,
998 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
999 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x04000000,
1000 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x08000000,
1001 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
1002 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
1003 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
1004} D3D12_FORMAT_SUPPORT1;
1005cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 );" )
1006
1007typedef enum D3D12_FORMAT_SUPPORT2
1008{
1009 D3D12_FORMAT_SUPPORT2_NONE = 0,
1010 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x00000001,
1011 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x00000002,
1012 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x00000004,
1013 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x00000008,
1014 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x00000010,
1015 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x00000020,
1016 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x00000040,
1017 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x00000080,
1018 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x00000100,
1019 D3D12_FORMAT_SUPPORT2_TILED = 0x00000200,
1020 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
1021 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x00008000,
1022} D3D12_FORMAT_SUPPORT2;
1023cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 );" )
1024
1025typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
1026{
1027 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
1028 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
1029} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
1030cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS );" )
1031
1032typedef enum D3D12_CROSS_NODE_SHARING_TIER
1033{
1034 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
1035 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
1036 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
1037 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
1038 D3D12_CROSS_NODE_SHARING_TIER_3 = 4,
1039} D3D12_CROSS_NODE_SHARING_TIER;
1040
1041typedef enum D3D12_RESOURCE_HEAP_TIER
1042{
1043 D3D12_RESOURCE_HEAP_TIER_1 = 1,
1044 D3D12_RESOURCE_HEAP_TIER_2 = 2,
1045} D3D12_RESOURCE_HEAP_TIER;
1046
1047typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
1048{
1049 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
1050 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
1051 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
1052} D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
1053
1054typedef enum D3D12_VIEW_INSTANCING_TIER
1055{
1056 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
1057 D3D12_VIEW_INSTANCING_TIER_1 = 1,
1058 D3D12_VIEW_INSTANCING_TIER_2 = 2,
1059 D3D12_VIEW_INSTANCING_TIER_3 = 3,
1060} D3D12_VIEW_INSTANCING_TIER;
1061
1062// D3D12_FEATURE_D3D12_OPTIONS
1063typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
1064{
1065 [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
1066 [annotation("_Out_")] BOOL OutputMergerLogicOp;
1067 [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
1068 [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
1069 [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
1070 [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
1071 [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
1072 [annotation("_Out_")] BOOL ROVsSupported;
1073 [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
1074 [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
1075 [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
1076 [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
1077 [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
1078 [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
1079 [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
1080} D3D12_FEATURE_DATA_D3D12_OPTIONS;
1081
1082// D3D12_FEATURE_D3D12_OPTIONS1
1083typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
1084{
1085 [annotation("_Out_")] BOOL WaveOps;
1086 [annotation("_Out_")] UINT WaveLaneCountMin;
1087 [annotation("_Out_")] UINT WaveLaneCountMax;
1088 [annotation("_Out_")] UINT TotalLaneCount;
1089 [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
1090 [annotation("_Out_")] BOOL Int64ShaderOps;
1091} D3D12_FEATURE_DATA_D3D12_OPTIONS1;
1092
1093// D3D12_FEATURE_D3D12_OPTIONS2
1094typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
1095{
1096 [annotation("_Out_")] BOOL DepthBoundsTestSupported;
1097 [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
1098} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
1099
1100// D3D12_FEATURE_ROOT_SIGNATURE
1101typedef enum D3D_ROOT_SIGNATURE_VERSION
1102{
1103 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
1104 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
1105 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
1106} D3D_ROOT_SIGNATURE_VERSION;
1107
1108typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
1109{
1110 [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
1111} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
1112
1113// D3D12_FEATURE_ARCHITECTURE
1114typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
1115{
1116 [annotation("_In_")] UINT NodeIndex;
1117 [annotation("_Out_")] BOOL TileBasedRenderer;
1118 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1119 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1120} D3D12_FEATURE_DATA_ARCHITECTURE;
1121
1122// D3D12_FEATURE_ARCHITECTURE1
1123typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
1124{
1125 [annotation("_In_")] UINT NodeIndex;
1126 [annotation("_Out_")] BOOL TileBasedRenderer;
1127 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1128 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1129 [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
1130} D3D12_FEATURE_DATA_ARCHITECTURE1;
1131
1132// D3D12_FEATURE_FEATURE_LEVELS
1133typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
1134{
1135 [annotation("_In_")] UINT NumFeatureLevels;
1136 [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
1137 [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
1138} D3D12_FEATURE_DATA_FEATURE_LEVELS;
1139
1140// D3D_SHADER_MODEL
1141typedef enum D3D_SHADER_MODEL
1142{
1143 D3D_SHADER_MODEL_5_1 = 0x51,
1144 D3D_SHADER_MODEL_6_0 = 0x60,
1145 D3D_SHADER_MODEL_6_1 = 0x61,
1146 D3D_SHADER_MODEL_6_2 = 0x62,
1147 D3D_SHADER_MODEL_6_3 = 0x63,
1148 D3D_SHADER_MODEL_6_4 = 0x64,
1149 D3D_SHADER_MODEL_6_5 = 0x65,
1150 D3D_SHADER_MODEL_6_6 = 0x66,
1151 D3D_SHADER_MODEL_6_7 = 0x67,
1152} D3D_SHADER_MODEL;
1153
1154typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
1155{
1156 [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
1157} D3D12_FEATURE_DATA_SHADER_MODEL;
1158
1159// D3D12_FEATURE_FORMAT_SUPPORT
1160typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
1161{
1162 [annotation("_In_")] DXGI_FORMAT Format;
1163 [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
1164 [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
1165} D3D12_FEATURE_DATA_FORMAT_SUPPORT;
1166
1167// D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
1168typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
1169{
1170 [annotation("_In_")] DXGI_FORMAT Format;
1171 [annotation("_In_")] UINT SampleCount;
1172 [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
1173 [annotation("_Out_")] UINT NumQualityLevels;
1174} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
1175
1176// D3D12_FEATURE_FORMAT_INFO
1177typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
1178{
1179 DXGI_FORMAT Format;
1180 UINT8 PlaneCount;
1181} D3D12_FEATURE_DATA_FORMAT_INFO;
1182
1183// D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
1184typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
1185{
1186 UINT MaxGPUVirtualAddressBitsPerResource;
1187 UINT MaxGPUVirtualAddressBitsPerProcess;
1188} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
1189
1190
1191typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
1192{
1193 D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
1194 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, // Always supported
1195 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
1196 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
1197 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
1198 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
1199 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
1200 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
1201} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
1202cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS );" )
1203
1204// D3D12_FEATURE_SHADER_CACHE
1205typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
1206{
1207 [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
1208} D3D12_FEATURE_DATA_SHADER_CACHE;
1209
1210// D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
1211typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
1212{
1213 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
1214 [annotation("_In_")] UINT Priority;
1215 [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
1216} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
1217
1218typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
1219{
1220 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x00000000,
1221 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
1222 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
1223 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
1224 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
1225 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
1226 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
1227 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
1228
1229} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
1230cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS );")
1231
1232// D3D12_FEATURE_D3D12_OPTIONS3
1233typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
1234{
1235 [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
1236 [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
1237 [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
1238 [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
1239 [annotation("_Out_")] BOOL BarycentricsSupported;
1240} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
1241
1242// D3D12_FEATURE_EXISTING_HEAPS
1243typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
1244{
1245 [annotation("_Out_")] BOOL Supported;
1246} D3D12_FEATURE_DATA_EXISTING_HEAPS;
1247
1248typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
1249{
1250 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0,
1251 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
1252 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
1253 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_3,
1254} D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
1255
1256typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
1257{
1258 [annotation("_Out_")] BOOL DisplayableTexture;
1259 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1260} D3D12_FEATURE_DATA_DISPLAYABLE;
1261
1262// D3D12_FEATURE_D3D12_OPTIONS4
1263typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
1264{
1265 [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
1266 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1267 [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
1268} D3D12_FEATURE_DATA_D3D12_OPTIONS4;
1269
1270typedef enum D3D12_HEAP_SERIALIZATION_TIER
1271{
1272 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
1273 D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
1274} D3D12_HEAP_SERIALIZATION_TIER;
1275
1276// D3D12_FEATURE_SERIALIZATION
1277typedef struct D3D12_FEATURE_DATA_SERIALIZATION
1278{
1279 [annotation("_In_")] UINT NodeIndex;
1280 [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
1281} D3D12_FEATURE_DATA_SERIALIZATION;
1282
1283// D3D12_FEATURE_CROSS_NODE
1284typedef struct D3D12_FEATURE_DATA_CROSS_NODE
1285{
1286 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
1287 BOOL AtomicShaderInstructions;
1288} D3D12_FEATURE_DATA_CROSS_NODE;
1289
1290
1291typedef enum D3D12_RENDER_PASS_TIER
1292{
1293 D3D12_RENDER_PASS_TIER_0 = 0,
1294 D3D12_RENDER_PASS_TIER_1 = 1,
1295 D3D12_RENDER_PASS_TIER_2 = 2,
1296
1297
1298} D3D12_RENDER_PASS_TIER;
1299
1300typedef enum D3D12_RAYTRACING_TIER
1301{
1302 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
1303 D3D12_RAYTRACING_TIER_1_0 = 10,
1304 D3D12_RAYTRACING_TIER_1_1 = 11,
1305} D3D12_RAYTRACING_TIER;
1306
1307// D3D12_FEATURE_D3D12_OPTIONS5
1308typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
1309{
1310 [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
1311 [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
1312 [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
1313} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
1314
1315typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
1316{
1317 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
1318 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
1319 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
1320} D3D12_VARIABLE_SHADING_RATE_TIER;
1321
1322// D3D12_FEATURE_D3D12_OPTIONS6
1323typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
1324{
1325 [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
1326 [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
1327 [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
1328 [annotation("_Out_")] UINT ShadingRateImageTileSize;
1329 [annotation("_Out_")] BOOL BackgroundProcessingSupported;
1330} D3D12_FEATURE_DATA_D3D12_OPTIONS6;
1331
1332typedef enum D3D12_MESH_SHADER_TIER
1333{
1334 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
1335 D3D12_MESH_SHADER_TIER_1 = 10,
1336} D3D12_MESH_SHADER_TIER;
1337
1338typedef enum D3D12_SAMPLER_FEEDBACK_TIER
1339{
1340 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
1341 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
1342 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
1343} D3D12_SAMPLER_FEEDBACK_TIER;
1344
1345// D3D12_FEATURE_D3D12_OPTIONS7
1346typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
1347{
1348 [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
1349 [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
1350
1351} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
1352
1353typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
1354{
1355 [annotation("_In_")] GUID CommandId;
1356 [annotation("_In_")] UINT NodeMask;
1357 [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
1358 [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
1359 [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
1360 [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
1361} D3D12_FEATURE_DATA_QUERY_META_COMMAND;
1362
1363// D3D12_FEATURE_D3D12_OPTIONS8
1364typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
1365{
1366 [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
1367} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
1368
1369typedef enum D3D12_WAVE_MMA_TIER {
1370 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
1371 D3D12_WAVE_MMA_TIER_1_0 = 10,
1372} D3D12_WAVE_MMA_TIER;
1373
1374// D3D12_FEATURE_D3D12_OPTIONS9
1375typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
1376{
1377 [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
1378 [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
1379 [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
1380 [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
1381 [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
1382 [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
1383} D3D12_FEATURE_DATA_D3D12_OPTIONS9;
1384
1385// D3D12_FEATURE_D3D12_OPTIONS10
1386typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
1387{
1388 [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
1389 [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
1390} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
1391
1392// D3D12_FEATURE_D3D12_OPTIONS11
1393typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
1394{
1395 [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
1396} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
1397
1398
1399typedef struct D3D12_RESOURCE_ALLOCATION_INFO
1400{
1401 UINT64 SizeInBytes;
1402 UINT64 Alignment;
1403} D3D12_RESOURCE_ALLOCATION_INFO;
1404
1405typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
1406{
1407 UINT64 Offset;
1408 UINT64 Alignment;
1409 UINT64 SizeInBytes;
1410} D3D12_RESOURCE_ALLOCATION_INFO1;
1411
1412typedef enum D3D12_HEAP_TYPE
1413{
1414 D3D12_HEAP_TYPE_DEFAULT = 1,
1415 D3D12_HEAP_TYPE_UPLOAD = 2,
1416 D3D12_HEAP_TYPE_READBACK = 3,
1417 D3D12_HEAP_TYPE_CUSTOM = 4,
1418} D3D12_HEAP_TYPE;
1419
1420typedef enum D3D12_CPU_PAGE_PROPERTY
1421{
1422 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
1423 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
1424 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
1425 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
1426} D3D12_CPU_PAGE_PROPERTY;
1427
1428typedef enum D3D12_MEMORY_POOL
1429{
1430 D3D12_MEMORY_POOL_UNKNOWN = 0,
1431 D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
1432 D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
1433} D3D12_MEMORY_POOL;
1434
1435typedef struct D3D12_HEAP_PROPERTIES
1436{
1437 D3D12_HEAP_TYPE Type;
1438 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
1439 D3D12_MEMORY_POOL MemoryPoolPreference;
1440 UINT CreationNodeMask;
1441 UINT VisibleNodeMask;
1442} D3D12_HEAP_PROPERTIES;
1443
1444typedef enum D3D12_HEAP_FLAGS
1445{
1446 D3D12_HEAP_FLAG_NONE = 0x0,
1447 D3D12_HEAP_FLAG_SHARED = 0x1,
1448 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
1449 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
1450 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
1451 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
1452 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
1453 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
1454 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
1455 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
1456 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
1457 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
1458
1459 // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
1460 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
1461 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
1462 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
1463 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
1464
1465
1466} D3D12_HEAP_FLAGS;
1467cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS );" )
1468
1469typedef struct D3D12_HEAP_DESC
1470{
1471 UINT64 SizeInBytes;
1472 D3D12_HEAP_PROPERTIES Properties;
1473 UINT64 Alignment;
1474 D3D12_HEAP_FLAGS Flags;
1475} D3D12_HEAP_DESC;
1476
1477typedef enum D3D12_RESOURCE_DIMENSION
1478{
1479 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
1480 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
1481 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
1482 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
1483 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
1484} D3D12_RESOURCE_DIMENSION;
1485
1486typedef enum D3D12_TEXTURE_LAYOUT
1487{
1488 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
1489 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers. Can be used with cross-adapter shared textures.
1490 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
1491 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
1492} D3D12_TEXTURE_LAYOUT;
1493
1494typedef enum D3D12_RESOURCE_FLAGS
1495{
1496 D3D12_RESOURCE_FLAG_NONE = 0x0,
1497 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
1498 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
1499 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
1500 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
1501 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
1502 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
1503 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
1504 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
1505
1506} D3D12_RESOURCE_FLAGS;
1507cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS );" )
1508
1509typedef struct D3D12_MIP_REGION
1510{
1511 UINT Width;
1512 UINT Height;
1513 UINT Depth;
1514} D3D12_MIP_REGION;
1515
1516typedef struct D3D12_RESOURCE_DESC
1517{
1518 D3D12_RESOURCE_DIMENSION Dimension;
1519 UINT64 Alignment;
1520 UINT64 Width;
1521 UINT Height;
1522 UINT16 DepthOrArraySize;
1523 UINT16 MipLevels;
1524 DXGI_FORMAT Format;
1525 DXGI_SAMPLE_DESC SampleDesc;
1526 D3D12_TEXTURE_LAYOUT Layout;
1527 D3D12_RESOURCE_FLAGS Flags;
1528} D3D12_RESOURCE_DESC;
1529
1530typedef struct D3D12_RESOURCE_DESC1
1531{
1532 D3D12_RESOURCE_DIMENSION Dimension;
1533 UINT64 Alignment;
1534 UINT64 Width;
1535 UINT Height;
1536 UINT16 DepthOrArraySize;
1537 UINT16 MipLevels;
1538 DXGI_FORMAT Format;
1539 DXGI_SAMPLE_DESC SampleDesc;
1540 D3D12_TEXTURE_LAYOUT Layout;
1541 D3D12_RESOURCE_FLAGS Flags;
1542 D3D12_MIP_REGION SamplerFeedbackMipRegion;
1543} D3D12_RESOURCE_DESC1;
1544
1545
1546typedef struct D3D12_DEPTH_STENCIL_VALUE
1547{
1548 FLOAT Depth;
1549 UINT8 Stencil;
1550} D3D12_DEPTH_STENCIL_VALUE;
1551
1552typedef struct D3D12_CLEAR_VALUE
1553{
1554 DXGI_FORMAT Format;
1555 union
1556 {
1557 FLOAT Color[4];
1558 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
1559 };
1560} D3D12_CLEAR_VALUE;
1561
1562typedef struct D3D12_RANGE
1563{
1564 SIZE_T Begin;
1565 SIZE_T End; // One past end, so (End - Begin) = Size
1566} D3D12_RANGE;
1567
1568typedef struct D3D12_RANGE_UINT64
1569{
1570 UINT64 Begin;
1571 UINT64 End; // One past end, so (End - Begin) = Size
1572} D3D12_RANGE_UINT64;
1573
1574typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
1575{
1576 UINT Subresource;
1577 D3D12_RANGE_UINT64 Range;
1578} D3D12_SUBRESOURCE_RANGE_UINT64;
1579
1580typedef struct D3D12_SUBRESOURCE_INFO
1581{
1582 UINT64 Offset;
1583 UINT RowPitch;
1584 UINT DepthPitch;
1585} D3D12_SUBRESOURCE_INFO;
1586
1587typedef struct D3D12_TILED_RESOURCE_COORDINATE
1588{
1589 UINT X;
1590 UINT Y;
1591 UINT Z;
1592 UINT Subresource;
1593} D3D12_TILED_RESOURCE_COORDINATE;
1594
1595typedef struct D3D12_TILE_REGION_SIZE
1596{
1597 UINT NumTiles;
1598 BOOL UseBox;
1599 UINT Width;
1600 UINT16 Height;
1601 UINT16 Depth;
1602} D3D12_TILE_REGION_SIZE;
1603
1604typedef enum D3D12_TILE_RANGE_FLAGS
1605{
1606 D3D12_TILE_RANGE_FLAG_NONE = 0,
1607 D3D12_TILE_RANGE_FLAG_NULL = 1,
1608 D3D12_TILE_RANGE_FLAG_SKIP = 2,
1609 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
1610
1611} D3D12_TILE_RANGE_FLAGS;
1612
1613typedef struct D3D12_SUBRESOURCE_TILING
1614{
1615 UINT WidthInTiles;
1616 UINT16 HeightInTiles;
1617 UINT16 DepthInTiles;
1618 UINT StartTileIndexInOverallResource;
1619} D3D12_SUBRESOURCE_TILING;
1620
1621typedef struct D3D12_TILE_SHAPE
1622{
1623 UINT WidthInTexels;
1624 UINT HeightInTexels;
1625 UINT DepthInTexels;
1626} D3D12_TILE_SHAPE;
1627
1628typedef struct D3D12_PACKED_MIP_INFO
1629{
1630 UINT8 NumStandardMips;
1631 UINT8 NumPackedMips;
1632 UINT NumTilesForPackedMips;
1633 UINT StartTileIndexInOverallResource;
1634} D3D12_PACKED_MIP_INFO;
1635
1636typedef enum D3D12_TILE_MAPPING_FLAGS
1637{
1638 D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
1639 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
1640} D3D12_TILE_MAPPING_FLAGS;
1641cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS );" )
1642
1643typedef enum D3D12_TILE_COPY_FLAGS
1644{
1645 D3D12_TILE_COPY_FLAG_NONE = 0x0,
1646 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
1647 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
1648 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
1649} D3D12_TILE_COPY_FLAGS;
1650cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS );")
1651
1652// Resource Barrier
1653typedef enum D3D12_RESOURCE_STATES
1654{
1655 D3D12_RESOURCE_STATE_COMMON = 0,
1656
1657 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
1658 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
1659 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
1660 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
1661 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
1662 D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
1663 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
1664 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
1665 D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
1666 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
1667 D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
1668 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
1669 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
1670 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
1671 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
1672 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
1673
1674 D3D12_RESOURCE_STATE_GENERIC_READ =
1675 /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
1676 /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/ 0x0002 |
1677 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x0040 |
1678 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x0080 |
1679 /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200 |
1680 /*D3D12_RESOURCE_STATE_COPY_SOURCE*/ 0x0800,
1681
1682 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
1683 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
1684 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x80,
1685
1686 D3D12_RESOURCE_STATE_PRESENT = 0,
1687 D3D12_RESOURCE_STATE_PREDICATION = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
1688
1689 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x00010000,
1690 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x00020000,
1691 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x00040000,
1692 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x00080000,
1693 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x00200000,
1694 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x00800000,
1695
1696} D3D12_RESOURCE_STATES;
1697cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES );" )
1698
1699typedef enum D3D12_RESOURCE_BARRIER_TYPE
1700{
1701 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
1702 D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
1703 D3D12_RESOURCE_BARRIER_TYPE_UAV,
1704} D3D12_RESOURCE_BARRIER_TYPE;
1705
1706interface ID3D12Resource;
1707
1708typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
1709{
1710 ID3D12Resource* pResource;
1711 UINT Subresource;
1712 D3D12_RESOURCE_STATES StateBefore;
1713 D3D12_RESOURCE_STATES StateAfter;
1714} D3D12_RESOURCE_TRANSITION_BARRIER;
1715
1716typedef struct D3D12_RESOURCE_ALIASING_BARRIER
1717{
1718 ID3D12Resource* pResourceBefore;
1719 ID3D12Resource* pResourceAfter;
1720} D3D12_RESOURCE_ALIASING_BARRIER;
1721
1722typedef struct D3D12_RESOURCE_UAV_BARRIER
1723{
1724 ID3D12Resource* pResource;
1725} D3D12_RESOURCE_UAV_BARRIER;
1726
1727typedef enum D3D12_RESOURCE_BARRIER_FLAGS
1728{
1729 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
1730 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
1731 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
1732} D3D12_RESOURCE_BARRIER_FLAGS;
1733cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS );" )
1734
1735typedef struct D3D12_RESOURCE_BARRIER
1736{
1737 D3D12_RESOURCE_BARRIER_TYPE Type;
1738 D3D12_RESOURCE_BARRIER_FLAGS Flags;
1739
1740 union
1741 {
1742 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
1743 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
1744 D3D12_RESOURCE_UAV_BARRIER UAV;
1745 };
1746} D3D12_RESOURCE_BARRIER;
1747
1748typedef struct D3D12_SUBRESOURCE_FOOTPRINT
1749{
1750 DXGI_FORMAT Format;
1751 UINT Width;
1752 UINT Height;
1753 UINT Depth;
1754 UINT RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
1755} D3D12_SUBRESOURCE_FOOTPRINT;
1756
1757typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
1758{
1759 UINT64 Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
1760 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
1761} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
1762
1763typedef enum D3D12_TEXTURE_COPY_TYPE
1764{
1765 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
1766 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
1767} D3D12_TEXTURE_COPY_TYPE;
1768
1769typedef struct D3D12_TEXTURE_COPY_LOCATION
1770{
1771 ID3D12Resource* pResource;
1772 D3D12_TEXTURE_COPY_TYPE Type;
1773 union
1774 {
1775 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
1776 UINT SubresourceIndex;
1777 };
1778} D3D12_TEXTURE_COPY_LOCATION;
1779
1780typedef enum D3D12_RESOLVE_MODE
1781{
1782 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
1783 D3D12_RESOLVE_MODE_MIN = 1,
1784 D3D12_RESOLVE_MODE_MAX = 2,
1785 D3D12_RESOLVE_MODE_AVERAGE = 3,
1786 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
1787 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
1788} D3D12_RESOLVE_MODE;
1789
1790typedef struct D3D12_SAMPLE_POSITION
1791{
1792 INT8 X;
1793 INT8 Y;
1794} D3D12_SAMPLE_POSITION;
1795
1796typedef struct D3D12_VIEW_INSTANCE_LOCATION
1797{
1798 UINT ViewportArrayIndex;
1799 UINT RenderTargetArrayIndex;
1800} D3D12_VIEW_INSTANCE_LOCATION;
1801
1802typedef enum D3D12_VIEW_INSTANCING_FLAGS
1803{
1804 D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
1805 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
1806} D3D12_VIEW_INSTANCING_FLAGS;
1807cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS );")
1808
1809typedef struct D3D12_VIEW_INSTANCING_DESC
1810{
1811 UINT ViewInstanceCount;
1812 [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
1813 D3D12_VIEW_INSTANCING_FLAGS Flags;
1814} D3D12_VIEW_INSTANCING_DESC;
1815
1816// D3D12 view descriptions
1817typedef enum D3D12_SHADER_COMPONENT_MAPPING
1818{
1819 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
1820 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
1821 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
1822 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
1823 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
1824 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
1825} D3D12_SHADER_COMPONENT_MAPPING;
1826
1827cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
1828cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
1829cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
1830cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
1831cpp_quote( " (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
1832cpp_quote( " (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
1833cpp_quote( " (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
1834cpp_quote( " D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
1835cpp_quote( "#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))")
1836cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
1837typedef enum D3D12_BUFFER_SRV_FLAGS
1838{
1839 D3D12_BUFFER_SRV_FLAG_NONE = 0,
1840 D3D12_BUFFER_SRV_FLAG_RAW = 0x00000001, // allow device multi-component reads with DWORD addressing
1841} D3D12_BUFFER_SRV_FLAGS;
1842cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS );" )
1843
1844typedef struct D3D12_BUFFER_SRV
1845{
1846 UINT64 FirstElement;
1847 UINT NumElements;
1848 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
1849 D3D12_BUFFER_SRV_FLAGS Flags;
1850} D3D12_BUFFER_SRV;
1851
1852typedef struct D3D12_TEX1D_SRV
1853{
1854 UINT MostDetailedMip;
1855 UINT MipLevels;
1856 FLOAT ResourceMinLODClamp;
1857} D3D12_TEX1D_SRV;
1858
1859typedef struct D3D12_TEX1D_ARRAY_SRV
1860{
1861 UINT MostDetailedMip;
1862 UINT MipLevels;
1863 UINT FirstArraySlice;
1864 UINT ArraySize;
1865 FLOAT ResourceMinLODClamp;
1866} D3D12_TEX1D_ARRAY_SRV;
1867
1868typedef struct D3D12_TEX2D_SRV
1869{
1870 UINT MostDetailedMip;
1871 UINT MipLevels;
1872 UINT PlaneSlice;
1873 FLOAT ResourceMinLODClamp;
1874} D3D12_TEX2D_SRV;
1875
1876typedef struct D3D12_TEX2D_ARRAY_SRV
1877{
1878 UINT MostDetailedMip;
1879 UINT MipLevels;
1880 UINT FirstArraySlice;
1881 UINT ArraySize;
1882 UINT PlaneSlice;
1883 FLOAT ResourceMinLODClamp;
1884} D3D12_TEX2D_ARRAY_SRV;
1885
1886typedef struct D3D12_TEX3D_SRV
1887{
1888 UINT MostDetailedMip;
1889 UINT MipLevels;
1890 FLOAT ResourceMinLODClamp;
1891} D3D12_TEX3D_SRV;
1892
1893typedef struct D3D12_TEXCUBE_SRV
1894{
1895 UINT MostDetailedMip;
1896 UINT MipLevels;
1897 FLOAT ResourceMinLODClamp;
1898} D3D12_TEXCUBE_SRV;
1899
1900typedef struct D3D12_TEXCUBE_ARRAY_SRV
1901{
1902 UINT MostDetailedMip;
1903 UINT MipLevels;
1904 UINT First2DArrayFace;
1905 UINT NumCubes;
1906 FLOAT ResourceMinLODClamp;
1907} D3D12_TEXCUBE_ARRAY_SRV;
1908
1909typedef struct D3D12_TEX2DMS_SRV
1910{
1911 // don't need to define anything specific for this view dimension
1912 UINT UnusedField_NothingToDefine;
1913} D3D12_TEX2DMS_SRV;
1914
1915typedef struct D3D12_TEX2DMS_ARRAY_SRV
1916{
1917 UINT FirstArraySlice;
1918 UINT ArraySize;
1919} D3D12_TEX2DMS_ARRAY_SRV;
1920
1921typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
1922{
1923 D3D12_GPU_VIRTUAL_ADDRESS Location;
1924} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
1925
1926typedef enum D3D12_SRV_DIMENSION {
1927 D3D12_SRV_DIMENSION_UNKNOWN = 0,
1928 D3D12_SRV_DIMENSION_BUFFER = 1,
1929 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
1930 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
1931 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
1932 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
1933 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
1934 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
1935 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
1936 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
1937 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
1938 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
1939} D3D12_SRV_DIMENSION;
1940
1941typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
1942{
1943 DXGI_FORMAT Format;
1944 D3D12_SRV_DIMENSION ViewDimension;
1945 UINT Shader4ComponentMapping;
1946
1947 union
1948 {
1949 D3D12_BUFFER_SRV Buffer;
1950 D3D12_TEX1D_SRV Texture1D;
1951 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
1952 D3D12_TEX2D_SRV Texture2D;
1953 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
1954 D3D12_TEX2DMS_SRV Texture2DMS;
1955 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
1956 D3D12_TEX3D_SRV Texture3D;
1957 D3D12_TEXCUBE_SRV TextureCube;
1958 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
1959 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
1960 };
1961} D3D12_SHADER_RESOURCE_VIEW_DESC;
1962
1963typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
1964{
1965 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
1966 UINT SizeInBytes;
1967} D3D12_CONSTANT_BUFFER_VIEW_DESC;
1968
1969////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1970//
1971// Sampler
1972//
1973////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1974typedef enum D3D12_FILTER
1975{
1976 // Bits used in defining enumeration of valid filters:
1977 // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
1978 // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
1979 // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
1980 // bit [6] - aniso
1981 // bits [8:7] - reduction type:
1982 // 0 == standard filtering
1983 // 1 == comparison
1984 // 2 == min
1985 // 3 == max
1986 // bit [31] - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
1987
1988 D3D12_FILTER_MIN_MAG_MIP_POINT = 0x00000000,
1989 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x00000001,
1990 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000004,
1991 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x00000005,
1992 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x00000010,
1993 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000011,
1994 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x00000014,
1995 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x00000015,
1996 D3D12_FILTER_ANISOTROPIC = 0x00000055,
1997 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x00000080,
1998 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x00000081,
1999 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000084,
2000 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x00000085,
2001 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x00000090,
2002 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000091,
2003 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x00000094,
2004 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x00000095,
2005 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0x000000d5,
2006 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x00000100,
2007 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000101,
2008 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000104,
2009 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000105,
2010 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000110,
2011 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000111,
2012 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000114,
2013 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x00000115,
2014 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x00000155,
2015 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x00000180,
2016 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000181,
2017 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000184,
2018 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000185,
2019 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000190,
2020 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000191,
2021 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000194,
2022 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x00000195,
2023 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x000001d5
2024} D3D12_FILTER;
2025
2026typedef enum D3D12_FILTER_TYPE
2027{
2028 D3D12_FILTER_TYPE_POINT = 0,
2029 D3D12_FILTER_TYPE_LINEAR = 1,
2030} D3D12_FILTER_TYPE;
2031
2032typedef enum D3D12_FILTER_REDUCTION_TYPE
2033{
2034 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
2035 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
2036 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
2037 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
2038} D3D12_FILTER_REDUCTION_TYPE;
2039
2040const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
2041const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
2042
2043const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
2044const UINT D3D12_MIN_FILTER_SHIFT = 4;
2045const UINT D3D12_MAG_FILTER_SHIFT = 2;
2046const UINT D3D12_MIP_FILTER_SHIFT = 0;
2047
2048const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
2049
2050// encode enum entry for most filters except anisotropic filtering
2051cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \\" )
2052cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2053cpp_quote( " ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \\" )
2054cpp_quote( " ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \\" )
2055cpp_quote( " ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \\" )
2056cpp_quote( " ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
2057
2058// encode enum entry for anisotropic filtering (with or without comparison filtering)
2059cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \\" )
2060cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2061cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2062cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2063cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2064cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2065cpp_quote( " reduction ) ) ) " )
2066
2067cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \\" )
2068cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2069cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2070
2071cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \\" )
2072cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2073cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2074
2075cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \\" )
2076cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2077cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2078
2079cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \\" )
2080cpp_quote( " ( ( D3D12_FILTER_REDUCTION_TYPE ) \\" )
2081cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
2082
2083cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \\" )
2084cpp_quote( " ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
2085
2086cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \\" )
2087cpp_quote( " ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \\" )
2088cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \\" )
2089cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \\" )
2090cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) ) " )
2091
2092typedef enum D3D12_TEXTURE_ADDRESS_MODE
2093{
2094 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
2095 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
2096 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
2097 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
2098 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
2099} D3D12_TEXTURE_ADDRESS_MODE;
2100
2101typedef struct D3D12_SAMPLER_DESC
2102{
2103 D3D12_FILTER Filter;
2104 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2105 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2106 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2107 FLOAT MipLODBias;
2108 UINT MaxAnisotropy;
2109 D3D12_COMPARISON_FUNC ComparisonFunc;
2110 FLOAT BorderColor[4]; // RGBA
2111 FLOAT MinLOD;
2112 FLOAT MaxLOD;
2113} D3D12_SAMPLER_DESC;
2114
2115typedef enum D3D12_BUFFER_UAV_FLAGS
2116{
2117 D3D12_BUFFER_UAV_FLAG_NONE = 0,
2118 D3D12_BUFFER_UAV_FLAG_RAW = 0x00000001,
2119} D3D12_BUFFER_UAV_FLAGS;
2120cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS );" )
2121
2122typedef struct D3D12_BUFFER_UAV
2123{
2124 UINT64 FirstElement;
2125 UINT NumElements;
2126 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2127 UINT64 CounterOffsetInBytes;
2128 D3D12_BUFFER_UAV_FLAGS Flags;
2129} D3D12_BUFFER_UAV;
2130
2131typedef struct D3D12_TEX1D_UAV
2132{
2133 UINT MipSlice;
2134} D3D12_TEX1D_UAV;
2135
2136typedef struct D3D12_TEX1D_ARRAY_UAV
2137{
2138 UINT MipSlice;
2139 UINT FirstArraySlice;
2140 UINT ArraySize;
2141} D3D12_TEX1D_ARRAY_UAV;
2142
2143typedef struct D3D12_TEX2D_UAV
2144{
2145 UINT MipSlice;
2146 UINT PlaneSlice;
2147} D3D12_TEX2D_UAV;
2148
2149typedef struct D3D12_TEX2D_ARRAY_UAV
2150{
2151 UINT MipSlice;
2152 UINT FirstArraySlice;
2153 UINT ArraySize;
2154 UINT PlaneSlice;
2155} D3D12_TEX2D_ARRAY_UAV;
2156
2157typedef struct D3D12_TEX3D_UAV
2158{
2159 UINT MipSlice;
2160 UINT FirstWSlice;
2161 UINT WSize;
2162} D3D12_TEX3D_UAV;
2163
2164typedef enum D3D12_UAV_DIMENSION
2165{
2166 D3D12_UAV_DIMENSION_UNKNOWN = 0,
2167 D3D12_UAV_DIMENSION_BUFFER = 1,
2168 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
2169 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
2170 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
2171 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
2172 D3D12_UAV_DIMENSION_TEXTURE3D = 8,
2173} D3D12_UAV_DIMENSION;
2174
2175typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
2176{
2177 DXGI_FORMAT Format;
2178 D3D12_UAV_DIMENSION ViewDimension;
2179
2180 union
2181 {
2182 D3D12_BUFFER_UAV Buffer;
2183 D3D12_TEX1D_UAV Texture1D;
2184 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
2185 D3D12_TEX2D_UAV Texture2D;
2186 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
2187 D3D12_TEX3D_UAV Texture3D;
2188 };
2189} D3D12_UNORDERED_ACCESS_VIEW_DESC;
2190
2191typedef struct D3D12_BUFFER_RTV
2192{
2193 UINT64 FirstElement;
2194 UINT NumElements;
2195} D3D12_BUFFER_RTV;
2196
2197typedef struct D3D12_TEX1D_RTV
2198{
2199 UINT MipSlice;
2200} D3D12_TEX1D_RTV;
2201
2202typedef struct D3D12_TEX1D_ARRAY_RTV
2203{
2204 UINT MipSlice;
2205 UINT FirstArraySlice;
2206 UINT ArraySize;
2207} D3D12_TEX1D_ARRAY_RTV;
2208
2209typedef struct D3D12_TEX2D_RTV
2210{
2211 UINT MipSlice;
2212 UINT PlaneSlice;
2213} D3D12_TEX2D_RTV;
2214
2215typedef struct D3D12_TEX2DMS_RTV
2216{
2217 UINT UnusedField_NothingToDefine;
2218} D3D12_TEX2DMS_RTV;
2219
2220typedef struct D3D12_TEX2D_ARRAY_RTV
2221{
2222 UINT MipSlice;
2223 UINT FirstArraySlice;
2224 UINT ArraySize;
2225 UINT PlaneSlice;
2226} D3D12_TEX2D_ARRAY_RTV;
2227
2228typedef struct D3D12_TEX2DMS_ARRAY_RTV
2229{
2230 UINT FirstArraySlice;
2231 UINT ArraySize;
2232} D3D12_TEX2DMS_ARRAY_RTV;
2233
2234typedef struct D3D12_TEX3D_RTV
2235{
2236 UINT MipSlice;
2237 UINT FirstWSlice;
2238 UINT WSize;
2239} D3D12_TEX3D_RTV;
2240
2241typedef enum D3D12_RTV_DIMENSION
2242{
2243 D3D12_RTV_DIMENSION_UNKNOWN = 0,
2244 D3D12_RTV_DIMENSION_BUFFER = 1,
2245 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
2246 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
2247 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
2248 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
2249 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
2250 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
2251 D3D12_RTV_DIMENSION_TEXTURE3D = 8,
2252} D3D12_RTV_DIMENSION;
2253
2254typedef struct D3D12_RENDER_TARGET_VIEW_DESC
2255{
2256 DXGI_FORMAT Format;
2257 D3D12_RTV_DIMENSION ViewDimension;
2258
2259 union
2260 {
2261 D3D12_BUFFER_RTV Buffer;
2262 D3D12_TEX1D_RTV Texture1D;
2263 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
2264 D3D12_TEX2D_RTV Texture2D;
2265 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
2266 D3D12_TEX2DMS_RTV Texture2DMS;
2267 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
2268 D3D12_TEX3D_RTV Texture3D;
2269 };
2270} D3D12_RENDER_TARGET_VIEW_DESC;
2271
2272typedef struct D3D12_TEX1D_DSV
2273{
2274 UINT MipSlice;
2275} D3D12_TEX1D_DSV;
2276
2277typedef struct D3D12_TEX1D_ARRAY_DSV
2278{
2279 UINT MipSlice;
2280 UINT FirstArraySlice;
2281 UINT ArraySize;
2282} D3D12_TEX1D_ARRAY_DSV;
2283
2284typedef struct D3D12_TEX2D_DSV
2285{
2286 UINT MipSlice;
2287} D3D12_TEX2D_DSV;
2288
2289typedef struct D3D12_TEX2D_ARRAY_DSV
2290{
2291 UINT MipSlice;
2292 UINT FirstArraySlice;
2293 UINT ArraySize;
2294} D3D12_TEX2D_ARRAY_DSV;
2295
2296typedef struct D3D12_TEX2DMS_DSV
2297{
2298 UINT UnusedField_NothingToDefine;
2299} D3D12_TEX2DMS_DSV;
2300
2301typedef struct D3D12_TEX2DMS_ARRAY_DSV
2302{
2303 UINT FirstArraySlice;
2304 UINT ArraySize;
2305} D3D12_TEX2DMS_ARRAY_DSV;
2306
2307typedef enum D3D12_DSV_FLAGS
2308{
2309 D3D12_DSV_FLAG_NONE = 0x0,
2310 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
2311 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
2312} D3D12_DSV_FLAGS;
2313cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS );" )
2314
2315typedef enum D3D12_DSV_DIMENSION
2316{
2317 D3D12_DSV_DIMENSION_UNKNOWN = 0,
2318 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
2319 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
2320 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
2321 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
2322 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
2323 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
2324} D3D12_DSV_DIMENSION;
2325
2326typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
2327{
2328 DXGI_FORMAT Format;
2329 D3D12_DSV_DIMENSION ViewDimension;
2330 D3D12_DSV_FLAGS Flags;
2331
2332 union
2333 {
2334 D3D12_TEX1D_DSV Texture1D;
2335 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
2336 D3D12_TEX2D_DSV Texture2D;
2337 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
2338 D3D12_TEX2DMS_DSV Texture2DMS;
2339 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
2340 };
2341} D3D12_DEPTH_STENCIL_VIEW_DESC;
2342
2343typedef enum D3D12_CLEAR_FLAGS
2344{
2345 // Intentionally no flag for NONE
2346 D3D12_CLEAR_FLAG_DEPTH = 0x01,
2347 D3D12_CLEAR_FLAG_STENCIL = 0x02,
2348} D3D12_CLEAR_FLAGS;
2349cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS );" )
2350
2351typedef enum D3D12_FENCE_FLAGS
2352{
2353 D3D12_FENCE_FLAG_NONE = 0x0,
2354 D3D12_FENCE_FLAG_SHARED = 0x1,
2355 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
2356 D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
2357} D3D12_FENCE_FLAGS;
2358cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS );" )
2359
2360typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
2361{
2362 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
2363 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
2364 D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
2365 D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
2366 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
2367} D3D12_DESCRIPTOR_HEAP_TYPE;
2368
2369typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
2370{
2371 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
2372 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
2373} D3D12_DESCRIPTOR_HEAP_FLAGS;
2374cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS );" )
2375
2376typedef struct D3D12_DESCRIPTOR_HEAP_DESC
2377{
2378 D3D12_DESCRIPTOR_HEAP_TYPE Type;
2379 UINT NumDescriptors;
2380 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
2381 UINT NodeMask;
2382} D3D12_DESCRIPTOR_HEAP_DESC;
2383
2384typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
2385{
2386 D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
2387 D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
2388 D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
2389 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
2390} D3D12_DESCRIPTOR_RANGE_TYPE;
2391
2392typedef struct D3D12_DESCRIPTOR_RANGE
2393{
2394 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2395 UINT NumDescriptors;
2396 UINT BaseShaderRegister;
2397 UINT RegisterSpace;
2398 UINT OffsetInDescriptorsFromTableStart;
2399} D3D12_DESCRIPTOR_RANGE;
2400
2401
2402typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
2403{
2404 UINT NumDescriptorRanges;
2405 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
2406} D3D12_ROOT_DESCRIPTOR_TABLE;
2407
2408
2409typedef struct D3D12_ROOT_CONSTANTS
2410{
2411 UINT ShaderRegister;
2412 UINT RegisterSpace;
2413 UINT Num32BitValues;
2414} D3D12_ROOT_CONSTANTS;
2415
2416typedef struct D3D12_ROOT_DESCRIPTOR
2417{
2418 UINT ShaderRegister;
2419 UINT RegisterSpace;
2420} D3D12_ROOT_DESCRIPTOR;
2421
2422typedef enum D3D12_SHADER_VISIBILITY
2423{
2424 D3D12_SHADER_VISIBILITY_ALL = 0,
2425 D3D12_SHADER_VISIBILITY_VERTEX = 1,
2426 D3D12_SHADER_VISIBILITY_HULL = 2,
2427 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
2428 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
2429 D3D12_SHADER_VISIBILITY_PIXEL = 5,
2430 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
2431 D3D12_SHADER_VISIBILITY_MESH = 7,
2432} D3D12_SHADER_VISIBILITY;
2433
2434typedef enum D3D12_ROOT_PARAMETER_TYPE
2435{
2436 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
2437 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
2438 D3D12_ROOT_PARAMETER_TYPE_CBV,
2439 D3D12_ROOT_PARAMETER_TYPE_SRV,
2440 D3D12_ROOT_PARAMETER_TYPE_UAV
2441} D3D12_ROOT_PARAMETER_TYPE;
2442
2443typedef struct D3D12_ROOT_PARAMETER
2444{
2445 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2446 union
2447 {
2448 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
2449 D3D12_ROOT_CONSTANTS Constants;
2450 D3D12_ROOT_DESCRIPTOR Descriptor;
2451 };
2452 D3D12_SHADER_VISIBILITY ShaderVisibility;
2453} D3D12_ROOT_PARAMETER;
2454
2455typedef enum D3D12_ROOT_SIGNATURE_FLAGS
2456{
2457 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
2458 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
2459 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
2460 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
2461 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
2462 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
2463 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
2464 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
2465 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
2466 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
2467 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
2468 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
2469 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800,
2470} D3D12_ROOT_SIGNATURE_FLAGS;
2471cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS );" )
2472
2473typedef enum D3D12_STATIC_BORDER_COLOR
2474{
2475 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
2476 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
2477 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
2478} D3D12_STATIC_BORDER_COLOR;
2479
2480typedef struct D3D12_STATIC_SAMPLER_DESC
2481{
2482 D3D12_FILTER Filter;
2483 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2484 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2485 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2486 FLOAT MipLODBias;
2487 UINT MaxAnisotropy;
2488 D3D12_COMPARISON_FUNC ComparisonFunc;
2489 D3D12_STATIC_BORDER_COLOR BorderColor;
2490 FLOAT MinLOD;
2491 FLOAT MaxLOD;
2492 UINT ShaderRegister;
2493 UINT RegisterSpace;
2494 D3D12_SHADER_VISIBILITY ShaderVisibility;
2495} D3D12_STATIC_SAMPLER_DESC;
2496
2497
2498typedef struct D3D12_ROOT_SIGNATURE_DESC
2499{
2500 UINT NumParameters;
2501 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
2502 UINT NumStaticSamplers;
2503 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2504 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2505} D3D12_ROOT_SIGNATURE_DESC;
2506
2507typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
2508{
2509 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
2510 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
2511 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
2512 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2513 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
2514 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
2515} D3D12_DESCRIPTOR_RANGE_FLAGS;
2516cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS );")
2517
2518typedef struct D3D12_DESCRIPTOR_RANGE1
2519{
2520 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2521 UINT NumDescriptors;
2522 UINT BaseShaderRegister;
2523 UINT RegisterSpace;
2524 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
2525 UINT OffsetInDescriptorsFromTableStart;
2526} D3D12_DESCRIPTOR_RANGE1;
2527
2528typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
2529{
2530 UINT NumDescriptorRanges;
2531 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
2532} D3D12_ROOT_DESCRIPTOR_TABLE1;
2533
2534typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
2535{
2536 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
2537 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
2538 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2539 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
2540} D3D12_ROOT_DESCRIPTOR_FLAGS;
2541cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS );")
2542
2543typedef struct D3D12_ROOT_DESCRIPTOR1
2544{
2545 UINT ShaderRegister;
2546 UINT RegisterSpace;
2547 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
2548} D3D12_ROOT_DESCRIPTOR1;
2549
2550typedef struct D3D12_ROOT_PARAMETER1
2551{
2552 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2553 union
2554 {
2555 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
2556 D3D12_ROOT_CONSTANTS Constants;
2557 D3D12_ROOT_DESCRIPTOR1 Descriptor;
2558 };
2559 D3D12_SHADER_VISIBILITY ShaderVisibility;
2560} D3D12_ROOT_PARAMETER1;
2561
2562typedef struct D3D12_ROOT_SIGNATURE_DESC1
2563{
2564 UINT NumParameters;
2565 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2566 UINT NumStaticSamplers;
2567 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2568 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2569} D3D12_ROOT_SIGNATURE_DESC1;
2570
2571
2572typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
2573{
2574 D3D_ROOT_SIGNATURE_VERSION Version;
2575 union
2576 {
2577 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
2578 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
2579 };
2580} D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
2581
2582[ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
2583interface ID3D12RootSignatureDeserializer
2584 : IUnknown
2585{
2586 const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
2587};
2588
2589[ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
2590interface ID3D12VersionedRootSignatureDeserializer
2591 : IUnknown
2592{
2593 HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
2594 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
2595};
2596
2597cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
2598cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
2599cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
2600cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2601cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2602cpp_quote( "" )
2603cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
2604cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
2605cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
2606cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2607cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2608cpp_quote( "" )
2609cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
2610cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2611cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2612cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2613cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2614cpp_quote( "" )
2615cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
2616cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2617cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2618cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2619cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2620cpp_quote( "" )
2621cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
2622cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
2623cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2624cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2625cpp_quote( "" )
2626cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
2627cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
2628cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2629cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2630cpp_quote( "" )
2631cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(" )
2632cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2633cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2634cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2635cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2636cpp_quote( "" )
2637cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
2638cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2639cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2640cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2641cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2642cpp_quote( "" )
2643
2644
2645
2646typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
2647{
2648 SIZE_T ptr;
2649} D3D12_CPU_DESCRIPTOR_HANDLE;
2650
2651
2652typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
2653{
2654 UINT64 ptr;
2655} D3D12_GPU_DESCRIPTOR_HANDLE;
2656
2657cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
2658cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
2659typedef struct D3D12_DISCARD_REGION
2660{
2661 UINT NumRects;
2662 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
2663 UINT FirstSubresource;
2664 UINT NumSubresources;
2665} D3D12_DISCARD_REGION;
2666
2667typedef enum D3D12_QUERY_HEAP_TYPE
2668{
2669 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
2670 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
2671 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
2672 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
2673 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
2674 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
2675 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7,
2676
2677} D3D12_QUERY_HEAP_TYPE;
2678
2679typedef struct D3D12_QUERY_HEAP_DESC
2680{
2681 D3D12_QUERY_HEAP_TYPE Type;
2682 UINT Count;
2683 UINT NodeMask;
2684} D3D12_QUERY_HEAP_DESC;
2685
2686typedef enum D3D12_QUERY_TYPE
2687{
2688 D3D12_QUERY_TYPE_OCCLUSION = 0,
2689 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
2690 D3D12_QUERY_TYPE_TIMESTAMP = 2,
2691 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
2692 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
2693 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
2694 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
2695 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
2696 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
2697 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10,
2698
2699} D3D12_QUERY_TYPE;
2700
2701typedef enum D3D12_PREDICATION_OP
2702{
2703 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
2704 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
2705} D3D12_PREDICATION_OP;
2706
2707typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
2708{
2709 UINT64 IAVertices;
2710 UINT64 IAPrimitives;
2711 UINT64 VSInvocations;
2712 UINT64 GSInvocations;
2713 UINT64 GSPrimitives;
2714 UINT64 CInvocations;
2715 UINT64 CPrimitives;
2716 UINT64 PSInvocations;
2717 UINT64 HSInvocations;
2718 UINT64 DSInvocations;
2719 UINT64 CSInvocations;
2720} D3D12_QUERY_DATA_PIPELINE_STATISTICS;
2721
2722typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
2723{
2724 UINT64 IAVertices;
2725 UINT64 IAPrimitives;
2726 UINT64 VSInvocations;
2727 UINT64 GSInvocations;
2728 UINT64 GSPrimitives;
2729 UINT64 CInvocations;
2730 UINT64 CPrimitives;
2731 UINT64 PSInvocations;
2732 UINT64 HSInvocations;
2733 UINT64 DSInvocations;
2734 UINT64 CSInvocations;
2735 UINT64 ASInvocations;
2736 UINT64 MSInvocations;
2737 UINT64 MSPrimitives;
2738} D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
2739
2740typedef struct D3D12_QUERY_DATA_SO_STATISTICS
2741{
2742 UINT64 NumPrimitivesWritten;
2743 UINT64 PrimitivesStorageNeeded;
2744} D3D12_QUERY_DATA_SO_STATISTICS;
2745
2746typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
2747{
2748 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2749 UINT64 SizeInBytes;
2750 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
2751} D3D12_STREAM_OUTPUT_BUFFER_VIEW;
2752
2753typedef struct D3D12_DRAW_ARGUMENTS
2754{
2755 UINT VertexCountPerInstance;
2756 UINT InstanceCount;
2757 UINT StartVertexLocation;
2758 UINT StartInstanceLocation;
2759} D3D12_DRAW_ARGUMENTS;
2760
2761typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
2762{
2763 UINT IndexCountPerInstance;
2764 UINT InstanceCount;
2765 UINT StartIndexLocation;
2766 INT BaseVertexLocation;
2767 UINT StartInstanceLocation;
2768} D3D12_DRAW_INDEXED_ARGUMENTS;
2769
2770typedef struct D3D12_DISPATCH_ARGUMENTS
2771{
2772 UINT ThreadGroupCountX;
2773 UINT ThreadGroupCountY;
2774 UINT ThreadGroupCountZ;
2775} D3D12_DISPATCH_ARGUMENTS;
2776
2777typedef struct D3D12_VERTEX_BUFFER_VIEW
2778{
2779 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2780 UINT SizeInBytes;
2781 UINT StrideInBytes;
2782} D3D12_VERTEX_BUFFER_VIEW;
2783
2784typedef struct D3D12_INDEX_BUFFER_VIEW
2785{
2786 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2787 UINT SizeInBytes;
2788 DXGI_FORMAT Format;
2789} D3D12_INDEX_BUFFER_VIEW;
2790
2791typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
2792{
2793 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
2794 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
2795 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
2796 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
2797 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
2798 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
2799 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
2800 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
2801 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
2802 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
2803 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
2804} D3D12_INDIRECT_ARGUMENT_TYPE;
2805
2806typedef struct D3D12_INDIRECT_ARGUMENT_DESC
2807{
2808 D3D12_INDIRECT_ARGUMENT_TYPE Type;
2809
2810 union
2811 {
2812 struct
2813 {
2814 UINT Slot;
2815 } VertexBuffer;
2816
2817 struct
2818 {
2819 UINT RootParameterIndex;
2820 UINT DestOffsetIn32BitValues;
2821 UINT Num32BitValuesToSet;
2822 } Constant;
2823
2824 struct
2825 {
2826 UINT RootParameterIndex;
2827 } ConstantBufferView;
2828
2829 struct
2830 {
2831 UINT RootParameterIndex;
2832 } ShaderResourceView;
2833
2834 struct
2835 {
2836 UINT RootParameterIndex;
2837 } UnorderedAccessView;
2838 };
2839} D3D12_INDIRECT_ARGUMENT_DESC;
2840
2841typedef struct D3D12_COMMAND_SIGNATURE_DESC
2842{
2843 // The number of bytes between each drawing structure
2844 UINT ByteStride;
2845 UINT NumArgumentDescs;
2846 [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
2847 UINT NodeMask;
2848} D3D12_COMMAND_SIGNATURE_DESC;
2849
2850interface ID3D12Device;
2851
2852[ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
2853interface ID3D12Object
2854 : IUnknown
2855{
2856 HRESULT GetPrivateData(
2857 [annotation("_In_")] REFGUID guid,
2858 [annotation("_Inout_")] UINT* pDataSize,
2859 [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
2860 HRESULT SetPrivateData(
2861 [annotation("_In_")] REFGUID guid,
2862 [annotation("_In_")] UINT DataSize,
2863 [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
2864 HRESULT SetPrivateDataInterface(
2865 [annotation("_In_")] REFGUID guid,
2866 [annotation("_In_opt_")] const IUnknown* pData );
2867 HRESULT SetName(
2868 [annotation("_In_z_")] LPCWSTR Name );
2869}
2870
2871[ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
2872interface ID3D12DeviceChild
2873 : ID3D12Object
2874{
2875 HRESULT GetDevice(
2876 [in] REFIID riid,
2877 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
2878 );
2879}
2880
2881[ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
2882interface ID3D12Pageable
2883 : ID3D12DeviceChild
2884{
2885}
2886
2887[ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
2888interface ID3D12Heap
2889 : ID3D12Pageable
2890{
2891 D3D12_HEAP_DESC GetDesc();
2892}
2893
2894[ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
2895interface ID3D12Resource
2896 : ID3D12Pageable
2897{
2898 HRESULT Map(
2899 UINT Subresource,
2900 [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
2901 [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
2902
2903 void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
2904
2905 D3D12_RESOURCE_DESC GetDesc();
2906
2907 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
2908
2909 HRESULT WriteToSubresource(
2910 UINT DstSubresource,
2911 [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
2912 [annotation("_In_")] const void* pSrcData,
2913 UINT SrcRowPitch,
2914 UINT SrcDepthPitch );
2915
2916 HRESULT ReadFromSubresource(
2917 [annotation("_Out_")] void* pDstData,
2918 UINT DstRowPitch,
2919 UINT DstDepthPitch,
2920 UINT SrcSubresource,
2921 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
2922
2923 HRESULT GetHeapProperties(
2924 [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
2925 [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
2926 );
2927}
2928
2929[ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
2930interface ID3D12CommandAllocator
2931 : ID3D12Pageable
2932{
2933 HRESULT Reset();
2934}
2935
2936[ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
2937interface ID3D12Fence
2938 : ID3D12Pageable
2939{
2940 UINT64 GetCompletedValue();
2941 HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
2942 HRESULT Signal(UINT64 Value);
2943};
2944
2945[ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
2946interface ID3D12Fence1
2947 : ID3D12Fence
2948{
2949 D3D12_FENCE_FLAGS GetCreationFlags();
2950};
2951
2952[ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
2953interface ID3D12PipelineState
2954 : ID3D12Pageable
2955{
2956 HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
2957}
2958
2959[ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
2960interface ID3D12DescriptorHeap
2961 : ID3D12Pageable
2962{
2963 D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
2964
2965 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
2966 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
2967}
2968
2969[ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
2970interface ID3D12QueryHeap
2971 : ID3D12Pageable
2972{
2973};
2974
2975[ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
2976interface ID3D12CommandSignature
2977 : ID3D12Pageable
2978{
2979};
2980
2981[ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
2982interface ID3D12CommandList
2983 : ID3D12DeviceChild
2984{
2985 D3D12_COMMAND_LIST_TYPE GetType();
2986}
2987
2988// Superseded by ID3D12GraphicsCommandList1
2989[ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
2990interface ID3D12GraphicsCommandList
2991 : ID3D12CommandList
2992{
2993 HRESULT Close();
2994
2995 HRESULT Reset(
2996 [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
2997 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
2998 );
2999
3000 void ClearState(
3001 [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
3002 );
3003
3004 void DrawInstanced(
3005 [annotation("_In_")] UINT VertexCountPerInstance,
3006 [annotation("_In_")] UINT InstanceCount,
3007 [annotation("_In_")] UINT StartVertexLocation,
3008 [annotation("_In_")] UINT StartInstanceLocation
3009 );
3010
3011 void DrawIndexedInstanced(
3012 [annotation("_In_")] UINT IndexCountPerInstance,
3013 [annotation("_In_")] UINT InstanceCount,
3014 [annotation("_In_")] UINT StartIndexLocation,
3015 [annotation("_In_")] INT BaseVertexLocation,
3016 [annotation("_In_")] UINT StartInstanceLocation
3017 );
3018
3019 void Dispatch(
3020 [annotation("_In_")] UINT ThreadGroupCountX,
3021 [annotation("_In_")] UINT ThreadGroupCountY,
3022 [annotation("_In_")] UINT ThreadGroupCountZ
3023 );
3024
3025 void CopyBufferRegion(
3026 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3027 UINT64 DstOffset,
3028 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3029 UINT64 SrcOffset,
3030 UINT64 NumBytes
3031 );
3032
3033 void CopyTextureRegion(
3034 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
3035 UINT DstX, UINT DstY, UINT DstZ,
3036 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
3037 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
3038 );
3039
3040 void CopyResource(
3041 [annotation("_In_")] ID3D12Resource* pDstResource,
3042 [annotation("_In_")] ID3D12Resource* pSrcResource
3043 );
3044
3045 void CopyTiles(
3046 [annotation("_In_")] ID3D12Resource* pTiledResource,
3047 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
3048 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
3049 [annotation("_In_")] ID3D12Resource* pBuffer,
3050 UINT64 BufferStartOffsetInBytes,
3051 D3D12_TILE_COPY_FLAGS Flags
3052 );
3053
3054 void ResolveSubresource(
3055 [annotation("_In_")] ID3D12Resource* pDstResource,
3056 [annotation("_In_")] UINT DstSubresource,
3057 [annotation("_In_")] ID3D12Resource* pSrcResource,
3058 [annotation("_In_")] UINT SrcSubresource,
3059 [annotation("_In_")] DXGI_FORMAT Format
3060 );
3061
3062 void IASetPrimitiveTopology(
3063 [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
3064 );
3065
3066 void RSSetViewports(
3067 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
3068 [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
3069 );
3070
3071 void RSSetScissorRects(
3072 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
3073 [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
3074 );
3075
3076 void OMSetBlendFactor(
3077 [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
3078 );
3079
3080 void OMSetStencilRef(
3081 [annotation("_In_")] UINT StencilRef
3082 );
3083
3084 void SetPipelineState(
3085 [annotation("_In_")] ID3D12PipelineState* pPipelineState
3086 );
3087
3088 void ResourceBarrier(
3089 [annotation("_In_")] UINT NumBarriers,
3090 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
3091 );
3092
3093 void ExecuteBundle(
3094 [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
3095 );
3096
3097 void SetDescriptorHeaps(
3098 [annotation("_In_")] UINT NumDescriptorHeaps,
3099 [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
3100 );
3101
3102 void SetComputeRootSignature(
3103 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3104 );
3105
3106 void SetGraphicsRootSignature(
3107 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3108 );
3109
3110 void SetComputeRootDescriptorTable(
3111 [annotation("_In_")] UINT RootParameterIndex,
3112 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3113 );
3114
3115 void SetGraphicsRootDescriptorTable(
3116 [annotation("_In_")] UINT RootParameterIndex,
3117 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3118 );
3119
3120 // Single constant
3121 void SetComputeRoot32BitConstant(
3122 [annotation("_In_")] UINT RootParameterIndex,
3123 [annotation("_In_")] UINT SrcData,
3124 [annotation("_In_")] UINT DestOffsetIn32BitValues
3125 );
3126
3127 void SetGraphicsRoot32BitConstant(
3128 [annotation("_In_")] UINT RootParameterIndex,
3129 [annotation("_In_")] UINT SrcData,
3130 [annotation("_In_")] UINT DestOffsetIn32BitValues
3131 );
3132
3133 // Group of constants
3134 void SetComputeRoot32BitConstants(
3135 [annotation("_In_")] UINT RootParameterIndex,
3136 [annotation("_In_")] UINT Num32BitValuesToSet,
3137 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3138 [annotation("_In_")] UINT DestOffsetIn32BitValues
3139 );
3140
3141 void SetGraphicsRoot32BitConstants(
3142 [annotation("_In_")] UINT RootParameterIndex,
3143 [annotation("_In_")] UINT Num32BitValuesToSet,
3144 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3145 [annotation("_In_")] UINT DestOffsetIn32BitValues
3146 );
3147
3148 // CBV
3149 void SetComputeRootConstantBufferView(
3150 [annotation("_In_")] UINT RootParameterIndex,
3151 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3152 );
3153
3154 void SetGraphicsRootConstantBufferView(
3155 [annotation("_In_")] UINT RootParameterIndex,
3156 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3157 );
3158
3159 // SRV
3160 void SetComputeRootShaderResourceView(
3161 [annotation("_In_")] UINT RootParameterIndex,
3162 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3163 );
3164
3165 void SetGraphicsRootShaderResourceView(
3166 [annotation("_In_")] UINT RootParameterIndex,
3167 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3168 );
3169
3170 // UAV
3171 void SetComputeRootUnorderedAccessView(
3172 [annotation("_In_")] UINT RootParameterIndex,
3173 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3174 );
3175
3176 void SetGraphicsRootUnorderedAccessView(
3177 [annotation("_In_")] UINT RootParameterIndex,
3178 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3179 );
3180
3181 void IASetIndexBuffer(
3182 [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
3183 );
3184
3185 void IASetVertexBuffers(
3186 [annotation("_In_")] UINT StartSlot,
3187 [annotation("_In_")] UINT NumViews,
3188 [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
3189 );
3190
3191 void SOSetTargets(
3192 [annotation("_In_")] UINT StartSlot,
3193 [annotation("_In_")] UINT NumViews,
3194 [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
3195 );
3196
3197 void OMSetRenderTargets(
3198 [annotation("_In_")] UINT NumRenderTargetDescriptors,
3199 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
3200 [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
3201 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
3202 );
3203
3204 void ClearDepthStencilView(
3205 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
3206 [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
3207 [annotation("_In_")] FLOAT Depth,
3208 [annotation("_In_")] UINT8 Stencil,
3209 [annotation("_In_")] UINT NumRects,
3210 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3211 );
3212
3213 void ClearRenderTargetView(
3214 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
3215 [annotation("_In_")] const FLOAT ColorRGBA[4],
3216 [annotation("_In_")] UINT NumRects,
3217 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3218 );
3219
3220 void ClearUnorderedAccessViewUint(
3221 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3222 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3223 [annotation("_In_")] ID3D12Resource* pResource,
3224 [annotation("_In_")] const UINT Values[4],
3225 [annotation("_In_")] UINT NumRects,
3226 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3227 );
3228
3229 void ClearUnorderedAccessViewFloat(
3230 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3231 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3232 [annotation("_In_")] ID3D12Resource* pResource,
3233 [annotation("_In_")] const FLOAT Values[4],
3234 [annotation("_In_")] UINT NumRects,
3235 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3236 );
3237
3238 void DiscardResource(
3239 [annotation("_In_")] ID3D12Resource* pResource,
3240 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
3241 );
3242
3243 void BeginQuery(
3244 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3245 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3246 [annotation("_In_")] UINT Index
3247 );
3248
3249 void EndQuery(
3250 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3251 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3252 [annotation("_In_")] UINT Index
3253 );
3254
3255 void ResolveQueryData(
3256 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3257 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3258 [annotation("_In_")] UINT StartIndex,
3259 [annotation("_In_")] UINT NumQueries,
3260 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
3261 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
3262 );
3263
3264 void SetPredication(
3265 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
3266 [annotation("_In_")] UINT64 AlignedBufferOffset,
3267 [annotation("_In_")] D3D12_PREDICATION_OP Operation
3268 );
3269
3270 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3271 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3272 void EndEvent();
3273
3274 void ExecuteIndirect(
3275 [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
3276 [annotation("_In_")] UINT MaxCommandCount,
3277 [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
3278 [annotation("_In_")] UINT64 ArgumentBufferOffset,
3279 [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
3280 [annotation("_In_")] UINT64 CountBufferOffset
3281 );
3282}
3283
3284[ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
3285interface ID3D12GraphicsCommandList1
3286 : ID3D12GraphicsCommandList
3287{
3288 void AtomicCopyBufferUINT(
3289 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3290 UINT64 DstOffset,
3291 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3292 UINT64 SrcOffset,
3293 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3294 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3295 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3296 );
3297
3298 // UINT64 is only valid on UMA architectures
3299 void AtomicCopyBufferUINT64(
3300 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3301 UINT64 DstOffset,
3302 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3303 UINT64 SrcOffset,
3304 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3305 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3306 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3307 );
3308
3309 void OMSetDepthBounds(
3310 [annotation("_In_")] FLOAT Min,
3311 [annotation("_In_")] FLOAT Max
3312 );
3313
3314 void SetSamplePositions(
3315 [annotation("_In_")] UINT NumSamplesPerPixel,
3316 [annotation("_In_")] UINT NumPixels,
3317 [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
3318 );
3319
3320 void ResolveSubresourceRegion(
3321 [annotation("_In_")] ID3D12Resource* pDstResource,
3322 [annotation("_In_")] UINT DstSubresource,
3323 [annotation("_In_")] UINT DstX,
3324 [annotation("_In_")] UINT DstY,
3325 [annotation("_In_")] ID3D12Resource* pSrcResource,
3326 [annotation("_In_")] UINT SrcSubresource,
3327 [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
3328 [annotation("_In_")] DXGI_FORMAT Format,
3329 [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
3330 );
3331
3332 void SetViewInstanceMask(
3333 [annotation("_In_")] UINT Mask
3334 );
3335
3336}
3337
3338typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
3339{
3340 D3D12_GPU_VIRTUAL_ADDRESS Dest;
3341 UINT32 Value;
3342} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
3343
3344typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
3345{
3346 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
3347 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
3348 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
3349
3350} D3D12_WRITEBUFFERIMMEDIATE_MODE;
3351
3352[uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
3353interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
3354{
3355 void WriteBufferImmediate(
3356 UINT Count,
3357 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3358 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
3359 );
3360}
3361
3362[ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
3363interface ID3D12CommandQueue
3364 : ID3D12Pageable
3365{
3366 void UpdateTileMappings(
3367 [annotation("_In_")] ID3D12Resource* pResource,
3368 UINT NumResourceRegions,
3369 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
3370 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
3371 [annotation("_In_opt_")] ID3D12Heap* pHeap,
3372 UINT NumRanges,
3373 [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
3374 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
3375 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
3376 D3D12_TILE_MAPPING_FLAGS Flags );
3377
3378 void CopyTileMappings(
3379 [annotation("_In_")] ID3D12Resource* pDstResource,
3380 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
3381 [annotation("_In_")] ID3D12Resource* pSrcResource,
3382 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
3383 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
3384 D3D12_TILE_MAPPING_FLAGS Flags );
3385
3386 void ExecuteCommandLists(
3387 [annotation("_In_")] UINT NumCommandLists,
3388 [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
3389 );
3390
3391 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3392 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3393 void EndEvent();
3394
3395 HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
3396 HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
3397
3398 HRESULT GetTimestampFrequency(
3399 [annotation("_Out_")] UINT64* pFrequency
3400 );
3401
3402 HRESULT GetClockCalibration(
3403 [annotation("_Out_")] UINT64* pGpuTimestamp,
3404 [annotation("_Out_")] UINT64* pCpuTimestamp
3405 );
3406
3407 D3D12_COMMAND_QUEUE_DESC GetDesc();
3408}
3409
3410//--------------------------------------------------------------------------------------------------------
3411// The system LUID struct isn't defined in wtypes, so we repeat it here just
3412// for the MIDL compiler.
3413cpp_quote("#ifdef __midl")
3414cpp_quote("#ifndef LUID_DEFINED")
3415cpp_quote("#define LUID_DEFINED 1")
3416typedef struct __LUID {
3417 DWORD LowPart;
3418 LONG HighPart;
3419} LUID, *PLUID;
3420cpp_quote("#endif")
3421cpp_quote("#endif")
3422
3423[ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
3424interface ID3D12Device
3425 : ID3D12Object
3426{
3427 UINT GetNodeCount();
3428
3429 HRESULT CreateCommandQueue(
3430 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
3431 [in] REFIID riid, // Expected: ID3D12CommandQueue
3432 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
3433 );
3434
3435 HRESULT CreateCommandAllocator(
3436 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3437 [in] REFIID riid, // Expected: ID3D12CommandAllocator
3438 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
3439 );
3440
3441 HRESULT CreateGraphicsPipelineState(
3442 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3443 [in] REFIID riid, // Expected: ID3D12PipelineState
3444 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3445 );
3446
3447 HRESULT CreateComputePipelineState(
3448 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3449 [in] REFIID riid, // Expected: ID3D12PipelineState
3450 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3451 );
3452
3453 HRESULT CreateCommandList(
3454 [annotation("_In_")] UINT nodeMask,
3455 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3456 [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
3457 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
3458 [in] REFIID riid, // Expected: ID3D12CommandList
3459 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3460 );
3461
3462 HRESULT CheckFeatureSupport(
3463 D3D12_FEATURE Feature,
3464 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
3465 UINT FeatureSupportDataSize
3466 );
3467
3468 HRESULT CreateDescriptorHeap(
3469 [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
3470 [in] REFIID riid, // Expected ID3D12DescriptorHeap
3471 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
3472
3473 UINT GetDescriptorHandleIncrementSize(
3474 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
3475
3476 HRESULT CreateRootSignature(
3477 [annotation("_In_")] UINT nodeMask,
3478 [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
3479 [annotation("_In_")] SIZE_T blobLengthInBytes,
3480 [in] REFIID riid, // Expected ID3D12RootSignature
3481 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3482
3483 void CreateConstantBufferView(
3484 [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
3485 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3486
3487 void CreateShaderResourceView(
3488 [annotation("_In_opt_")] ID3D12Resource* pResource,
3489 [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
3490 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3491
3492 void CreateUnorderedAccessView(
3493 [annotation("_In_opt_")] ID3D12Resource* pResource,
3494 [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
3495 [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
3496 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3497
3498 void CreateRenderTargetView(
3499 [annotation("_In_opt_")] ID3D12Resource* pResource,
3500 [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
3501 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3502
3503 void CreateDepthStencilView(
3504 [annotation("_In_opt_")] ID3D12Resource* pResource,
3505 [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
3506 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3507
3508 void CreateSampler(
3509 [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
3510 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3511
3512 void CopyDescriptors(
3513 [annotation("_In_")] UINT NumDestDescriptorRanges,
3514 [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
3515 [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
3516 [annotation("_In_")] UINT NumSrcDescriptorRanges,
3517 [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
3518 [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
3519 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3520
3521 void CopyDescriptorsSimple(
3522 [annotation("_In_")] UINT NumDescriptors,
3523 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
3524 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
3525 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3526
3527 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
3528 [annotation("_In_")] UINT visibleMask,
3529 [annotation("_In_")] UINT numResourceDescs,
3530 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
3531
3532 D3D12_HEAP_PROPERTIES GetCustomHeapProperties(
3533 [annotation("_In_")] UINT nodeMask,
3534 D3D12_HEAP_TYPE heapType
3535 );
3536
3537 HRESULT CreateCommittedResource(
3538 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
3539 D3D12_HEAP_FLAGS HeapFlags,
3540 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3541 D3D12_RESOURCE_STATES InitialResourceState,
3542 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3543 [in] REFIID riidResource, // Expected: ID3D12Resource*
3544 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
3545
3546 HRESULT CreateHeap(
3547 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
3548 [in] REFIID riid, // Expected: ID3D12Heap*
3549 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
3550
3551 HRESULT CreatePlacedResource(
3552 [annotation("_In_")] ID3D12Heap* pHeap,
3553 UINT64 HeapOffset,
3554 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3555 D3D12_RESOURCE_STATES InitialState,
3556 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3557 [in] REFIID riid, // Expected: ID3D12Resource*
3558 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
3559
3560 HRESULT CreateReservedResource(
3561 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3562 D3D12_RESOURCE_STATES InitialState,
3563 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3564 [in] REFIID riid, // Expected: ID3D12Resource*
3565 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
3566
3567 HRESULT CreateSharedHandle(
3568 [annotation("_In_")] ID3D12DeviceChild* pObject,
3569 [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
3570 DWORD Access,
3571 [annotation("_In_opt_")] LPCWSTR Name,
3572 [annotation("_Out_")] HANDLE* pHandle );
3573
3574 HRESULT OpenSharedHandle(
3575 [annotation("_In_")] HANDLE NTHandle,
3576 [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
3577 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
3578
3579 HRESULT OpenSharedHandleByName(
3580 [annotation("_In_")] LPCWSTR Name,
3581 DWORD Access,
3582 [out, annotation("_Out_")] HANDLE* pNTHandle );
3583
3584 HRESULT MakeResident(
3585 UINT NumObjects,
3586 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
3587
3588 HRESULT Evict(
3589 UINT NumObjects,
3590 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
3591
3592 HRESULT CreateFence(
3593 UINT64 InitialValue,
3594 D3D12_FENCE_FLAGS Flags,
3595 [in] REFIID riid, // Expected: ID3D12Fence
3596 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);
3597
3598 HRESULT GetDeviceRemovedReason();
3599
3600 void GetCopyableFootprints(
3601 [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
3602 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
3603 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
3604 UINT64 BaseOffset,
3605 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
3606 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
3607 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
3608 [annotation("_Out_opt_")] UINT64* pTotalBytes );
3609
3610 HRESULT CreateQueryHeap(
3611 [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
3612 [in] REFIID riid, // Expected: ID3D12QueryHeap
3613 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
3614 );
3615
3616 HRESULT SetStablePowerState(BOOL Enable);
3617
3618 HRESULT CreateCommandSignature(
3619 [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
3620 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
3621 [in] REFIID riid, // Expected: ID3D12CommandSignature
3622 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
3623 );
3624
3625 void GetResourceTiling(
3626 [annotation("_In_")] ID3D12Resource* pTiledResource,
3627 [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource,
3628 [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc,
3629 [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips,
3630 [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings,
3631 [annotation("_In_")] UINT FirstSubresourceTilingToGet,
3632 [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
3633 );
3634
3635 LUID GetAdapterLuid();
3636}
3637
3638// D3D12 Revision 1
3639[ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
3640interface ID3D12PipelineLibrary
3641 : ID3D12DeviceChild
3642{
3643 HRESULT StorePipeline(
3644 [annotation("_In_opt_")] LPCWSTR pName,
3645 [annotation("_In_")] ID3D12PipelineState *pPipeline
3646 );
3647
3648 HRESULT LoadGraphicsPipeline(
3649 [annotation("_In_")] LPCWSTR pName,
3650 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3651 [in] REFIID riid, // Expected: ID3D12PipelineState
3652 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3653 );
3654
3655 HRESULT LoadComputePipeline(
3656 [annotation("_In_")] LPCWSTR pName,
3657 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3658 [in] REFIID riid, // Expected: ID3D12PipelineState
3659 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3660 );
3661
3662 SIZE_T GetSerializedSize();
3663
3664 HRESULT Serialize(
3665 [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
3666 SIZE_T DataSizeInBytes
3667 );
3668}
3669
3670// Pipeline State v2
3671[ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
3672interface ID3D12PipelineLibrary1
3673 : ID3D12PipelineLibrary
3674{
3675 HRESULT LoadPipeline(
3676 [annotation("_In_")] LPCWSTR pName,
3677 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
3678 [in] REFIID riid, // Expected: ID3D12PipelineState
3679 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3680 );
3681}
3682
3683typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
3684{
3685 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
3686 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
3687
3688 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
3689} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
3690cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS );" )
3691
3692// Applications may use the whole value range of UINT for a priority.
3693// These names are merely semantic suggestions.
3694typedef enum D3D12_RESIDENCY_PRIORITY
3695{
3696 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
3697 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
3698 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
3699 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
3700 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
3701} D3D12_RESIDENCY_PRIORITY;
3702
3703[uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
3704interface ID3D12Device1
3705 : ID3D12Device
3706{
3707 HRESULT CreatePipelineLibrary(
3708 [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
3709 SIZE_T BlobLength,
3710 [in] REFIID riid, // Expected: ID3D12PipelineLibrary
3711 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
3712 );
3713
3714 HRESULT SetEventOnMultipleFenceCompletion(
3715 [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
3716 [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
3717 UINT NumFences,
3718 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
3719 HANDLE hEvent
3720 );
3721
3722 HRESULT SetResidencyPriority(
3723 UINT NumObjects,
3724 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
3725 [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
3726}
3727
3728[uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
3729interface ID3D12Device2
3730 : ID3D12Device1
3731{
3732 HRESULT CreatePipelineState(
3733 [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
3734 [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
3735 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3736 );
3737}
3738
3739typedef enum D3D12_RESIDENCY_FLAGS
3740{
3741 D3D12_RESIDENCY_FLAG_NONE = 0x0,
3742 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
3743} D3D12_RESIDENCY_FLAGS;
3744cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS );" )
3745
3746[uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
3747interface ID3D12Device3
3748 : ID3D12Device2
3749{
3750 HRESULT OpenExistingHeapFromAddress(
3751 [annotation("_In_")] const void* pAddress,
3752 [in] REFIID riid, // Expected: ID3D12Heap
3753 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
3754 );
3755 HRESULT OpenExistingHeapFromFileMapping(
3756 [annotation("_In_")] HANDLE hFileMapping,
3757 [in] REFIID riid, // Expected: ID3D12Heap
3758 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
3759 );
3760 HRESULT EnqueueMakeResident(
3761 D3D12_RESIDENCY_FLAGS Flags,
3762 UINT NumObjects,
3763 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
3764 [annotation("_In_")] ID3D12Fence* pFenceToSignal,
3765 UINT64 FenceValueToSignal
3766 );
3767}
3768
3769typedef enum D3D12_COMMAND_LIST_FLAGS
3770{
3771 D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
3772} D3D12_COMMAND_LIST_FLAGS;
3773cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS );")
3774
3775
3776typedef enum D3D12_COMMAND_POOL_FLAGS
3777{
3778 D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
3779
3780} D3D12_COMMAND_POOL_FLAGS;
3781cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS );")
3782
3783typedef enum D3D12_COMMAND_RECORDER_FLAGS
3784{
3785 D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
3786
3787} D3D12_COMMAND_RECORDER_FLAGS;
3788cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS );")
3789
3790typedef enum D3D12_PROTECTED_SESSION_STATUS
3791{
3792 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
3793 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
3794} D3D12_PROTECTED_SESSION_STATUS;
3795
3796[uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
3797interface ID3D12ProtectedSession
3798 : ID3D12DeviceChild
3799{
3800 HRESULT GetStatusFence(
3801 [in] REFIID riid,
3802 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
3803
3804 D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
3805}
3806
3807typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
3808{
3809 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
3810 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
3811
3812} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
3813cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS );")
3814
3815typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
3816{
3817 UINT NodeIndex; // input
3818 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; // output
3819} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
3820
3821typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
3822{
3823 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
3824
3825} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
3826cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS );")
3827
3828typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
3829{
3830 UINT NodeMask;
3831 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
3832} D3D12_PROTECTED_RESOURCE_SESSION_DESC;
3833
3834[uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
3835interface ID3D12ProtectedResourceSession
3836 : ID3D12ProtectedSession
3837{
3838 D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
3839}
3840
3841[uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
3842interface ID3D12Device4
3843 : ID3D12Device3
3844{
3845 HRESULT CreateCommandList1(
3846 [annotation("_In_")] UINT nodeMask,
3847 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3848 [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
3849 [in] REFIID riid, // Expected: ID3D12CommandList
3850 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3851 );
3852
3853 HRESULT CreateProtectedResourceSession(
3854 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
3855 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession,
3856 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
3857 );
3858
3859 HRESULT CreateCommittedResource1(
3860 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
3861 D3D12_HEAP_FLAGS HeapFlags,
3862 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3863 D3D12_RESOURCE_STATES InitialResourceState,
3864 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3865 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
3866 [in] REFIID riidResource, // Expected: ID3D12Resource1*
3867 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
3868 );
3869
3870 HRESULT CreateHeap1(
3871 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
3872 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
3873 [in] REFIID riid, // Expected: ID3D12Heap1*
3874 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
3875 );
3876
3877 HRESULT CreateReservedResource1(
3878 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3879 D3D12_RESOURCE_STATES InitialState,
3880 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3881 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
3882 [in] REFIID riid, // Expected: ID3D12Resource1*
3883 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
3884 );
3885
3886 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
3887 UINT visibleMask,
3888 UINT numResourceDescs,
3889 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
3890 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
3891 );
3892}
3893
3894typedef enum D3D12_LIFETIME_STATE
3895{
3896 D3D12_LIFETIME_STATE_IN_USE,
3897 D3D12_LIFETIME_STATE_NOT_IN_USE,
3898} D3D12_LIFETIME_STATE;
3899
3900interface ID3D12LifetimeTracker;
3901
3902[uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
3903interface ID3D12LifetimeOwner : IUnknown
3904{
3905 void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
3906}
3907
3908[uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
3909interface ID3D12SwapChainAssistant
3910 : IUnknown
3911{
3912 LUID GetLUID();
3913 HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
3914 HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
3915 REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
3916 HRESULT InsertImplicitSync();
3917}
3918
3919[uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
3920interface ID3D12LifetimeTracker
3921 : ID3D12DeviceChild
3922{
3923 HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
3924}
3925
3926typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
3927{
3928 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
3929 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
3930 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
3931 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
3932 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
3933} D3D12_META_COMMAND_PARAMETER_TYPE;
3934
3935typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
3936{
3937 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
3938 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
3939} D3D12_META_COMMAND_PARAMETER_FLAGS;
3940cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS );")
3941
3942typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
3943{
3944 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
3945 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3946 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3947} D3D12_META_COMMAND_PARAMETER_STAGE;
3948
3949typedef struct D3D12_META_COMMAND_PARAMETER_DESC
3950{
3951 LPCWSTR Name;
3952 D3D12_META_COMMAND_PARAMETER_TYPE Type;
3953 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
3954 D3D12_RESOURCE_STATES RequiredResourceState;
3955 UINT StructureOffset;
3956} D3D12_META_COMMAND_PARAMETER_DESC;
3957
3958typedef enum D3D12_GRAPHICS_STATES
3959{
3960 D3D12_GRAPHICS_STATE_NONE = 0,
3961 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
3962 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
3963 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
3964 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
3965 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
3966 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
3967 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
3968 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
3969 D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
3970 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
3971 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
3972 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
3973 D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
3974 D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
3975 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
3976 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
3977 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
3978
3979} D3D12_GRAPHICS_STATES;
3980cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES );")
3981
3982typedef struct D3D12_META_COMMAND_DESC
3983{
3984 GUID Id;
3985 LPCWSTR Name;
3986 D3D12_GRAPHICS_STATES InitializationDirtyState;
3987 D3D12_GRAPHICS_STATES ExecutionDirtyState;
3988} D3D12_META_COMMAND_DESC;
3989
3990[uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
3991interface ID3D12StateObject
3992 : ID3D12Pageable
3993{
3994}
3995
3996[uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
3997interface ID3D12StateObjectProperties
3998 : IUnknown
3999{
4000 void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
4001 UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
4002 UINT64 GetPipelineStackSize();
4003 void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
4004}
4005
4006typedef enum D3D12_STATE_SUBOBJECT_TYPE
4007{
4008 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
4009 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
4010 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
4011 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
4012 // 4 unused
4013 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
4014 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
4015 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4016 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4017 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
4018 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, // D3D12_RAYTRACING_PIPELINE_CONFIG
4019 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, // D3D12_HIT_GROUP_DESC
4020 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12, // D3D12_RAYTRACING_PIPELINE_CONFIG1
4021 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
4022} D3D12_STATE_SUBOBJECT_TYPE;
4023
4024typedef struct D3D12_STATE_SUBOBJECT
4025{
4026 D3D12_STATE_SUBOBJECT_TYPE Type;
4027 const void* pDesc;
4028} D3D12_STATE_SUBOBJECT;
4029
4030typedef enum D3D12_STATE_OBJECT_FLAGS
4031{
4032 D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
4033 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
4034 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
4035 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
4036} D3D12_STATE_OBJECT_FLAGS;
4037cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS );")
4038
4039typedef struct D3D12_STATE_OBJECT_CONFIG
4040{
4041 D3D12_STATE_OBJECT_FLAGS Flags;
4042} D3D12_STATE_OBJECT_CONFIG;
4043
4044typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
4045{
4046 ID3D12RootSignature* pGlobalRootSignature;
4047} D3D12_GLOBAL_ROOT_SIGNATURE;
4048
4049typedef struct D3D12_LOCAL_ROOT_SIGNATURE
4050{
4051 ID3D12RootSignature* pLocalRootSignature;
4052} D3D12_LOCAL_ROOT_SIGNATURE;
4053
4054typedef struct D3D12_NODE_MASK
4055{
4056 UINT NodeMask;
4057} D3D12_NODE_MASK;
4058
4059typedef enum D3D12_EXPORT_FLAGS
4060{
4061 D3D12_EXPORT_FLAG_NONE = 0x0,
4062} D3D12_EXPORT_FLAGS;
4063cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS );")
4064
4065typedef struct D3D12_EXPORT_DESC
4066{
4067 LPCWSTR Name;
4068 [annotation("_In_opt_")] LPCWSTR ExportToRename;
4069 D3D12_EXPORT_FLAGS Flags;
4070} D3D12_EXPORT_DESC;
4071
4072typedef struct D3D12_DXIL_LIBRARY_DESC
4073{
4074 D3D12_SHADER_BYTECODE DXILLibrary;
4075 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4076 [annotation("_In_reads_(NumExports)")] D3D12_EXPORT_DESC* pExports;
4077} D3D12_DXIL_LIBRARY_DESC;
4078
4079typedef struct D3D12_EXISTING_COLLECTION_DESC
4080{
4081 ID3D12StateObject* pExistingCollection;
4082 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4083 [annotation("_In_reads_(NumExports)")] D3D12_EXPORT_DESC* pExports;
4084} D3D12_EXISTING_COLLECTION_DESC;
4085
4086typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4087{
4088 const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate;
4089 UINT NumExports;
4090 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4091} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4092
4093typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4094{
4095 LPCWSTR SubobjectToAssociate;
4096 UINT NumExports;
4097 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4098} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4099
4100typedef enum D3D12_HIT_GROUP_TYPE
4101{
4102 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
4103 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
4104} D3D12_HIT_GROUP_TYPE;
4105
4106typedef struct D3D12_HIT_GROUP_DESC
4107{
4108 LPCWSTR HitGroupExport;
4109 D3D12_HIT_GROUP_TYPE Type;
4110 [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
4111 [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
4112 [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
4113} D3D12_HIT_GROUP_DESC;
4114
4115typedef struct D3D12_RAYTRACING_SHADER_CONFIG
4116{
4117 UINT MaxPayloadSizeInBytes;
4118 UINT MaxAttributeSizeInBytes;
4119} D3D12_RAYTRACING_SHADER_CONFIG;
4120
4121typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
4122{
4123 UINT MaxTraceRecursionDepth;
4124} D3D12_RAYTRACING_PIPELINE_CONFIG;
4125
4126typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
4127{
4128 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
4129 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
4130 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4131} D3D12_RAYTRACING_PIPELINE_FLAGS;
4132cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS );")
4133
4134typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
4135{
4136 UINT MaxTraceRecursionDepth;
4137 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
4138} D3D12_RAYTRACING_PIPELINE_CONFIG1;
4139
4140typedef enum D3D12_STATE_OBJECT_TYPE
4141{
4142 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
4143 // D3D12_STATE_OBJECT_TYPE_COMPUTE_PIPELINE = 1,
4144 // D3D12_STATE_OBJECT_TYPE_GRAPHICS_PIPELINE = 2,
4145 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
4146} D3D12_STATE_OBJECT_TYPE;
4147
4148typedef struct D3D12_STATE_OBJECT_DESC
4149{
4150 D3D12_STATE_OBJECT_TYPE Type;
4151 UINT NumSubobjects;
4152 [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects;
4153} D3D12_STATE_OBJECT_DESC;
4154
4155typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
4156{
4157 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
4158 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
4159 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
4160} D3D12_RAYTRACING_GEOMETRY_FLAGS;
4161cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS );")
4162
4163typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
4164{
4165 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
4166 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
4167} D3D12_RAYTRACING_GEOMETRY_TYPE;
4168
4169typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
4170{
4171 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
4172 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
4173 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
4174 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
4175 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
4176} D3D12_RAYTRACING_INSTANCE_FLAGS;
4177cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS );")
4178
4179typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
4180{
4181 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4182 UINT64 StrideInBytes;
4183} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
4184
4185typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
4186{
4187 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4188 UINT64 SizeInBytes;
4189} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
4190
4191typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
4192{
4193 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4194 UINT64 SizeInBytes;
4195 UINT64 StrideInBytes;
4196} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
4197
4198typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
4199{
4200 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
4201 DXGI_FORMAT IndexFormat;
4202 DXGI_FORMAT VertexFormat;
4203 UINT IndexCount;
4204 UINT VertexCount;
4205 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
4206 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
4207} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
4208
4209typedef struct D3D12_RAYTRACING_AABB
4210{
4211 FLOAT MinX;
4212 FLOAT MinY;
4213 FLOAT MinZ;
4214 FLOAT MaxX;
4215 FLOAT MaxY;
4216 FLOAT MaxZ;
4217} D3D12_RAYTRACING_AABB;
4218
4219typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
4220{
4221 UINT64 AABBCount;
4222 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
4223} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
4224
4225typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
4226{
4227 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
4228 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
4229 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
4230 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
4231 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
4232 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
4233 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
4234} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
4235cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS );")
4236
4237typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
4238{
4239 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
4240 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
4241 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
4242 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
4243 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
4244} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
4245
4246typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
4247{
4248 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
4249 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
4250} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
4251
4252typedef enum D3D12_ELEMENTS_LAYOUT
4253{
4254 D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
4255 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
4256} D3D12_ELEMENTS_LAYOUT;
4257
4258typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
4259{
4260 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
4261 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
4262 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
4263 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3,
4264} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
4265
4266typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
4267{
4268 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
4269 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
4270} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
4271
4272typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
4273{
4274 UINT64 CompactedSizeInBytes;
4275} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
4276
4277typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
4278{
4279 UINT64 DecodedSizeInBytes;
4280} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
4281
4282typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
4283{
4284 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
4285 UINT NumDescs;
4286} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
4287cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
4288cpp_quote("// depending on Type field, NumDescs above is followed by either:")
4289cpp_quote("// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
4290cpp_quote("// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
4291cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
4292cpp_quote("")
4293
4294typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
4295{
4296 UINT64 SerializedSizeInBytes;
4297 UINT64 NumBottomLevelAccelerationStructurePointers;
4298} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
4299
4300typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
4301{
4302 GUID DriverOpaqueGUID;
4303 BYTE DriverOpaqueVersioningData[16];
4304} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
4305
4306typedef enum D3D12_SERIALIZED_DATA_TYPE
4307{
4308 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
4309} D3D12_SERIALIZED_DATA_TYPE;
4310
4311typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
4312{
4313 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
4314 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
4315 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
4316 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
4317 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
4318} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
4319
4320typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
4321{
4322 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
4323 UINT64 SerializedSizeInBytesIncludingHeader;
4324 UINT64 DeserializedSizeInBytes;
4325 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
4326} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
4327
4328typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
4329{
4330 UINT64 CurrentSizeInBytes;
4331} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
4332
4333typedef struct D3D12_RAYTRACING_INSTANCE_DESC
4334{
4335 FLOAT Transform[3][4];
4336 UINT InstanceID : 24;
4337 UINT InstanceMask : 8;
4338 UINT InstanceContributionToHitGroupIndex : 24;
4339 UINT Flags : 8;
4340 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
4341} D3D12_RAYTRACING_INSTANCE_DESC;
4342
4343typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
4344{
4345 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
4346 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
4347 union
4348 {
4349 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
4350 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
4351 };
4352} D3D12_RAYTRACING_GEOMETRY_DESC;
4353
4354typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
4355{
4356 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
4357 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
4358 UINT NumDescs;
4359 D3D12_ELEMENTS_LAYOUT DescsLayout;
4360 union
4361 {
4362 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
4363 const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
4364 const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
4365 };
4366} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
4367
4368typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
4369{
4370 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
4371 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
4372 [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
4373 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
4374} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
4375
4376typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
4377{
4378 UINT64 ResultDataMaxSizeInBytes;
4379 UINT64 ScratchDataSizeInBytes;
4380 UINT64 UpdateScratchDataSizeInBytes;
4381} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
4382
4383typedef enum D3D12_RAY_FLAGS
4384{
4385 D3D12_RAY_FLAG_NONE = 0x00,
4386 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
4387 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
4388 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
4389 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
4390 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
4391 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
4392 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
4393 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
4394 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
4395 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4396} D3D12_RAY_FLAGS;
4397cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS );" )
4398
4399typedef enum D3D12_HIT_KIND
4400{
4401 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
4402 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff,
4403} D3D12_HIT_KIND;
4404
4405[uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
4406interface ID3D12Device5
4407 : ID3D12Device4
4408{
4409 HRESULT CreateLifetimeTracker(
4410 [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
4411 [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
4412 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
4413 );
4414
4415 void RemoveDevice();
4416
4417 HRESULT EnumerateMetaCommands(
4418 [annotation("_Inout_")] UINT* pNumMetaCommands,
4419 [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
4420 );
4421
4422 HRESULT EnumerateMetaCommandParameters(
4423 [annotation("_In_")] REFGUID CommandId,
4424 [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
4425 [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
4426 [annotation("_Inout_")] UINT* pParameterCount,
4427 [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
4428 );
4429
4430 HRESULT CreateMetaCommand(
4431 [annotation("_In_")] REFGUID CommandId,
4432 [annotation("_In_")] UINT NodeMask,
4433 [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
4434 [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
4435 [in] REFIID riid,
4436 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
4437 );
4438
4439 HRESULT CreateStateObject(
4440 [in] const D3D12_STATE_OBJECT_DESC* pDesc,
4441 [in] REFIID riid, // ID3D12StateObject
4442 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
4443 );
4444
4445 void GetRaytracingAccelerationStructurePrebuildInfo(
4446 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
4447 [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
4448 );
4449
4450 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
4451 [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
4452 [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
4453}
4454
4455
4456typedef enum D3D12_AUTO_BREADCRUMB_OP
4457{
4458 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
4459 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
4460 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
4461 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
4462 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
4463 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
4464 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
4465 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
4466 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
4467 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
4468 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
4469 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
4470 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
4471 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
4472 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
4473 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
4474 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
4475 D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
4476 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
4477 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
4478 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
4479 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
4480 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
4481 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
4482 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
4483 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
4484 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
4485 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
4486 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
4487 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
4488 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
4489 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
4490 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
4491 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
4492 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
4493 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
4494 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
4495 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
4496 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
4497 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
4498 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
4499 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
4500 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
4501 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
4502 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44,
4503} D3D12_AUTO_BREADCRUMB_OP;
4504
4505typedef struct D3D12_AUTO_BREADCRUMB_NODE
4506{
4507 const char *pCommandListDebugNameA;
4508 const wchar_t *pCommandListDebugNameW;
4509 const char *pCommandQueueDebugNameA;
4510 const wchar_t *pCommandQueueDebugNameW;
4511 ID3D12GraphicsCommandList *pCommandList;
4512 ID3D12CommandQueue *pCommandQueue;
4513 UINT32 BreadcrumbCount;
4514 const UINT32 *pLastBreadcrumbValue;
4515 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
4516 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
4517} D3D12_AUTO_BREADCRUMB_NODE;
4518
4519typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
4520{
4521 UINT BreadcrumbIndex;
4522 const wchar_t *pContextString;
4523} D3D12_DRED_BREADCRUMB_CONTEXT;
4524
4525// !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
4526typedef struct D3D12_AUTO_BREADCRUMB_NODE1
4527{
4528 const char *pCommandListDebugNameA;
4529 const wchar_t *pCommandListDebugNameW;
4530 const char *pCommandQueueDebugNameA;
4531 const wchar_t *pCommandQueueDebugNameW;
4532 ID3D12GraphicsCommandList *pCommandList;
4533 ID3D12CommandQueue *pCommandQueue;
4534 UINT BreadcrumbCount;
4535 const UINT *pLastBreadcrumbValue;
4536 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
4537 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
4538 UINT BreadcrumbContextsCount;
4539 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
4540} D3D12_AUTO_BREADCRUMB_NODE1;
4541
4542// D3D12_DRED_VERSION
4543typedef enum D3D12_DRED_VERSION
4544{
4545 D3D12_DRED_VERSION_1_0 = 0x1,
4546 D3D12_DRED_VERSION_1_1 = 0x2,
4547 D3D12_DRED_VERSION_1_2 = 0x3,
4548 D3D12_DRED_VERSION_1_3 = 0x4,
4549} D3D12_DRED_VERSION;
4550
4551typedef enum D3D12_DRED_FLAGS
4552{
4553 D3D12_DRED_FLAG_NONE = 0,
4554 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
4555 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
4556} D3D12_DRED_FLAGS;
4557cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS );")
4558
4559typedef enum D3D12_DRED_ENABLEMENT
4560{
4561 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
4562 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
4563 D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
4564} D3D12_DRED_ENABLEMENT;
4565
4566typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
4567{
4568 [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
4569 [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
4570} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
4571
4572typedef enum D3D12_DRED_ALLOCATION_TYPE
4573{
4574 // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
4575 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
4576 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
4577 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
4578 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
4579 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
4580 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
4581 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
4582 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
4583 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
4584 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
4585 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
4586 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
4587 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
4588 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
4589 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
4590 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
4591 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
4592 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
4593 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
4594 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
4595 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
4596 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
4597 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
4598 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
4599 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
4600 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
4601 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
4602 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
4603
4604
4605 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
4606} D3D12_DRED_ALLOCATION_TYPE;
4607
4608typedef struct D3D12_DRED_ALLOCATION_NODE
4609{
4610 const char *ObjectNameA;
4611 const wchar_t *ObjectNameW;
4612 D3D12_DRED_ALLOCATION_TYPE AllocationType;
4613 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
4614} D3D12_DRED_ALLOCATION_NODE;
4615
4616typedef struct D3D12_DRED_ALLOCATION_NODE1
4617{
4618 const char *ObjectNameA;
4619 const wchar_t *ObjectNameW;
4620 D3D12_DRED_ALLOCATION_TYPE AllocationType;
4621 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
4622 const IUnknown *pObject;
4623} D3D12_DRED_ALLOCATION_NODE1;
4624
4625typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
4626{
4627 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
4628} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
4629
4630typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
4631{
4632 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
4633} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
4634
4635typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
4636{
4637 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
4638 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
4639 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
4640} D3D12_DRED_PAGE_FAULT_OUTPUT;
4641
4642typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
4643{
4644 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
4645 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
4646 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
4647} D3D12_DRED_PAGE_FAULT_OUTPUT1;
4648
4649typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
4650{
4651 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
4652} D3D12_DRED_PAGE_FAULT_FLAGS;
4653cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS );")
4654
4655typedef enum D3D12_DRED_DEVICE_STATE
4656{
4657 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0, // Only known if DRED event occurred
4658 D3D12_DRED_DEVICE_STATE_HUNG = 3,
4659 D3D12_DRED_DEVICE_STATE_FAULT = 6,
4660 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7,
4661} D3D12_DRED_DEVICE_STATE;
4662
4663typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
4664{
4665 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
4666 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
4667 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
4668 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
4669
4670} D3D12_DRED_PAGE_FAULT_OUTPUT2;
4671
4672typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
4673{
4674 HRESULT DeviceRemovedReason;
4675 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
4676 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
4677} D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
4678
4679typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
4680{
4681 HRESULT DeviceRemovedReason;
4682 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
4683 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
4684} D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
4685
4686typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
4687{
4688 HRESULT DeviceRemovedReason;
4689 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
4690 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
4691 D3D12_DRED_DEVICE_STATE DeviceState;
4692} D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
4693
4694typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
4695{
4696 D3D12_DRED_VERSION Version; // Version of the DRED data
4697 union
4698 {
4699 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
4700 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
4701 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
4702 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
4703 };
4704} D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
4705
4706[uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
4707interface ID3D12DeviceRemovedExtendedDataSettings
4708 : IUnknown
4709{
4710 void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
4711 void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
4712 void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
4713};
4714
4715[uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
4716interface ID3D12DeviceRemovedExtendedDataSettings1
4717 : ID3D12DeviceRemovedExtendedDataSettings
4718{
4719 void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
4720};
4721
4722
4723[uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
4724interface ID3D12DeviceRemovedExtendedData
4725 : IUnknown
4726{
4727 HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
4728 HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
4729};
4730
4731[uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
4732interface ID3D12DeviceRemovedExtendedData1
4733 : ID3D12DeviceRemovedExtendedData
4734{
4735 HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
4736 HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
4737};
4738
4739[uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
4740interface ID3D12DeviceRemovedExtendedData2
4741 : ID3D12DeviceRemovedExtendedData1
4742{
4743 HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
4744 D3D12_DRED_DEVICE_STATE GetDeviceState();
4745};
4746
4747typedef enum D3D12_BACKGROUND_PROCESSING_MODE
4748{
4749 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
4750 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
4751 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
4752 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
4753} D3D12_BACKGROUND_PROCESSING_MODE;
4754
4755typedef enum D3D12_MEASUREMENTS_ACTION
4756{
4757 D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
4758 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
4759 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
4760 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
4761} D3D12_MEASUREMENTS_ACTION;
4762
4763[uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
4764interface ID3D12Device6 : ID3D12Device5
4765{
4766 HRESULT SetBackgroundProcessingMode(
4767 D3D12_BACKGROUND_PROCESSING_MODE Mode,
4768 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
4769 [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
4770 [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
4771};
4772
4773cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
4774
4775// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
4776typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
4777{
4778 UINT NodeIndex; // input
4779 UINT Count; // output
4780} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
4781
4782// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
4783typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
4784{
4785 UINT NodeIndex; // input
4786 UINT Count; // input
4787 GUID* pTypes; // output
4788} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
4789
4790typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
4791{
4792 UINT NodeMask;
4793 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
4794 GUID ProtectionType;
4795} D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
4796
4797[uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
4798interface ID3D12ProtectedResourceSession1
4799 : ID3D12ProtectedResourceSession
4800{
4801 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
4802};
4803
4804[uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
4805interface ID3D12Device7 : ID3D12Device6
4806{
4807 HRESULT AddToStateObject(
4808 [in] const D3D12_STATE_OBJECT_DESC* pAddition,
4809 [in] ID3D12StateObject* pStateObjectToGrowFrom,
4810 [in] REFIID riid, // ID3D12StateObject
4811 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
4812 );
4813
4814 HRESULT CreateProtectedResourceSession1(
4815 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
4816 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1,
4817 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
4818 );
4819};
4820
4821[uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
4822interface ID3D12Device8 : ID3D12Device7
4823{
4824 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
4825 UINT visibleMask,
4826 UINT numResourceDescs,
4827 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
4828 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
4829
4830 HRESULT CreateCommittedResource2(
4831 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4832 D3D12_HEAP_FLAGS HeapFlags,
4833 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
4834 D3D12_RESOURCE_STATES InitialResourceState,
4835 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4836 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
4837 [in] REFIID riidResource, // Expected: ID3D12Resource1*
4838 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
4839
4840 HRESULT CreatePlacedResource1(
4841 [annotation("_In_")] ID3D12Heap* pHeap,
4842 UINT64 HeapOffset,
4843 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
4844 D3D12_RESOURCE_STATES InitialState,
4845 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4846 [in] REFIID riid, // Expected: ID3D12Resource*
4847 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
4848
4849 void CreateSamplerFeedbackUnorderedAccessView(
4850 [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
4851 [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
4852 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
4853
4854 void GetCopyableFootprints1(
4855 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
4856 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
4857 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
4858 UINT64 BaseOffset,
4859 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
4860 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
4861 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
4862 [annotation("_Out_opt_")] UINT64* pTotalBytes);
4863};
4864
4865
4866
4867[uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
4868interface ID3D12Resource1
4869 : ID3D12Resource
4870{
4871 HRESULT GetProtectedResourceSession(
4872 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
4873 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
4874}
4875
4876[uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
4877interface ID3D12Resource2
4878 : ID3D12Resource1
4879{
4880 D3D12_RESOURCE_DESC1 GetDesc1();
4881}
4882
4883
4884[uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
4885interface ID3D12Heap1
4886 : ID3D12Heap
4887{
4888 HRESULT GetProtectedResourceSession(
4889 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
4890 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
4891}
4892
4893
4894[uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
4895interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
4896{
4897 void SetProtectedResourceSession(
4898 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
4899 );
4900}
4901
4902// Beginning Access
4903typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
4904{
4905 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
4906 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
4907 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
4908 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS
4909} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
4910
4911typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
4912{
4913 D3D12_CLEAR_VALUE ClearValue;
4914} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
4915
4916typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
4917{
4918 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
4919
4920 union
4921 {
4922 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
4923 };
4924} D3D12_RENDER_PASS_BEGINNING_ACCESS;
4925
4926// Ending Access
4927typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
4928{
4929 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
4930 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
4931 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
4932 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS
4933} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
4934
4935typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
4936{
4937 UINT SrcSubresource;
4938 UINT DstSubresource;
4939
4940 UINT DstX;
4941 UINT DstY;
4942 D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
4943
4944} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
4945
4946typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
4947{
4948 ID3D12Resource* pSrcResource;
4949 ID3D12Resource* pDstResource;
4950
4951 // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
4952 UINT SubresourceCount;
4953 [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
4954
4955 DXGI_FORMAT Format;
4956 D3D12_RESOLVE_MODE ResolveMode;
4957
4958 BOOL PreserveResolveSource;
4959
4960} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
4961
4962typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
4963{
4964 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
4965
4966 union
4967 {
4968 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
4969 };
4970} D3D12_RENDER_PASS_ENDING_ACCESS;
4971
4972// Render Target Desc
4973typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
4974{
4975 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
4976
4977 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
4978 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
4979
4980} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
4981
4982// Depth-Stencil Desc
4983typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
4984{
4985 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
4986
4987 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
4988 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
4989
4990 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
4991 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
4992
4993} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
4994
4995// UAV Access Mode
4996typedef enum D3D12_RENDER_PASS_FLAGS
4997{
4998 D3D12_RENDER_PASS_FLAG_NONE = 0x0,
4999 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
5000 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
5001 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4
5002} D3D12_RENDER_PASS_FLAGS;
5003cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS );")
5004
5005[uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
5006interface ID3D12MetaCommand : ID3D12Pageable
5007{
5008 UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")] UINT ParameterIndex);
5009}
5010
5011typedef struct D3D12_DISPATCH_RAYS_DESC
5012{
5013 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
5014 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
5015 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
5016 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
5017 UINT Width;
5018 UINT Height;
5019 UINT Depth;
5020} D3D12_DISPATCH_RAYS_DESC;
5021
5022[uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
5023interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
5024{
5025 void BeginRenderPass(
5026 [annotation("_In_")] UINT NumRenderTargets,
5027 [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
5028 [annotation("_In_opt_")] const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
5029 D3D12_RENDER_PASS_FLAGS Flags
5030 );
5031
5032 void EndRenderPass();
5033
5034 void InitializeMetaCommand(
5035 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5036 [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
5037 [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
5038 );
5039
5040 void ExecuteMetaCommand(
5041 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5042 [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
5043 [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
5044 );
5045
5046 void BuildRaytracingAccelerationStructure(
5047 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
5048 [annotation("_In_")] UINT NumPostbuildInfoDescs,
5049 [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
5050 );
5051
5052 void EmitRaytracingAccelerationStructurePostbuildInfo(
5053 [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
5054 [annotation("_In_")] UINT NumSourceAccelerationStructures,
5055 [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
5056
5057 void CopyRaytracingAccelerationStructure(
5058 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
5059 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
5060 [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
5061
5062 void SetPipelineState1(
5063 [annotation("_In_")] ID3D12StateObject* pStateObject);
5064
5065 void DispatchRays(
5066 [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
5067}
5068
5069typedef enum D3D12_SHADER_CACHE_MODE
5070{
5071 D3D12_SHADER_CACHE_MODE_MEMORY,
5072 D3D12_SHADER_CACHE_MODE_DISK,
5073} D3D12_SHADER_CACHE_MODE;
5074
5075typedef enum D3D12_SHADER_CACHE_FLAGS
5076{
5077 D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
5078 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
5079 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
5080} D3D12_SHADER_CACHE_FLAGS;
5081cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS );")
5082
5083typedef struct D3D12_SHADER_CACHE_SESSION_DESC
5084{
5085 GUID Identifier;
5086 D3D12_SHADER_CACHE_MODE Mode;
5087 D3D12_SHADER_CACHE_FLAGS Flags;
5088
5089 UINT MaximumInMemoryCacheSizeBytes;
5090 UINT MaximumInMemoryCacheEntries;
5091
5092 UINT MaximumValueFileSizeBytes;
5093
5094 UINT64 Version;
5095} D3D12_SHADER_CACHE_SESSION_DESC;
5096
5097[uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
5098interface ID3D12ShaderCacheSession
5099 : ID3D12DeviceChild
5100{
5101 HRESULT FindValue(
5102 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
5103 UINT KeySize,
5104 [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
5105 [annotation("_Inout_")] UINT* pValueSize);
5106 HRESULT StoreValue(
5107 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
5108 UINT KeySize,
5109 [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
5110 UINT ValueSize);
5111
5112 void SetDeleteOnDestroy();
5113 D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
5114};
5115
5116typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
5117{
5118 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
5119 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
5120 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
5121 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
5122} D3D12_SHADER_CACHE_KIND_FLAGS;
5123cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS );")
5124
5125typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
5126{
5127 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
5128 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
5129 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
5130} D3D12_SHADER_CACHE_CONTROL_FLAGS;
5131cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS );")
5132
5133[uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
5134interface ID3D12Device9
5135 : ID3D12Device8
5136{
5137 HRESULT CreateShaderCacheSession(
5138 [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
5139 REFIID riid,
5140 [annotation("_COM_Outptr_opt_")] void** ppvSession);
5141
5142 HRESULT ShaderCacheControl(
5143 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
5144 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
5145
5146 HRESULT CreateCommandQueue1(
5147 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
5148 REFIID CreatorID,
5149 [in] REFIID riid, // Expected: ID3D12CommandQueue
5150 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
5151 );
5152};
5153
5154
5155[uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
5156interface ID3D12Tools
5157 : IUnknown
5158{
5159 void EnableShaderInstrumentation(BOOL bEnable);
5160 BOOL ShaderInstrumentationEnabled();
5161}
5162
5163typedef struct D3D12_SUBRESOURCE_DATA
5164{
5165 const void* pData;
5166 LONG_PTR RowPitch;
5167 LONG_PTR SlicePitch;
5168} D3D12_SUBRESOURCE_DATA;
5169
5170typedef struct D3D12_MEMCPY_DEST
5171{
5172 void* pData;
5173 SIZE_T RowPitch;
5174 SIZE_T SlicePitch;
5175} D3D12_MEMCPY_DEST;
5176
5177
5178
5179cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
5180cpp_quote( "#include \"d3d12sdklayers.h\" ")
5181cpp_quote( "#endif ")
5182
5183
5184cpp_quote("")
5185cpp_quote("///////////////////////////////////////////////////////////////////////////")
5186cpp_quote("// D3D12CreateDevice")
5187cpp_quote("// ------------------")
5188cpp_quote("//")
5189cpp_quote("// pAdapter")
5190cpp_quote("// If NULL, D3D12CreateDevice will choose the primary adapter.")
5191cpp_quote("// If non-NULL, D3D12CreateDevice will use the provided adapter.")
5192cpp_quote("// MinimumFeatureLevel")
5193cpp_quote("// The minimum feature level required for successful device creation.")
5194cpp_quote("// riid")
5195cpp_quote("// The interface IID of the device to be returned. Expected: ID3D12Device.")
5196cpp_quote("// ppDevice")
5197cpp_quote("// Pointer to returned interface. May be NULL.")
5198cpp_quote("//")
5199cpp_quote("// Return Values")
5200cpp_quote("// Any of those documented for ")
5201cpp_quote("// CreateDXGIFactory1")
5202cpp_quote("// IDXGIFactory::EnumAdapters")
5203cpp_quote("// D3D12CreateDevice")
5204cpp_quote("//")
5205cpp_quote("///////////////////////////////////////////////////////////////////////////")
5206cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
5207cpp_quote(" D3D_FEATURE_LEVEL, ")
5208cpp_quote(" _In_ REFIID, _COM_Outptr_opt_ void** );")
5209cpp_quote("")
5210cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
5211cpp_quote(" _In_opt_ IUnknown* pAdapter,")
5212cpp_quote(" D3D_FEATURE_LEVEL MinimumFeatureLevel,")
5213cpp_quote(" _In_ REFIID riid, // Expected: ID3D12Device")
5214cpp_quote(" _COM_Outptr_opt_ void** ppDevice );")
5215cpp_quote("")
5216
5217cpp_quote("")
5218cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
5219cpp_quote("")
5220cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
5221cpp_quote("")
5222
5223cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5224cpp_quote("// D3D12EnableExperimentalFeatures")
5225cpp_quote("//")
5226cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
5227cpp_quote("// ")
5228cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
5229cpp_quote("// a configuration struct that can be passed alongside the GUID.")
5230cpp_quote("// ")
5231cpp_quote("// Some features might use an interface IID as the GUID. For these, once the feature is enabled via")
5232cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
5233cpp_quote("// for manipulating the feature. This allows for control that might not cleanly be expressed by just ")
5234cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
5235cpp_quote("//")
5236cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
5237cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
5238cpp_quote("// singleton device for a process. Removing the devices when configuration changes prevents")
5239cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
5240cpp_quote("//")
5241cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
5242cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
5243cpp_quote("// in are known to be incompatible with each other, or other errors.")
5244cpp_quote("// Returns S_OK otherwise.")
5245cpp_quote("//")
5246cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5247cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
5248cpp_quote(" UINT NumFeatures,")
5249cpp_quote(" _In_count_(NumFeatures) const IID* pIIDs,")
5250cpp_quote(" _In_opt_count_(NumFeatures) void* pConfigurationStructs,")
5251cpp_quote(" _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);")
5252cpp_quote("")
5253cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5254cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
5255cpp_quote("//")
5256cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
5257cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
5258cpp_quote("//")
5259cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
5260cpp_quote("//")
5261cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5262cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
5263cpp_quote(" 0x76f5573e,")
5264cpp_quote(" 0xf13a,")
5265cpp_quote(" 0x40f5,")
5266cpp_quote(" { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
5267cpp_quote("};")
5268cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5269cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
5270cpp_quote("//")
5271cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
5272cpp_quote("// meaning texture tile data-inheritance is allowed.")
5273cpp_quote("//")
5274cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
5275cpp_quote("//")
5276cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5277cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
5278cpp_quote(" 0xc9c4725f,")
5279cpp_quote(" 0xa81a,")
5280cpp_quote(" 0x4f56,")
5281cpp_quote(" { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
5282cpp_quote("};")
5283cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5284cpp_quote("// Experimental Feature: D3D12MetaCommand")
5285cpp_quote("//")
5286cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable the D3D12 Meta Command.")
5287cpp_quote("//")
5288cpp_quote("// Enabling D3D12MetaCommand needs no configuration struct, pass NULL in the pConfigurationStructs array.")
5289cpp_quote("//")
5290cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5291cpp_quote("static const UUID D3D12MetaCommand = { /* C734C97E-8077-48C8-9FDC-D9D1DD31DD77 */")
5292cpp_quote(" 0xc734c97e,")
5293cpp_quote(" 0x8077,")
5294cpp_quote(" 0x48c8,")
5295cpp_quote(" { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77 }")
5296cpp_quote("};")
5297
5298cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5299cpp_quote("// D3D12GetInterface")
5300cpp_quote("//")
5301cpp_quote("// Retrieve Global D3D12 Interface.")
5302cpp_quote("//")
5303cpp_quote("")
5304cpp_quote("DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
5305cpp_quote("DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
5306cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
5307cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
5308cpp_quote("")
5309cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
5310cpp_quote("")
5311cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
5312cpp_quote("")
5313
5314//==================================================================================================================================
5315//
5316// SDK Configuration
5317//
5318//==================================================================================================================================
5319
5320[uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
5321interface ID3D12SDKConfiguration
5322 : IUnknown
5323{
5324 HRESULT SetSDKVersion(
5325 UINT SDKVersion,
5326 [annotation("_In_z_")] LPCSTR SDKPath
5327 );
5328}
5329
5330
5331typedef enum D3D12_AXIS_SHADING_RATE
5332{
5333 D3D12_AXIS_SHADING_RATE_1X = 0x0,
5334 D3D12_AXIS_SHADING_RATE_2X = 0x1,
5335 D3D12_AXIS_SHADING_RATE_4X = 0x2
5336} D3D12_AXIS_SHADING_RATE;
5337
5338
5339cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
5340cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
5341
5342cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
5343
5344cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
5345cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
5346
5347typedef enum D3D12_SHADING_RATE
5348{
5349 D3D12_SHADING_RATE_1X1 = 0x0,
5350 D3D12_SHADING_RATE_1X2 = 0x1,
5351 D3D12_SHADING_RATE_2X1 = 0x4,
5352 D3D12_SHADING_RATE_2X2 = 0x5,
5353 D3D12_SHADING_RATE_2X4 = 0x6,
5354 D3D12_SHADING_RATE_4X2 = 0x9,
5355 D3D12_SHADING_RATE_4X4 = 0xA
5356} D3D12_SHADING_RATE;
5357
5358typedef enum D3D12_SHADING_RATE_COMBINER
5359{
5360 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
5361 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
5362 D3D12_SHADING_RATE_COMBINER_MIN = 2,
5363 D3D12_SHADING_RATE_COMBINER_MAX = 3,
5364 D3D12_SHADING_RATE_COMBINER_SUM = 4,
5365} D3D12_SHADING_RATE_COMBINER;
5366
5367[uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
5368interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
5369{
5370 void RSSetShadingRate(
5371 [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
5372 [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
5373
5374 void RSSetShadingRateImage(
5375 [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
5376}
5377
5378typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
5379{
5380 UINT ThreadGroupCountX;
5381 UINT ThreadGroupCountY;
5382 UINT ThreadGroupCountZ;
5383} D3D12_DISPATCH_MESH_ARGUMENTS;
5384
5385[uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
5386interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
5387{
5388 void DispatchMesh(
5389 [annotation("_In_")] UINT ThreadGroupCountX,
5390 [annotation("_In_")] UINT ThreadGroupCountY,
5391 [annotation("_In_")] UINT ThreadGroupCountZ
5392 );
5393}
5394
5395
5396//----------------------------------------------------------------------------------------------------------
5397// Old types which are still supported by the runtime for app-compat
5398
5399cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
5400#pragma endregion
5401
5402cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
5403cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
5404cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
5405cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
5406cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
5407cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
5408cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
5409cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
5410cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
5411cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
5412cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
5413cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
5414cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
5415cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
5416cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
5417cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
5418cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
5419cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
5420cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
5421cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
5422cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
5423cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
5424cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
5425cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
5426cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
5427cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
5428cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
5429cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
5430cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
5431cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
5432cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
5433cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
5434cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
5435cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
5436cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
5437cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
5438cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
5439cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
5440cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
5441cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
5442cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
5443cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
5444cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
5445cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
5446cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
5447cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
5448cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
5449cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
5450cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
5451cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
5452cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
5453cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
5454cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
5455cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
5456cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
5457cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3d12compatibility.h b/contrib/DirectX-Headers/include/directx/d3d12compatibility.h
new file mode 100644
index 0000000..5f99b6c
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12compatibility.h
@@ -0,0 +1,659 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compatibility_h__
39#define __d3d12compatibility_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if _CONTROL_FLOW_GUARD_XFG
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompatibilityDevice_FWD_DEFINED__
56#define __ID3D12CompatibilityDevice_FWD_DEFINED__
57typedef interface ID3D12CompatibilityDevice ID3D12CompatibilityDevice;
58
59#endif /* __ID3D12CompatibilityDevice_FWD_DEFINED__ */
60
61
62#ifndef __D3D11On12CreatorID_FWD_DEFINED__
63#define __D3D11On12CreatorID_FWD_DEFINED__
64typedef interface D3D11On12CreatorID D3D11On12CreatorID;
65
66#endif /* __D3D11On12CreatorID_FWD_DEFINED__ */
67
68
69#ifndef __D3D9On12CreatorID_FWD_DEFINED__
70#define __D3D9On12CreatorID_FWD_DEFINED__
71typedef interface D3D9On12CreatorID D3D9On12CreatorID;
72
73#endif /* __D3D9On12CreatorID_FWD_DEFINED__ */
74
75
76#ifndef __OpenGLOn12CreatorID_FWD_DEFINED__
77#define __OpenGLOn12CreatorID_FWD_DEFINED__
78typedef interface OpenGLOn12CreatorID OpenGLOn12CreatorID;
79
80#endif /* __OpenGLOn12CreatorID_FWD_DEFINED__ */
81
82
83#ifndef __OpenCLOn12CreatorID_FWD_DEFINED__
84#define __OpenCLOn12CreatorID_FWD_DEFINED__
85typedef interface OpenCLOn12CreatorID OpenCLOn12CreatorID;
86
87#endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */
88
89
90#ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__
91#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
92typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
93
94#endif /* __DirectMLTensorFlowCreatorID_FWD_DEFINED__ */
95
96
97/* header files for imported files */
98#include "OAIdl.h"
99#include "OCIdl.h"
100#include "d3d11on12.h"
101
102#ifdef __cplusplus
103extern "C"{
104#endif
105
106
107/* interface __MIDL_itf_d3d12compatibility_0000_0000 */
108/* [local] */
109
110#include <winapifamily.h>
111#pragma region Desktop Family
112#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
113typedef
114enum D3D12_COMPATIBILITY_SHARED_FLAGS
115 {
116 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
117 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
118 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
119 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
120 } D3D12_COMPATIBILITY_SHARED_FLAGS;
121
122DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS );
123typedef
124enum D3D12_REFLECT_SHARED_PROPERTY
125 {
126 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS = 0,
127 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS = ( D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS + 1 ) ,
128 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE = ( D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS + 1 )
129 } D3D12_REFLECT_SHARED_PROPERTY;
130
131
132
133extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_c_ifspec;
134extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_s_ifspec;
135
136#ifndef __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
137#define __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
138
139/* interface ID3D12CompatibilityDevice */
140/* [unique][local][object][uuid] */
141
142
143EXTERN_C const IID IID_ID3D12CompatibilityDevice;
144
145#if defined(__cplusplus) && !defined(CINTERFACE)
146
147 MIDL_INTERFACE("8f1c0e3c-fae3-4a82-b098-bfe1708207ff")
148 ID3D12CompatibilityDevice : public IUnknown
149 {
150 public:
151 virtual HRESULT STDMETHODCALLTYPE CreateSharedResource(
152 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
153 D3D12_HEAP_FLAGS HeapFlags,
154 _In_ const D3D12_RESOURCE_DESC *pDesc,
155 D3D12_RESOURCE_STATES InitialResourceState,
156 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
157 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
158 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
159 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
160 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
161 REFIID riid,
162 _COM_Outptr_opt_ void **ppResource) = 0;
163
164 virtual HRESULT STDMETHODCALLTYPE CreateSharedHeap(
165 _In_ const D3D12_HEAP_DESC *pHeapDesc,
166 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
167 REFIID riid,
168 _COM_Outptr_opt_ void **ppHeap) = 0;
169
170 virtual HRESULT STDMETHODCALLTYPE ReflectSharedProperties(
171 _In_ ID3D12Object *pHeapOrResource,
172 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
173 _Out_writes_bytes_(DataSize) void *pData,
174 UINT DataSize) = 0;
175
176 };
177
178
179#else /* C style interface */
180
181 typedef struct ID3D12CompatibilityDeviceVtbl
182 {
183 BEGIN_INTERFACE
184
185 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
186 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
187 ID3D12CompatibilityDevice * This,
188 REFIID riid,
189 _COM_Outptr_ void **ppvObject);
190
191 DECLSPEC_XFGVIRT(IUnknown, AddRef)
192 ULONG ( STDMETHODCALLTYPE *AddRef )(
193 ID3D12CompatibilityDevice * This);
194
195 DECLSPEC_XFGVIRT(IUnknown, Release)
196 ULONG ( STDMETHODCALLTYPE *Release )(
197 ID3D12CompatibilityDevice * This);
198
199 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedResource)
200 HRESULT ( STDMETHODCALLTYPE *CreateSharedResource )(
201 ID3D12CompatibilityDevice * This,
202 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
203 D3D12_HEAP_FLAGS HeapFlags,
204 _In_ const D3D12_RESOURCE_DESC *pDesc,
205 D3D12_RESOURCE_STATES InitialResourceState,
206 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
207 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
208 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
209 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
210 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
211 REFIID riid,
212 _COM_Outptr_opt_ void **ppResource);
213
214 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedHeap)
215 HRESULT ( STDMETHODCALLTYPE *CreateSharedHeap )(
216 ID3D12CompatibilityDevice * This,
217 _In_ const D3D12_HEAP_DESC *pHeapDesc,
218 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
219 REFIID riid,
220 _COM_Outptr_opt_ void **ppHeap);
221
222 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, ReflectSharedProperties)
223 HRESULT ( STDMETHODCALLTYPE *ReflectSharedProperties )(
224 ID3D12CompatibilityDevice * This,
225 _In_ ID3D12Object *pHeapOrResource,
226 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
227 _Out_writes_bytes_(DataSize) void *pData,
228 UINT DataSize);
229
230 END_INTERFACE
231 } ID3D12CompatibilityDeviceVtbl;
232
233 interface ID3D12CompatibilityDevice
234 {
235 CONST_VTBL struct ID3D12CompatibilityDeviceVtbl *lpVtbl;
236 };
237
238
239
240#ifdef COBJMACROS
241
242
243#define ID3D12CompatibilityDevice_QueryInterface(This,riid,ppvObject) \
244 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
245
246#define ID3D12CompatibilityDevice_AddRef(This) \
247 ( (This)->lpVtbl -> AddRef(This) )
248
249#define ID3D12CompatibilityDevice_Release(This) \
250 ( (This)->lpVtbl -> Release(This) )
251
252
253#define ID3D12CompatibilityDevice_CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) \
254 ( (This)->lpVtbl -> CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) )
255
256#define ID3D12CompatibilityDevice_CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) \
257 ( (This)->lpVtbl -> CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) )
258
259#define ID3D12CompatibilityDevice_ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) \
260 ( (This)->lpVtbl -> ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) )
261
262#endif /* COBJMACROS */
263
264
265#endif /* C style interface */
266
267
268
269
270#endif /* __ID3D12CompatibilityDevice_INTERFACE_DEFINED__ */
271
272
273#ifndef __D3D11On12CreatorID_INTERFACE_DEFINED__
274#define __D3D11On12CreatorID_INTERFACE_DEFINED__
275
276/* interface D3D11On12CreatorID */
277/* [unique][local][object][uuid] */
278
279
280EXTERN_C const IID IID_D3D11On12CreatorID;
281
282#if defined(__cplusplus) && !defined(CINTERFACE)
283
284 MIDL_INTERFACE("edbf5678-2960-4e81-8429-99d4b2630c4e")
285 D3D11On12CreatorID : public IUnknown
286 {
287 public:
288 };
289
290
291#else /* C style interface */
292
293 typedef struct D3D11On12CreatorIDVtbl
294 {
295 BEGIN_INTERFACE
296
297 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
298 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
299 D3D11On12CreatorID * This,
300 REFIID riid,
301 _COM_Outptr_ void **ppvObject);
302
303 DECLSPEC_XFGVIRT(IUnknown, AddRef)
304 ULONG ( STDMETHODCALLTYPE *AddRef )(
305 D3D11On12CreatorID * This);
306
307 DECLSPEC_XFGVIRT(IUnknown, Release)
308 ULONG ( STDMETHODCALLTYPE *Release )(
309 D3D11On12CreatorID * This);
310
311 END_INTERFACE
312 } D3D11On12CreatorIDVtbl;
313
314 interface D3D11On12CreatorID
315 {
316 CONST_VTBL struct D3D11On12CreatorIDVtbl *lpVtbl;
317 };
318
319
320
321#ifdef COBJMACROS
322
323
324#define D3D11On12CreatorID_QueryInterface(This,riid,ppvObject) \
325 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
326
327#define D3D11On12CreatorID_AddRef(This) \
328 ( (This)->lpVtbl -> AddRef(This) )
329
330#define D3D11On12CreatorID_Release(This) \
331 ( (This)->lpVtbl -> Release(This) )
332
333
334#endif /* COBJMACROS */
335
336
337#endif /* C style interface */
338
339
340
341
342#endif /* __D3D11On12CreatorID_INTERFACE_DEFINED__ */
343
344
345#ifndef __D3D9On12CreatorID_INTERFACE_DEFINED__
346#define __D3D9On12CreatorID_INTERFACE_DEFINED__
347
348/* interface D3D9On12CreatorID */
349/* [unique][local][object][uuid] */
350
351
352EXTERN_C const IID IID_D3D9On12CreatorID;
353
354#if defined(__cplusplus) && !defined(CINTERFACE)
355
356 MIDL_INTERFACE("fffcbb7f-15d3-42a2-841e-9d8d32f37ddd")
357 D3D9On12CreatorID : public IUnknown
358 {
359 public:
360 };
361
362
363#else /* C style interface */
364
365 typedef struct D3D9On12CreatorIDVtbl
366 {
367 BEGIN_INTERFACE
368
369 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
370 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
371 D3D9On12CreatorID * This,
372 REFIID riid,
373 _COM_Outptr_ void **ppvObject);
374
375 DECLSPEC_XFGVIRT(IUnknown, AddRef)
376 ULONG ( STDMETHODCALLTYPE *AddRef )(
377 D3D9On12CreatorID * This);
378
379 DECLSPEC_XFGVIRT(IUnknown, Release)
380 ULONG ( STDMETHODCALLTYPE *Release )(
381 D3D9On12CreatorID * This);
382
383 END_INTERFACE
384 } D3D9On12CreatorIDVtbl;
385
386 interface D3D9On12CreatorID
387 {
388 CONST_VTBL struct D3D9On12CreatorIDVtbl *lpVtbl;
389 };
390
391
392
393#ifdef COBJMACROS
394
395
396#define D3D9On12CreatorID_QueryInterface(This,riid,ppvObject) \
397 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
398
399#define D3D9On12CreatorID_AddRef(This) \
400 ( (This)->lpVtbl -> AddRef(This) )
401
402#define D3D9On12CreatorID_Release(This) \
403 ( (This)->lpVtbl -> Release(This) )
404
405
406#endif /* COBJMACROS */
407
408
409#endif /* C style interface */
410
411
412
413
414#endif /* __D3D9On12CreatorID_INTERFACE_DEFINED__ */
415
416
417#ifndef __OpenGLOn12CreatorID_INTERFACE_DEFINED__
418#define __OpenGLOn12CreatorID_INTERFACE_DEFINED__
419
420/* interface OpenGLOn12CreatorID */
421/* [unique][local][object][uuid] */
422
423
424EXTERN_C const IID IID_OpenGLOn12CreatorID;
425
426#if defined(__cplusplus) && !defined(CINTERFACE)
427
428 MIDL_INTERFACE("6bb3cd34-0d19-45ab-97ed-d720ba3dfc80")
429 OpenGLOn12CreatorID : public IUnknown
430 {
431 public:
432 };
433
434
435#else /* C style interface */
436
437 typedef struct OpenGLOn12CreatorIDVtbl
438 {
439 BEGIN_INTERFACE
440
441 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
442 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
443 OpenGLOn12CreatorID * This,
444 REFIID riid,
445 _COM_Outptr_ void **ppvObject);
446
447 DECLSPEC_XFGVIRT(IUnknown, AddRef)
448 ULONG ( STDMETHODCALLTYPE *AddRef )(
449 OpenGLOn12CreatorID * This);
450
451 DECLSPEC_XFGVIRT(IUnknown, Release)
452 ULONG ( STDMETHODCALLTYPE *Release )(
453 OpenGLOn12CreatorID * This);
454
455 END_INTERFACE
456 } OpenGLOn12CreatorIDVtbl;
457
458 interface OpenGLOn12CreatorID
459 {
460 CONST_VTBL struct OpenGLOn12CreatorIDVtbl *lpVtbl;
461 };
462
463
464
465#ifdef COBJMACROS
466
467
468#define OpenGLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
469 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
470
471#define OpenGLOn12CreatorID_AddRef(This) \
472 ( (This)->lpVtbl -> AddRef(This) )
473
474#define OpenGLOn12CreatorID_Release(This) \
475 ( (This)->lpVtbl -> Release(This) )
476
477
478#endif /* COBJMACROS */
479
480
481#endif /* C style interface */
482
483
484
485
486#endif /* __OpenGLOn12CreatorID_INTERFACE_DEFINED__ */
487
488
489#ifndef __OpenCLOn12CreatorID_INTERFACE_DEFINED__
490#define __OpenCLOn12CreatorID_INTERFACE_DEFINED__
491
492/* interface OpenCLOn12CreatorID */
493/* [unique][local][object][uuid] */
494
495
496EXTERN_C const IID IID_OpenCLOn12CreatorID;
497
498#if defined(__cplusplus) && !defined(CINTERFACE)
499
500 MIDL_INTERFACE("3f76bb74-91b5-4a88-b126-20ca0331cd60")
501 OpenCLOn12CreatorID : public IUnknown
502 {
503 public:
504 };
505
506
507#else /* C style interface */
508
509 typedef struct OpenCLOn12CreatorIDVtbl
510 {
511 BEGIN_INTERFACE
512
513 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
514 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
515 OpenCLOn12CreatorID * This,
516 REFIID riid,
517 _COM_Outptr_ void **ppvObject);
518
519 DECLSPEC_XFGVIRT(IUnknown, AddRef)
520 ULONG ( STDMETHODCALLTYPE *AddRef )(
521 OpenCLOn12CreatorID * This);
522
523 DECLSPEC_XFGVIRT(IUnknown, Release)
524 ULONG ( STDMETHODCALLTYPE *Release )(
525 OpenCLOn12CreatorID * This);
526
527 END_INTERFACE
528 } OpenCLOn12CreatorIDVtbl;
529
530 interface OpenCLOn12CreatorID
531 {
532 CONST_VTBL struct OpenCLOn12CreatorIDVtbl *lpVtbl;
533 };
534
535
536
537#ifdef COBJMACROS
538
539
540#define OpenCLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
541 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
542
543#define OpenCLOn12CreatorID_AddRef(This) \
544 ( (This)->lpVtbl -> AddRef(This) )
545
546#define OpenCLOn12CreatorID_Release(This) \
547 ( (This)->lpVtbl -> Release(This) )
548
549
550#endif /* COBJMACROS */
551
552
553#endif /* C style interface */
554
555
556
557
558#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */
559
560
561#ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
562#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
563
564/* interface DirectMLTensorFlowCreatorID */
565/* [unique][local][object][uuid] */
566
567
568EXTERN_C const IID IID_DirectMLTensorFlowCreatorID;
569
570#if defined(__cplusplus) && !defined(CINTERFACE)
571
572 MIDL_INTERFACE("cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab")
573 DirectMLTensorFlowCreatorID : public IUnknown
574 {
575 public:
576 };
577
578
579#else /* C style interface */
580
581 typedef struct DirectMLTensorFlowCreatorIDVtbl
582 {
583 BEGIN_INTERFACE
584
585 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
586 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
587 DirectMLTensorFlowCreatorID * This,
588 REFIID riid,
589 _COM_Outptr_ void **ppvObject);
590
591 DECLSPEC_XFGVIRT(IUnknown, AddRef)
592 ULONG ( STDMETHODCALLTYPE *AddRef )(
593 DirectMLTensorFlowCreatorID * This);
594
595 DECLSPEC_XFGVIRT(IUnknown, Release)
596 ULONG ( STDMETHODCALLTYPE *Release )(
597 DirectMLTensorFlowCreatorID * This);
598
599 END_INTERFACE
600 } DirectMLTensorFlowCreatorIDVtbl;
601
602 interface DirectMLTensorFlowCreatorID
603 {
604 CONST_VTBL struct DirectMLTensorFlowCreatorIDVtbl *lpVtbl;
605 };
606
607
608
609#ifdef COBJMACROS
610
611
612#define DirectMLTensorFlowCreatorID_QueryInterface(This,riid,ppvObject) \
613 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
614
615#define DirectMLTensorFlowCreatorID_AddRef(This) \
616 ( (This)->lpVtbl -> AddRef(This) )
617
618#define DirectMLTensorFlowCreatorID_Release(This) \
619 ( (This)->lpVtbl -> Release(This) )
620
621
622#endif /* COBJMACROS */
623
624
625#endif /* C style interface */
626
627
628
629
630#endif /* __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__ */
631
632
633/* interface __MIDL_itf_d3d12compatibility_0000_0006 */
634/* [local] */
635
636#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
637#pragma endregion
638DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);
639DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);
640DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);
641DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);
642DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);
643DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
644
645
646extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0006_v0_0_c_ifspec;
647extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0006_v0_0_s_ifspec;
648
649/* Additional Prototypes for ALL interfaces */
650
651/* end of Additional Prototypes */
652
653#ifdef __cplusplus
654}
655#endif
656
657#endif
658
659
diff --git a/contrib/DirectX-Headers/include/directx/d3d12compatibility.idl b/contrib/DirectX-Headers/include/directx/d3d12compatibility.idl
new file mode 100644
index 0000000..fae6f1a
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12compatibility.idl
@@ -0,0 +1,88 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10import "d3d11on12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region Desktop Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17typedef enum D3D12_COMPATIBILITY_SHARED_FLAGS
18{
19 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
20 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
21 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
22 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4,
23
24} D3D12_COMPATIBILITY_SHARED_FLAGS;
25cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS );" )
26
27typedef enum D3D12_REFLECT_SHARED_PROPERTY
28{
29 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS, // D3D11_RESOURCE_FLAGS
30 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS, // D3D12_COMPATIBILITY_SHARED_FLAGS
31 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE, // HANDLE
32} D3D12_REFLECT_SHARED_PROPERTY;
33
34[ uuid( 8f1c0e3c-fae3-4a82-b098-bfe1708207ff ), object, local, pointer_default( unique ) ]
35interface ID3D12CompatibilityDevice
36 : IUnknown
37{
38 HRESULT CreateSharedResource(
39 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
40 D3D12_HEAP_FLAGS HeapFlags,
41 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
42 D3D12_RESOURCE_STATES InitialResourceState,
43 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
44 [annotation("_In_opt_")] const D3D11_RESOURCE_FLAGS* pFlags11,
45 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
46 [annotation("_In_opt_")] ID3D12LifetimeTracker* pLifetimeTracker,
47 [annotation("_In_opt_")] ID3D12SwapChainAssistant* pOwningSwapchain,
48 REFIID riid,
49 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppResource);
50
51 HRESULT CreateSharedHeap(
52 [annotation("_In_")] const D3D12_HEAP_DESC* pHeapDesc,
53 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
54 REFIID riid,
55 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppHeap);
56
57 HRESULT ReflectSharedProperties(
58 [annotation("_In_")] ID3D12Object* pHeapOrResource,
59 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
60 [annotation("_Out_writes_bytes_(DataSize)")] void* pData,
61 UINT DataSize);
62}
63
64[uuid(edbf5678-2960-4e81-8429-99d4b2630c4e), object, local, pointer_default(unique)]
65interface D3D11On12CreatorID : IUnknown { };
66
67[uuid(fffcbb7f-15d3-42a2-841e-9d8d32f37ddd), object, local, pointer_default(unique)]
68interface D3D9On12CreatorID : IUnknown { };
69
70[uuid(6bb3cd34-0d19-45ab-97ed-d720ba3dfc80), object, local, pointer_default(unique)]
71interface OpenGLOn12CreatorID : IUnknown { };
72
73[uuid(3f76bb74-91b5-4a88-b126-20ca0331cd60), object, local, pointer_default(unique)]
74interface OpenCLOn12CreatorID : IUnknown { };
75
76[uuid(cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab), object, local, pointer_default(unique)]
77interface DirectMLTensorFlowCreatorID : IUnknown { };
78
79
80cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
81#pragma endregion
82
83cpp_quote( "DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);" )
84cpp_quote( "DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);" )
85cpp_quote( "DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);" )
86cpp_quote( "DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);" )
87cpp_quote( "DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);" )
88cpp_quote( "DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3d12sdklayers.h b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.h
new file mode 100644
index 0000000..54b75e4
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.h
@@ -0,0 +1,3657 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12sdklayers_h__
39#define __d3d12sdklayers_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if _CONTROL_FLOW_GUARD_XFG
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Debug_FWD_DEFINED__
56#define __ID3D12Debug_FWD_DEFINED__
57typedef interface ID3D12Debug ID3D12Debug;
58
59#endif /* __ID3D12Debug_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12Debug1_FWD_DEFINED__
63#define __ID3D12Debug1_FWD_DEFINED__
64typedef interface ID3D12Debug1 ID3D12Debug1;
65
66#endif /* __ID3D12Debug1_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12Debug2_FWD_DEFINED__
70#define __ID3D12Debug2_FWD_DEFINED__
71typedef interface ID3D12Debug2 ID3D12Debug2;
72
73#endif /* __ID3D12Debug2_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Debug3_FWD_DEFINED__
77#define __ID3D12Debug3_FWD_DEFINED__
78typedef interface ID3D12Debug3 ID3D12Debug3;
79
80#endif /* __ID3D12Debug3_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12Debug4_FWD_DEFINED__
84#define __ID3D12Debug4_FWD_DEFINED__
85typedef interface ID3D12Debug4 ID3D12Debug4;
86
87#endif /* __ID3D12Debug4_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Debug5_FWD_DEFINED__
91#define __ID3D12Debug5_FWD_DEFINED__
92typedef interface ID3D12Debug5 ID3D12Debug5;
93
94#endif /* __ID3D12Debug5_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12DebugDevice1_FWD_DEFINED__
98#define __ID3D12DebugDevice1_FWD_DEFINED__
99typedef interface ID3D12DebugDevice1 ID3D12DebugDevice1;
100
101#endif /* __ID3D12DebugDevice1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12DebugDevice_FWD_DEFINED__
105#define __ID3D12DebugDevice_FWD_DEFINED__
106typedef interface ID3D12DebugDevice ID3D12DebugDevice;
107
108#endif /* __ID3D12DebugDevice_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12DebugDevice2_FWD_DEFINED__
112#define __ID3D12DebugDevice2_FWD_DEFINED__
113typedef interface ID3D12DebugDevice2 ID3D12DebugDevice2;
114
115#endif /* __ID3D12DebugDevice2_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12DebugCommandQueue_FWD_DEFINED__
119#define __ID3D12DebugCommandQueue_FWD_DEFINED__
120typedef interface ID3D12DebugCommandQueue ID3D12DebugCommandQueue;
121
122#endif /* __ID3D12DebugCommandQueue_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12DebugCommandList1_FWD_DEFINED__
126#define __ID3D12DebugCommandList1_FWD_DEFINED__
127typedef interface ID3D12DebugCommandList1 ID3D12DebugCommandList1;
128
129#endif /* __ID3D12DebugCommandList1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12DebugCommandList_FWD_DEFINED__
133#define __ID3D12DebugCommandList_FWD_DEFINED__
134typedef interface ID3D12DebugCommandList ID3D12DebugCommandList;
135
136#endif /* __ID3D12DebugCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12DebugCommandList2_FWD_DEFINED__
140#define __ID3D12DebugCommandList2_FWD_DEFINED__
141typedef interface ID3D12DebugCommandList2 ID3D12DebugCommandList2;
142
143#endif /* __ID3D12DebugCommandList2_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12SharingContract_FWD_DEFINED__
147#define __ID3D12SharingContract_FWD_DEFINED__
148typedef interface ID3D12SharingContract ID3D12SharingContract;
149
150#endif /* __ID3D12SharingContract_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12InfoQueue_FWD_DEFINED__
154#define __ID3D12InfoQueue_FWD_DEFINED__
155typedef interface ID3D12InfoQueue ID3D12InfoQueue;
156
157#endif /* __ID3D12InfoQueue_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12InfoQueue1_FWD_DEFINED__
161#define __ID3D12InfoQueue1_FWD_DEFINED__
162typedef interface ID3D12InfoQueue1 ID3D12InfoQueue1;
163
164#endif /* __ID3D12InfoQueue1_FWD_DEFINED__ */
165
166
167/* header files for imported files */
168#include "OAIdl.h"
169#include "OCIdl.h"
170#include "d3d12.h"
171
172#ifdef __cplusplus
173extern "C"{
174#endif
175
176
177/* interface __MIDL_itf_d3d12sdklayers_0000_0000 */
178/* [local] */
179
180#include <winapifamily.h>
181#pragma region App Family
182#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
183
184
185extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_c_ifspec;
186extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_s_ifspec;
187
188#ifndef __ID3D12Debug_INTERFACE_DEFINED__
189#define __ID3D12Debug_INTERFACE_DEFINED__
190
191/* interface ID3D12Debug */
192/* [unique][local][object][uuid] */
193
194
195EXTERN_C const IID IID_ID3D12Debug;
196
197#if defined(__cplusplus) && !defined(CINTERFACE)
198
199 MIDL_INTERFACE("344488b7-6846-474b-b989-f027448245e0")
200 ID3D12Debug : public IUnknown
201 {
202 public:
203 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
204
205 };
206
207
208#else /* C style interface */
209
210 typedef struct ID3D12DebugVtbl
211 {
212 BEGIN_INTERFACE
213
214 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
215 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
216 ID3D12Debug * This,
217 REFIID riid,
218 _COM_Outptr_ void **ppvObject);
219
220 DECLSPEC_XFGVIRT(IUnknown, AddRef)
221 ULONG ( STDMETHODCALLTYPE *AddRef )(
222 ID3D12Debug * This);
223
224 DECLSPEC_XFGVIRT(IUnknown, Release)
225 ULONG ( STDMETHODCALLTYPE *Release )(
226 ID3D12Debug * This);
227
228 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
229 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
230 ID3D12Debug * This);
231
232 END_INTERFACE
233 } ID3D12DebugVtbl;
234
235 interface ID3D12Debug
236 {
237 CONST_VTBL struct ID3D12DebugVtbl *lpVtbl;
238 };
239
240
241
242#ifdef COBJMACROS
243
244
245#define ID3D12Debug_QueryInterface(This,riid,ppvObject) \
246 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
247
248#define ID3D12Debug_AddRef(This) \
249 ( (This)->lpVtbl -> AddRef(This) )
250
251#define ID3D12Debug_Release(This) \
252 ( (This)->lpVtbl -> Release(This) )
253
254
255#define ID3D12Debug_EnableDebugLayer(This) \
256 ( (This)->lpVtbl -> EnableDebugLayer(This) )
257
258#endif /* COBJMACROS */
259
260
261#endif /* C style interface */
262
263
264
265
266#endif /* __ID3D12Debug_INTERFACE_DEFINED__ */
267
268
269/* interface __MIDL_itf_d3d12sdklayers_0000_0001 */
270/* [local] */
271
272typedef
273enum D3D12_GPU_BASED_VALIDATION_FLAGS
274 {
275 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0,
276 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x1
277 } D3D12_GPU_BASED_VALIDATION_FLAGS;
278
279DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)
280
281
282extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_c_ifspec;
283extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_s_ifspec;
284
285#ifndef __ID3D12Debug1_INTERFACE_DEFINED__
286#define __ID3D12Debug1_INTERFACE_DEFINED__
287
288/* interface ID3D12Debug1 */
289/* [unique][local][object][uuid] */
290
291
292EXTERN_C const IID IID_ID3D12Debug1;
293
294#if defined(__cplusplus) && !defined(CINTERFACE)
295
296 MIDL_INTERFACE("affaa4ca-63fe-4d8e-b8ad-159000af4304")
297 ID3D12Debug1 : public IUnknown
298 {
299 public:
300 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
301
302 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
303 BOOL Enable) = 0;
304
305 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
306 BOOL Enable) = 0;
307
308 };
309
310
311#else /* C style interface */
312
313 typedef struct ID3D12Debug1Vtbl
314 {
315 BEGIN_INTERFACE
316
317 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
318 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
319 ID3D12Debug1 * This,
320 REFIID riid,
321 _COM_Outptr_ void **ppvObject);
322
323 DECLSPEC_XFGVIRT(IUnknown, AddRef)
324 ULONG ( STDMETHODCALLTYPE *AddRef )(
325 ID3D12Debug1 * This);
326
327 DECLSPEC_XFGVIRT(IUnknown, Release)
328 ULONG ( STDMETHODCALLTYPE *Release )(
329 ID3D12Debug1 * This);
330
331 DECLSPEC_XFGVIRT(ID3D12Debug1, EnableDebugLayer)
332 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
333 ID3D12Debug1 * This);
334
335 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableGPUBasedValidation)
336 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
337 ID3D12Debug1 * This,
338 BOOL Enable);
339
340 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableSynchronizedCommandQueueValidation)
341 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
342 ID3D12Debug1 * This,
343 BOOL Enable);
344
345 END_INTERFACE
346 } ID3D12Debug1Vtbl;
347
348 interface ID3D12Debug1
349 {
350 CONST_VTBL struct ID3D12Debug1Vtbl *lpVtbl;
351 };
352
353
354
355#ifdef COBJMACROS
356
357
358#define ID3D12Debug1_QueryInterface(This,riid,ppvObject) \
359 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
360
361#define ID3D12Debug1_AddRef(This) \
362 ( (This)->lpVtbl -> AddRef(This) )
363
364#define ID3D12Debug1_Release(This) \
365 ( (This)->lpVtbl -> Release(This) )
366
367
368#define ID3D12Debug1_EnableDebugLayer(This) \
369 ( (This)->lpVtbl -> EnableDebugLayer(This) )
370
371#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable) \
372 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
373
374#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
375 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
376
377#endif /* COBJMACROS */
378
379
380#endif /* C style interface */
381
382
383
384
385#endif /* __ID3D12Debug1_INTERFACE_DEFINED__ */
386
387
388#ifndef __ID3D12Debug2_INTERFACE_DEFINED__
389#define __ID3D12Debug2_INTERFACE_DEFINED__
390
391/* interface ID3D12Debug2 */
392/* [unique][local][object][uuid] */
393
394
395EXTERN_C const IID IID_ID3D12Debug2;
396
397#if defined(__cplusplus) && !defined(CINTERFACE)
398
399 MIDL_INTERFACE("93a665c4-a3b2-4e5d-b692-a26ae14e3374")
400 ID3D12Debug2 : public IUnknown
401 {
402 public:
403 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
404 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
405
406 };
407
408
409#else /* C style interface */
410
411 typedef struct ID3D12Debug2Vtbl
412 {
413 BEGIN_INTERFACE
414
415 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
416 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
417 ID3D12Debug2 * This,
418 REFIID riid,
419 _COM_Outptr_ void **ppvObject);
420
421 DECLSPEC_XFGVIRT(IUnknown, AddRef)
422 ULONG ( STDMETHODCALLTYPE *AddRef )(
423 ID3D12Debug2 * This);
424
425 DECLSPEC_XFGVIRT(IUnknown, Release)
426 ULONG ( STDMETHODCALLTYPE *Release )(
427 ID3D12Debug2 * This);
428
429 DECLSPEC_XFGVIRT(ID3D12Debug2, SetGPUBasedValidationFlags)
430 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
431 ID3D12Debug2 * This,
432 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
433
434 END_INTERFACE
435 } ID3D12Debug2Vtbl;
436
437 interface ID3D12Debug2
438 {
439 CONST_VTBL struct ID3D12Debug2Vtbl *lpVtbl;
440 };
441
442
443
444#ifdef COBJMACROS
445
446
447#define ID3D12Debug2_QueryInterface(This,riid,ppvObject) \
448 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
449
450#define ID3D12Debug2_AddRef(This) \
451 ( (This)->lpVtbl -> AddRef(This) )
452
453#define ID3D12Debug2_Release(This) \
454 ( (This)->lpVtbl -> Release(This) )
455
456
457#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags) \
458 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
459
460#endif /* COBJMACROS */
461
462
463#endif /* C style interface */
464
465
466
467
468#endif /* __ID3D12Debug2_INTERFACE_DEFINED__ */
469
470
471#ifndef __ID3D12Debug3_INTERFACE_DEFINED__
472#define __ID3D12Debug3_INTERFACE_DEFINED__
473
474/* interface ID3D12Debug3 */
475/* [unique][local][object][uuid] */
476
477
478EXTERN_C const IID IID_ID3D12Debug3;
479
480#if defined(__cplusplus) && !defined(CINTERFACE)
481
482 MIDL_INTERFACE("5cf4e58f-f671-4ff1-a542-3686e3d153d1")
483 ID3D12Debug3 : public ID3D12Debug
484 {
485 public:
486 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
487 BOOL Enable) = 0;
488
489 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
490 BOOL Enable) = 0;
491
492 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
493 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
494
495 };
496
497
498#else /* C style interface */
499
500 typedef struct ID3D12Debug3Vtbl
501 {
502 BEGIN_INTERFACE
503
504 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
505 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
506 ID3D12Debug3 * This,
507 REFIID riid,
508 _COM_Outptr_ void **ppvObject);
509
510 DECLSPEC_XFGVIRT(IUnknown, AddRef)
511 ULONG ( STDMETHODCALLTYPE *AddRef )(
512 ID3D12Debug3 * This);
513
514 DECLSPEC_XFGVIRT(IUnknown, Release)
515 ULONG ( STDMETHODCALLTYPE *Release )(
516 ID3D12Debug3 * This);
517
518 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
519 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
520 ID3D12Debug3 * This);
521
522 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
523 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
524 ID3D12Debug3 * This,
525 BOOL Enable);
526
527 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
528 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
529 ID3D12Debug3 * This,
530 BOOL Enable);
531
532 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
533 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
534 ID3D12Debug3 * This,
535 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
536
537 END_INTERFACE
538 } ID3D12Debug3Vtbl;
539
540 interface ID3D12Debug3
541 {
542 CONST_VTBL struct ID3D12Debug3Vtbl *lpVtbl;
543 };
544
545
546
547#ifdef COBJMACROS
548
549
550#define ID3D12Debug3_QueryInterface(This,riid,ppvObject) \
551 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
552
553#define ID3D12Debug3_AddRef(This) \
554 ( (This)->lpVtbl -> AddRef(This) )
555
556#define ID3D12Debug3_Release(This) \
557 ( (This)->lpVtbl -> Release(This) )
558
559
560#define ID3D12Debug3_EnableDebugLayer(This) \
561 ( (This)->lpVtbl -> EnableDebugLayer(This) )
562
563
564#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable) \
565 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
566
567#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
568 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
569
570#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags) \
571 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
572
573#endif /* COBJMACROS */
574
575
576#endif /* C style interface */
577
578
579
580
581#endif /* __ID3D12Debug3_INTERFACE_DEFINED__ */
582
583
584#ifndef __ID3D12Debug4_INTERFACE_DEFINED__
585#define __ID3D12Debug4_INTERFACE_DEFINED__
586
587/* interface ID3D12Debug4 */
588/* [unique][local][object][uuid] */
589
590
591EXTERN_C const IID IID_ID3D12Debug4;
592
593#if defined(__cplusplus) && !defined(CINTERFACE)
594
595 MIDL_INTERFACE("014b816e-9ec5-4a2f-a845-ffbe441ce13a")
596 ID3D12Debug4 : public ID3D12Debug3
597 {
598 public:
599 virtual void STDMETHODCALLTYPE DisableDebugLayer( void) = 0;
600
601 };
602
603
604#else /* C style interface */
605
606 typedef struct ID3D12Debug4Vtbl
607 {
608 BEGIN_INTERFACE
609
610 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
611 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
612 ID3D12Debug4 * This,
613 REFIID riid,
614 _COM_Outptr_ void **ppvObject);
615
616 DECLSPEC_XFGVIRT(IUnknown, AddRef)
617 ULONG ( STDMETHODCALLTYPE *AddRef )(
618 ID3D12Debug4 * This);
619
620 DECLSPEC_XFGVIRT(IUnknown, Release)
621 ULONG ( STDMETHODCALLTYPE *Release )(
622 ID3D12Debug4 * This);
623
624 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
625 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
626 ID3D12Debug4 * This);
627
628 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
629 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
630 ID3D12Debug4 * This,
631 BOOL Enable);
632
633 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
634 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
635 ID3D12Debug4 * This,
636 BOOL Enable);
637
638 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
639 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
640 ID3D12Debug4 * This,
641 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
642
643 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
644 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
645 ID3D12Debug4 * This);
646
647 END_INTERFACE
648 } ID3D12Debug4Vtbl;
649
650 interface ID3D12Debug4
651 {
652 CONST_VTBL struct ID3D12Debug4Vtbl *lpVtbl;
653 };
654
655
656
657#ifdef COBJMACROS
658
659
660#define ID3D12Debug4_QueryInterface(This,riid,ppvObject) \
661 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
662
663#define ID3D12Debug4_AddRef(This) \
664 ( (This)->lpVtbl -> AddRef(This) )
665
666#define ID3D12Debug4_Release(This) \
667 ( (This)->lpVtbl -> Release(This) )
668
669
670#define ID3D12Debug4_EnableDebugLayer(This) \
671 ( (This)->lpVtbl -> EnableDebugLayer(This) )
672
673
674#define ID3D12Debug4_SetEnableGPUBasedValidation(This,Enable) \
675 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
676
677#define ID3D12Debug4_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
678 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
679
680#define ID3D12Debug4_SetGPUBasedValidationFlags(This,Flags) \
681 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
682
683
684#define ID3D12Debug4_DisableDebugLayer(This) \
685 ( (This)->lpVtbl -> DisableDebugLayer(This) )
686
687#endif /* COBJMACROS */
688
689
690#endif /* C style interface */
691
692
693
694
695#endif /* __ID3D12Debug4_INTERFACE_DEFINED__ */
696
697
698#ifndef __ID3D12Debug5_INTERFACE_DEFINED__
699#define __ID3D12Debug5_INTERFACE_DEFINED__
700
701/* interface ID3D12Debug5 */
702/* [unique][local][object][uuid] */
703
704
705EXTERN_C const IID IID_ID3D12Debug5;
706
707#if defined(__cplusplus) && !defined(CINTERFACE)
708
709 MIDL_INTERFACE("548d6b12-09fa-40e0-9069-5dcd589a52c9")
710 ID3D12Debug5 : public ID3D12Debug4
711 {
712 public:
713 virtual void STDMETHODCALLTYPE SetEnableAutoName(
714 BOOL Enable) = 0;
715
716 };
717
718
719#else /* C style interface */
720
721 typedef struct ID3D12Debug5Vtbl
722 {
723 BEGIN_INTERFACE
724
725 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
726 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
727 ID3D12Debug5 * This,
728 REFIID riid,
729 _COM_Outptr_ void **ppvObject);
730
731 DECLSPEC_XFGVIRT(IUnknown, AddRef)
732 ULONG ( STDMETHODCALLTYPE *AddRef )(
733 ID3D12Debug5 * This);
734
735 DECLSPEC_XFGVIRT(IUnknown, Release)
736 ULONG ( STDMETHODCALLTYPE *Release )(
737 ID3D12Debug5 * This);
738
739 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
740 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
741 ID3D12Debug5 * This);
742
743 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
744 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
745 ID3D12Debug5 * This,
746 BOOL Enable);
747
748 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
749 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
750 ID3D12Debug5 * This,
751 BOOL Enable);
752
753 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
754 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
755 ID3D12Debug5 * This,
756 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
757
758 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
759 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
760 ID3D12Debug5 * This);
761
762 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
763 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
764 ID3D12Debug5 * This,
765 BOOL Enable);
766
767 END_INTERFACE
768 } ID3D12Debug5Vtbl;
769
770 interface ID3D12Debug5
771 {
772 CONST_VTBL struct ID3D12Debug5Vtbl *lpVtbl;
773 };
774
775
776
777#ifdef COBJMACROS
778
779
780#define ID3D12Debug5_QueryInterface(This,riid,ppvObject) \
781 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
782
783#define ID3D12Debug5_AddRef(This) \
784 ( (This)->lpVtbl -> AddRef(This) )
785
786#define ID3D12Debug5_Release(This) \
787 ( (This)->lpVtbl -> Release(This) )
788
789
790#define ID3D12Debug5_EnableDebugLayer(This) \
791 ( (This)->lpVtbl -> EnableDebugLayer(This) )
792
793
794#define ID3D12Debug5_SetEnableGPUBasedValidation(This,Enable) \
795 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
796
797#define ID3D12Debug5_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
798 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
799
800#define ID3D12Debug5_SetGPUBasedValidationFlags(This,Flags) \
801 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
802
803
804#define ID3D12Debug5_DisableDebugLayer(This) \
805 ( (This)->lpVtbl -> DisableDebugLayer(This) )
806
807
808#define ID3D12Debug5_SetEnableAutoName(This,Enable) \
809 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
810
811#endif /* COBJMACROS */
812
813
814#endif /* C style interface */
815
816
817
818
819#endif /* __ID3D12Debug5_INTERFACE_DEFINED__ */
820
821
822/* interface __MIDL_itf_d3d12sdklayers_0000_0006 */
823/* [local] */
824
825DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);
826typedef
827enum D3D12_RLDO_FLAGS
828 {
829 D3D12_RLDO_NONE = 0,
830 D3D12_RLDO_SUMMARY = 0x1,
831 D3D12_RLDO_DETAIL = 0x2,
832 D3D12_RLDO_IGNORE_INTERNAL = 0x4
833 } D3D12_RLDO_FLAGS;
834
835DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)
836typedef
837enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
838 {
839 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0,
840 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
841 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 )
842 } D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
843
844typedef
845enum D3D12_DEBUG_FEATURE
846 {
847 D3D12_DEBUG_FEATURE_NONE = 0,
848 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x1,
849 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x2,
850 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x4,
851 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x8
852 } D3D12_DEBUG_FEATURE;
853
854DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)
855typedef
856enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
857 {
858 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0,
859 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE + 1 ) ,
860 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY + 1 ) ,
861 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION + 1 ) ,
862 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION + 1 )
863 } D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
864
865typedef
866enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
867 {
868 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0,
869 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1,
870 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2,
871 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4,
872 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x7
873 } D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
874
875DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)
876typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
877 {
878 UINT MaxMessagesPerCommandList;
879 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
880 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
881 } D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
882
883typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
884 {
885 FLOAT SlowdownFactor;
886 } D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
887
888
889
890extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0006_v0_0_c_ifspec;
891extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0006_v0_0_s_ifspec;
892
893#ifndef __ID3D12DebugDevice1_INTERFACE_DEFINED__
894#define __ID3D12DebugDevice1_INTERFACE_DEFINED__
895
896/* interface ID3D12DebugDevice1 */
897/* [unique][local][object][uuid] */
898
899
900EXTERN_C const IID IID_ID3D12DebugDevice1;
901
902#if defined(__cplusplus) && !defined(CINTERFACE)
903
904 MIDL_INTERFACE("a9b71770-d099-4a65-a698-3dee10020f88")
905 ID3D12DebugDevice1 : public IUnknown
906 {
907 public:
908 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
909 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
910 _In_reads_bytes_(DataSize) const void *pData,
911 UINT DataSize) = 0;
912
913 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
914 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
915 _Out_writes_bytes_(DataSize) void *pData,
916 UINT DataSize) = 0;
917
918 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
919 D3D12_RLDO_FLAGS Flags) = 0;
920
921 };
922
923
924#else /* C style interface */
925
926 typedef struct ID3D12DebugDevice1Vtbl
927 {
928 BEGIN_INTERFACE
929
930 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
931 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
932 ID3D12DebugDevice1 * This,
933 REFIID riid,
934 _COM_Outptr_ void **ppvObject);
935
936 DECLSPEC_XFGVIRT(IUnknown, AddRef)
937 ULONG ( STDMETHODCALLTYPE *AddRef )(
938 ID3D12DebugDevice1 * This);
939
940 DECLSPEC_XFGVIRT(IUnknown, Release)
941 ULONG ( STDMETHODCALLTYPE *Release )(
942 ID3D12DebugDevice1 * This);
943
944 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, SetDebugParameter)
945 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
946 ID3D12DebugDevice1 * This,
947 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
948 _In_reads_bytes_(DataSize) const void *pData,
949 UINT DataSize);
950
951 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, GetDebugParameter)
952 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
953 ID3D12DebugDevice1 * This,
954 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
955 _Out_writes_bytes_(DataSize) void *pData,
956 UINT DataSize);
957
958 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, ReportLiveDeviceObjects)
959 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
960 ID3D12DebugDevice1 * This,
961 D3D12_RLDO_FLAGS Flags);
962
963 END_INTERFACE
964 } ID3D12DebugDevice1Vtbl;
965
966 interface ID3D12DebugDevice1
967 {
968 CONST_VTBL struct ID3D12DebugDevice1Vtbl *lpVtbl;
969 };
970
971
972
973#ifdef COBJMACROS
974
975
976#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject) \
977 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
978
979#define ID3D12DebugDevice1_AddRef(This) \
980 ( (This)->lpVtbl -> AddRef(This) )
981
982#define ID3D12DebugDevice1_Release(This) \
983 ( (This)->lpVtbl -> Release(This) )
984
985
986#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize) \
987 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
988
989#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize) \
990 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
991
992#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags) \
993 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
994
995#endif /* COBJMACROS */
996
997
998#endif /* C style interface */
999
1000
1001
1002
1003#endif /* __ID3D12DebugDevice1_INTERFACE_DEFINED__ */
1004
1005
1006#ifndef __ID3D12DebugDevice_INTERFACE_DEFINED__
1007#define __ID3D12DebugDevice_INTERFACE_DEFINED__
1008
1009/* interface ID3D12DebugDevice */
1010/* [unique][local][object][uuid] */
1011
1012
1013EXTERN_C const IID IID_ID3D12DebugDevice;
1014
1015#if defined(__cplusplus) && !defined(CINTERFACE)
1016
1017 MIDL_INTERFACE("3febd6dd-4973-4787-8194-e45f9e28923e")
1018 ID3D12DebugDevice : public IUnknown
1019 {
1020 public:
1021 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1022 D3D12_DEBUG_FEATURE Mask) = 0;
1023
1024 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1025
1026 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1027 D3D12_RLDO_FLAGS Flags) = 0;
1028
1029 };
1030
1031
1032#else /* C style interface */
1033
1034 typedef struct ID3D12DebugDeviceVtbl
1035 {
1036 BEGIN_INTERFACE
1037
1038 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1039 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1040 ID3D12DebugDevice * This,
1041 REFIID riid,
1042 _COM_Outptr_ void **ppvObject);
1043
1044 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1045 ULONG ( STDMETHODCALLTYPE *AddRef )(
1046 ID3D12DebugDevice * This);
1047
1048 DECLSPEC_XFGVIRT(IUnknown, Release)
1049 ULONG ( STDMETHODCALLTYPE *Release )(
1050 ID3D12DebugDevice * This);
1051
1052 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1053 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1054 ID3D12DebugDevice * This,
1055 D3D12_DEBUG_FEATURE Mask);
1056
1057 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1058 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1059 ID3D12DebugDevice * This);
1060
1061 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1062 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1063 ID3D12DebugDevice * This,
1064 D3D12_RLDO_FLAGS Flags);
1065
1066 END_INTERFACE
1067 } ID3D12DebugDeviceVtbl;
1068
1069 interface ID3D12DebugDevice
1070 {
1071 CONST_VTBL struct ID3D12DebugDeviceVtbl *lpVtbl;
1072 };
1073
1074
1075
1076#ifdef COBJMACROS
1077
1078
1079#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject) \
1080 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1081
1082#define ID3D12DebugDevice_AddRef(This) \
1083 ( (This)->lpVtbl -> AddRef(This) )
1084
1085#define ID3D12DebugDevice_Release(This) \
1086 ( (This)->lpVtbl -> Release(This) )
1087
1088
1089#define ID3D12DebugDevice_SetFeatureMask(This,Mask) \
1090 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1091
1092#define ID3D12DebugDevice_GetFeatureMask(This) \
1093 ( (This)->lpVtbl -> GetFeatureMask(This) )
1094
1095#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags) \
1096 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1097
1098#endif /* COBJMACROS */
1099
1100
1101#endif /* C style interface */
1102
1103
1104
1105
1106#endif /* __ID3D12DebugDevice_INTERFACE_DEFINED__ */
1107
1108
1109#ifndef __ID3D12DebugDevice2_INTERFACE_DEFINED__
1110#define __ID3D12DebugDevice2_INTERFACE_DEFINED__
1111
1112/* interface ID3D12DebugDevice2 */
1113/* [unique][local][object][uuid] */
1114
1115
1116EXTERN_C const IID IID_ID3D12DebugDevice2;
1117
1118#if defined(__cplusplus) && !defined(CINTERFACE)
1119
1120 MIDL_INTERFACE("60eccbc1-378d-4df1-894c-f8ac5ce4d7dd")
1121 ID3D12DebugDevice2 : public ID3D12DebugDevice
1122 {
1123 public:
1124 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1125 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1126 _In_reads_bytes_(DataSize) const void *pData,
1127 UINT DataSize) = 0;
1128
1129 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1130 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1131 _Out_writes_bytes_(DataSize) void *pData,
1132 UINT DataSize) = 0;
1133
1134 };
1135
1136
1137#else /* C style interface */
1138
1139 typedef struct ID3D12DebugDevice2Vtbl
1140 {
1141 BEGIN_INTERFACE
1142
1143 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1144 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1145 ID3D12DebugDevice2 * This,
1146 REFIID riid,
1147 _COM_Outptr_ void **ppvObject);
1148
1149 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1150 ULONG ( STDMETHODCALLTYPE *AddRef )(
1151 ID3D12DebugDevice2 * This);
1152
1153 DECLSPEC_XFGVIRT(IUnknown, Release)
1154 ULONG ( STDMETHODCALLTYPE *Release )(
1155 ID3D12DebugDevice2 * This);
1156
1157 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1158 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1159 ID3D12DebugDevice2 * This,
1160 D3D12_DEBUG_FEATURE Mask);
1161
1162 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1163 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1164 ID3D12DebugDevice2 * This);
1165
1166 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1167 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1168 ID3D12DebugDevice2 * This,
1169 D3D12_RLDO_FLAGS Flags);
1170
1171 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, SetDebugParameter)
1172 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1173 ID3D12DebugDevice2 * This,
1174 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1175 _In_reads_bytes_(DataSize) const void *pData,
1176 UINT DataSize);
1177
1178 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, GetDebugParameter)
1179 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1180 ID3D12DebugDevice2 * This,
1181 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1182 _Out_writes_bytes_(DataSize) void *pData,
1183 UINT DataSize);
1184
1185 END_INTERFACE
1186 } ID3D12DebugDevice2Vtbl;
1187
1188 interface ID3D12DebugDevice2
1189 {
1190 CONST_VTBL struct ID3D12DebugDevice2Vtbl *lpVtbl;
1191 };
1192
1193
1194
1195#ifdef COBJMACROS
1196
1197
1198#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject) \
1199 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1200
1201#define ID3D12DebugDevice2_AddRef(This) \
1202 ( (This)->lpVtbl -> AddRef(This) )
1203
1204#define ID3D12DebugDevice2_Release(This) \
1205 ( (This)->lpVtbl -> Release(This) )
1206
1207
1208#define ID3D12DebugDevice2_SetFeatureMask(This,Mask) \
1209 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1210
1211#define ID3D12DebugDevice2_GetFeatureMask(This) \
1212 ( (This)->lpVtbl -> GetFeatureMask(This) )
1213
1214#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags) \
1215 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1216
1217
1218#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize) \
1219 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1220
1221#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize) \
1222 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1223
1224#endif /* COBJMACROS */
1225
1226
1227#endif /* C style interface */
1228
1229
1230
1231
1232#endif /* __ID3D12DebugDevice2_INTERFACE_DEFINED__ */
1233
1234
1235/* interface __MIDL_itf_d3d12sdklayers_0000_0009 */
1236/* [local] */
1237
1238DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);
1239
1240
1241extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0009_v0_0_c_ifspec;
1242extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0009_v0_0_s_ifspec;
1243
1244#ifndef __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1245#define __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1246
1247/* interface ID3D12DebugCommandQueue */
1248/* [unique][local][object][uuid] */
1249
1250
1251EXTERN_C const IID IID_ID3D12DebugCommandQueue;
1252
1253#if defined(__cplusplus) && !defined(CINTERFACE)
1254
1255 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053a")
1256 ID3D12DebugCommandQueue : public IUnknown
1257 {
1258 public:
1259 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1260 _In_ ID3D12Resource *pResource,
1261 UINT Subresource,
1262 UINT State) = 0;
1263
1264 };
1265
1266
1267#else /* C style interface */
1268
1269 typedef struct ID3D12DebugCommandQueueVtbl
1270 {
1271 BEGIN_INTERFACE
1272
1273 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1274 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1275 ID3D12DebugCommandQueue * This,
1276 REFIID riid,
1277 _COM_Outptr_ void **ppvObject);
1278
1279 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1280 ULONG ( STDMETHODCALLTYPE *AddRef )(
1281 ID3D12DebugCommandQueue * This);
1282
1283 DECLSPEC_XFGVIRT(IUnknown, Release)
1284 ULONG ( STDMETHODCALLTYPE *Release )(
1285 ID3D12DebugCommandQueue * This);
1286
1287 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1288 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1289 ID3D12DebugCommandQueue * This,
1290 _In_ ID3D12Resource *pResource,
1291 UINT Subresource,
1292 UINT State);
1293
1294 END_INTERFACE
1295 } ID3D12DebugCommandQueueVtbl;
1296
1297 interface ID3D12DebugCommandQueue
1298 {
1299 CONST_VTBL struct ID3D12DebugCommandQueueVtbl *lpVtbl;
1300 };
1301
1302
1303
1304#ifdef COBJMACROS
1305
1306
1307#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject) \
1308 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1309
1310#define ID3D12DebugCommandQueue_AddRef(This) \
1311 ( (This)->lpVtbl -> AddRef(This) )
1312
1313#define ID3D12DebugCommandQueue_Release(This) \
1314 ( (This)->lpVtbl -> Release(This) )
1315
1316
1317#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State) \
1318 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1319
1320#endif /* COBJMACROS */
1321
1322
1323#endif /* C style interface */
1324
1325
1326
1327
1328#endif /* __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ */
1329
1330
1331/* interface __MIDL_itf_d3d12sdklayers_0000_0010 */
1332/* [local] */
1333
1334typedef
1335enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
1336 {
1337 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = 0
1338 } D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
1339
1340typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
1341 {
1342 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
1343 } D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
1344
1345
1346
1347extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_c_ifspec;
1348extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_s_ifspec;
1349
1350#ifndef __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1351#define __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1352
1353/* interface ID3D12DebugCommandList1 */
1354/* [unique][local][object][uuid] */
1355
1356
1357EXTERN_C const IID IID_ID3D12DebugCommandList1;
1358
1359#if defined(__cplusplus) && !defined(CINTERFACE)
1360
1361 MIDL_INTERFACE("102ca951-311b-4b01-b11f-ecb83e061b37")
1362 ID3D12DebugCommandList1 : public IUnknown
1363 {
1364 public:
1365 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1366 _In_ ID3D12Resource *pResource,
1367 UINT Subresource,
1368 UINT State) = 0;
1369
1370 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1371 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1372 _In_reads_bytes_(DataSize) const void *pData,
1373 UINT DataSize) = 0;
1374
1375 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1376 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1377 _Out_writes_bytes_(DataSize) void *pData,
1378 UINT DataSize) = 0;
1379
1380 };
1381
1382
1383#else /* C style interface */
1384
1385 typedef struct ID3D12DebugCommandList1Vtbl
1386 {
1387 BEGIN_INTERFACE
1388
1389 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1390 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1391 ID3D12DebugCommandList1 * This,
1392 REFIID riid,
1393 _COM_Outptr_ void **ppvObject);
1394
1395 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1396 ULONG ( STDMETHODCALLTYPE *AddRef )(
1397 ID3D12DebugCommandList1 * This);
1398
1399 DECLSPEC_XFGVIRT(IUnknown, Release)
1400 ULONG ( STDMETHODCALLTYPE *Release )(
1401 ID3D12DebugCommandList1 * This);
1402
1403 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, AssertResourceState)
1404 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1405 ID3D12DebugCommandList1 * This,
1406 _In_ ID3D12Resource *pResource,
1407 UINT Subresource,
1408 UINT State);
1409
1410 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, SetDebugParameter)
1411 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1412 ID3D12DebugCommandList1 * This,
1413 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1414 _In_reads_bytes_(DataSize) const void *pData,
1415 UINT DataSize);
1416
1417 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, GetDebugParameter)
1418 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1419 ID3D12DebugCommandList1 * This,
1420 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1421 _Out_writes_bytes_(DataSize) void *pData,
1422 UINT DataSize);
1423
1424 END_INTERFACE
1425 } ID3D12DebugCommandList1Vtbl;
1426
1427 interface ID3D12DebugCommandList1
1428 {
1429 CONST_VTBL struct ID3D12DebugCommandList1Vtbl *lpVtbl;
1430 };
1431
1432
1433
1434#ifdef COBJMACROS
1435
1436
1437#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject) \
1438 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1439
1440#define ID3D12DebugCommandList1_AddRef(This) \
1441 ( (This)->lpVtbl -> AddRef(This) )
1442
1443#define ID3D12DebugCommandList1_Release(This) \
1444 ( (This)->lpVtbl -> Release(This) )
1445
1446
1447#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State) \
1448 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1449
1450#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize) \
1451 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1452
1453#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize) \
1454 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1455
1456#endif /* COBJMACROS */
1457
1458
1459#endif /* C style interface */
1460
1461
1462
1463
1464#endif /* __ID3D12DebugCommandList1_INTERFACE_DEFINED__ */
1465
1466
1467#ifndef __ID3D12DebugCommandList_INTERFACE_DEFINED__
1468#define __ID3D12DebugCommandList_INTERFACE_DEFINED__
1469
1470/* interface ID3D12DebugCommandList */
1471/* [unique][local][object][uuid] */
1472
1473
1474EXTERN_C const IID IID_ID3D12DebugCommandList;
1475
1476#if defined(__cplusplus) && !defined(CINTERFACE)
1477
1478 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053f")
1479 ID3D12DebugCommandList : public IUnknown
1480 {
1481 public:
1482 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1483 _In_ ID3D12Resource *pResource,
1484 UINT Subresource,
1485 UINT State) = 0;
1486
1487 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1488 D3D12_DEBUG_FEATURE Mask) = 0;
1489
1490 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1491
1492 };
1493
1494
1495#else /* C style interface */
1496
1497 typedef struct ID3D12DebugCommandListVtbl
1498 {
1499 BEGIN_INTERFACE
1500
1501 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1502 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1503 ID3D12DebugCommandList * This,
1504 REFIID riid,
1505 _COM_Outptr_ void **ppvObject);
1506
1507 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1508 ULONG ( STDMETHODCALLTYPE *AddRef )(
1509 ID3D12DebugCommandList * This);
1510
1511 DECLSPEC_XFGVIRT(IUnknown, Release)
1512 ULONG ( STDMETHODCALLTYPE *Release )(
1513 ID3D12DebugCommandList * This);
1514
1515 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1516 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1517 ID3D12DebugCommandList * This,
1518 _In_ ID3D12Resource *pResource,
1519 UINT Subresource,
1520 UINT State);
1521
1522 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1523 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1524 ID3D12DebugCommandList * This,
1525 D3D12_DEBUG_FEATURE Mask);
1526
1527 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1528 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1529 ID3D12DebugCommandList * This);
1530
1531 END_INTERFACE
1532 } ID3D12DebugCommandListVtbl;
1533
1534 interface ID3D12DebugCommandList
1535 {
1536 CONST_VTBL struct ID3D12DebugCommandListVtbl *lpVtbl;
1537 };
1538
1539
1540
1541#ifdef COBJMACROS
1542
1543
1544#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject) \
1545 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1546
1547#define ID3D12DebugCommandList_AddRef(This) \
1548 ( (This)->lpVtbl -> AddRef(This) )
1549
1550#define ID3D12DebugCommandList_Release(This) \
1551 ( (This)->lpVtbl -> Release(This) )
1552
1553
1554#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State) \
1555 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1556
1557#define ID3D12DebugCommandList_SetFeatureMask(This,Mask) \
1558 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1559
1560#define ID3D12DebugCommandList_GetFeatureMask(This) \
1561 ( (This)->lpVtbl -> GetFeatureMask(This) )
1562
1563#endif /* COBJMACROS */
1564
1565
1566#endif /* C style interface */
1567
1568
1569
1570
1571#endif /* __ID3D12DebugCommandList_INTERFACE_DEFINED__ */
1572
1573
1574#ifndef __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1575#define __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1576
1577/* interface ID3D12DebugCommandList2 */
1578/* [unique][local][object][uuid] */
1579
1580
1581EXTERN_C const IID IID_ID3D12DebugCommandList2;
1582
1583#if defined(__cplusplus) && !defined(CINTERFACE)
1584
1585 MIDL_INTERFACE("aeb575cf-4e06-48be-ba3b-c450fc96652e")
1586 ID3D12DebugCommandList2 : public ID3D12DebugCommandList
1587 {
1588 public:
1589 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1590 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1591 _In_reads_bytes_(DataSize) const void *pData,
1592 UINT DataSize) = 0;
1593
1594 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1595 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1596 _Out_writes_bytes_(DataSize) void *pData,
1597 UINT DataSize) = 0;
1598
1599 };
1600
1601
1602#else /* C style interface */
1603
1604 typedef struct ID3D12DebugCommandList2Vtbl
1605 {
1606 BEGIN_INTERFACE
1607
1608 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1609 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1610 ID3D12DebugCommandList2 * This,
1611 REFIID riid,
1612 _COM_Outptr_ void **ppvObject);
1613
1614 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1615 ULONG ( STDMETHODCALLTYPE *AddRef )(
1616 ID3D12DebugCommandList2 * This);
1617
1618 DECLSPEC_XFGVIRT(IUnknown, Release)
1619 ULONG ( STDMETHODCALLTYPE *Release )(
1620 ID3D12DebugCommandList2 * This);
1621
1622 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1623 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1624 ID3D12DebugCommandList2 * This,
1625 _In_ ID3D12Resource *pResource,
1626 UINT Subresource,
1627 UINT State);
1628
1629 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1630 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1631 ID3D12DebugCommandList2 * This,
1632 D3D12_DEBUG_FEATURE Mask);
1633
1634 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1635 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1636 ID3D12DebugCommandList2 * This);
1637
1638 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
1639 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1640 ID3D12DebugCommandList2 * This,
1641 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1642 _In_reads_bytes_(DataSize) const void *pData,
1643 UINT DataSize);
1644
1645 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
1646 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1647 ID3D12DebugCommandList2 * This,
1648 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1649 _Out_writes_bytes_(DataSize) void *pData,
1650 UINT DataSize);
1651
1652 END_INTERFACE
1653 } ID3D12DebugCommandList2Vtbl;
1654
1655 interface ID3D12DebugCommandList2
1656 {
1657 CONST_VTBL struct ID3D12DebugCommandList2Vtbl *lpVtbl;
1658 };
1659
1660
1661
1662#ifdef COBJMACROS
1663
1664
1665#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject) \
1666 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1667
1668#define ID3D12DebugCommandList2_AddRef(This) \
1669 ( (This)->lpVtbl -> AddRef(This) )
1670
1671#define ID3D12DebugCommandList2_Release(This) \
1672 ( (This)->lpVtbl -> Release(This) )
1673
1674
1675#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State) \
1676 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1677
1678#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask) \
1679 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1680
1681#define ID3D12DebugCommandList2_GetFeatureMask(This) \
1682 ( (This)->lpVtbl -> GetFeatureMask(This) )
1683
1684
1685#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize) \
1686 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1687
1688#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize) \
1689 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1690
1691#endif /* COBJMACROS */
1692
1693
1694#endif /* C style interface */
1695
1696
1697
1698
1699#endif /* __ID3D12DebugCommandList2_INTERFACE_DEFINED__ */
1700
1701
1702#ifndef __ID3D12SharingContract_INTERFACE_DEFINED__
1703#define __ID3D12SharingContract_INTERFACE_DEFINED__
1704
1705/* interface ID3D12SharingContract */
1706/* [unique][local][object][uuid] */
1707
1708
1709EXTERN_C const IID IID_ID3D12SharingContract;
1710
1711#if defined(__cplusplus) && !defined(CINTERFACE)
1712
1713 MIDL_INTERFACE("0adf7d52-929c-4e61-addb-ffed30de66ef")
1714 ID3D12SharingContract : public IUnknown
1715 {
1716 public:
1717 virtual void STDMETHODCALLTYPE Present(
1718 _In_ ID3D12Resource *pResource,
1719 UINT Subresource,
1720 _In_ HWND window) = 0;
1721
1722 virtual void STDMETHODCALLTYPE SharedFenceSignal(
1723 _In_ ID3D12Fence *pFence,
1724 UINT64 FenceValue) = 0;
1725
1726 virtual void STDMETHODCALLTYPE BeginCapturableWork(
1727 _In_ REFGUID guid) = 0;
1728
1729 virtual void STDMETHODCALLTYPE EndCapturableWork(
1730 _In_ REFGUID guid) = 0;
1731
1732 };
1733
1734
1735#else /* C style interface */
1736
1737 typedef struct ID3D12SharingContractVtbl
1738 {
1739 BEGIN_INTERFACE
1740
1741 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1742 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1743 ID3D12SharingContract * This,
1744 REFIID riid,
1745 _COM_Outptr_ void **ppvObject);
1746
1747 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1748 ULONG ( STDMETHODCALLTYPE *AddRef )(
1749 ID3D12SharingContract * This);
1750
1751 DECLSPEC_XFGVIRT(IUnknown, Release)
1752 ULONG ( STDMETHODCALLTYPE *Release )(
1753 ID3D12SharingContract * This);
1754
1755 DECLSPEC_XFGVIRT(ID3D12SharingContract, Present)
1756 void ( STDMETHODCALLTYPE *Present )(
1757 ID3D12SharingContract * This,
1758 _In_ ID3D12Resource *pResource,
1759 UINT Subresource,
1760 _In_ HWND window);
1761
1762 DECLSPEC_XFGVIRT(ID3D12SharingContract, SharedFenceSignal)
1763 void ( STDMETHODCALLTYPE *SharedFenceSignal )(
1764 ID3D12SharingContract * This,
1765 _In_ ID3D12Fence *pFence,
1766 UINT64 FenceValue);
1767
1768 DECLSPEC_XFGVIRT(ID3D12SharingContract, BeginCapturableWork)
1769 void ( STDMETHODCALLTYPE *BeginCapturableWork )(
1770 ID3D12SharingContract * This,
1771 _In_ REFGUID guid);
1772
1773 DECLSPEC_XFGVIRT(ID3D12SharingContract, EndCapturableWork)
1774 void ( STDMETHODCALLTYPE *EndCapturableWork )(
1775 ID3D12SharingContract * This,
1776 _In_ REFGUID guid);
1777
1778 END_INTERFACE
1779 } ID3D12SharingContractVtbl;
1780
1781 interface ID3D12SharingContract
1782 {
1783 CONST_VTBL struct ID3D12SharingContractVtbl *lpVtbl;
1784 };
1785
1786
1787
1788#ifdef COBJMACROS
1789
1790
1791#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject) \
1792 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1793
1794#define ID3D12SharingContract_AddRef(This) \
1795 ( (This)->lpVtbl -> AddRef(This) )
1796
1797#define ID3D12SharingContract_Release(This) \
1798 ( (This)->lpVtbl -> Release(This) )
1799
1800
1801#define ID3D12SharingContract_Present(This,pResource,Subresource,window) \
1802 ( (This)->lpVtbl -> Present(This,pResource,Subresource,window) )
1803
1804#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue) \
1805 ( (This)->lpVtbl -> SharedFenceSignal(This,pFence,FenceValue) )
1806
1807#define ID3D12SharingContract_BeginCapturableWork(This,guid) \
1808 ( (This)->lpVtbl -> BeginCapturableWork(This,guid) )
1809
1810#define ID3D12SharingContract_EndCapturableWork(This,guid) \
1811 ( (This)->lpVtbl -> EndCapturableWork(This,guid) )
1812
1813#endif /* COBJMACROS */
1814
1815
1816#endif /* C style interface */
1817
1818
1819
1820
1821#endif /* __ID3D12SharingContract_INTERFACE_DEFINED__ */
1822
1823
1824/* interface __MIDL_itf_d3d12sdklayers_0000_0014 */
1825/* [local] */
1826
1827typedef
1828enum D3D12_MESSAGE_CATEGORY
1829 {
1830 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
1831 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) ,
1832 D3D12_MESSAGE_CATEGORY_INITIALIZATION = ( D3D12_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) ,
1833 D3D12_MESSAGE_CATEGORY_CLEANUP = ( D3D12_MESSAGE_CATEGORY_INITIALIZATION + 1 ) ,
1834 D3D12_MESSAGE_CATEGORY_COMPILATION = ( D3D12_MESSAGE_CATEGORY_CLEANUP + 1 ) ,
1835 D3D12_MESSAGE_CATEGORY_STATE_CREATION = ( D3D12_MESSAGE_CATEGORY_COMPILATION + 1 ) ,
1836 D3D12_MESSAGE_CATEGORY_STATE_SETTING = ( D3D12_MESSAGE_CATEGORY_STATE_CREATION + 1 ) ,
1837 D3D12_MESSAGE_CATEGORY_STATE_GETTING = ( D3D12_MESSAGE_CATEGORY_STATE_SETTING + 1 ) ,
1838 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D12_MESSAGE_CATEGORY_STATE_GETTING + 1 ) ,
1839 D3D12_MESSAGE_CATEGORY_EXECUTION = ( D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 ) ,
1840 D3D12_MESSAGE_CATEGORY_SHADER = ( D3D12_MESSAGE_CATEGORY_EXECUTION + 1 )
1841 } D3D12_MESSAGE_CATEGORY;
1842
1843typedef
1844enum D3D12_MESSAGE_SEVERITY
1845 {
1846 D3D12_MESSAGE_SEVERITY_CORRUPTION = 0,
1847 D3D12_MESSAGE_SEVERITY_ERROR = ( D3D12_MESSAGE_SEVERITY_CORRUPTION + 1 ) ,
1848 D3D12_MESSAGE_SEVERITY_WARNING = ( D3D12_MESSAGE_SEVERITY_ERROR + 1 ) ,
1849 D3D12_MESSAGE_SEVERITY_INFO = ( D3D12_MESSAGE_SEVERITY_WARNING + 1 ) ,
1850 D3D12_MESSAGE_SEVERITY_MESSAGE = ( D3D12_MESSAGE_SEVERITY_INFO + 1 )
1851 } D3D12_MESSAGE_SEVERITY;
1852
1853typedef
1854enum D3D12_MESSAGE_ID
1855 {
1856 D3D12_MESSAGE_ID_UNKNOWN = 0,
1857 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
1858 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
1859 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
1860 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
1861 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
1862 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
1863 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
1864 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
1865 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
1866 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
1867 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
1868 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
1869 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
1870 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
1871 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
1872 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
1873 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
1874 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
1875 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
1876 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
1877 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
1878 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
1879 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
1880 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
1881 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
1882 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
1883 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
1884 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
1885 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
1886 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
1887 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
1888 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
1889 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
1890 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
1891 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
1892 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
1893 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
1894 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
1895 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
1896 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
1897 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
1898 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
1899 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
1900 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
1901 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
1902 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
1903 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
1904 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
1905 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
1906 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
1907 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
1908 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
1909 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
1910 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
1911 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
1912 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
1913 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
1914 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
1915 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
1916 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
1917 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
1918 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
1919 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
1920 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
1921 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
1922 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
1923 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
1924 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
1925 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
1926 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
1927 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
1928 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
1929 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
1930 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
1931 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
1932 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
1933 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
1934 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
1935 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
1936 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
1937 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
1938 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
1939 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
1940 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
1941 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
1942 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
1943 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
1944 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
1945 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
1946 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
1947 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
1948 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
1949 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
1950 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
1951 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
1952 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
1953 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
1954 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
1955 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
1956 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
1957 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
1958 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
1959 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
1960 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
1961 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
1962 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
1963 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
1964 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
1965 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
1966 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
1967 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
1968 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
1969 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
1970 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
1971 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
1972 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
1973 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
1974 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
1975 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
1976 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
1977 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
1978 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
1979 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
1980 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
1981 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
1982 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
1983 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
1984 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
1985 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
1986 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
1987 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
1988 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
1989 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
1990 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
1991 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
1992 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
1993 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
1994 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
1995 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
1996 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
1997 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
1998 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
1999 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
2000 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
2001 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
2002 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
2003 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
2004 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
2005 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
2006 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
2007 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
2008 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
2009 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
2010 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
2011 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
2012 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
2013 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
2014 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
2015 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
2016 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
2017 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
2018 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
2019 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
2020 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
2021 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
2022 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
2023 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
2024 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
2025 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
2026 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
2027 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
2028 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
2029 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
2030 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
2031 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
2032 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
2033 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
2034 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
2035 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
2036 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
2037 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
2038 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
2039 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
2040 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
2041 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
2042 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
2043 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
2044 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
2045 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
2046 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
2047 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
2048 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
2049 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
2050 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
2051 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
2052 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
2053 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
2054 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
2055 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
2056 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
2057 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
2058 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
2059 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
2060 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
2061 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
2062 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
2063 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
2064 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
2065 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
2066 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
2067 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
2068 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
2069 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
2070 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
2071 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
2072 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
2073 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
2074 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
2075 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
2076 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
2077 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
2078 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
2079 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
2080 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
2081 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
2082 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
2083 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
2084 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
2085 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
2086 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
2087 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
2088 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
2089 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
2090 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
2091 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
2092 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
2093 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
2094 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
2095 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
2096 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
2097 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
2098 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
2099 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
2100 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
2101 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
2102 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
2103 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
2104 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
2105 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
2106 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
2107 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
2108 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
2109 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
2110 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
2111 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
2112 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
2113 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
2114 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
2115 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
2116 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
2117 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
2118 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
2119 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
2120 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
2121 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
2122 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
2123 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
2124 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
2125 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
2126 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
2127 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
2128 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
2129 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
2130 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
2131 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
2132 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
2133 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
2134 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
2135 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
2136 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
2137 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
2138 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
2139 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
2140 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
2141 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
2142 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
2143 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
2144 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
2145 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
2146 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
2147 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
2148 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
2149 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
2150 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
2151 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
2152 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
2153 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
2154 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
2155 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
2156 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
2157 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
2158 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
2159 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
2160 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
2161 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
2162 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
2163 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
2164 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
2165 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
2166 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
2167 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
2168 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
2169 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
2170 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
2171 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
2172 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
2173 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
2174 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
2175 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
2176 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
2177 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
2178 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
2179 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
2180 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
2181 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
2182 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
2183 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
2184 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
2185 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
2186 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
2187 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
2188 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
2189 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
2190 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
2191 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
2192 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
2193 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
2194 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
2195 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
2196 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
2197 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
2198 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
2199 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
2200 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
2201 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
2202 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
2203 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
2204 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
2205 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
2206 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
2207 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
2208 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
2209 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
2210 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
2211 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
2212 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
2213 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
2214 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
2215 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
2216 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
2217 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
2218 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
2219 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
2220 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
2221 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
2222 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
2223 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
2224 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
2225 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
2226 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
2227 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
2228 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
2229 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
2230 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
2231 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
2232 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
2233 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
2234 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
2235 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
2236 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
2237 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
2238 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
2239 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
2240 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
2241 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
2242 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
2243 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
2244 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
2245 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
2246 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
2247 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
2248 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
2249 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
2250 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
2251 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
2252 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
2253 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
2254 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
2255 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
2256 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
2257 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
2258 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
2259 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
2260 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
2261 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
2262 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
2263 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
2264 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
2265 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
2266 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
2267 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
2268 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
2269 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
2270 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
2271 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
2272 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
2273 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
2274 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
2275 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
2276 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
2277 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
2278 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
2279 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
2280 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
2281 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
2282 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
2283 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
2284 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
2285 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
2286 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
2287 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
2288 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
2289 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
2290 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
2291 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
2292 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
2293 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
2294 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
2295 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
2296 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
2297 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
2298 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
2299 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
2300 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
2301 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
2302 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
2303 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
2304 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
2305 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
2306 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
2307 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
2308 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
2309 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
2310 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
2311 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
2312 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
2313 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
2314 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
2315 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
2316 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
2317 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
2318 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
2319 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
2320 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
2321 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
2322 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
2323 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
2324 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
2325 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
2326 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
2327 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
2328 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
2329 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
2330 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
2331 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
2332 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
2333 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
2334 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
2335 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
2336 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
2337 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
2338 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
2339 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
2340 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
2341 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
2342 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
2343 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
2344 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
2345 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
2346 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
2347 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
2348 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
2349 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
2350 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
2351 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
2352 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
2353 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
2354 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
2355 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
2356 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
2357 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
2358 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
2359 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
2360 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
2361 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
2362 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
2363 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
2364 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
2365 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
2366 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
2367 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
2368 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
2369 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
2370 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
2371 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
2372 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
2373 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
2374 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
2375 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
2376 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
2377 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
2378 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
2379 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
2380 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
2381 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
2382 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
2383 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
2384 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
2385 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
2386 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
2387 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
2388 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
2389 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
2390 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
2391 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
2392 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
2393 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
2394 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
2395 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
2396 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
2397 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
2398 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
2399 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
2400 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
2401 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
2402 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
2403 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
2404 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
2405 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
2406 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
2407 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
2408 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
2409 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
2410 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
2411 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
2412 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
2413 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
2414 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
2415 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
2416 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
2417 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
2418 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
2419 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
2420 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
2421 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
2422 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
2423 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
2424 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
2425 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
2426 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
2427 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
2428 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
2429 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
2430 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
2431 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
2432 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
2433 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
2434 D3D12_MESSAGE_ID_END_EVENT = 1015,
2435 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
2436 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
2437 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
2438 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
2439 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
2440 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
2441 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
2442 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
2443 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
2444 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
2445 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
2446 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
2447 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
2448 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
2449 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
2450 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
2451 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
2452 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
2453 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
2454 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
2455 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
2456 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
2457 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
2458 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
2459 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
2460 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
2461 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
2462 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
2463 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
2464 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
2465 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
2466 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
2467 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
2468 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
2469 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
2470 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
2471 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
2472 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
2473 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
2474 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
2475 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
2476 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
2477 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
2478 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
2479 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
2480 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
2481 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
2482 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
2483 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
2484 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
2485 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
2486 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
2487 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
2488 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
2489 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
2490 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
2491 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
2492 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
2493 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
2494 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
2495 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
2496 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
2497 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
2498 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
2499 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
2500 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
2501 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
2502 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
2503 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
2504 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
2505 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
2506 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
2507 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
2508 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
2509 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
2510 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
2511 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
2512 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
2513 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
2514 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
2515 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
2516 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
2517 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
2518 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
2519 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
2520 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
2521 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
2522 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
2523 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
2524 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
2525 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
2526 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
2527 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
2528 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
2529 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
2530 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
2531 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
2532 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
2533 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
2534 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
2535 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
2536 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
2537 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
2538 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
2539 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
2540 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
2541 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
2542 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
2543 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
2544 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
2545 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
2546 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
2547 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
2548 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
2549 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
2550 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
2551 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
2552 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
2553 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
2554 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
2555 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
2556 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
2557 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
2558 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
2559 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
2560 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
2561 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
2562 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
2563 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
2564 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
2565 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
2566 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
2567 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
2568 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
2569 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
2570 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
2571 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
2572 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
2573 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
2574 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
2575 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
2576 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
2577 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
2578 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
2579 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
2580 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
2581 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
2582 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
2583 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
2584 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
2585 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
2586 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
2587 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
2588 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
2589 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
2590 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
2591 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
2592 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
2593 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
2594 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
2595 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
2596 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
2597 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
2598 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
2599 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
2600 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
2601 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
2602 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
2603 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
2604 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
2605 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
2606 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
2607 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
2608 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
2609 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
2610 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
2611 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
2612 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
2613 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
2614 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
2615 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
2616 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
2617 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
2618 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
2619 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
2620 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
2621 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
2622 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
2623 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
2624 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
2625 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
2626 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
2627 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
2628 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
2629 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
2630 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
2631 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
2632 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
2633 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
2634 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
2635 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
2636 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
2637 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
2638 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
2639 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
2640 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
2641 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
2642 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
2643 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
2644 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
2645 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
2646 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
2647 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
2648 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
2649 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
2650 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
2651 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
2652 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
2653 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
2654 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
2655 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
2656 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
2657 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
2658 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
2659 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
2660 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
2661 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
2662 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
2663 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
2664 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
2665 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
2666 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
2667 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
2668 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
2669 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
2670 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
2671 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
2672 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
2673 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
2674 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
2675 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
2676 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
2677 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
2678 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
2679 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
2680 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
2681 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
2682 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
2683 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
2684 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
2685 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
2686 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
2687 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
2688 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
2689 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
2690 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
2691 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
2692 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
2693 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
2694 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
2695 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
2696 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
2697 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
2698 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
2699 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
2700 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
2701 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
2702 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
2703 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
2704 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
2705 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
2706 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
2707 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
2708 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
2709 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
2710 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
2711 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
2712 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
2713 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
2714 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
2715 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
2716 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
2717 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
2718 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
2719 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
2720 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
2721 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
2722 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
2723 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
2724 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
2725 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
2726 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
2727 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
2728 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
2729 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
2730 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
2731 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
2732 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
2733 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
2734 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
2735 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
2736 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
2737 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
2738 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
2739 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
2740 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
2741 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
2742 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
2743 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
2744 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
2745 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
2746 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
2747 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = ( D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED + 1 )
2748 } D3D12_MESSAGE_ID;
2749
2750typedef struct D3D12_MESSAGE
2751 {
2752 D3D12_MESSAGE_CATEGORY Category;
2753 D3D12_MESSAGE_SEVERITY Severity;
2754 D3D12_MESSAGE_ID ID;
2755 _Field_size_(DescriptionByteLength) const char *pDescription;
2756 SIZE_T DescriptionByteLength;
2757 } D3D12_MESSAGE;
2758
2759typedef struct D3D12_INFO_QUEUE_FILTER_DESC
2760 {
2761 UINT NumCategories;
2762 _Field_size_(NumCategories) D3D12_MESSAGE_CATEGORY *pCategoryList;
2763 UINT NumSeverities;
2764 _Field_size_(NumSeverities) D3D12_MESSAGE_SEVERITY *pSeverityList;
2765 UINT NumIDs;
2766 _Field_size_(NumIDs) D3D12_MESSAGE_ID *pIDList;
2767 } D3D12_INFO_QUEUE_FILTER_DESC;
2768
2769typedef struct D3D12_INFO_QUEUE_FILTER
2770 {
2771 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
2772 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
2773 } D3D12_INFO_QUEUE_FILTER;
2774
2775#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
2776
2777
2778extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0014_v0_0_c_ifspec;
2779extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0014_v0_0_s_ifspec;
2780
2781#ifndef __ID3D12InfoQueue_INTERFACE_DEFINED__
2782#define __ID3D12InfoQueue_INTERFACE_DEFINED__
2783
2784/* interface ID3D12InfoQueue */
2785/* [unique][local][object][uuid] */
2786
2787
2788EXTERN_C const IID IID_ID3D12InfoQueue;
2789
2790#if defined(__cplusplus) && !defined(CINTERFACE)
2791
2792 MIDL_INTERFACE("0742a90b-c387-483f-b946-30a7e4e61458")
2793 ID3D12InfoQueue : public IUnknown
2794 {
2795 public:
2796 virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit(
2797 _In_ UINT64 MessageCountLimit) = 0;
2798
2799 virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0;
2800
2801 virtual HRESULT STDMETHODCALLTYPE GetMessage(
2802 _In_ UINT64 MessageIndex,
2803 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
2804 _Inout_ SIZE_T *pMessageByteLength) = 0;
2805
2806 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0;
2807
2808 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0;
2809
2810 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0;
2811
2812 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0;
2813
2814 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0;
2815
2816 virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0;
2817
2818 virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries(
2819 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2820
2821 virtual HRESULT STDMETHODCALLTYPE GetStorageFilter(
2822 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
2823 _Inout_ SIZE_T *pFilterByteLength) = 0;
2824
2825 virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0;
2826
2827 virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0;
2828
2829 virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0;
2830
2831 virtual HRESULT STDMETHODCALLTYPE PushStorageFilter(
2832 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2833
2834 virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0;
2835
2836 virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0;
2837
2838 virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries(
2839 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2840
2841 virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter(
2842 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
2843 _Inout_ SIZE_T *pFilterByteLength) = 0;
2844
2845 virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0;
2846
2847 virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0;
2848
2849 virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0;
2850
2851 virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter(
2852 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2853
2854 virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0;
2855
2856 virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0;
2857
2858 virtual HRESULT STDMETHODCALLTYPE AddMessage(
2859 _In_ D3D12_MESSAGE_CATEGORY Category,
2860 _In_ D3D12_MESSAGE_SEVERITY Severity,
2861 _In_ D3D12_MESSAGE_ID ID,
2862 _In_ LPCSTR pDescription) = 0;
2863
2864 virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage(
2865 _In_ D3D12_MESSAGE_SEVERITY Severity,
2866 _In_ LPCSTR pDescription) = 0;
2867
2868 virtual HRESULT STDMETHODCALLTYPE SetBreakOnCategory(
2869 _In_ D3D12_MESSAGE_CATEGORY Category,
2870 _In_ BOOL bEnable) = 0;
2871
2872 virtual HRESULT STDMETHODCALLTYPE SetBreakOnSeverity(
2873 _In_ D3D12_MESSAGE_SEVERITY Severity,
2874 _In_ BOOL bEnable) = 0;
2875
2876 virtual HRESULT STDMETHODCALLTYPE SetBreakOnID(
2877 _In_ D3D12_MESSAGE_ID ID,
2878 _In_ BOOL bEnable) = 0;
2879
2880 virtual BOOL STDMETHODCALLTYPE GetBreakOnCategory(
2881 _In_ D3D12_MESSAGE_CATEGORY Category) = 0;
2882
2883 virtual BOOL STDMETHODCALLTYPE GetBreakOnSeverity(
2884 _In_ D3D12_MESSAGE_SEVERITY Severity) = 0;
2885
2886 virtual BOOL STDMETHODCALLTYPE GetBreakOnID(
2887 _In_ D3D12_MESSAGE_ID ID) = 0;
2888
2889 virtual void STDMETHODCALLTYPE SetMuteDebugOutput(
2890 _In_ BOOL bMute) = 0;
2891
2892 virtual BOOL STDMETHODCALLTYPE GetMuteDebugOutput( void) = 0;
2893
2894 };
2895
2896
2897#else /* C style interface */
2898
2899 typedef struct ID3D12InfoQueueVtbl
2900 {
2901 BEGIN_INTERFACE
2902
2903 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2904 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2905 ID3D12InfoQueue * This,
2906 REFIID riid,
2907 _COM_Outptr_ void **ppvObject);
2908
2909 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2910 ULONG ( STDMETHODCALLTYPE *AddRef )(
2911 ID3D12InfoQueue * This);
2912
2913 DECLSPEC_XFGVIRT(IUnknown, Release)
2914 ULONG ( STDMETHODCALLTYPE *Release )(
2915 ID3D12InfoQueue * This);
2916
2917 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
2918 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
2919 ID3D12InfoQueue * This,
2920 _In_ UINT64 MessageCountLimit);
2921
2922 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
2923 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
2924 ID3D12InfoQueue * This);
2925
2926 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
2927 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
2928 ID3D12InfoQueue * This,
2929 _In_ UINT64 MessageIndex,
2930 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
2931 _Inout_ SIZE_T *pMessageByteLength);
2932
2933 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
2934 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
2935 ID3D12InfoQueue * This);
2936
2937 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
2938 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
2939 ID3D12InfoQueue * This);
2940
2941 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
2942 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
2943 ID3D12InfoQueue * This);
2944
2945 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
2946 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
2947 ID3D12InfoQueue * This);
2948
2949 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
2950 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
2951 ID3D12InfoQueue * This);
2952
2953 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
2954 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
2955 ID3D12InfoQueue * This);
2956
2957 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
2958 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
2959 ID3D12InfoQueue * This,
2960 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
2961
2962 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
2963 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
2964 ID3D12InfoQueue * This,
2965 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
2966 _Inout_ SIZE_T *pFilterByteLength);
2967
2968 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
2969 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
2970 ID3D12InfoQueue * This);
2971
2972 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
2973 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
2974 ID3D12InfoQueue * This);
2975
2976 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
2977 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
2978 ID3D12InfoQueue * This);
2979
2980 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
2981 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
2982 ID3D12InfoQueue * This,
2983 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
2984
2985 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
2986 void ( STDMETHODCALLTYPE *PopStorageFilter )(
2987 ID3D12InfoQueue * This);
2988
2989 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
2990 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
2991 ID3D12InfoQueue * This);
2992
2993 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
2994 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
2995 ID3D12InfoQueue * This,
2996 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
2997
2998 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
2999 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3000 ID3D12InfoQueue * This,
3001 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3002 _Inout_ SIZE_T *pFilterByteLength);
3003
3004 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3005 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3006 ID3D12InfoQueue * This);
3007
3008 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3009 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3010 ID3D12InfoQueue * This);
3011
3012 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3013 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3014 ID3D12InfoQueue * This);
3015
3016 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3017 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3018 ID3D12InfoQueue * This,
3019 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3020
3021 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3022 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3023 ID3D12InfoQueue * This);
3024
3025 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3026 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3027 ID3D12InfoQueue * This);
3028
3029 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3030 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3031 ID3D12InfoQueue * This,
3032 _In_ D3D12_MESSAGE_CATEGORY Category,
3033 _In_ D3D12_MESSAGE_SEVERITY Severity,
3034 _In_ D3D12_MESSAGE_ID ID,
3035 _In_ LPCSTR pDescription);
3036
3037 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3038 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3039 ID3D12InfoQueue * This,
3040 _In_ D3D12_MESSAGE_SEVERITY Severity,
3041 _In_ LPCSTR pDescription);
3042
3043 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3044 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3045 ID3D12InfoQueue * This,
3046 _In_ D3D12_MESSAGE_CATEGORY Category,
3047 _In_ BOOL bEnable);
3048
3049 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3050 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3051 ID3D12InfoQueue * This,
3052 _In_ D3D12_MESSAGE_SEVERITY Severity,
3053 _In_ BOOL bEnable);
3054
3055 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3056 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3057 ID3D12InfoQueue * This,
3058 _In_ D3D12_MESSAGE_ID ID,
3059 _In_ BOOL bEnable);
3060
3061 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3062 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3063 ID3D12InfoQueue * This,
3064 _In_ D3D12_MESSAGE_CATEGORY Category);
3065
3066 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3067 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3068 ID3D12InfoQueue * This,
3069 _In_ D3D12_MESSAGE_SEVERITY Severity);
3070
3071 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3072 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3073 ID3D12InfoQueue * This,
3074 _In_ D3D12_MESSAGE_ID ID);
3075
3076 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3077 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3078 ID3D12InfoQueue * This,
3079 _In_ BOOL bMute);
3080
3081 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3082 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3083 ID3D12InfoQueue * This);
3084
3085 END_INTERFACE
3086 } ID3D12InfoQueueVtbl;
3087
3088 interface ID3D12InfoQueue
3089 {
3090 CONST_VTBL struct ID3D12InfoQueueVtbl *lpVtbl;
3091 };
3092
3093
3094
3095#ifdef COBJMACROS
3096
3097
3098#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject) \
3099 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3100
3101#define ID3D12InfoQueue_AddRef(This) \
3102 ( (This)->lpVtbl -> AddRef(This) )
3103
3104#define ID3D12InfoQueue_Release(This) \
3105 ( (This)->lpVtbl -> Release(This) )
3106
3107
3108#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \
3109 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3110
3111#define ID3D12InfoQueue_ClearStoredMessages(This) \
3112 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3113
3114#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3115 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3116
3117#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \
3118 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3119
3120#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \
3121 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3122
3123#define ID3D12InfoQueue_GetNumStoredMessages(This) \
3124 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3125
3126#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3127 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3128
3129#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \
3130 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3131
3132#define ID3D12InfoQueue_GetMessageCountLimit(This) \
3133 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3134
3135#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter) \
3136 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3137
3138#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \
3139 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3140
3141#define ID3D12InfoQueue_ClearStorageFilter(This) \
3142 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3143
3144#define ID3D12InfoQueue_PushEmptyStorageFilter(This) \
3145 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3146
3147#define ID3D12InfoQueue_PushCopyOfStorageFilter(This) \
3148 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3149
3150#define ID3D12InfoQueue_PushStorageFilter(This,pFilter) \
3151 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3152
3153#define ID3D12InfoQueue_PopStorageFilter(This) \
3154 ( (This)->lpVtbl -> PopStorageFilter(This) )
3155
3156#define ID3D12InfoQueue_GetStorageFilterStackSize(This) \
3157 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3158
3159#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter) \
3160 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3161
3162#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3163 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3164
3165#define ID3D12InfoQueue_ClearRetrievalFilter(This) \
3166 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3167
3168#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This) \
3169 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3170
3171#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This) \
3172 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3173
3174#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter) \
3175 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3176
3177#define ID3D12InfoQueue_PopRetrievalFilter(This) \
3178 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3179
3180#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This) \
3181 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3182
3183#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \
3184 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3185
3186#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription) \
3187 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3188
3189#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable) \
3190 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3191
3192#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable) \
3193 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3194
3195#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable) \
3196 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3197
3198#define ID3D12InfoQueue_GetBreakOnCategory(This,Category) \
3199 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3200
3201#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity) \
3202 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3203
3204#define ID3D12InfoQueue_GetBreakOnID(This,ID) \
3205 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3206
3207#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute) \
3208 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3209
3210#define ID3D12InfoQueue_GetMuteDebugOutput(This) \
3211 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3212
3213#endif /* COBJMACROS */
3214
3215
3216#endif /* C style interface */
3217
3218
3219
3220
3221#endif /* __ID3D12InfoQueue_INTERFACE_DEFINED__ */
3222
3223
3224/* interface __MIDL_itf_d3d12sdklayers_0000_0015 */
3225/* [local] */
3226
3227typedef
3228enum D3D12_MESSAGE_CALLBACK_FLAGS
3229 {
3230 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0,
3231 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x1
3232 } D3D12_MESSAGE_CALLBACK_FLAGS;
3233
3234DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)
3235typedef void ( __stdcall *D3D12MessageFunc )(
3236 D3D12_MESSAGE_CATEGORY Category,
3237 D3D12_MESSAGE_SEVERITY Severity,
3238 D3D12_MESSAGE_ID ID,
3239 LPCSTR pDescription,
3240 void *pContext);
3241
3242
3243
3244extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0015_v0_0_c_ifspec;
3245extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0015_v0_0_s_ifspec;
3246
3247#ifndef __ID3D12InfoQueue1_INTERFACE_DEFINED__
3248#define __ID3D12InfoQueue1_INTERFACE_DEFINED__
3249
3250/* interface ID3D12InfoQueue1 */
3251/* [unique][local][object][uuid] */
3252
3253
3254EXTERN_C const IID IID_ID3D12InfoQueue1;
3255
3256#if defined(__cplusplus) && !defined(CINTERFACE)
3257
3258 MIDL_INTERFACE("2852dd88-b484-4c0c-b6b1-67168500e600")
3259 ID3D12InfoQueue1 : public ID3D12InfoQueue
3260 {
3261 public:
3262 virtual HRESULT STDMETHODCALLTYPE RegisterMessageCallback(
3263 _In_ D3D12MessageFunc CallbackFunc,
3264 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3265 _In_ void *pContext,
3266 _Inout_ DWORD *pCallbackCookie) = 0;
3267
3268 virtual HRESULT STDMETHODCALLTYPE UnregisterMessageCallback(
3269 _In_ DWORD CallbackCookie) = 0;
3270
3271 };
3272
3273
3274#else /* C style interface */
3275
3276 typedef struct ID3D12InfoQueue1Vtbl
3277 {
3278 BEGIN_INTERFACE
3279
3280 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3281 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3282 ID3D12InfoQueue1 * This,
3283 REFIID riid,
3284 _COM_Outptr_ void **ppvObject);
3285
3286 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3287 ULONG ( STDMETHODCALLTYPE *AddRef )(
3288 ID3D12InfoQueue1 * This);
3289
3290 DECLSPEC_XFGVIRT(IUnknown, Release)
3291 ULONG ( STDMETHODCALLTYPE *Release )(
3292 ID3D12InfoQueue1 * This);
3293
3294 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3295 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3296 ID3D12InfoQueue1 * This,
3297 _In_ UINT64 MessageCountLimit);
3298
3299 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3300 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3301 ID3D12InfoQueue1 * This);
3302
3303 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3304 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3305 ID3D12InfoQueue1 * This,
3306 _In_ UINT64 MessageIndex,
3307 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3308 _Inout_ SIZE_T *pMessageByteLength);
3309
3310 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3311 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3312 ID3D12InfoQueue1 * This);
3313
3314 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3315 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3316 ID3D12InfoQueue1 * This);
3317
3318 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3319 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3320 ID3D12InfoQueue1 * This);
3321
3322 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3323 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3324 ID3D12InfoQueue1 * This);
3325
3326 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3327 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3328 ID3D12InfoQueue1 * This);
3329
3330 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3331 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3332 ID3D12InfoQueue1 * This);
3333
3334 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3335 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3336 ID3D12InfoQueue1 * This,
3337 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3338
3339 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3340 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3341 ID3D12InfoQueue1 * This,
3342 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3343 _Inout_ SIZE_T *pFilterByteLength);
3344
3345 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3346 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3347 ID3D12InfoQueue1 * This);
3348
3349 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3350 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3351 ID3D12InfoQueue1 * This);
3352
3353 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3354 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3355 ID3D12InfoQueue1 * This);
3356
3357 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3358 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3359 ID3D12InfoQueue1 * This,
3360 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3361
3362 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3363 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3364 ID3D12InfoQueue1 * This);
3365
3366 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3367 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3368 ID3D12InfoQueue1 * This);
3369
3370 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3371 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3372 ID3D12InfoQueue1 * This,
3373 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3374
3375 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3376 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3377 ID3D12InfoQueue1 * This,
3378 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3379 _Inout_ SIZE_T *pFilterByteLength);
3380
3381 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3382 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3383 ID3D12InfoQueue1 * This);
3384
3385 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3386 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3387 ID3D12InfoQueue1 * This);
3388
3389 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3390 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3391 ID3D12InfoQueue1 * This);
3392
3393 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3394 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3395 ID3D12InfoQueue1 * This,
3396 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3397
3398 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3399 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3400 ID3D12InfoQueue1 * This);
3401
3402 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3403 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3404 ID3D12InfoQueue1 * This);
3405
3406 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3407 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3408 ID3D12InfoQueue1 * This,
3409 _In_ D3D12_MESSAGE_CATEGORY Category,
3410 _In_ D3D12_MESSAGE_SEVERITY Severity,
3411 _In_ D3D12_MESSAGE_ID ID,
3412 _In_ LPCSTR pDescription);
3413
3414 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3415 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3416 ID3D12InfoQueue1 * This,
3417 _In_ D3D12_MESSAGE_SEVERITY Severity,
3418 _In_ LPCSTR pDescription);
3419
3420 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3421 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3422 ID3D12InfoQueue1 * This,
3423 _In_ D3D12_MESSAGE_CATEGORY Category,
3424 _In_ BOOL bEnable);
3425
3426 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3427 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3428 ID3D12InfoQueue1 * This,
3429 _In_ D3D12_MESSAGE_SEVERITY Severity,
3430 _In_ BOOL bEnable);
3431
3432 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3433 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3434 ID3D12InfoQueue1 * This,
3435 _In_ D3D12_MESSAGE_ID ID,
3436 _In_ BOOL bEnable);
3437
3438 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3439 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3440 ID3D12InfoQueue1 * This,
3441 _In_ D3D12_MESSAGE_CATEGORY Category);
3442
3443 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3444 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3445 ID3D12InfoQueue1 * This,
3446 _In_ D3D12_MESSAGE_SEVERITY Severity);
3447
3448 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3449 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3450 ID3D12InfoQueue1 * This,
3451 _In_ D3D12_MESSAGE_ID ID);
3452
3453 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3454 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3455 ID3D12InfoQueue1 * This,
3456 _In_ BOOL bMute);
3457
3458 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3459 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3460 ID3D12InfoQueue1 * This);
3461
3462 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, RegisterMessageCallback)
3463 HRESULT ( STDMETHODCALLTYPE *RegisterMessageCallback )(
3464 ID3D12InfoQueue1 * This,
3465 _In_ D3D12MessageFunc CallbackFunc,
3466 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3467 _In_ void *pContext,
3468 _Inout_ DWORD *pCallbackCookie);
3469
3470 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, UnregisterMessageCallback)
3471 HRESULT ( STDMETHODCALLTYPE *UnregisterMessageCallback )(
3472 ID3D12InfoQueue1 * This,
3473 _In_ DWORD CallbackCookie);
3474
3475 END_INTERFACE
3476 } ID3D12InfoQueue1Vtbl;
3477
3478 interface ID3D12InfoQueue1
3479 {
3480 CONST_VTBL struct ID3D12InfoQueue1Vtbl *lpVtbl;
3481 };
3482
3483
3484
3485#ifdef COBJMACROS
3486
3487
3488#define ID3D12InfoQueue1_QueryInterface(This,riid,ppvObject) \
3489 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3490
3491#define ID3D12InfoQueue1_AddRef(This) \
3492 ( (This)->lpVtbl -> AddRef(This) )
3493
3494#define ID3D12InfoQueue1_Release(This) \
3495 ( (This)->lpVtbl -> Release(This) )
3496
3497
3498#define ID3D12InfoQueue1_SetMessageCountLimit(This,MessageCountLimit) \
3499 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3500
3501#define ID3D12InfoQueue1_ClearStoredMessages(This) \
3502 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3503
3504#define ID3D12InfoQueue1_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3505 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3506
3507#define ID3D12InfoQueue1_GetNumMessagesAllowedByStorageFilter(This) \
3508 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3509
3510#define ID3D12InfoQueue1_GetNumMessagesDeniedByStorageFilter(This) \
3511 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3512
3513#define ID3D12InfoQueue1_GetNumStoredMessages(This) \
3514 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3515
3516#define ID3D12InfoQueue1_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3517 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3518
3519#define ID3D12InfoQueue1_GetNumMessagesDiscardedByMessageCountLimit(This) \
3520 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3521
3522#define ID3D12InfoQueue1_GetMessageCountLimit(This) \
3523 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3524
3525#define ID3D12InfoQueue1_AddStorageFilterEntries(This,pFilter) \
3526 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3527
3528#define ID3D12InfoQueue1_GetStorageFilter(This,pFilter,pFilterByteLength) \
3529 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3530
3531#define ID3D12InfoQueue1_ClearStorageFilter(This) \
3532 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3533
3534#define ID3D12InfoQueue1_PushEmptyStorageFilter(This) \
3535 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3536
3537#define ID3D12InfoQueue1_PushCopyOfStorageFilter(This) \
3538 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3539
3540#define ID3D12InfoQueue1_PushStorageFilter(This,pFilter) \
3541 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3542
3543#define ID3D12InfoQueue1_PopStorageFilter(This) \
3544 ( (This)->lpVtbl -> PopStorageFilter(This) )
3545
3546#define ID3D12InfoQueue1_GetStorageFilterStackSize(This) \
3547 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3548
3549#define ID3D12InfoQueue1_AddRetrievalFilterEntries(This,pFilter) \
3550 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3551
3552#define ID3D12InfoQueue1_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3553 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3554
3555#define ID3D12InfoQueue1_ClearRetrievalFilter(This) \
3556 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3557
3558#define ID3D12InfoQueue1_PushEmptyRetrievalFilter(This) \
3559 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3560
3561#define ID3D12InfoQueue1_PushCopyOfRetrievalFilter(This) \
3562 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3563
3564#define ID3D12InfoQueue1_PushRetrievalFilter(This,pFilter) \
3565 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3566
3567#define ID3D12InfoQueue1_PopRetrievalFilter(This) \
3568 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3569
3570#define ID3D12InfoQueue1_GetRetrievalFilterStackSize(This) \
3571 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3572
3573#define ID3D12InfoQueue1_AddMessage(This,Category,Severity,ID,pDescription) \
3574 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3575
3576#define ID3D12InfoQueue1_AddApplicationMessage(This,Severity,pDescription) \
3577 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3578
3579#define ID3D12InfoQueue1_SetBreakOnCategory(This,Category,bEnable) \
3580 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3581
3582#define ID3D12InfoQueue1_SetBreakOnSeverity(This,Severity,bEnable) \
3583 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3584
3585#define ID3D12InfoQueue1_SetBreakOnID(This,ID,bEnable) \
3586 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3587
3588#define ID3D12InfoQueue1_GetBreakOnCategory(This,Category) \
3589 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3590
3591#define ID3D12InfoQueue1_GetBreakOnSeverity(This,Severity) \
3592 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3593
3594#define ID3D12InfoQueue1_GetBreakOnID(This,ID) \
3595 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3596
3597#define ID3D12InfoQueue1_SetMuteDebugOutput(This,bMute) \
3598 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3599
3600#define ID3D12InfoQueue1_GetMuteDebugOutput(This) \
3601 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3602
3603
3604#define ID3D12InfoQueue1_RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) \
3605 ( (This)->lpVtbl -> RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) )
3606
3607#define ID3D12InfoQueue1_UnregisterMessageCallback(This,CallbackCookie) \
3608 ( (This)->lpVtbl -> UnregisterMessageCallback(This,CallbackCookie) )
3609
3610#endif /* COBJMACROS */
3611
3612
3613#endif /* C style interface */
3614
3615
3616
3617
3618#endif /* __ID3D12InfoQueue1_INTERFACE_DEFINED__ */
3619
3620
3621/* interface __MIDL_itf_d3d12sdklayers_0000_0016 */
3622/* [local] */
3623
3624#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
3625#pragma endregion
3626DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);
3627DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);
3628DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);
3629DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);
3630DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);
3631DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);
3632DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);
3633DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);
3634DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);
3635DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);
3636DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);
3637DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);
3638DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);
3639DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);
3640DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);
3641DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);
3642
3643
3644extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0016_v0_0_c_ifspec;
3645extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0016_v0_0_s_ifspec;
3646
3647/* Additional Prototypes for ALL interfaces */
3648
3649/* end of Additional Prototypes */
3650
3651#ifdef __cplusplus
3652}
3653#endif
3654
3655#endif
3656
3657
diff --git a/contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl
new file mode 100644
index 0000000..3557ce1
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl
@@ -0,0 +1,1679 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10import "d3d12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region App Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17//==================================================================================================================================
18//
19// Debugging Layer
20//
21//==================================================================================================================================
22
23[uuid(344488b7-6846-474b-b989-f027448245e0), object, local, pointer_default(unique)]
24interface ID3D12Debug
25 : IUnknown
26{
27 void EnableDebugLayer();
28}
29
30typedef enum D3D12_GPU_BASED_VALIDATION_FLAGS
31{
32 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0x00,
33 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x01,
34
35} D3D12_GPU_BASED_VALIDATION_FLAGS;
36cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)")
37
38
39[uuid(affaa4ca-63fe-4d8e-b8ad-159000af4304), object, local, pointer_default(unique)]
40interface ID3D12Debug1
41 : IUnknown
42{
43 void EnableDebugLayer();
44 void SetEnableGPUBasedValidation(BOOL Enable);
45 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
46}
47
48[uuid(93a665c4-a3b2-4e5d-b692-a26ae14e3374), object, local, pointer_default(unique)]
49interface ID3D12Debug2
50 : IUnknown
51{
52 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
53}
54
55[uuid(5cf4e58f-f671-4ff1-a542-3686e3d153d1), object, local, pointer_default(unique)]
56interface ID3D12Debug3
57 : ID3D12Debug
58{
59 void SetEnableGPUBasedValidation(BOOL Enable);
60 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
61 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
62}
63
64[uuid(014b816e-9ec5-4a2f-a845-ffbe441ce13a), object, local, pointer_default(unique)]
65interface ID3D12Debug4
66 : ID3D12Debug3
67{
68 void DisableDebugLayer();
69}
70
71[uuid(548d6b12-09fa-40e0-9069-5dcd589a52c9), object, local, pointer_default(unique)]
72interface ID3D12Debug5
73 : ID3D12Debug4
74{
75 void SetEnableAutoName(BOOL Enable);
76}
77
78cpp_quote("DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);")
79
80typedef enum D3D12_RLDO_FLAGS
81{
82 D3D12_RLDO_NONE = 0x0,
83 D3D12_RLDO_SUMMARY = 0x1,
84 D3D12_RLDO_DETAIL = 0x2,
85 D3D12_RLDO_IGNORE_INTERNAL = 0x4,
86
87} D3D12_RLDO_FLAGS;
88
89cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)")
90
91typedef enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
92{
93 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS,
94 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
95 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR,
96} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
97
98typedef enum D3D12_DEBUG_FEATURE
99{
100 D3D12_DEBUG_FEATURE_NONE = 0x00,
101 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x01,
102 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x02,
103 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x04,
104 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x08,
105} D3D12_DEBUG_FEATURE;
106
107cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)")
108
109typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
110{
111 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE,
112 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY,
113 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION,
114 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION,
115 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES
116} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
117
118typedef enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
119{
120 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x00,
121 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x01,
122 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x02,
123 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x04,
124 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x07
125} D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
126
127cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)")
128
129typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
130{
131 UINT MaxMessagesPerCommandList;
132 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
133 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
134} D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
135
136typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
137{
138 FLOAT SlowdownFactor;
139} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
140
141[uuid(a9b71770-d099-4a65-a698-3dee10020f88), object, local, pointer_default(unique)]
142interface ID3D12DebugDevice1
143 : IUnknown
144{
145 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
146 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
147 HRESULT ReportLiveDeviceObjects( D3D12_RLDO_FLAGS Flags );
148}
149
150[uuid(3febd6dd-4973-4787-8194-e45f9e28923e), object, local, pointer_default(unique)]
151interface ID3D12DebugDevice
152 : IUnknown
153{
154 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
155 D3D12_DEBUG_FEATURE GetFeatureMask();
156 HRESULT ReportLiveDeviceObjects(D3D12_RLDO_FLAGS Flags);
157}
158
159[uuid(60eccbc1-378d-4df1-894c-f8ac5ce4d7dd), object, local, pointer_default(unique)]
160interface ID3D12DebugDevice2
161 : ID3D12DebugDevice
162{
163 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
164 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
165}
166
167cpp_quote("DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);")
168
169
170[ uuid( 09e0bf36-54ac-484f-8847-4baeeab6053a ), object, local, pointer_default( unique ) ]
171interface ID3D12DebugCommandQueue
172 : IUnknown
173{
174 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
175// TODO: Stale BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
176};
177
178typedef enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
179{
180 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
181} D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
182
183typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
184{
185 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
186} D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
187
188[ uuid( 102ca951-311b-4b01-b11f-ecb83e061b37 ), object, local, pointer_default( unique ) ]
189interface ID3D12DebugCommandList1
190 : IUnknown
191{
192 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
193 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
194 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
195};
196
197[uuid(09e0bf36-54ac-484f-8847-4baeeab6053f), object, local, pointer_default(unique)]
198interface ID3D12DebugCommandList
199 : IUnknown
200{
201 BOOL AssertResourceState([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State);
202 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
203 D3D12_DEBUG_FEATURE GetFeatureMask();
204};
205
206[ uuid(aeb575cf-4e06-48be-ba3b-c450fc96652e), object, local, pointer_default( unique ) ]
207interface ID3D12DebugCommandList2
208 : ID3D12DebugCommandList
209{
210 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
211 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
212};
213
214[uuid(0adf7d52-929c-4e61-addb-ffed30de66ef), object, local, pointer_default(unique)]
215interface ID3D12SharingContract
216 : IUnknown
217{
218 void Present([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_In_")] HWND window);
219 void SharedFenceSignal([annotation("_In_")] ID3D12Fence* pFence, UINT64 FenceValue);
220 void BeginCapturableWork([annotation("_In_")] REFGUID guid);
221 void EndCapturableWork([annotation("_In_")] REFGUID guid);
222};
223
224
225//==================================================================================================================================
226//
227// Info Queue
228//
229//==================================================================================================================================
230typedef enum D3D12_MESSAGE_CATEGORY {
231 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED,
232 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS,
233 D3D12_MESSAGE_CATEGORY_INITIALIZATION,
234 D3D12_MESSAGE_CATEGORY_CLEANUP,
235 D3D12_MESSAGE_CATEGORY_COMPILATION,
236 D3D12_MESSAGE_CATEGORY_STATE_CREATION,
237 D3D12_MESSAGE_CATEGORY_STATE_SETTING,
238 D3D12_MESSAGE_CATEGORY_STATE_GETTING,
239 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
240 D3D12_MESSAGE_CATEGORY_EXECUTION,
241 D3D12_MESSAGE_CATEGORY_SHADER,
242} D3D12_MESSAGE_CATEGORY;
243
244typedef enum D3D12_MESSAGE_SEVERITY {
245 D3D12_MESSAGE_SEVERITY_CORRUPTION,
246 D3D12_MESSAGE_SEVERITY_ERROR,
247 D3D12_MESSAGE_SEVERITY_WARNING,
248 D3D12_MESSAGE_SEVERITY_INFO,
249 D3D12_MESSAGE_SEVERITY_MESSAGE
250} D3D12_MESSAGE_SEVERITY;
251
252// Unique ID for every error
253// CAUTION: New enum values should be appended to the list only. Inserting
254// new enum values into the middle of the list results in changing the numeric
255// values of some ID's from one SDK release to the next. This in-turn breaks
256// PIX and customer tools/filters.
257typedef enum D3D12_MESSAGE_ID {
258 D3D12_MESSAGE_ID_UNKNOWN = 0,
259
260 //--------------------------------------------------------------------------
261 // Messages Used by Core
262 // Message IDs generated from core are at the beginning
263 // since the core changes less frequently than the debug layer.
264
265 // End of Messages used by Core
266 // ------------------------------------------------------------------------
267 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
268 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
269 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
270 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
271 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
272 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
273 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
274 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
275 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
276 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
277 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
278 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
279 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
280 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
281 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
282 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
283 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
284 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
285 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
286
287 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
288 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
289 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
290 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
291
292 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
293 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
294 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
295 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
296 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
297 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
298 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
299
300 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
301 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
302 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
303 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
304 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
305 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
306 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
307 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
308
309 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
310 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
311 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
312 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
313 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
314
315 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
316 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
317 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
318 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
319 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
320 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
321 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
322 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
323 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
324 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
325 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
326 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
327 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
328 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
329
330 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
331 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
332 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
333
334 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
335 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
336 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
337
338 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
339 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
340 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
341 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
342 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
343 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
344 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
345 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
346 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
347 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
348 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
349 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
350 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
351 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
352 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
353 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
354 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
355 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
356
357 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
358 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
359 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
360
361 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
362 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
363 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
364 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
365
366 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
367 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
368 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
369 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
370 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
371 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
372 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
373 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
374 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
375 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
376
377 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
378 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
379 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
380 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
381 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
382 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
383 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
384
385 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
386
387 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
388 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
389 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
390 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
391 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
392 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
393 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
394 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
395 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
396 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
397 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
398 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
399 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
400 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
401
402 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
403 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
404 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
405
406 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
407
408 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
409 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
410 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
411
412 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
413 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
414 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
415 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
416 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
417
418 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
419 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
420 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
421 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
422
423 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
424 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
425 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
426 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
427
428 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
429 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
430 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
431 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
432
433 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
434
435 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
436
437 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
438 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
439 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
440
441 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
442 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
443 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
444 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
445 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
446 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
447 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
448
449 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
450 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
451 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
452 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
453 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
454 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
455 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
456 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
457
458 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
459
460 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
461
462 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
463 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
464 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
465 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
466 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
467 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
468 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
469
470 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
471 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
472 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
473 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
474 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
475 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
476 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
477
478 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
479 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
480
481 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
482 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
483
484 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
485 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
486
487 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
488 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
489 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
490 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
491 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
492 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
493 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
494 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
495 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
496 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
497 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
498 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
499 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
500 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
501 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
502 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
503 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
504 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
505 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
506 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
507 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
508 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
509 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
510 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
511 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
512 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
513 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
514 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
515 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
516 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
517 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
518
519 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
520 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
521 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
522 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
523 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
524 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
525 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
526 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
527 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
528 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
529 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
530 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
531
532 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
533 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
534 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
535 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
536 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
537 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
538 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
539 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
540 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
541 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
542 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
543 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
544
545 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
546 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
547 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
548 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
549 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
550 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
551 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
552 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
553 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
554 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
555 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
556 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
557
558 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
559 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
560 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
561 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
562 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
563 // This was shipped, but is no longer used. Do not reuse.
564 //D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
565 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
566 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
567 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
568 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
569 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
570 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
571 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
572 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
573 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
574 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
575 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
576 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
577 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
578 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
579 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
580 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
581 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
582 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
583 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
584 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
585 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
586 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
587 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
588 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
589 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
590 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
591 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
592 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
593 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
594 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
595 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
596 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
597 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
598 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
599 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
600 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
601 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
602 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
603 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
604 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
605 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
606 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
607 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
608 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
609 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
610 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
611 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
612 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
613 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
614 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
615 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
616 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
617 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
618 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
619 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
620 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
621 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
622 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
623 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
624 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
625 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
626 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
627 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
628 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
629 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
630 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
631 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
632 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
633 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
634 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
635 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
636 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
637 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
638 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
639 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
640 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
641 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
642 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
643 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
644 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
645 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
646 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
647 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
648 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
649 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
650 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
651 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
652 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
653 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
654 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
655 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
656 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
657 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
658 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
659 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
660 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
661 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
662 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
663 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
664 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
665 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
666 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
667 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
668 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
669 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
670 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
671 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
672 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
673 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
674 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
675 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
676 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
677 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
678 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
679 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
680 // This was shipped, but is no longer used. Do not reuse.
681 //D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
682 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
683 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
684 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
685 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
686 // Note: These are the same as the above two, with the original (incorrect) name
687 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
688 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
689 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
690 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
691 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
692 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
693 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
694
695 // These values shipped, but are no longer used. Do not reuse.
696 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
697 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
698 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
699 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
700 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
701 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
702 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
703 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
704 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
705 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
706 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
707 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
708 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
709 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
710 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
711 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
712 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
713 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
714 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
715 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
716 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
717 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
718 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
719 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
720 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
721 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
722 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
723 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
724 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
725 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
726 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
727 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
728 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
729 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
730 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
731 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
732 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
733 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
734 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
735 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
736 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
737 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
738 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
739 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
740 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
741 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
742 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
743 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
744 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
745 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
746 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
747 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
748 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
749 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
750 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
751 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
752 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
753 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
754 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
755 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
756 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
757 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
758
759 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
760 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
761 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
762 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
763
764 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
765 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
766 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
767
768 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
769 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
770 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
771 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
772 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
773 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
774 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
775 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
776 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
777 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
778 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
779 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
780 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
781 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
782 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
783
784 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
785 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
786
787 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
788 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
789 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
790 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
791 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
792 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
793 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
794 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
795 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
796 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
797
798 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
799 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
800 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
801 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
802 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
803 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
804 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
805 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
806 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
807 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
808
809 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
810 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
811
812 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
813
814 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
815
816 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
817
818 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
819
820 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
821
822 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
823 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
824 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
825
826 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
827 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
828
829 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
830
831 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
832 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
833 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
834 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
835 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
836 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
837 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
838 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
839
840 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
841 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
842 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
843 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
844
845 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
846 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
847 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
848 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
849
850 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
851 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
852 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
853
854 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
855
856 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
857
858 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
859
860 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
861
862 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
863
864 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
865
866 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
867
868 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
869
870 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
871 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
872 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
873 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
874 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
875 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
876 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
877
878 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
879 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
880 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
881 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
882 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
883
884 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
885
886 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
887
888 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
889 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
890 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
891 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
892 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
893 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
894 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
895 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
896 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
897 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
898 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
899 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
900 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
901
902 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
903
904 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
905
906 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
907 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
908 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
909 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
910
911 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
912 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
913 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
914
915 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
916
917 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
918
919 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
920
921 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
922 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
923 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
924 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
925
926 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
927 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
928
929 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
930
931 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
932 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
933 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
934
935 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
936 D3D12_MESSAGE_ID_END_EVENT = 1015,
937
938 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
939
940 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
941
942 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
943 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
944 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
945 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
946 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
947
948 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
949
950 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
951 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
952
953 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
954 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
955 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
956 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
957 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
958 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
959 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
960 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
961 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
962 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
963 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
964 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
965 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
966 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
967 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
968
969 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
970
971 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
972
973 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
974
975 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
976
977 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
978
979 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
980
981 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
982
983 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
984
985 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
986
987 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
988
989 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
990 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
991 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
992 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
993 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
994 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
995 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
996 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
997 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
998 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
999 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
1000 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
1001 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
1002 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
1003 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
1004
1005 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
1006
1007 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
1008
1009 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
1010 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
1011 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
1012 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
1013 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
1014 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
1015 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
1016 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
1017 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
1018 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
1019
1020 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
1021
1022 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
1023
1024 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
1025 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
1026 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
1027
1028 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
1029 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
1030 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
1031
1032 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
1033 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
1034 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
1035 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
1036
1037 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
1038 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
1039 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
1040 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
1041
1042 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
1043 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
1044 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
1045
1046 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
1047 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
1048
1049 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
1050 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
1051 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
1052 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
1053
1054 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
1055 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
1056 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
1057
1058 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
1059
1060 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
1061 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
1062 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
1063
1064 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
1065
1066 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
1067 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
1068
1069 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
1070
1071 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
1072
1073 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
1074 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
1075 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
1076 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
1077 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
1078 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
1079 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
1080
1081 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
1082 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
1083 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
1084 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
1085
1086 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
1087
1088 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
1089 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
1090
1091 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
1092 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
1093 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
1094
1095 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
1096 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
1097 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
1098 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
1099
1100 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
1101
1102 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
1103 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
1104 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
1105 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
1106 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
1107 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
1108 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
1109 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
1110 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
1111 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
1112 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
1113 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
1114 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
1115 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
1116 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
1117 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
1118
1119 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
1120 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
1121
1122 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
1123
1124 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
1125
1126 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
1127
1128 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
1129 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
1130 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
1131 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
1132 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
1133
1134 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
1135 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
1136 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
1137 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
1138
1139 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
1140 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
1141 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
1142
1143 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
1144
1145 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
1146 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
1147 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
1148 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
1149 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
1150 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
1151
1152 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
1153 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
1154 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
1155
1156 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
1157 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
1158 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
1159
1160 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
1161 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
1162 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
1163
1164 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
1165 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
1166 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
1167
1168 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
1169 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
1170 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
1171 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
1172 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
1173 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
1174 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
1175 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
1176 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
1177 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
1178 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
1179 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
1180 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
1181
1182 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
1183 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
1184 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
1185 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
1186 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
1187 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
1188 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
1189 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
1190 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
1191
1192 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
1193 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
1194
1195 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
1196 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
1197
1198 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
1199
1200 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
1201 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
1202
1203 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
1204 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
1205 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
1206 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
1207
1208 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
1209 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
1210 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
1211
1212 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
1213 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
1214 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
1215 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
1216 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
1217
1218 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
1219
1220 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
1221 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
1222 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
1223 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
1224 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
1225 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
1226 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
1227 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
1228 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
1229 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
1230 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
1231 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
1232
1233 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
1234
1235 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
1236 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
1237
1238 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
1239
1240 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
1241
1242 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
1243 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
1244 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
1245 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
1246 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
1247 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
1248
1249 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
1250
1251
1252 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
1253 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
1254 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
1255 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
1256 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
1257 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
1258 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
1259 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
1260 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
1261 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
1262
1263 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
1264 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
1265 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
1266
1267 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
1268 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
1269 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
1270
1271 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
1272
1273 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
1274 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
1275
1276 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
1277 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
1278 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
1279
1280 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
1281
1282 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
1283 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
1284
1285 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
1286 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
1287 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
1288
1289 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
1290 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
1291 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
1292
1293 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
1294 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
1295 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
1296 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
1297
1298 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
1299 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
1300 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
1301 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
1302 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
1303 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
1304
1305 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
1306 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
1307 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
1308 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
1309 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
1310 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
1311 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
1312
1313 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
1314 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
1315 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
1316 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
1317 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
1318 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
1319 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
1320 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
1321 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
1322 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
1323 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
1324 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
1325 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
1326 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
1327 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
1328 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
1329 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
1330 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
1331 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
1332 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
1333 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
1334 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
1335 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
1336 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
1337 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
1338 D3D12_MESSAGE_ID_D3D12_MESSAGES_END
1339} D3D12_MESSAGE_ID;
1340
1341typedef struct D3D12_MESSAGE
1342{
1343 D3D12_MESSAGE_CATEGORY Category;
1344 D3D12_MESSAGE_SEVERITY Severity;
1345 D3D12_MESSAGE_ID ID;
1346 [annotation("_Field_size_(DescriptionByteLength)")] const char* pDescription;
1347 SIZE_T DescriptionByteLength;
1348} D3D12_MESSAGE;
1349
1350typedef struct D3D12_INFO_QUEUE_FILTER_DESC
1351{
1352 UINT NumCategories;
1353 [annotation("_Field_size_(NumCategories)")] D3D12_MESSAGE_CATEGORY* pCategoryList;
1354 UINT NumSeverities;
1355 [annotation("_Field_size_(NumSeverities)")] D3D12_MESSAGE_SEVERITY* pSeverityList;
1356 UINT NumIDs;
1357 [annotation("_Field_size_(NumIDs)")] D3D12_MESSAGE_ID* pIDList;
1358} D3D12_INFO_QUEUE_FILTER_DESC;
1359
1360// To use, memset to 0, then fill in what you need.
1361typedef struct D3D12_INFO_QUEUE_FILTER
1362{
1363 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
1364 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
1365} D3D12_INFO_QUEUE_FILTER;
1366
1367//=============================================================================
1368// ID3D12InfoQueue
1369//
1370// Logs D3D12 Messages.
1371// This interface can be queried from ID3D12Device, as long as the device
1372// was created with the debug layer.
1373//
1374//
1375cpp_quote("#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
1376[uuid(0742a90b-c387-483f-b946-30a7e4e61458), object, local, pointer_default(unique)]
1377interface ID3D12InfoQueue
1378 : IUnknown
1379{
1380 //=========================================================================
1381 // Methods for configuring how much data is stored in the queue.
1382
1383 // SetMessageCountLimit()
1384 // This sets how many messages are stored. When the queue is full,
1385 // new messages coming in push old messages out.
1386 // Passing -1 to SetMessageCountLimit means the queue has
1387 // unlimited size (go until out of memory or ClearStoredMessages()).
1388 // The default message count size is
1389 // D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
1390 // Returns S_OK or E_INVALIDARG.
1391 HRESULT SetMessageCountLimit([annotation("_In_")] UINT64 MessageCountLimit);
1392
1393 // ClearStoredMessages
1394 void ClearStoredMessages();
1395
1396 //=========================================================================
1397 // Methods for retrieving data or statistics from the queue.
1398
1399 // GetMessage()
1400 // Retrieves messages, one at a time, from the queue which pass any
1401 // retrieval filter currently defined. If there is no retrieval filter,
1402 // all messages can be retrieved.
1403 // The MessageIndex parameter is a 0 based index into the results passing
1404 // the filter. The number of results is returned by
1405 // GetNumStoredMessagesAllowedByRetrievalFilter().
1406 //
1407 // Note this does not remove the message from the queue.
1408 //
1409 // pMessageByteLength inputs the size of the buffer passed in via
1410 // pMessage, and outputs the size of the message. pMessage can be NULL
1411 // when the size of the required buffer is being queried (return S_FALSE).
1412 //
1413 // NOTE: The returned buffer pMessage is NOT just the size of D3D12_MESSAGE,
1414 // it includes extra memory after the D3D12_MESSAGE for storing the string
1415 // description, which is pointed to from within D3D12_MESSAGE. Therefore
1416 // applications should check the size needed for pMessage as described above.
1417 //
1418 // Watch out for thread safety when making consecutive calls first to
1419 // determine the buffer size required and then to pass in the buffer and
1420 // retrieve the message, and also between calling
1421 // GetNumStoredMessagesAllowedByRetrievalFilter() and enumerating through
1422 // the results via GetMessagE().
1423 //
1424 // Returns: S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY.
1425 HRESULT GetMessage(
1426 [annotation("_In_")] UINT64 MessageIndex,
1427 [annotation("_Out_writes_bytes_opt_(*pMessageByteLength)")] D3D12_MESSAGE* pMessage,
1428 [annotation("_Inout_")] SIZE_T* pMessageByteLength);
1429
1430 // GetNumMessagesAllowedByStorageFilter()
1431 // Returns how many messages sent to the queue passed
1432 // whatever storage filter was active upon receipt of
1433 // the message.
1434 // This can be a larger value than the message count limit,
1435 // returned by GetMessageCountLimit(), since old messages are discarded
1436 // when the queue is full to prevent overflow.
1437 UINT64 GetNumMessagesAllowedByStorageFilter();
1438
1439 // GetNumMessagesDeniedByStorageFilter()
1440 UINT64 GetNumMessagesDeniedByStorageFilter();
1441
1442 // GetNumStoredMessages()
1443 // Returns how many messages are currently stored in the queue.
1444 UINT64 GetNumStoredMessages();
1445
1446 // GetNumStoredMessagesAllowedByRetrievalFilter()
1447 // Returns how many messages that are currently in the queue
1448 // pass any retrieval filter that is currently set.
1449 // The MessageIndex parameter to GetMessage() indexes
1450 // an array of this many results.
1451 UINT64 GetNumStoredMessagesAllowedByRetrievalFilter();
1452
1453 // GetNumMessagesDiscardedByMessageCountLimit()
1454 UINT64 GetNumMessagesDiscardedByMessageCountLimit();
1455
1456 // GetMessageCountLimit
1457 // This is how many messages can be stored in the queue.
1458 // When the queue is full, new messages coming in push old messages out.
1459 // -1 means there is no limit.
1460 UINT64 GetMessageCountLimit();
1461
1462 //=========================================================================
1463 // Methods for filtering what gets stored in the queue
1464
1465 // AddStorageFilterEntries()
1466 // Adds to the existing entries at top of stack
1467 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1468 HRESULT AddStorageFilterEntries(
1469 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1470
1471 // GetStorageFilter()
1472 // Gets all entries at top of stack.
1473 // The application must allocate the output buffer. The size required can be
1474 // queried by passing null for pFilter and looking at the returned
1475 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1476 // pointers - these will point to locations within the same
1477 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1478 // data. So the application needs to only allocate/free the memory for pFilter.
1479 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1480 HRESULT GetStorageFilter(
1481 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1482 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1483
1484 // ClearStorageFilter()
1485 // Clears filter at the top of the stack (if there is one)
1486 void ClearStorageFilter();
1487
1488 // PushEmptyStorageFilter()
1489 // Push an empty storage filter on the stack to allow local filtering changes.
1490 // For convenience, this is automatically called by SetStorageFilter()
1491 // if the stack is empty. Thus if the stack is not needed, filters can be
1492 // defined without ever bothering to push or pop.
1493 // Returns S_OK or E_OUTOFMEMORY
1494 HRESULT PushEmptyStorageFilter();
1495
1496 // PushCopyOfStorageFilter()
1497 // Push a copy of the current filter so that local modifications can be made
1498 // starting from what currently exists.
1499 // Returns S_OK or E_OUTOFMEMORY
1500 HRESULT PushCopyOfStorageFilter();
1501
1502 // PushStorageFilter()
1503 // Push a filter passed as a parameter onto the stack. This is
1504 // just a helper for calling PushEmptyStorageFilter() followed
1505 // by AddStorageFilterEntries()
1506 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1507 HRESULT PushStorageFilter(
1508 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1509
1510 // PopStorageFilter()
1511 // Pop the current storage filter off the stack (if there is one)
1512 void PopStorageFilter();
1513
1514 // GetStorageFilterStackSize()
1515 UINT GetStorageFilterStackSize();
1516
1517 //=========================================================================
1518 // Methods for filtering what gets read out of the queue by GetMessage().
1519
1520 // AddRetrievalFilterEntries()
1521 // Adds to the existing entries at top of stack
1522 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1523 HRESULT AddRetrievalFilterEntries(
1524 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1525
1526 // GetRetrievalFilter()
1527 // Gets all entries at top of stack.
1528 // The application must allocate the output buffer. The size required can be
1529 // queried by passing null for pFilter and looking at the returned
1530 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1531 // pointers - these will point to locations within the same
1532 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1533 // data. So the application needs to only allocate/free the memory for pFilter.
1534 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1535 HRESULT GetRetrievalFilter(
1536 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1537 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1538
1539 // ClearRetrievalFilter()
1540 // Clears filter at the top of the stack (if there is one)
1541 void ClearRetrievalFilter();
1542
1543 // PushEmptyRetrievalFilter()
1544 // Push an empty storage filter on the stack to allow local filtering changes.
1545 // For convenience, this is automatically called by SetRetrievalFilter()
1546 // if the stack is empty. Thus if the stack is not needed, filters can be
1547 // defined without ever bothering to push or pop.
1548 // Returns S_OK or E_OUTOFMEMORY
1549 HRESULT PushEmptyRetrievalFilter();
1550
1551 // PushCopyOfRetrievalFilter()
1552 // Push a copy of the current filter so that local modifications can be made
1553 // starting from what currently exists.
1554 // Returns S_OK or E_OUTOFMEMORY
1555 HRESULT PushCopyOfRetrievalFilter();
1556
1557 // PushRetrievalFilter()
1558 // Push a filter passed as a parameter onto the stack. This is
1559 // just a helper for calling PushEmptyRetrievalFilter() followed
1560 // by AddRetrievalFilterEntries()
1561 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1562 HRESULT PushRetrievalFilter(
1563 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1564
1565 // PopRetrievalFilter()
1566 // Pop the current storage filter off the stack (if there is one)
1567 void PopRetrievalFilter();
1568
1569 // GetRetrievalFilterStackSize()
1570 UINT GetRetrievalFilterStackSize();
1571
1572 //=========================================================================
1573 // Methods for adding entries to the queue.
1574
1575 // AddMessage()
1576 // This is used by D3D12 components to log messages. Nothing stops
1577 // applications from calling this, but it isn’t particularly useful.
1578 // If an application wishes to insert custom strings into the queue,
1579 // AddApplicationMessage() below is suggested. See below.
1580 //
1581 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1582 HRESULT AddMessage(
1583 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1584 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1585 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1586 [annotation("_In_")] LPCSTR pDescription);
1587
1588 // AddApplicationMessage()
1589 // This is a convenience for applications that want
1590 // to insert strings of their own into the queue, perhaps to log issues
1591 // of its own, or to mark out points in time in the queue. This
1592 // has the same effect as calling AddMessage() above with the
1593 // following settings:
1594 // Category = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED
1595 // Severity = <app selects from D3D12_MESSAGE_SEVERITY>
1596 // ID = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION
1597 // pDescription = <application provided string>
1598 //
1599 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1600 HRESULT AddApplicationMessage(
1601 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1602 [annotation("_In_")] LPCSTR pDescription);
1603
1604 //=========================================================================
1605 // Methods for breaking on errors that pass the storage filter.
1606 HRESULT SetBreakOnCategory(
1607 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1608 [annotation("_In_")] BOOL bEnable);
1609 HRESULT SetBreakOnSeverity(
1610 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1611 [annotation("_In_")] BOOL bEnable);
1612 HRESULT SetBreakOnID(
1613 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1614 [annotation("_In_")] BOOL bEnable);
1615
1616 BOOL GetBreakOnCategory(
1617 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category);
1618 BOOL GetBreakOnSeverity(
1619 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity);
1620 BOOL GetBreakOnID(
1621 [annotation("_In_")] D3D12_MESSAGE_ID ID);
1622
1623 //=========================================================================
1624 // Methods for globally muting debug spte from the InfoQueue
1625 void SetMuteDebugOutput(
1626 [annotation("_In_")] BOOL bMute);
1627 BOOL GetMuteDebugOutput();
1628};
1629
1630typedef enum D3D12_MESSAGE_CALLBACK_FLAGS
1631{
1632 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0x00,
1633 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x01,
1634
1635} D3D12_MESSAGE_CALLBACK_FLAGS;
1636
1637cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)")
1638
1639typedef void (__stdcall *D3D12MessageFunc) (D3D12_MESSAGE_CATEGORY Category,
1640 D3D12_MESSAGE_SEVERITY Severity,
1641 D3D12_MESSAGE_ID ID,
1642 LPCSTR pDescription,
1643 void* pContext);
1644
1645[ uuid( 2852dd88-b484-4c0c-b6b1-67168500e600 ), object, local, pointer_default( unique ) ]
1646interface ID3D12InfoQueue1
1647 : ID3D12InfoQueue
1648{
1649 HRESULT RegisterMessageCallback(
1650 [annotation("_In_")] D3D12MessageFunc CallbackFunc,
1651 [annotation("_In_")] D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
1652 [annotation("_In_")] void* pContext,
1653 [annotation("_Inout_")] DWORD *pCallbackCookie);
1654
1655 HRESULT UnregisterMessageCallback(
1656 [annotation("_In_")] DWORD CallbackCookie);
1657};
1658
1659
1660
1661cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1662#pragma endregion
1663
1664cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
1665cpp_quote( "DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);" )
1666cpp_quote( "DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);" )
1667cpp_quote( "DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);" )
1668cpp_quote( "DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);" )
1669cpp_quote( "DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);" )
1670cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);" )
1671cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
1672cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);" )
1673cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
1674cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);" )
1675cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
1676cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);" )
1677cpp_quote( "DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);" )
1678cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
1679cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3d12shader.h b/contrib/DirectX-Headers/include/directx/d3d12shader.h
new file mode 100644
index 0000000..4ff639b
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12shader.h
@@ -0,0 +1,474 @@
1//////////////////////////////////////////////////////////////////////////////
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6// File: D3D12Shader.h
7// Content: D3D12 Shader Types and APIs
8//
9//////////////////////////////////////////////////////////////////////////////
10
11#ifndef __D3D12SHADER_H__
12#define __D3D12SHADER_H__
13
14#include "d3dcommon.h"
15
16typedef enum D3D12_SHADER_VERSION_TYPE
17{
18 D3D12_SHVER_PIXEL_SHADER = 0,
19 D3D12_SHVER_VERTEX_SHADER = 1,
20 D3D12_SHVER_GEOMETRY_SHADER = 2,
21
22 // D3D11 Shaders
23 D3D12_SHVER_HULL_SHADER = 3,
24 D3D12_SHVER_DOMAIN_SHADER = 4,
25 D3D12_SHVER_COMPUTE_SHADER = 5,
26
27 D3D12_SHVER_RESERVED0 = 0xFFF0,
28} D3D12_SHADER_VERSION_TYPE;
29
30#define D3D12_SHVER_GET_TYPE(_Version) \
31 (((_Version) >> 16) & 0xffff)
32#define D3D12_SHVER_GET_MAJOR(_Version) \
33 (((_Version) >> 4) & 0xf)
34#define D3D12_SHVER_GET_MINOR(_Version) \
35 (((_Version) >> 0) & 0xf)
36
37// Slot ID for library function return
38#define D3D_RETURN_PARAMETER_INDEX (-1)
39
40typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;
41
42typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;
43
44
45typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
46{
47 LPCSTR SemanticName; // Name of the semantic
48 UINT SemanticIndex; // Index of the semantic
49 UINT Register; // Number of member variables
50 D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable
51 D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.)
52 BYTE Mask; // Mask to indicate which components of the register
53 // are used (combination of D3D10_COMPONENT_MASK values)
54 BYTE ReadWriteMask; // Mask to indicate whether a given component is
55 // never written (if this is an output signature) or
56 // always read (if this is an input signature).
57 // (combination of D3D_MASK_* values)
58 UINT Stream; // Stream index
59 D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision
60} D3D12_SIGNATURE_PARAMETER_DESC;
61
62typedef struct _D3D12_SHADER_BUFFER_DESC
63{
64 LPCSTR Name; // Name of the constant buffer
65 D3D_CBUFFER_TYPE Type; // Indicates type of buffer content
66 UINT Variables; // Number of member variables
67 UINT Size; // Size of CB (in bytes)
68 UINT uFlags; // Buffer description flags
69} D3D12_SHADER_BUFFER_DESC;
70
71typedef struct _D3D12_SHADER_VARIABLE_DESC
72{
73 LPCSTR Name; // Name of the variable
74 UINT StartOffset; // Offset in constant buffer's backing store
75 UINT Size; // Size of variable (in bytes)
76 UINT uFlags; // Variable flags
77 LPVOID DefaultValue; // Raw pointer to default value
78 UINT StartTexture; // First texture index (or -1 if no textures used)
79 UINT TextureSize; // Number of texture slots possibly used.
80 UINT StartSampler; // First sampler index (or -1 if no textures used)
81 UINT SamplerSize; // Number of sampler slots possibly used.
82} D3D12_SHADER_VARIABLE_DESC;
83
84typedef struct _D3D12_SHADER_TYPE_DESC
85{
86 D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.)
87 D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.)
88 UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
89 UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
90 UINT Elements; // Number of elements (0 if not an array)
91 UINT Members; // Number of members (0 if not a structure)
92 UINT Offset; // Offset from the start of structure (0 if not a structure member)
93 LPCSTR Name; // Name of type, can be NULL
94} D3D12_SHADER_TYPE_DESC;
95
96typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;
97
98typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;
99
100typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE;
101
102typedef struct _D3D12_SHADER_DESC
103{
104 UINT Version; // Shader version
105 LPCSTR Creator; // Creator string
106 UINT Flags; // Shader compilation/parse flags
107
108 UINT ConstantBuffers; // Number of constant buffers
109 UINT BoundResources; // Number of bound resources
110 UINT InputParameters; // Number of parameters in the input signature
111 UINT OutputParameters; // Number of parameters in the output signature
112
113 UINT InstructionCount; // Number of emitted instructions
114 UINT TempRegisterCount; // Number of temporary registers used
115 UINT TempArrayCount; // Number of temporary arrays used
116 UINT DefCount; // Number of constant defines
117 UINT DclCount; // Number of declarations (input + output)
118 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
119 UINT TextureLoadInstructions; // Number of texture load instructions
120 UINT TextureCompInstructions; // Number of texture comparison instructions
121 UINT TextureBiasInstructions; // Number of texture bias instructions
122 UINT TextureGradientInstructions; // Number of texture gradient instructions
123 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
124 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
125 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
126 UINT StaticFlowControlCount; // Number of static flow control instructions used
127 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
128 UINT MacroInstructionCount; // Number of macro instructions used
129 UINT ArrayInstructionCount; // Number of array instructions used
130 UINT CutInstructionCount; // Number of cut instructions used
131 UINT EmitInstructionCount; // Number of emit instructions used
132 D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology
133 UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count
134 D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive
135 UINT PatchConstantParameters; // Number of parameters in the patch constant signature
136 UINT cGSInstanceCount; // Number of Geometry shader instances
137 UINT cControlPoints; // Number of control points in the HS->DS stage
138 D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator
139 D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator
140 D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline)
141 // instruction counts
142 UINT cBarrierInstructions; // Number of barrier instructions in a compute shader
143 UINT cInterlockedInstructions; // Number of interlocked instructions
144 UINT cTextureStoreInstructions; // Number of texture writes
145} D3D12_SHADER_DESC;
146
147typedef struct _D3D12_SHADER_INPUT_BIND_DESC
148{
149 LPCSTR Name; // Name of the resource
150 D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.)
151 UINT BindPoint; // Starting bind point
152 UINT BindCount; // Number of contiguous bind points (for arrays)
153
154 UINT uFlags; // Input binding flags
155 D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture)
156 D3D_SRV_DIMENSION Dimension; // Dimension (if texture)
157 UINT NumSamples; // Number of samples (0 if not MS texture)
158 UINT Space; // Register space
159 UINT uID; // Range ID in the bytecode
160} D3D12_SHADER_INPUT_BIND_DESC;
161
162#define D3D_SHADER_REQUIRES_DOUBLES 0x00000001
163#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002
164#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004
165#define D3D_SHADER_REQUIRES_64_UAVS 0x00000008
166#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010
167#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020
168#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040
169#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080
170#define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100
171#define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200
172#define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400
173#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800
174#define D3D_SHADER_REQUIRES_ROVS 0x00001000
175#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000
176#define D3D_SHADER_REQUIRES_WAVE_OPS 0x00004000
177#define D3D_SHADER_REQUIRES_INT64_OPS 0x00008000
178#define D3D_SHADER_REQUIRES_VIEW_ID 0x00010000
179#define D3D_SHADER_REQUIRES_BARYCENTRICS 0x00020000
180#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS 0x00040000
181#define D3D_SHADER_REQUIRES_SHADING_RATE 0x00080000
182#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1 0x00100000
183#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK 0x00200000
184#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE 0x00400000
185#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED 0x00800000
186#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x01000000
187#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x02000000
188#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
189#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
190#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
191
192typedef struct _D3D12_LIBRARY_DESC
193{
194 LPCSTR Creator; // The name of the originator of the library.
195 UINT Flags; // Compilation flags.
196 UINT FunctionCount; // Number of functions exported from the library.
197} D3D12_LIBRARY_DESC;
198
199typedef struct _D3D12_FUNCTION_DESC
200{
201 UINT Version; // Shader version
202 LPCSTR Creator; // Creator string
203 UINT Flags; // Shader compilation/parse flags
204
205 UINT ConstantBuffers; // Number of constant buffers
206 UINT BoundResources; // Number of bound resources
207
208 UINT InstructionCount; // Number of emitted instructions
209 UINT TempRegisterCount; // Number of temporary registers used
210 UINT TempArrayCount; // Number of temporary arrays used
211 UINT DefCount; // Number of constant defines
212 UINT DclCount; // Number of declarations (input + output)
213 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
214 UINT TextureLoadInstructions; // Number of texture load instructions
215 UINT TextureCompInstructions; // Number of texture comparison instructions
216 UINT TextureBiasInstructions; // Number of texture bias instructions
217 UINT TextureGradientInstructions; // Number of texture gradient instructions
218 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
219 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
220 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
221 UINT StaticFlowControlCount; // Number of static flow control instructions used
222 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
223 UINT MacroInstructionCount; // Number of macro instructions used
224 UINT ArrayInstructionCount; // Number of array instructions used
225 UINT MovInstructionCount; // Number of mov instructions used
226 UINT MovcInstructionCount; // Number of movc instructions used
227 UINT ConversionInstructionCount; // Number of type conversion instructions used
228 UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used
229 D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code
230 UINT64 RequiredFeatureFlags; // Required feature flags
231
232 LPCSTR Name; // Function name
233 INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return)
234 BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine
235 BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob
236 BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob
237} D3D12_FUNCTION_DESC;
238
239typedef struct _D3D12_PARAMETER_DESC
240{
241 LPCSTR Name; // Parameter name.
242 LPCSTR SemanticName; // Parameter semantic name (+index).
243 D3D_SHADER_VARIABLE_TYPE Type; // Element type.
244 D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix.
245 UINT Rows; // Rows are for matrix parameters.
246 UINT Columns; // Components or Columns in matrix.
247 D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode.
248 D3D_PARAMETER_FLAGS Flags; // Parameter modifiers.
249
250 UINT FirstInRegister; // The first input register for this parameter.
251 UINT FirstInComponent; // The first input register component for this parameter.
252 UINT FirstOutRegister; // The first output register for this parameter.
253 UINT FirstOutComponent; // The first output register component for this parameter.
254} D3D12_PARAMETER_DESC;
255
256
257//////////////////////////////////////////////////////////////////////////////
258// Interfaces ////////////////////////////////////////////////////////////////
259//////////////////////////////////////////////////////////////////////////////
260
261typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType;
262typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE;
263
264typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable;
265typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE;
266
267typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer;
268typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER;
269
270typedef interface ID3D12ShaderReflection ID3D12ShaderReflection;
271typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION;
272
273typedef interface ID3D12LibraryReflection ID3D12LibraryReflection;
274typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION;
275
276typedef interface ID3D12FunctionReflection ID3D12FunctionReflection;
277typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION;
278
279typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection;
280typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION;
281
282
283// {E913C351-783D-48CA-A1D1-4F306284AD56}
284interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType;
285DEFINE_GUID(IID_ID3D12ShaderReflectionType,
2860xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56);
287
288#undef INTERFACE
289#define INTERFACE ID3D12ShaderReflectionType
290
291DECLARE_INTERFACE(ID3D12ShaderReflectionType)
292{
293 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE;
294
295 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE;
296 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE;
297 STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE;
298
299 STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
300 STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE;
301 STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE;
302 STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE;
303 STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE;
304 STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
305 STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE;
306};
307
308// {8337A8A6-A216-444A-B2F4-314733A73AEA}
309interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable;
310DEFINE_GUID(IID_ID3D12ShaderReflectionVariable,
3110x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea);
312
313#undef INTERFACE
314#define INTERFACE ID3D12ShaderReflectionVariable
315
316DECLARE_INTERFACE(ID3D12ShaderReflectionVariable)
317{
318 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE;
319
320 STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE;
321 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE;
322
323 STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE;
324};
325
326// {C59598B4-48B3-4869-B9B1-B1618B14A8B7}
327interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer;
328DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer,
3290xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7);
330
331#undef INTERFACE
332#define INTERFACE ID3D12ShaderReflectionConstantBuffer
333
334DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer)
335{
336 STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE;
337
338 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE;
339 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
340};
341
342// The ID3D12ShaderReflection IID may change from SDK version to SDK version
343// if the reflection API changes. This prevents new code with the new API
344// from working with an old binary. Recompiling with the new header
345// will pick up the new IID.
346
347// {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E}
348interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection;
349DEFINE_GUID(IID_ID3D12ShaderReflection,
3500x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e);
351
352#undef INTERFACE
353#define INTERFACE ID3D12ShaderReflection
354
355DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown)
356{
357 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid,
358 _Out_ LPVOID *ppv) PURE;
359 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
360 STDMETHOD_(ULONG, Release)(THIS) PURE;
361
362 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE;
363
364 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE;
365 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
366
367 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
368 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
369
370 STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
371 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
372 STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
373 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
374 STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex,
375 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
376
377 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
378
379 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
380 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
381
382 STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE;
383 STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE;
384 STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE;
385 STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE;
386
387 STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE;
388 STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE;
389
390 STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE;
391 STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE;
392
393 STDMETHOD_(UINT, GetThreadGroupSize)(THIS_
394 _Out_opt_ UINT* pSizeX,
395 _Out_opt_ UINT* pSizeY,
396 _Out_opt_ UINT* pSizeZ) PURE;
397
398 STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE;
399};
400
401// {8E349D19-54DB-4A56-9DC9-119D87BDB804}
402interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection;
403DEFINE_GUID(IID_ID3D12LibraryReflection,
4040x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4);
405
406#undef INTERFACE
407#define INTERFACE ID3D12LibraryReflection
408
409DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown)
410{
411 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE;
412 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
413 STDMETHOD_(ULONG, Release)(THIS) PURE;
414
415 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE;
416
417 STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE;
418};
419
420// {1108795C-2772-4BA9-B2A8-D464DC7E2799}
421interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection;
422DEFINE_GUID(IID_ID3D12FunctionReflection,
4230x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99);
424
425#undef INTERFACE
426#define INTERFACE ID3D12FunctionReflection
427
428DECLARE_INTERFACE(ID3D12FunctionReflection)
429{
430 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE;
431
432 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE;
433 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
434
435 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
436 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
437
438 STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
439
440 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
441 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
442
443 // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value.
444 STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE;
445};
446
447// {EC25F42D-7006-4F2B-B33E-02CC3375733F}
448interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection;
449DEFINE_GUID(IID_ID3D12FunctionParameterReflection,
4500xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f);
451
452#undef INTERFACE
453#define INTERFACE ID3D12FunctionParameterReflection
454
455DECLARE_INTERFACE(ID3D12FunctionParameterReflection)
456{
457 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE;
458};
459
460
461//////////////////////////////////////////////////////////////////////////////
462// APIs //////////////////////////////////////////////////////////////////////
463//////////////////////////////////////////////////////////////////////////////
464
465#ifdef __cplusplus
466extern "C" {
467#endif //__cplusplus
468
469#ifdef __cplusplus
470}
471#endif //__cplusplus
472
473#endif //__D3D12SHADER_H__
474
diff --git a/contrib/DirectX-Headers/include/directx/d3d12video.h b/contrib/DirectX-Headers/include/directx/d3d12video.h
new file mode 100644
index 0000000..8d9d658
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12video.h
@@ -0,0 +1,5533 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12video_h__
39#define __d3d12video_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if _CONTROL_FLOW_GUARD_XFG
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12VideoDecoderHeap_FWD_DEFINED__
56#define __ID3D12VideoDecoderHeap_FWD_DEFINED__
57typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
58
59#endif /* __ID3D12VideoDecoderHeap_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12VideoDevice_FWD_DEFINED__
63#define __ID3D12VideoDevice_FWD_DEFINED__
64typedef interface ID3D12VideoDevice ID3D12VideoDevice;
65
66#endif /* __ID3D12VideoDevice_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
70#define __ID3D12VideoDecoder_FWD_DEFINED__
71typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
72
73#endif /* __ID3D12VideoDecoder_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
77#define __ID3D12VideoProcessor_FWD_DEFINED__
78typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
79
80#endif /* __ID3D12VideoProcessor_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
84#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
85typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
86
87#endif /* __ID3D12VideoDecodeCommandList_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
91#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
92typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
93
94#endif /* __ID3D12VideoProcessCommandList_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
98#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
99typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
100
101#endif /* __ID3D12VideoDecodeCommandList1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12VideoProcessCommandList1_FWD_DEFINED__
105#define __ID3D12VideoProcessCommandList1_FWD_DEFINED__
106typedef interface ID3D12VideoProcessCommandList1 ID3D12VideoProcessCommandList1;
107
108#endif /* __ID3D12VideoProcessCommandList1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
112#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
113typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
114
115#endif /* __ID3D12VideoMotionEstimator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
119#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
120typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
121
122#endif /* __ID3D12VideoMotionVectorHeap_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
126#define __ID3D12VideoDevice1_FWD_DEFINED__
127typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
128
129#endif /* __ID3D12VideoDevice1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
133#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
134typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
135
136#endif /* __ID3D12VideoEncodeCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12VideoDecoder1_FWD_DEFINED__
140#define __ID3D12VideoDecoder1_FWD_DEFINED__
141typedef interface ID3D12VideoDecoder1 ID3D12VideoDecoder1;
142
143#endif /* __ID3D12VideoDecoder1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12VideoDecoderHeap1_FWD_DEFINED__
147#define __ID3D12VideoDecoderHeap1_FWD_DEFINED__
148typedef interface ID3D12VideoDecoderHeap1 ID3D12VideoDecoderHeap1;
149
150#endif /* __ID3D12VideoDecoderHeap1_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12VideoProcessor1_FWD_DEFINED__
154#define __ID3D12VideoProcessor1_FWD_DEFINED__
155typedef interface ID3D12VideoProcessor1 ID3D12VideoProcessor1;
156
157#endif /* __ID3D12VideoProcessor1_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
161#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
162typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
163
164#endif /* __ID3D12VideoExtensionCommand_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
168#define __ID3D12VideoDevice2_FWD_DEFINED__
169typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
170
171#endif /* __ID3D12VideoDevice2_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
175#define __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
176typedef interface ID3D12VideoDecodeCommandList2 ID3D12VideoDecodeCommandList2;
177
178#endif /* __ID3D12VideoDecodeCommandList2_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12VideoProcessCommandList2_FWD_DEFINED__
182#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
183typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
184
185#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
189#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
190typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
191
192#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
193
194
195/* header files for imported files */
196#include "OAIdl.h"
197#include "OCIdl.h"
198#include "dxgicommon.h"
199#include "d3d12.h"
200
201#ifdef __cplusplus
202extern "C"{
203#endif
204
205
206/* interface __MIDL_itf_d3d12video_0000_0000 */
207/* [local] */
208
209#include <winapifamily.h>
210#pragma region App Family
211#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
212typedef
213enum D3D12_VIDEO_FIELD_TYPE
214 {
215 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
216 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
217 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
218 } D3D12_VIDEO_FIELD_TYPE;
219
220typedef
221enum D3D12_VIDEO_FRAME_STEREO_FORMAT
222 {
223 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
224 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
225 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
226 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
227 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
228 } D3D12_VIDEO_FRAME_STEREO_FORMAT;
229
230typedef struct D3D12_VIDEO_FORMAT
231 {
232 DXGI_FORMAT Format;
233 DXGI_COLOR_SPACE_TYPE ColorSpace;
234 } D3D12_VIDEO_FORMAT;
235
236typedef struct D3D12_VIDEO_SAMPLE
237 {
238 UINT Width;
239 UINT Height;
240 D3D12_VIDEO_FORMAT Format;
241 } D3D12_VIDEO_SAMPLE;
242
243typedef
244enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
245 {
246 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
247 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
248 } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
249
250typedef
251enum D3D12_FEATURE_VIDEO
252 {
253 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
254 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
255 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
256 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
257 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
258 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
259 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
260 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
261 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
262 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
263 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
264 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
265 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
266 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
267 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
268 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
269 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
270 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
271 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
272 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
273 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
274 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
275 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
276 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
277 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
278 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
279 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32
280 } D3D12_FEATURE_VIDEO;
281
282typedef
283enum D3D12_BITSTREAM_ENCRYPTION_TYPE
284 {
285 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
286 } D3D12_BITSTREAM_ENCRYPTION_TYPE;
287
288typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
289 {
290 GUID DecodeProfile;
291 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
292 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
293 } D3D12_VIDEO_DECODE_CONFIGURATION;
294
295typedef struct D3D12_VIDEO_DECODER_DESC
296 {
297 UINT NodeMask;
298 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
299 } D3D12_VIDEO_DECODER_DESC;
300
301typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
302 {
303 UINT NodeMask;
304 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
305 UINT DecodeWidth;
306 UINT DecodeHeight;
307 DXGI_FORMAT Format;
308 DXGI_RATIONAL FrameRate;
309 UINT BitRate;
310 UINT MaxDecodePictureBufferCount;
311 } D3D12_VIDEO_DECODER_HEAP_DESC;
312
313typedef struct D3D12_VIDEO_SIZE_RANGE
314 {
315 UINT MaxWidth;
316 UINT MaxHeight;
317 UINT MinWidth;
318 UINT MinHeight;
319 } D3D12_VIDEO_SIZE_RANGE;
320
321typedef
322enum D3D12_VIDEO_PROCESS_FILTER
323 {
324 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
325 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
326 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
327 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
328 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
329 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
330 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
331 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
332 } D3D12_VIDEO_PROCESS_FILTER;
333
334typedef
335enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
336 {
337 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0,
338 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = ( 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS ) ,
339 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = ( 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST ) ,
340 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = ( 1 << D3D12_VIDEO_PROCESS_FILTER_HUE ) ,
341 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION ) ,
342 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION ) ,
343 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT ) ,
344 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = ( 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING ) ,
345 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
346 } D3D12_VIDEO_PROCESS_FILTER_FLAGS;
347
348DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS );
349typedef
350enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
351 {
352 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0,
353 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
354 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
355 } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
356
357DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );
358typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
359 {
360 BOOL Enable;
361 FLOAT Alpha;
362 } D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
363
364typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
365 {
366 BOOL Enable;
367 FLOAT Lower;
368 FLOAT Upper;
369 } D3D12_VIDEO_PROCESS_LUMA_KEY;
370
371typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
372 {
373 DXGI_FORMAT Format;
374 DXGI_COLOR_SPACE_TYPE ColorSpace;
375 DXGI_RATIONAL SourceAspectRatio;
376 DXGI_RATIONAL DestinationAspectRatio;
377 DXGI_RATIONAL FrameRate;
378 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
379 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
380 BOOL EnableOrientation;
381 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
382 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
383 D3D12_VIDEO_FIELD_TYPE FieldType;
384 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
385 BOOL EnableAlphaBlending;
386 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
387 UINT NumPastFrames;
388 UINT NumFutureFrames;
389 BOOL EnableAutoProcessing;
390 } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
391
392typedef
393enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
394 {
395 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
396 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
397 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
398 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
399 } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
400
401typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
402 {
403 DXGI_FORMAT Format;
404 DXGI_COLOR_SPACE_TYPE ColorSpace;
405 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
406 UINT AlphaFillModeSourceStreamIndex;
407 FLOAT BackgroundColor[ 4 ];
408 DXGI_RATIONAL FrameRate;
409 BOOL EnableStereo;
410 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
411
412
413
414extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
415extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_s_ifspec;
416
417#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
418#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
419
420/* interface ID3D12VideoDecoderHeap */
421/* [unique][local][object][uuid] */
422
423
424EXTERN_C const IID IID_ID3D12VideoDecoderHeap;
425
426#if defined(__cplusplus) && !defined(CINTERFACE)
427
428 MIDL_INTERFACE("0946B7C9-EBF6-4047-BB73-8683E27DBB1F")
429 ID3D12VideoDecoderHeap : public ID3D12Pageable
430 {
431 public:
432 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
433
434 };
435
436
437#else /* C style interface */
438
439 typedef struct ID3D12VideoDecoderHeapVtbl
440 {
441 BEGIN_INTERFACE
442
443 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
444 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
445 ID3D12VideoDecoderHeap * This,
446 REFIID riid,
447 _COM_Outptr_ void **ppvObject);
448
449 DECLSPEC_XFGVIRT(IUnknown, AddRef)
450 ULONG ( STDMETHODCALLTYPE *AddRef )(
451 ID3D12VideoDecoderHeap * This);
452
453 DECLSPEC_XFGVIRT(IUnknown, Release)
454 ULONG ( STDMETHODCALLTYPE *Release )(
455 ID3D12VideoDecoderHeap * This);
456
457 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
458 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
459 ID3D12VideoDecoderHeap * This,
460 _In_ REFGUID guid,
461 _Inout_ UINT *pDataSize,
462 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
463
464 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
465 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
466 ID3D12VideoDecoderHeap * This,
467 _In_ REFGUID guid,
468 _In_ UINT DataSize,
469 _In_reads_bytes_opt_( DataSize ) const void *pData);
470
471 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
472 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
473 ID3D12VideoDecoderHeap * This,
474 _In_ REFGUID guid,
475 _In_opt_ const IUnknown *pData);
476
477 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
478 HRESULT ( STDMETHODCALLTYPE *SetName )(
479 ID3D12VideoDecoderHeap * This,
480 _In_z_ LPCWSTR Name);
481
482 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
483 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
484 ID3D12VideoDecoderHeap * This,
485 REFIID riid,
486 _COM_Outptr_opt_ void **ppvDevice);
487
488 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
489 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
490 ID3D12VideoDecoderHeap * This,
491 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
492
493 END_INTERFACE
494 } ID3D12VideoDecoderHeapVtbl;
495
496 interface ID3D12VideoDecoderHeap
497 {
498 CONST_VTBL struct ID3D12VideoDecoderHeapVtbl *lpVtbl;
499 };
500
501
502
503#ifdef COBJMACROS
504
505
506#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) \
507 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
508
509#define ID3D12VideoDecoderHeap_AddRef(This) \
510 ( (This)->lpVtbl -> AddRef(This) )
511
512#define ID3D12VideoDecoderHeap_Release(This) \
513 ( (This)->lpVtbl -> Release(This) )
514
515
516#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
517 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
518
519#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,DataSize,pData) \
520 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
521
522#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,pData) \
523 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
524
525#define ID3D12VideoDecoderHeap_SetName(This,Name) \
526 ( (This)->lpVtbl -> SetName(This,Name) )
527
528
529#define ID3D12VideoDecoderHeap_GetDevice(This,riid,ppvDevice) \
530 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
531
532
533
534#define ID3D12VideoDecoderHeap_GetDesc(This,RetVal) \
535 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
536
537#endif /* COBJMACROS */
538
539
540#endif /* C style interface */
541
542
543
544
545#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
546
547
548#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
549#define __ID3D12VideoDevice_INTERFACE_DEFINED__
550
551/* interface ID3D12VideoDevice */
552/* [unique][local][object][uuid] */
553
554
555EXTERN_C const IID IID_ID3D12VideoDevice;
556
557#if defined(__cplusplus) && !defined(CINTERFACE)
558
559 MIDL_INTERFACE("1F052807-0B46-4ACC-8A89-364F793718A4")
560 ID3D12VideoDevice : public IUnknown
561 {
562 public:
563 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
564 D3D12_FEATURE_VIDEO FeatureVideo,
565 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
566 UINT FeatureSupportDataSize) = 0;
567
568 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
569 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
570 _In_ REFIID riid,
571 _COM_Outptr_ void **ppVideoDecoder) = 0;
572
573 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
574 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
575 _In_ REFIID riid,
576 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
577
578 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
579 UINT NodeMask,
580 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
581 UINT NumInputStreamDescs,
582 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
583 _In_ REFIID riid,
584 _COM_Outptr_ void **ppVideoProcessor) = 0;
585
586 };
587
588
589#else /* C style interface */
590
591 typedef struct ID3D12VideoDeviceVtbl
592 {
593 BEGIN_INTERFACE
594
595 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
596 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
597 ID3D12VideoDevice * This,
598 REFIID riid,
599 _COM_Outptr_ void **ppvObject);
600
601 DECLSPEC_XFGVIRT(IUnknown, AddRef)
602 ULONG ( STDMETHODCALLTYPE *AddRef )(
603 ID3D12VideoDevice * This);
604
605 DECLSPEC_XFGVIRT(IUnknown, Release)
606 ULONG ( STDMETHODCALLTYPE *Release )(
607 ID3D12VideoDevice * This);
608
609 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
610 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
611 ID3D12VideoDevice * This,
612 D3D12_FEATURE_VIDEO FeatureVideo,
613 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
614 UINT FeatureSupportDataSize);
615
616 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
617 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
618 ID3D12VideoDevice * This,
619 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
620 _In_ REFIID riid,
621 _COM_Outptr_ void **ppVideoDecoder);
622
623 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
624 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
625 ID3D12VideoDevice * This,
626 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
627 _In_ REFIID riid,
628 _COM_Outptr_ void **ppVideoDecoderHeap);
629
630 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
631 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
632 ID3D12VideoDevice * This,
633 UINT NodeMask,
634 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
635 UINT NumInputStreamDescs,
636 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
637 _In_ REFIID riid,
638 _COM_Outptr_ void **ppVideoProcessor);
639
640 END_INTERFACE
641 } ID3D12VideoDeviceVtbl;
642
643 interface ID3D12VideoDevice
644 {
645 CONST_VTBL struct ID3D12VideoDeviceVtbl *lpVtbl;
646 };
647
648
649
650#ifdef COBJMACROS
651
652
653#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) \
654 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
655
656#define ID3D12VideoDevice_AddRef(This) \
657 ( (This)->lpVtbl -> AddRef(This) )
658
659#define ID3D12VideoDevice_Release(This) \
660 ( (This)->lpVtbl -> Release(This) )
661
662
663#define ID3D12VideoDevice_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
664 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
665
666#define ID3D12VideoDevice_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
667 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
668
669#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
670 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
671
672#define ID3D12VideoDevice_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
673 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
674
675#endif /* COBJMACROS */
676
677
678#endif /* C style interface */
679
680
681
682
683#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
684
685
686#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
687#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
688
689/* interface ID3D12VideoDecoder */
690/* [unique][local][object][uuid] */
691
692
693EXTERN_C const IID IID_ID3D12VideoDecoder;
694
695#if defined(__cplusplus) && !defined(CINTERFACE)
696
697 MIDL_INTERFACE("C59B6BDC-7720-4074-A136-17A156037470")
698 ID3D12VideoDecoder : public ID3D12Pageable
699 {
700 public:
701 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
702
703 };
704
705
706#else /* C style interface */
707
708 typedef struct ID3D12VideoDecoderVtbl
709 {
710 BEGIN_INTERFACE
711
712 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
713 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
714 ID3D12VideoDecoder * This,
715 REFIID riid,
716 _COM_Outptr_ void **ppvObject);
717
718 DECLSPEC_XFGVIRT(IUnknown, AddRef)
719 ULONG ( STDMETHODCALLTYPE *AddRef )(
720 ID3D12VideoDecoder * This);
721
722 DECLSPEC_XFGVIRT(IUnknown, Release)
723 ULONG ( STDMETHODCALLTYPE *Release )(
724 ID3D12VideoDecoder * This);
725
726 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
727 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
728 ID3D12VideoDecoder * This,
729 _In_ REFGUID guid,
730 _Inout_ UINT *pDataSize,
731 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
732
733 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
734 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
735 ID3D12VideoDecoder * This,
736 _In_ REFGUID guid,
737 _In_ UINT DataSize,
738 _In_reads_bytes_opt_( DataSize ) const void *pData);
739
740 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
741 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
742 ID3D12VideoDecoder * This,
743 _In_ REFGUID guid,
744 _In_opt_ const IUnknown *pData);
745
746 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
747 HRESULT ( STDMETHODCALLTYPE *SetName )(
748 ID3D12VideoDecoder * This,
749 _In_z_ LPCWSTR Name);
750
751 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
752 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
753 ID3D12VideoDecoder * This,
754 REFIID riid,
755 _COM_Outptr_opt_ void **ppvDevice);
756
757 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
758 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
759 ID3D12VideoDecoder * This,
760 D3D12_VIDEO_DECODER_DESC * RetVal);
761
762 END_INTERFACE
763 } ID3D12VideoDecoderVtbl;
764
765 interface ID3D12VideoDecoder
766 {
767 CONST_VTBL struct ID3D12VideoDecoderVtbl *lpVtbl;
768 };
769
770
771
772#ifdef COBJMACROS
773
774
775#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) \
776 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
777
778#define ID3D12VideoDecoder_AddRef(This) \
779 ( (This)->lpVtbl -> AddRef(This) )
780
781#define ID3D12VideoDecoder_Release(This) \
782 ( (This)->lpVtbl -> Release(This) )
783
784
785#define ID3D12VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) \
786 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
787
788#define ID3D12VideoDecoder_SetPrivateData(This,guid,DataSize,pData) \
789 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
790
791#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,pData) \
792 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
793
794#define ID3D12VideoDecoder_SetName(This,Name) \
795 ( (This)->lpVtbl -> SetName(This,Name) )
796
797
798#define ID3D12VideoDecoder_GetDevice(This,riid,ppvDevice) \
799 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
800
801
802
803#define ID3D12VideoDecoder_GetDesc(This,RetVal) \
804 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
805
806#endif /* COBJMACROS */
807
808
809#endif /* C style interface */
810
811
812
813
814#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
815
816
817/* interface __MIDL_itf_d3d12video_0000_0003 */
818/* [local] */
819
820typedef
821enum D3D12_VIDEO_DECODE_TIER
822 {
823 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
824 D3D12_VIDEO_DECODE_TIER_1 = 1,
825 D3D12_VIDEO_DECODE_TIER_2 = 2,
826 D3D12_VIDEO_DECODE_TIER_3 = 3
827 } D3D12_VIDEO_DECODE_TIER;
828
829typedef
830enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
831 {
832 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0,
833 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
834 } D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
835
836DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS );
837typedef
838enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
839 {
840 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0,
841 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
842 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
843 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
844 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
845 } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
846
847DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS );
848typedef
849enum D3D12_VIDEO_DECODE_STATUS
850 {
851 D3D12_VIDEO_DECODE_STATUS_OK = 0,
852 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
853 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
854 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
855 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4
856 } D3D12_VIDEO_DECODE_STATUS;
857
858typedef
859enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
860 {
861 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
862 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
863 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
864 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_MAX_VALID = 3
865 } D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
866
867typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
868 {
869 UINT NodeIndex;
870 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
871 UINT Width;
872 UINT Height;
873 DXGI_FORMAT DecodeFormat;
874 DXGI_RATIONAL FrameRate;
875 UINT BitRate;
876 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
877 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
878 D3D12_VIDEO_DECODE_TIER DecodeTier;
879 } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
880
881typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
882 {
883 UINT NodeIndex;
884 UINT ProfileCount;
885 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
886
887typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
888 {
889 UINT NodeIndex;
890 UINT ProfileCount;
891 _Field_size_full_(ProfileCount) GUID *pProfiles;
892 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
893
894typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
895 {
896 UINT NodeIndex;
897 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
898 UINT FormatCount;
899 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
900
901typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
902 {
903 UINT NodeIndex;
904 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
905 UINT FormatCount;
906 _Field_size_full_(FormatCount) DXGI_FORMAT *pOutputFormats;
907 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
908
909typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
910 {
911 BOOL IOCoherent;
912 } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
913
914typedef
915enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
916 {
917 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
918 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
919 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
920 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
921 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
922 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
923 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3
924 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
925
926typedef
927enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
928 {
929 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0,
930 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y ) ,
931 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U ) ,
932 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V ) ,
933 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R ) ,
934 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G ) ,
935 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B ) ,
936 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
937 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
938
939DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS );
940typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
941 {
942 UINT NodeIndex;
943 GUID DecodeProfile;
944 UINT Width;
945 UINT Height;
946 DXGI_FORMAT DecodeFormat;
947 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;
948 UINT BinCount;
949 UINT CounterBitDepth;
950 } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
951
952typedef
953enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
954 {
955 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0,
956 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
957 } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
958
959DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS );
960typedef
961enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
962 {
963 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
964 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
965 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2
966 } D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
967
968DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS );
969typedef struct D3D12_VIDEO_SCALE_SUPPORT
970 {
971 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
972 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
973 } D3D12_VIDEO_SCALE_SUPPORT;
974
975typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
976 {
977 UINT NodeIndex;
978 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
979 D3D12_VIDEO_SAMPLE DecodeSample;
980 D3D12_VIDEO_FORMAT OutputFormat;
981 DXGI_RATIONAL FrameRate;
982 UINT BitRate;
983 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;
984 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
985 } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
986
987typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
988 {
989 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
990 UINT64 MemoryPoolL0Size;
991 UINT64 MemoryPoolL1Size;
992 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
993
994typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
995 {
996 UINT NodeMask;
997 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
998 UINT NumInputStreamDescs;
999 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
1000 UINT64 MemoryPoolL0Size;
1001 UINT64 MemoryPoolL1Size;
1002 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
1003
1004typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
1005 {
1006 UINT64 Status;
1007 UINT64 NumMacroblocksAffected;
1008 DXGI_RATIONAL FrameRate;
1009 UINT BitRate;
1010 } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
1011
1012typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
1013 {
1014 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
1015 UINT Size;
1016 _Field_size_bytes_full_(Size) void *pData;
1017 } D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
1018
1019typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
1020 {
1021 UINT NumTexture2Ds;
1022 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
1023 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
1024 _Field_size_full_opt_(NumTexture2Ds) ID3D12VideoDecoderHeap **ppHeaps;
1025 } D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
1026
1027typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
1028 {
1029 ID3D12Resource *pBuffer;
1030 UINT64 Offset;
1031 UINT64 Size;
1032 } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
1033
1034typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
1035 {
1036 BOOL Enable;
1037 ID3D12Resource *pReferenceTexture2D;
1038 UINT ReferenceSubresource;
1039 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1040 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1041 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
1042
1043typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
1044 {
1045 UINT NumFrameArguments;
1046 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[ 10 ];
1047 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
1048 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
1049 ID3D12VideoDecoderHeap *pHeap;
1050 } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
1051
1052typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
1053 {
1054 ID3D12Resource *pOutputTexture2D;
1055 UINT OutputSubresource;
1056 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
1057 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
1058
1059
1060
1061extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
1062extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_s_ifspec;
1063
1064#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
1065#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
1066
1067/* interface ID3D12VideoProcessor */
1068/* [unique][local][object][uuid] */
1069
1070
1071EXTERN_C const IID IID_ID3D12VideoProcessor;
1072
1073#if defined(__cplusplus) && !defined(CINTERFACE)
1074
1075 MIDL_INTERFACE("304FDB32-BEDE-410A-8545-943AC6A46138")
1076 ID3D12VideoProcessor : public ID3D12Pageable
1077 {
1078 public:
1079 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
1080
1081 virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs( void) = 0;
1082
1083 virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
1084 UINT NumInputStreamDescs,
1085 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs) = 0;
1086
1087 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc( void) = 0;
1088
1089 };
1090
1091
1092#else /* C style interface */
1093
1094 typedef struct ID3D12VideoProcessorVtbl
1095 {
1096 BEGIN_INTERFACE
1097
1098 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1099 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1100 ID3D12VideoProcessor * This,
1101 REFIID riid,
1102 _COM_Outptr_ void **ppvObject);
1103
1104 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1105 ULONG ( STDMETHODCALLTYPE *AddRef )(
1106 ID3D12VideoProcessor * This);
1107
1108 DECLSPEC_XFGVIRT(IUnknown, Release)
1109 ULONG ( STDMETHODCALLTYPE *Release )(
1110 ID3D12VideoProcessor * This);
1111
1112 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1113 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1114 ID3D12VideoProcessor * This,
1115 _In_ REFGUID guid,
1116 _Inout_ UINT *pDataSize,
1117 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1118
1119 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1120 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1121 ID3D12VideoProcessor * This,
1122 _In_ REFGUID guid,
1123 _In_ UINT DataSize,
1124 _In_reads_bytes_opt_( DataSize ) const void *pData);
1125
1126 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1127 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1128 ID3D12VideoProcessor * This,
1129 _In_ REFGUID guid,
1130 _In_opt_ const IUnknown *pData);
1131
1132 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1133 HRESULT ( STDMETHODCALLTYPE *SetName )(
1134 ID3D12VideoProcessor * This,
1135 _In_z_ LPCWSTR Name);
1136
1137 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1138 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1139 ID3D12VideoProcessor * This,
1140 REFIID riid,
1141 _COM_Outptr_opt_ void **ppvDevice);
1142
1143 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
1144 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
1145 ID3D12VideoProcessor * This);
1146
1147 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
1148 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
1149 ID3D12VideoProcessor * This);
1150
1151 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
1152 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
1153 ID3D12VideoProcessor * This,
1154 UINT NumInputStreamDescs,
1155 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
1156
1157 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
1158 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1159 ID3D12VideoProcessor * This,
1160 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
1161
1162 END_INTERFACE
1163 } ID3D12VideoProcessorVtbl;
1164
1165 interface ID3D12VideoProcessor
1166 {
1167 CONST_VTBL struct ID3D12VideoProcessorVtbl *lpVtbl;
1168 };
1169
1170
1171
1172#ifdef COBJMACROS
1173
1174
1175#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) \
1176 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1177
1178#define ID3D12VideoProcessor_AddRef(This) \
1179 ( (This)->lpVtbl -> AddRef(This) )
1180
1181#define ID3D12VideoProcessor_Release(This) \
1182 ( (This)->lpVtbl -> Release(This) )
1183
1184
1185#define ID3D12VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) \
1186 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1187
1188#define ID3D12VideoProcessor_SetPrivateData(This,guid,DataSize,pData) \
1189 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1190
1191#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,pData) \
1192 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1193
1194#define ID3D12VideoProcessor_SetName(This,Name) \
1195 ( (This)->lpVtbl -> SetName(This,Name) )
1196
1197
1198#define ID3D12VideoProcessor_GetDevice(This,riid,ppvDevice) \
1199 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1200
1201
1202
1203#define ID3D12VideoProcessor_GetNodeMask(This) \
1204 ( (This)->lpVtbl -> GetNodeMask(This) )
1205
1206#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) \
1207 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
1208
1209#define ID3D12VideoProcessor_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
1210 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
1211
1212#define ID3D12VideoProcessor_GetOutputStreamDesc(This,RetVal) \
1213 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
1214
1215#endif /* COBJMACROS */
1216
1217
1218#endif /* C style interface */
1219
1220
1221
1222
1223#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
1224
1225
1226/* interface __MIDL_itf_d3d12video_0000_0004 */
1227/* [local] */
1228
1229typedef
1230enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
1231 {
1232 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0,
1233 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
1234 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
1235 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
1236 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
1237 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
1238 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
1239 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
1240 } D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
1241
1242DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS );
1243typedef
1244enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
1245 {
1246 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0,
1247 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
1248 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
1249 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
1250 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
1251 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
1252 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
1253 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
1254 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
1255 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
1256 } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
1257
1258DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS );
1259typedef
1260enum D3D12_VIDEO_PROCESS_ORIENTATION
1261 {
1262 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
1263 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
1264 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
1265 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
1266 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
1267 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
1268 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
1269 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
1270 } D3D12_VIDEO_PROCESS_ORIENTATION;
1271
1272typedef
1273enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
1274 {
1275 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0,
1276 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
1277 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
1278 } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
1279
1280DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS );
1281typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
1282 {
1283 INT Minimum;
1284 INT Maximum;
1285 INT Default;
1286 FLOAT Multiplier;
1287 } D3D12_VIDEO_PROCESS_FILTER_RANGE;
1288
1289typedef
1290enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
1291 {
1292 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0,
1293 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
1294 } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
1295
1296DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS );
1297typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
1298 {
1299 UINT NodeIndex;
1300 D3D12_VIDEO_SAMPLE InputSample;
1301 D3D12_VIDEO_FIELD_TYPE InputFieldType;
1302 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
1303 DXGI_RATIONAL InputFrameRate;
1304 D3D12_VIDEO_FORMAT OutputFormat;
1305 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
1306 DXGI_RATIONAL OutputFrameRate;
1307 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
1308 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1309 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1310 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
1311 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
1312 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
1313 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[ 32 ];
1314 } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
1315
1316typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
1317 {
1318 UINT NodeIndex;
1319 UINT MaxInputStreams;
1320 } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
1321
1322typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
1323 {
1324 UINT NodeIndex;
1325 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
1326 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;
1327 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1328 DXGI_RATIONAL InputFrameRate;
1329 DXGI_RATIONAL OutputFrameRate;
1330 BOOL EnableAutoProcessing;
1331 UINT PastFrames;
1332 UINT FutureFrames;
1333 } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
1334
1335typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
1336 {
1337 UINT NumPastFrames;
1338 ID3D12Resource **ppPastFrames;
1339 UINT *pPastSubresources;
1340 UINT NumFutureFrames;
1341 ID3D12Resource **ppFutureFrames;
1342 UINT *pFutureSubresources;
1343 } D3D12_VIDEO_PROCESS_REFERENCE_SET;
1344
1345typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
1346 {
1347 D3D12_RECT SourceRectangle;
1348 D3D12_RECT DestinationRectangle;
1349 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
1350 } D3D12_VIDEO_PROCESS_TRANSFORM;
1351
1352typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
1353 {
1354 UINT OutputIndex;
1355 UINT InputFrameOrField;
1356 } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1357
1358typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
1359 {
1360 ID3D12Resource *pTexture2D;
1361 UINT Subresource;
1362 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
1363 } D3D12_VIDEO_PROCESS_INPUT_STREAM;
1364
1365typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
1366 {
1367 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
1368 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
1369 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
1370 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
1371 INT FilterLevels[ 32 ];
1372 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
1373 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
1374
1375typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
1376 {
1377 ID3D12Resource *pTexture2D;
1378 UINT Subresource;
1379 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1380
1381typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
1382 {
1383 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[ 2 ];
1384 D3D12_RECT TargetRectangle;
1385 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
1386
1387
1388
1389extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
1390extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_s_ifspec;
1391
1392#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1393#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1394
1395/* interface ID3D12VideoDecodeCommandList */
1396/* [unique][local][object][uuid] */
1397
1398
1399EXTERN_C const IID IID_ID3D12VideoDecodeCommandList;
1400
1401#if defined(__cplusplus) && !defined(CINTERFACE)
1402
1403 MIDL_INTERFACE("3B60536E-AD29-4E64-A269-F853837E5E53")
1404 ID3D12VideoDecodeCommandList : public ID3D12CommandList
1405 {
1406 public:
1407 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1408
1409 virtual HRESULT STDMETHODCALLTYPE Reset(
1410 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1411
1412 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1413
1414 virtual void STDMETHODCALLTYPE ResourceBarrier(
1415 _In_ UINT NumBarriers,
1416 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1417
1418 virtual void STDMETHODCALLTYPE DiscardResource(
1419 _In_ ID3D12Resource *pResource,
1420 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1421
1422 virtual void STDMETHODCALLTYPE BeginQuery(
1423 _In_ ID3D12QueryHeap *pQueryHeap,
1424 _In_ D3D12_QUERY_TYPE Type,
1425 _In_ UINT Index) = 0;
1426
1427 virtual void STDMETHODCALLTYPE EndQuery(
1428 _In_ ID3D12QueryHeap *pQueryHeap,
1429 _In_ D3D12_QUERY_TYPE Type,
1430 _In_ UINT Index) = 0;
1431
1432 virtual void STDMETHODCALLTYPE ResolveQueryData(
1433 _In_ ID3D12QueryHeap *pQueryHeap,
1434 _In_ D3D12_QUERY_TYPE Type,
1435 _In_ UINT StartIndex,
1436 _In_ UINT NumQueries,
1437 _In_ ID3D12Resource *pDestinationBuffer,
1438 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1439
1440 virtual void STDMETHODCALLTYPE SetPredication(
1441 _In_opt_ ID3D12Resource *pBuffer,
1442 _In_ UINT64 AlignedBufferOffset,
1443 _In_ D3D12_PREDICATION_OP Operation) = 0;
1444
1445 virtual void STDMETHODCALLTYPE SetMarker(
1446 UINT Metadata,
1447 _In_reads_bytes_opt_(Size) const void *pData,
1448 UINT Size) = 0;
1449
1450 virtual void STDMETHODCALLTYPE BeginEvent(
1451 UINT Metadata,
1452 _In_reads_bytes_opt_(Size) const void *pData,
1453 UINT Size) = 0;
1454
1455 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1456
1457 virtual void STDMETHODCALLTYPE DecodeFrame(
1458 _In_ ID3D12VideoDecoder *pDecoder,
1459 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1460 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1461
1462 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1463 UINT Count,
1464 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1465 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1466
1467 };
1468
1469
1470#else /* C style interface */
1471
1472 typedef struct ID3D12VideoDecodeCommandListVtbl
1473 {
1474 BEGIN_INTERFACE
1475
1476 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1477 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1478 ID3D12VideoDecodeCommandList * This,
1479 REFIID riid,
1480 _COM_Outptr_ void **ppvObject);
1481
1482 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1483 ULONG ( STDMETHODCALLTYPE *AddRef )(
1484 ID3D12VideoDecodeCommandList * This);
1485
1486 DECLSPEC_XFGVIRT(IUnknown, Release)
1487 ULONG ( STDMETHODCALLTYPE *Release )(
1488 ID3D12VideoDecodeCommandList * This);
1489
1490 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1491 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1492 ID3D12VideoDecodeCommandList * This,
1493 _In_ REFGUID guid,
1494 _Inout_ UINT *pDataSize,
1495 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1496
1497 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1498 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1499 ID3D12VideoDecodeCommandList * This,
1500 _In_ REFGUID guid,
1501 _In_ UINT DataSize,
1502 _In_reads_bytes_opt_( DataSize ) const void *pData);
1503
1504 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1505 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1506 ID3D12VideoDecodeCommandList * This,
1507 _In_ REFGUID guid,
1508 _In_opt_ const IUnknown *pData);
1509
1510 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1511 HRESULT ( STDMETHODCALLTYPE *SetName )(
1512 ID3D12VideoDecodeCommandList * This,
1513 _In_z_ LPCWSTR Name);
1514
1515 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1516 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1517 ID3D12VideoDecodeCommandList * This,
1518 REFIID riid,
1519 _COM_Outptr_opt_ void **ppvDevice);
1520
1521 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1522 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1523 ID3D12VideoDecodeCommandList * This);
1524
1525 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
1526 HRESULT ( STDMETHODCALLTYPE *Close )(
1527 ID3D12VideoDecodeCommandList * This);
1528
1529 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
1530 HRESULT ( STDMETHODCALLTYPE *Reset )(
1531 ID3D12VideoDecodeCommandList * This,
1532 _In_ ID3D12CommandAllocator *pAllocator);
1533
1534 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
1535 void ( STDMETHODCALLTYPE *ClearState )(
1536 ID3D12VideoDecodeCommandList * This);
1537
1538 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
1539 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1540 ID3D12VideoDecodeCommandList * This,
1541 _In_ UINT NumBarriers,
1542 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1543
1544 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
1545 void ( STDMETHODCALLTYPE *DiscardResource )(
1546 ID3D12VideoDecodeCommandList * This,
1547 _In_ ID3D12Resource *pResource,
1548 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1549
1550 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
1551 void ( STDMETHODCALLTYPE *BeginQuery )(
1552 ID3D12VideoDecodeCommandList * This,
1553 _In_ ID3D12QueryHeap *pQueryHeap,
1554 _In_ D3D12_QUERY_TYPE Type,
1555 _In_ UINT Index);
1556
1557 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
1558 void ( STDMETHODCALLTYPE *EndQuery )(
1559 ID3D12VideoDecodeCommandList * This,
1560 _In_ ID3D12QueryHeap *pQueryHeap,
1561 _In_ D3D12_QUERY_TYPE Type,
1562 _In_ UINT Index);
1563
1564 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
1565 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1566 ID3D12VideoDecodeCommandList * This,
1567 _In_ ID3D12QueryHeap *pQueryHeap,
1568 _In_ D3D12_QUERY_TYPE Type,
1569 _In_ UINT StartIndex,
1570 _In_ UINT NumQueries,
1571 _In_ ID3D12Resource *pDestinationBuffer,
1572 _In_ UINT64 AlignedDestinationBufferOffset);
1573
1574 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
1575 void ( STDMETHODCALLTYPE *SetPredication )(
1576 ID3D12VideoDecodeCommandList * This,
1577 _In_opt_ ID3D12Resource *pBuffer,
1578 _In_ UINT64 AlignedBufferOffset,
1579 _In_ D3D12_PREDICATION_OP Operation);
1580
1581 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
1582 void ( STDMETHODCALLTYPE *SetMarker )(
1583 ID3D12VideoDecodeCommandList * This,
1584 UINT Metadata,
1585 _In_reads_bytes_opt_(Size) const void *pData,
1586 UINT Size);
1587
1588 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
1589 void ( STDMETHODCALLTYPE *BeginEvent )(
1590 ID3D12VideoDecodeCommandList * This,
1591 UINT Metadata,
1592 _In_reads_bytes_opt_(Size) const void *pData,
1593 UINT Size);
1594
1595 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
1596 void ( STDMETHODCALLTYPE *EndEvent )(
1597 ID3D12VideoDecodeCommandList * This);
1598
1599 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
1600 void ( STDMETHODCALLTYPE *DecodeFrame )(
1601 ID3D12VideoDecodeCommandList * This,
1602 _In_ ID3D12VideoDecoder *pDecoder,
1603 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1604 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
1605
1606 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
1607 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1608 ID3D12VideoDecodeCommandList * This,
1609 UINT Count,
1610 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1611 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1612
1613 END_INTERFACE
1614 } ID3D12VideoDecodeCommandListVtbl;
1615
1616 interface ID3D12VideoDecodeCommandList
1617 {
1618 CONST_VTBL struct ID3D12VideoDecodeCommandListVtbl *lpVtbl;
1619 };
1620
1621
1622
1623#ifdef COBJMACROS
1624
1625
1626#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) \
1627 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1628
1629#define ID3D12VideoDecodeCommandList_AddRef(This) \
1630 ( (This)->lpVtbl -> AddRef(This) )
1631
1632#define ID3D12VideoDecodeCommandList_Release(This) \
1633 ( (This)->lpVtbl -> Release(This) )
1634
1635
1636#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1637 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1638
1639#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
1640 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1641
1642#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,pData) \
1643 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1644
1645#define ID3D12VideoDecodeCommandList_SetName(This,Name) \
1646 ( (This)->lpVtbl -> SetName(This,Name) )
1647
1648
1649#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,ppvDevice) \
1650 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1651
1652
1653#define ID3D12VideoDecodeCommandList_GetType(This) \
1654 ( (This)->lpVtbl -> GetType(This) )
1655
1656
1657#define ID3D12VideoDecodeCommandList_Close(This) \
1658 ( (This)->lpVtbl -> Close(This) )
1659
1660#define ID3D12VideoDecodeCommandList_Reset(This,pAllocator) \
1661 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1662
1663#define ID3D12VideoDecodeCommandList_ClearState(This) \
1664 ( (This)->lpVtbl -> ClearState(This) )
1665
1666#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1667 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1668
1669#define ID3D12VideoDecodeCommandList_DiscardResource(This,pResource,pRegion) \
1670 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1671
1672#define ID3D12VideoDecodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1673 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1674
1675#define ID3D12VideoDecodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1676 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1677
1678#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1679 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
1680
1681#define ID3D12VideoDecodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
1682 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
1683
1684#define ID3D12VideoDecodeCommandList_SetMarker(This,Metadata,pData,Size) \
1685 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
1686
1687#define ID3D12VideoDecodeCommandList_BeginEvent(This,Metadata,pData,Size) \
1688 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
1689
1690#define ID3D12VideoDecodeCommandList_EndEvent(This) \
1691 ( (This)->lpVtbl -> EndEvent(This) )
1692
1693#define ID3D12VideoDecodeCommandList_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
1694 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
1695
1696#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
1697 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
1698
1699#endif /* COBJMACROS */
1700
1701
1702#endif /* C style interface */
1703
1704
1705
1706
1707#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1708
1709
1710#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1711#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1712
1713/* interface ID3D12VideoProcessCommandList */
1714/* [unique][local][object][uuid] */
1715
1716
1717EXTERN_C const IID IID_ID3D12VideoProcessCommandList;
1718
1719#if defined(__cplusplus) && !defined(CINTERFACE)
1720
1721 MIDL_INTERFACE("AEB2543A-167F-4682-ACC8-D159ED4A6209")
1722 ID3D12VideoProcessCommandList : public ID3D12CommandList
1723 {
1724 public:
1725 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1726
1727 virtual HRESULT STDMETHODCALLTYPE Reset(
1728 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1729
1730 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1731
1732 virtual void STDMETHODCALLTYPE ResourceBarrier(
1733 _In_ UINT NumBarriers,
1734 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1735
1736 virtual void STDMETHODCALLTYPE DiscardResource(
1737 _In_ ID3D12Resource *pResource,
1738 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1739
1740 virtual void STDMETHODCALLTYPE BeginQuery(
1741 _In_ ID3D12QueryHeap *pQueryHeap,
1742 _In_ D3D12_QUERY_TYPE Type,
1743 _In_ UINT Index) = 0;
1744
1745 virtual void STDMETHODCALLTYPE EndQuery(
1746 _In_ ID3D12QueryHeap *pQueryHeap,
1747 _In_ D3D12_QUERY_TYPE Type,
1748 _In_ UINT Index) = 0;
1749
1750 virtual void STDMETHODCALLTYPE ResolveQueryData(
1751 _In_ ID3D12QueryHeap *pQueryHeap,
1752 _In_ D3D12_QUERY_TYPE Type,
1753 _In_ UINT StartIndex,
1754 _In_ UINT NumQueries,
1755 _In_ ID3D12Resource *pDestinationBuffer,
1756 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1757
1758 virtual void STDMETHODCALLTYPE SetPredication(
1759 _In_opt_ ID3D12Resource *pBuffer,
1760 _In_ UINT64 AlignedBufferOffset,
1761 _In_ D3D12_PREDICATION_OP Operation) = 0;
1762
1763 virtual void STDMETHODCALLTYPE SetMarker(
1764 UINT Metadata,
1765 _In_reads_bytes_opt_(Size) const void *pData,
1766 UINT Size) = 0;
1767
1768 virtual void STDMETHODCALLTYPE BeginEvent(
1769 UINT Metadata,
1770 _In_reads_bytes_opt_(Size) const void *pData,
1771 UINT Size) = 0;
1772
1773 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1774
1775 virtual void STDMETHODCALLTYPE ProcessFrames(
1776 _In_ ID3D12VideoProcessor *pVideoProcessor,
1777 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1778 UINT NumInputStreams,
1779 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1780
1781 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1782 UINT Count,
1783 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1784 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1785
1786 };
1787
1788
1789#else /* C style interface */
1790
1791 typedef struct ID3D12VideoProcessCommandListVtbl
1792 {
1793 BEGIN_INTERFACE
1794
1795 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1796 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1797 ID3D12VideoProcessCommandList * This,
1798 REFIID riid,
1799 _COM_Outptr_ void **ppvObject);
1800
1801 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1802 ULONG ( STDMETHODCALLTYPE *AddRef )(
1803 ID3D12VideoProcessCommandList * This);
1804
1805 DECLSPEC_XFGVIRT(IUnknown, Release)
1806 ULONG ( STDMETHODCALLTYPE *Release )(
1807 ID3D12VideoProcessCommandList * This);
1808
1809 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1810 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1811 ID3D12VideoProcessCommandList * This,
1812 _In_ REFGUID guid,
1813 _Inout_ UINT *pDataSize,
1814 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1815
1816 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1817 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1818 ID3D12VideoProcessCommandList * This,
1819 _In_ REFGUID guid,
1820 _In_ UINT DataSize,
1821 _In_reads_bytes_opt_( DataSize ) const void *pData);
1822
1823 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1824 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1825 ID3D12VideoProcessCommandList * This,
1826 _In_ REFGUID guid,
1827 _In_opt_ const IUnknown *pData);
1828
1829 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1830 HRESULT ( STDMETHODCALLTYPE *SetName )(
1831 ID3D12VideoProcessCommandList * This,
1832 _In_z_ LPCWSTR Name);
1833
1834 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1835 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1836 ID3D12VideoProcessCommandList * This,
1837 REFIID riid,
1838 _COM_Outptr_opt_ void **ppvDevice);
1839
1840 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1841 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1842 ID3D12VideoProcessCommandList * This);
1843
1844 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
1845 HRESULT ( STDMETHODCALLTYPE *Close )(
1846 ID3D12VideoProcessCommandList * This);
1847
1848 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
1849 HRESULT ( STDMETHODCALLTYPE *Reset )(
1850 ID3D12VideoProcessCommandList * This,
1851 _In_ ID3D12CommandAllocator *pAllocator);
1852
1853 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
1854 void ( STDMETHODCALLTYPE *ClearState )(
1855 ID3D12VideoProcessCommandList * This);
1856
1857 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
1858 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1859 ID3D12VideoProcessCommandList * This,
1860 _In_ UINT NumBarriers,
1861 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1862
1863 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
1864 void ( STDMETHODCALLTYPE *DiscardResource )(
1865 ID3D12VideoProcessCommandList * This,
1866 _In_ ID3D12Resource *pResource,
1867 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1868
1869 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
1870 void ( STDMETHODCALLTYPE *BeginQuery )(
1871 ID3D12VideoProcessCommandList * This,
1872 _In_ ID3D12QueryHeap *pQueryHeap,
1873 _In_ D3D12_QUERY_TYPE Type,
1874 _In_ UINT Index);
1875
1876 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
1877 void ( STDMETHODCALLTYPE *EndQuery )(
1878 ID3D12VideoProcessCommandList * This,
1879 _In_ ID3D12QueryHeap *pQueryHeap,
1880 _In_ D3D12_QUERY_TYPE Type,
1881 _In_ UINT Index);
1882
1883 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
1884 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1885 ID3D12VideoProcessCommandList * This,
1886 _In_ ID3D12QueryHeap *pQueryHeap,
1887 _In_ D3D12_QUERY_TYPE Type,
1888 _In_ UINT StartIndex,
1889 _In_ UINT NumQueries,
1890 _In_ ID3D12Resource *pDestinationBuffer,
1891 _In_ UINT64 AlignedDestinationBufferOffset);
1892
1893 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
1894 void ( STDMETHODCALLTYPE *SetPredication )(
1895 ID3D12VideoProcessCommandList * This,
1896 _In_opt_ ID3D12Resource *pBuffer,
1897 _In_ UINT64 AlignedBufferOffset,
1898 _In_ D3D12_PREDICATION_OP Operation);
1899
1900 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
1901 void ( STDMETHODCALLTYPE *SetMarker )(
1902 ID3D12VideoProcessCommandList * This,
1903 UINT Metadata,
1904 _In_reads_bytes_opt_(Size) const void *pData,
1905 UINT Size);
1906
1907 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
1908 void ( STDMETHODCALLTYPE *BeginEvent )(
1909 ID3D12VideoProcessCommandList * This,
1910 UINT Metadata,
1911 _In_reads_bytes_opt_(Size) const void *pData,
1912 UINT Size);
1913
1914 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
1915 void ( STDMETHODCALLTYPE *EndEvent )(
1916 ID3D12VideoProcessCommandList * This);
1917
1918 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
1919 void ( STDMETHODCALLTYPE *ProcessFrames )(
1920 ID3D12VideoProcessCommandList * This,
1921 _In_ ID3D12VideoProcessor *pVideoProcessor,
1922 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1923 UINT NumInputStreams,
1924 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
1925
1926 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
1927 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1928 ID3D12VideoProcessCommandList * This,
1929 UINT Count,
1930 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1931 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1932
1933 END_INTERFACE
1934 } ID3D12VideoProcessCommandListVtbl;
1935
1936 interface ID3D12VideoProcessCommandList
1937 {
1938 CONST_VTBL struct ID3D12VideoProcessCommandListVtbl *lpVtbl;
1939 };
1940
1941
1942
1943#ifdef COBJMACROS
1944
1945
1946#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) \
1947 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1948
1949#define ID3D12VideoProcessCommandList_AddRef(This) \
1950 ( (This)->lpVtbl -> AddRef(This) )
1951
1952#define ID3D12VideoProcessCommandList_Release(This) \
1953 ( (This)->lpVtbl -> Release(This) )
1954
1955
1956#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1957 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1958
1959#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,DataSize,pData) \
1960 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1961
1962#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,pData) \
1963 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1964
1965#define ID3D12VideoProcessCommandList_SetName(This,Name) \
1966 ( (This)->lpVtbl -> SetName(This,Name) )
1967
1968
1969#define ID3D12VideoProcessCommandList_GetDevice(This,riid,ppvDevice) \
1970 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1971
1972
1973#define ID3D12VideoProcessCommandList_GetType(This) \
1974 ( (This)->lpVtbl -> GetType(This) )
1975
1976
1977#define ID3D12VideoProcessCommandList_Close(This) \
1978 ( (This)->lpVtbl -> Close(This) )
1979
1980#define ID3D12VideoProcessCommandList_Reset(This,pAllocator) \
1981 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1982
1983#define ID3D12VideoProcessCommandList_ClearState(This) \
1984 ( (This)->lpVtbl -> ClearState(This) )
1985
1986#define ID3D12VideoProcessCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1987 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1988
1989#define ID3D12VideoProcessCommandList_DiscardResource(This,pResource,pRegion) \
1990 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1991
1992#define ID3D12VideoProcessCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1993 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1994
1995#define ID3D12VideoProcessCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1996 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1997
1998#define ID3D12VideoProcessCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1999 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2000
2001#define ID3D12VideoProcessCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2002 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2003
2004#define ID3D12VideoProcessCommandList_SetMarker(This,Metadata,pData,Size) \
2005 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2006
2007#define ID3D12VideoProcessCommandList_BeginEvent(This,Metadata,pData,Size) \
2008 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2009
2010#define ID3D12VideoProcessCommandList_EndEvent(This) \
2011 ( (This)->lpVtbl -> EndEvent(This) )
2012
2013#define ID3D12VideoProcessCommandList_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2014 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2015
2016#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
2017 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2018
2019#endif /* COBJMACROS */
2020
2021
2022#endif /* C style interface */
2023
2024
2025
2026
2027#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
2028
2029
2030/* interface __MIDL_itf_d3d12video_0000_0006 */
2031/* [local] */
2032
2033typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
2034 {
2035 UINT64 Offset;
2036 ID3D12Resource *pBuffer;
2037 } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
2038
2039typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
2040 {
2041 BOOL Enable;
2042 ID3D12Resource *pReferenceTexture2D;
2043 UINT ReferenceSubresource;
2044 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
2045 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
2046 UINT OutputWidth;
2047 UINT OutputHeight;
2048 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
2049
2050typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
2051 {
2052 ID3D12Resource *pOutputTexture2D;
2053 UINT OutputSubresource;
2054 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
2055 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[ 4 ];
2056 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
2057
2058
2059
2060extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
2061extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_s_ifspec;
2062
2063#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2064#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2065
2066/* interface ID3D12VideoDecodeCommandList1 */
2067/* [unique][local][object][uuid] */
2068
2069
2070EXTERN_C const IID IID_ID3D12VideoDecodeCommandList1;
2071
2072#if defined(__cplusplus) && !defined(CINTERFACE)
2073
2074 MIDL_INTERFACE("D52F011B-B56E-453C-A05A-A7F311C8F472")
2075 ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
2076 {
2077 public:
2078 virtual void STDMETHODCALLTYPE DecodeFrame1(
2079 _In_ ID3D12VideoDecoder *pDecoder,
2080 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2081 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
2082
2083 };
2084
2085
2086#else /* C style interface */
2087
2088 typedef struct ID3D12VideoDecodeCommandList1Vtbl
2089 {
2090 BEGIN_INTERFACE
2091
2092 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2093 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2094 ID3D12VideoDecodeCommandList1 * This,
2095 REFIID riid,
2096 _COM_Outptr_ void **ppvObject);
2097
2098 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2099 ULONG ( STDMETHODCALLTYPE *AddRef )(
2100 ID3D12VideoDecodeCommandList1 * This);
2101
2102 DECLSPEC_XFGVIRT(IUnknown, Release)
2103 ULONG ( STDMETHODCALLTYPE *Release )(
2104 ID3D12VideoDecodeCommandList1 * This);
2105
2106 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2107 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2108 ID3D12VideoDecodeCommandList1 * This,
2109 _In_ REFGUID guid,
2110 _Inout_ UINT *pDataSize,
2111 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2112
2113 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2114 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2115 ID3D12VideoDecodeCommandList1 * This,
2116 _In_ REFGUID guid,
2117 _In_ UINT DataSize,
2118 _In_reads_bytes_opt_( DataSize ) const void *pData);
2119
2120 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2121 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2122 ID3D12VideoDecodeCommandList1 * This,
2123 _In_ REFGUID guid,
2124 _In_opt_ const IUnknown *pData);
2125
2126 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2127 HRESULT ( STDMETHODCALLTYPE *SetName )(
2128 ID3D12VideoDecodeCommandList1 * This,
2129 _In_z_ LPCWSTR Name);
2130
2131 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2132 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2133 ID3D12VideoDecodeCommandList1 * This,
2134 REFIID riid,
2135 _COM_Outptr_opt_ void **ppvDevice);
2136
2137 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2138 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2139 ID3D12VideoDecodeCommandList1 * This);
2140
2141 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
2142 HRESULT ( STDMETHODCALLTYPE *Close )(
2143 ID3D12VideoDecodeCommandList1 * This);
2144
2145 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
2146 HRESULT ( STDMETHODCALLTYPE *Reset )(
2147 ID3D12VideoDecodeCommandList1 * This,
2148 _In_ ID3D12CommandAllocator *pAllocator);
2149
2150 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
2151 void ( STDMETHODCALLTYPE *ClearState )(
2152 ID3D12VideoDecodeCommandList1 * This);
2153
2154 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
2155 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2156 ID3D12VideoDecodeCommandList1 * This,
2157 _In_ UINT NumBarriers,
2158 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2159
2160 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
2161 void ( STDMETHODCALLTYPE *DiscardResource )(
2162 ID3D12VideoDecodeCommandList1 * This,
2163 _In_ ID3D12Resource *pResource,
2164 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2165
2166 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
2167 void ( STDMETHODCALLTYPE *BeginQuery )(
2168 ID3D12VideoDecodeCommandList1 * This,
2169 _In_ ID3D12QueryHeap *pQueryHeap,
2170 _In_ D3D12_QUERY_TYPE Type,
2171 _In_ UINT Index);
2172
2173 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
2174 void ( STDMETHODCALLTYPE *EndQuery )(
2175 ID3D12VideoDecodeCommandList1 * This,
2176 _In_ ID3D12QueryHeap *pQueryHeap,
2177 _In_ D3D12_QUERY_TYPE Type,
2178 _In_ UINT Index);
2179
2180 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
2181 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2182 ID3D12VideoDecodeCommandList1 * This,
2183 _In_ ID3D12QueryHeap *pQueryHeap,
2184 _In_ D3D12_QUERY_TYPE Type,
2185 _In_ UINT StartIndex,
2186 _In_ UINT NumQueries,
2187 _In_ ID3D12Resource *pDestinationBuffer,
2188 _In_ UINT64 AlignedDestinationBufferOffset);
2189
2190 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
2191 void ( STDMETHODCALLTYPE *SetPredication )(
2192 ID3D12VideoDecodeCommandList1 * This,
2193 _In_opt_ ID3D12Resource *pBuffer,
2194 _In_ UINT64 AlignedBufferOffset,
2195 _In_ D3D12_PREDICATION_OP Operation);
2196
2197 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
2198 void ( STDMETHODCALLTYPE *SetMarker )(
2199 ID3D12VideoDecodeCommandList1 * This,
2200 UINT Metadata,
2201 _In_reads_bytes_opt_(Size) const void *pData,
2202 UINT Size);
2203
2204 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
2205 void ( STDMETHODCALLTYPE *BeginEvent )(
2206 ID3D12VideoDecodeCommandList1 * This,
2207 UINT Metadata,
2208 _In_reads_bytes_opt_(Size) const void *pData,
2209 UINT Size);
2210
2211 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
2212 void ( STDMETHODCALLTYPE *EndEvent )(
2213 ID3D12VideoDecodeCommandList1 * This);
2214
2215 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
2216 void ( STDMETHODCALLTYPE *DecodeFrame )(
2217 ID3D12VideoDecodeCommandList1 * This,
2218 _In_ ID3D12VideoDecoder *pDecoder,
2219 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2220 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2221
2222 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
2223 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2224 ID3D12VideoDecodeCommandList1 * This,
2225 UINT Count,
2226 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2227 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2228
2229 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
2230 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
2231 ID3D12VideoDecodeCommandList1 * This,
2232 _In_ ID3D12VideoDecoder *pDecoder,
2233 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2234 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2235
2236 END_INTERFACE
2237 } ID3D12VideoDecodeCommandList1Vtbl;
2238
2239 interface ID3D12VideoDecodeCommandList1
2240 {
2241 CONST_VTBL struct ID3D12VideoDecodeCommandList1Vtbl *lpVtbl;
2242 };
2243
2244
2245
2246#ifdef COBJMACROS
2247
2248
2249#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) \
2250 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2251
2252#define ID3D12VideoDecodeCommandList1_AddRef(This) \
2253 ( (This)->lpVtbl -> AddRef(This) )
2254
2255#define ID3D12VideoDecodeCommandList1_Release(This) \
2256 ( (This)->lpVtbl -> Release(This) )
2257
2258
2259#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2260 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2261
2262#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2263 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2264
2265#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
2266 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2267
2268#define ID3D12VideoDecodeCommandList1_SetName(This,Name) \
2269 ( (This)->lpVtbl -> SetName(This,Name) )
2270
2271
2272#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,ppvDevice) \
2273 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2274
2275
2276#define ID3D12VideoDecodeCommandList1_GetType(This) \
2277 ( (This)->lpVtbl -> GetType(This) )
2278
2279
2280#define ID3D12VideoDecodeCommandList1_Close(This) \
2281 ( (This)->lpVtbl -> Close(This) )
2282
2283#define ID3D12VideoDecodeCommandList1_Reset(This,pAllocator) \
2284 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2285
2286#define ID3D12VideoDecodeCommandList1_ClearState(This) \
2287 ( (This)->lpVtbl -> ClearState(This) )
2288
2289#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2290 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2291
2292#define ID3D12VideoDecodeCommandList1_DiscardResource(This,pResource,pRegion) \
2293 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2294
2295#define ID3D12VideoDecodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2296 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2297
2298#define ID3D12VideoDecodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2299 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2300
2301#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2302 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2303
2304#define ID3D12VideoDecodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2305 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2306
2307#define ID3D12VideoDecodeCommandList1_SetMarker(This,Metadata,pData,Size) \
2308 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2309
2310#define ID3D12VideoDecodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
2311 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2312
2313#define ID3D12VideoDecodeCommandList1_EndEvent(This) \
2314 ( (This)->lpVtbl -> EndEvent(This) )
2315
2316#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
2317 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
2318
2319#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2320 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2321
2322
2323#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
2324 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
2325
2326#endif /* COBJMACROS */
2327
2328
2329#endif /* C style interface */
2330
2331
2332
2333
2334#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
2335
2336
2337/* interface __MIDL_itf_d3d12video_0000_0007 */
2338/* [local] */
2339
2340typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
2341 {
2342 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
2343 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
2344 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
2345 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
2346 INT FilterLevels[ 32 ];
2347 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
2348 D3D12_VIDEO_FIELD_TYPE FieldType;
2349 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
2350
2351
2352
2353extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
2354extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_s_ifspec;
2355
2356#ifndef __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2357#define __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2358
2359/* interface ID3D12VideoProcessCommandList1 */
2360/* [unique][local][object][uuid] */
2361
2362
2363EXTERN_C const IID IID_ID3D12VideoProcessCommandList1;
2364
2365#if defined(__cplusplus) && !defined(CINTERFACE)
2366
2367 MIDL_INTERFACE("542C5C4D-7596-434F-8C93-4EFA6766F267")
2368 ID3D12VideoProcessCommandList1 : public ID3D12VideoProcessCommandList
2369 {
2370 public:
2371 virtual void STDMETHODCALLTYPE ProcessFrames1(
2372 _In_ ID3D12VideoProcessor *pVideoProcessor,
2373 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2374 UINT NumInputStreams,
2375 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments) = 0;
2376
2377 };
2378
2379
2380#else /* C style interface */
2381
2382 typedef struct ID3D12VideoProcessCommandList1Vtbl
2383 {
2384 BEGIN_INTERFACE
2385
2386 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2387 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2388 ID3D12VideoProcessCommandList1 * This,
2389 REFIID riid,
2390 _COM_Outptr_ void **ppvObject);
2391
2392 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2393 ULONG ( STDMETHODCALLTYPE *AddRef )(
2394 ID3D12VideoProcessCommandList1 * This);
2395
2396 DECLSPEC_XFGVIRT(IUnknown, Release)
2397 ULONG ( STDMETHODCALLTYPE *Release )(
2398 ID3D12VideoProcessCommandList1 * This);
2399
2400 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2401 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2402 ID3D12VideoProcessCommandList1 * This,
2403 _In_ REFGUID guid,
2404 _Inout_ UINT *pDataSize,
2405 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2406
2407 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2408 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2409 ID3D12VideoProcessCommandList1 * This,
2410 _In_ REFGUID guid,
2411 _In_ UINT DataSize,
2412 _In_reads_bytes_opt_( DataSize ) const void *pData);
2413
2414 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2415 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2416 ID3D12VideoProcessCommandList1 * This,
2417 _In_ REFGUID guid,
2418 _In_opt_ const IUnknown *pData);
2419
2420 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2421 HRESULT ( STDMETHODCALLTYPE *SetName )(
2422 ID3D12VideoProcessCommandList1 * This,
2423 _In_z_ LPCWSTR Name);
2424
2425 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2426 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2427 ID3D12VideoProcessCommandList1 * This,
2428 REFIID riid,
2429 _COM_Outptr_opt_ void **ppvDevice);
2430
2431 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2432 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2433 ID3D12VideoProcessCommandList1 * This);
2434
2435 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
2436 HRESULT ( STDMETHODCALLTYPE *Close )(
2437 ID3D12VideoProcessCommandList1 * This);
2438
2439 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
2440 HRESULT ( STDMETHODCALLTYPE *Reset )(
2441 ID3D12VideoProcessCommandList1 * This,
2442 _In_ ID3D12CommandAllocator *pAllocator);
2443
2444 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
2445 void ( STDMETHODCALLTYPE *ClearState )(
2446 ID3D12VideoProcessCommandList1 * This);
2447
2448 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2449 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2450 ID3D12VideoProcessCommandList1 * This,
2451 _In_ UINT NumBarriers,
2452 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2453
2454 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2455 void ( STDMETHODCALLTYPE *DiscardResource )(
2456 ID3D12VideoProcessCommandList1 * This,
2457 _In_ ID3D12Resource *pResource,
2458 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2459
2460 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2461 void ( STDMETHODCALLTYPE *BeginQuery )(
2462 ID3D12VideoProcessCommandList1 * This,
2463 _In_ ID3D12QueryHeap *pQueryHeap,
2464 _In_ D3D12_QUERY_TYPE Type,
2465 _In_ UINT Index);
2466
2467 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2468 void ( STDMETHODCALLTYPE *EndQuery )(
2469 ID3D12VideoProcessCommandList1 * This,
2470 _In_ ID3D12QueryHeap *pQueryHeap,
2471 _In_ D3D12_QUERY_TYPE Type,
2472 _In_ UINT Index);
2473
2474 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2475 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2476 ID3D12VideoProcessCommandList1 * This,
2477 _In_ ID3D12QueryHeap *pQueryHeap,
2478 _In_ D3D12_QUERY_TYPE Type,
2479 _In_ UINT StartIndex,
2480 _In_ UINT NumQueries,
2481 _In_ ID3D12Resource *pDestinationBuffer,
2482 _In_ UINT64 AlignedDestinationBufferOffset);
2483
2484 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2485 void ( STDMETHODCALLTYPE *SetPredication )(
2486 ID3D12VideoProcessCommandList1 * This,
2487 _In_opt_ ID3D12Resource *pBuffer,
2488 _In_ UINT64 AlignedBufferOffset,
2489 _In_ D3D12_PREDICATION_OP Operation);
2490
2491 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2492 void ( STDMETHODCALLTYPE *SetMarker )(
2493 ID3D12VideoProcessCommandList1 * This,
2494 UINT Metadata,
2495 _In_reads_bytes_opt_(Size) const void *pData,
2496 UINT Size);
2497
2498 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2499 void ( STDMETHODCALLTYPE *BeginEvent )(
2500 ID3D12VideoProcessCommandList1 * This,
2501 UINT Metadata,
2502 _In_reads_bytes_opt_(Size) const void *pData,
2503 UINT Size);
2504
2505 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2506 void ( STDMETHODCALLTYPE *EndEvent )(
2507 ID3D12VideoProcessCommandList1 * This);
2508
2509 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2510 void ( STDMETHODCALLTYPE *ProcessFrames )(
2511 ID3D12VideoProcessCommandList1 * This,
2512 _In_ ID3D12VideoProcessor *pVideoProcessor,
2513 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2514 UINT NumInputStreams,
2515 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2516
2517 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2518 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2519 ID3D12VideoProcessCommandList1 * This,
2520 UINT Count,
2521 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2522 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2523
2524 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
2525 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
2526 ID3D12VideoProcessCommandList1 * This,
2527 _In_ ID3D12VideoProcessor *pVideoProcessor,
2528 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2529 UINT NumInputStreams,
2530 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
2531
2532 END_INTERFACE
2533 } ID3D12VideoProcessCommandList1Vtbl;
2534
2535 interface ID3D12VideoProcessCommandList1
2536 {
2537 CONST_VTBL struct ID3D12VideoProcessCommandList1Vtbl *lpVtbl;
2538 };
2539
2540
2541
2542#ifdef COBJMACROS
2543
2544
2545#define ID3D12VideoProcessCommandList1_QueryInterface(This,riid,ppvObject) \
2546 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2547
2548#define ID3D12VideoProcessCommandList1_AddRef(This) \
2549 ( (This)->lpVtbl -> AddRef(This) )
2550
2551#define ID3D12VideoProcessCommandList1_Release(This) \
2552 ( (This)->lpVtbl -> Release(This) )
2553
2554
2555#define ID3D12VideoProcessCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2556 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2557
2558#define ID3D12VideoProcessCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2559 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2560
2561#define ID3D12VideoProcessCommandList1_SetPrivateDataInterface(This,guid,pData) \
2562 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2563
2564#define ID3D12VideoProcessCommandList1_SetName(This,Name) \
2565 ( (This)->lpVtbl -> SetName(This,Name) )
2566
2567
2568#define ID3D12VideoProcessCommandList1_GetDevice(This,riid,ppvDevice) \
2569 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2570
2571
2572#define ID3D12VideoProcessCommandList1_GetType(This) \
2573 ( (This)->lpVtbl -> GetType(This) )
2574
2575
2576#define ID3D12VideoProcessCommandList1_Close(This) \
2577 ( (This)->lpVtbl -> Close(This) )
2578
2579#define ID3D12VideoProcessCommandList1_Reset(This,pAllocator) \
2580 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2581
2582#define ID3D12VideoProcessCommandList1_ClearState(This) \
2583 ( (This)->lpVtbl -> ClearState(This) )
2584
2585#define ID3D12VideoProcessCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2586 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2587
2588#define ID3D12VideoProcessCommandList1_DiscardResource(This,pResource,pRegion) \
2589 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2590
2591#define ID3D12VideoProcessCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2592 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2593
2594#define ID3D12VideoProcessCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2595 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2596
2597#define ID3D12VideoProcessCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2598 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2599
2600#define ID3D12VideoProcessCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2601 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2602
2603#define ID3D12VideoProcessCommandList1_SetMarker(This,Metadata,pData,Size) \
2604 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2605
2606#define ID3D12VideoProcessCommandList1_BeginEvent(This,Metadata,pData,Size) \
2607 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2608
2609#define ID3D12VideoProcessCommandList1_EndEvent(This) \
2610 ( (This)->lpVtbl -> EndEvent(This) )
2611
2612#define ID3D12VideoProcessCommandList1_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2613 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2614
2615#define ID3D12VideoProcessCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2616 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2617
2618
2619#define ID3D12VideoProcessCommandList1_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2620 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2621
2622#endif /* COBJMACROS */
2623
2624
2625#endif /* C style interface */
2626
2627
2628
2629
2630#endif /* __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__ */
2631
2632
2633/* interface __MIDL_itf_d3d12video_0000_0008 */
2634/* [local] */
2635
2636typedef
2637enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
2638 {
2639 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
2640 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
2641 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
2642
2643typedef
2644enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
2645 {
2646 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
2647 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 ) ,
2648 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
2649 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
2650
2651DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS );
2652typedef
2653enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
2654 {
2655 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
2656 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
2657
2658typedef
2659enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
2660 {
2661 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
2662 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
2663 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
2664
2665DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS );
2666typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
2667 {
2668 UINT NodeIndex;
2669 BOOL VideoDecodeSupport;
2670 BOOL VideoProcessSupport;
2671 BOOL VideoEncodeSupport;
2672 } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
2673
2674typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
2675 {
2676 UINT NodeIndex;
2677 DXGI_FORMAT InputFormat;
2678 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
2679 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
2680 D3D12_VIDEO_SIZE_RANGE SizeRange;
2681 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
2682
2683typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
2684 {
2685 UINT NodeIndex;
2686 DXGI_FORMAT InputFormat;
2687 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2688 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2689 D3D12_VIDEO_SIZE_RANGE SizeRange;
2690 BOOL Protected;
2691 UINT64 MotionVectorHeapMemoryPoolL0Size;
2692 UINT64 MotionVectorHeapMemoryPoolL1Size;
2693 UINT64 MotionEstimatorMemoryPoolL0Size;
2694 UINT64 MotionEstimatorMemoryPoolL1Size;
2695 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
2696
2697typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
2698 {
2699 UINT NodeMask;
2700 DXGI_FORMAT InputFormat;
2701 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2702 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2703 D3D12_VIDEO_SIZE_RANGE SizeRange;
2704 } D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
2705
2706
2707
2708extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
2709extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_s_ifspec;
2710
2711#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2712#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2713
2714/* interface ID3D12VideoMotionEstimator */
2715/* [unique][local][object][uuid] */
2716
2717
2718EXTERN_C const IID IID_ID3D12VideoMotionEstimator;
2719
2720#if defined(__cplusplus) && !defined(CINTERFACE)
2721
2722 MIDL_INTERFACE("33FDAE0E-098B-428F-87BB-34B695DE08F8")
2723 ID3D12VideoMotionEstimator : public ID3D12Pageable
2724 {
2725 public:
2726 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2727
2728 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2729 REFIID riid,
2730 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2731
2732 };
2733
2734
2735#else /* C style interface */
2736
2737 typedef struct ID3D12VideoMotionEstimatorVtbl
2738 {
2739 BEGIN_INTERFACE
2740
2741 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2742 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2743 ID3D12VideoMotionEstimator * This,
2744 REFIID riid,
2745 _COM_Outptr_ void **ppvObject);
2746
2747 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2748 ULONG ( STDMETHODCALLTYPE *AddRef )(
2749 ID3D12VideoMotionEstimator * This);
2750
2751 DECLSPEC_XFGVIRT(IUnknown, Release)
2752 ULONG ( STDMETHODCALLTYPE *Release )(
2753 ID3D12VideoMotionEstimator * This);
2754
2755 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2756 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2757 ID3D12VideoMotionEstimator * This,
2758 _In_ REFGUID guid,
2759 _Inout_ UINT *pDataSize,
2760 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2761
2762 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2763 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2764 ID3D12VideoMotionEstimator * This,
2765 _In_ REFGUID guid,
2766 _In_ UINT DataSize,
2767 _In_reads_bytes_opt_( DataSize ) const void *pData);
2768
2769 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2770 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2771 ID3D12VideoMotionEstimator * This,
2772 _In_ REFGUID guid,
2773 _In_opt_ const IUnknown *pData);
2774
2775 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2776 HRESULT ( STDMETHODCALLTYPE *SetName )(
2777 ID3D12VideoMotionEstimator * This,
2778 _In_z_ LPCWSTR Name);
2779
2780 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2781 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2782 ID3D12VideoMotionEstimator * This,
2783 REFIID riid,
2784 _COM_Outptr_opt_ void **ppvDevice);
2785
2786 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetDesc)
2787 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *( STDMETHODCALLTYPE *GetDesc )(
2788 ID3D12VideoMotionEstimator * This,
2789 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal);
2790
2791 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetProtectedResourceSession)
2792 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2793 ID3D12VideoMotionEstimator * This,
2794 REFIID riid,
2795 _COM_Outptr_opt_ void **ppProtectedSession);
2796
2797 END_INTERFACE
2798 } ID3D12VideoMotionEstimatorVtbl;
2799
2800 interface ID3D12VideoMotionEstimator
2801 {
2802 CONST_VTBL struct ID3D12VideoMotionEstimatorVtbl *lpVtbl;
2803 };
2804
2805
2806
2807#ifdef COBJMACROS
2808
2809
2810#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) \
2811 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2812
2813#define ID3D12VideoMotionEstimator_AddRef(This) \
2814 ( (This)->lpVtbl -> AddRef(This) )
2815
2816#define ID3D12VideoMotionEstimator_Release(This) \
2817 ( (This)->lpVtbl -> Release(This) )
2818
2819
2820#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,pDataSize,pData) \
2821 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2822
2823#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,DataSize,pData) \
2824 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2825
2826#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,pData) \
2827 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2828
2829#define ID3D12VideoMotionEstimator_SetName(This,Name) \
2830 ( (This)->lpVtbl -> SetName(This,Name) )
2831
2832
2833#define ID3D12VideoMotionEstimator_GetDevice(This,riid,ppvDevice) \
2834 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2835
2836
2837
2838#define ID3D12VideoMotionEstimator_GetDesc(This,RetVal) \
2839 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
2840
2841#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,ppProtectedSession) \
2842 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
2843
2844#endif /* COBJMACROS */
2845
2846
2847#endif /* C style interface */
2848
2849
2850
2851
2852#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
2853
2854
2855/* interface __MIDL_itf_d3d12video_0000_0009 */
2856/* [local] */
2857
2858typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
2859 {
2860 UINT NodeMask;
2861 DXGI_FORMAT InputFormat;
2862 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2863 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2864 D3D12_VIDEO_SIZE_RANGE SizeRange;
2865 } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
2866
2867
2868
2869extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
2870extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_s_ifspec;
2871
2872#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
2873#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
2874
2875/* interface ID3D12VideoMotionVectorHeap */
2876/* [unique][local][object][uuid] */
2877
2878
2879EXTERN_C const IID IID_ID3D12VideoMotionVectorHeap;
2880
2881#if defined(__cplusplus) && !defined(CINTERFACE)
2882
2883 MIDL_INTERFACE("5BE17987-743A-4061-834B-23D22DAEA505")
2884 ID3D12VideoMotionVectorHeap : public ID3D12Pageable
2885 {
2886 public:
2887 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2888
2889 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2890 REFIID riid,
2891 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2892
2893 };
2894
2895
2896#else /* C style interface */
2897
2898 typedef struct ID3D12VideoMotionVectorHeapVtbl
2899 {
2900 BEGIN_INTERFACE
2901
2902 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2903 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2904 ID3D12VideoMotionVectorHeap * This,
2905 REFIID riid,
2906 _COM_Outptr_ void **ppvObject);
2907
2908 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2909 ULONG ( STDMETHODCALLTYPE *AddRef )(
2910 ID3D12VideoMotionVectorHeap * This);
2911
2912 DECLSPEC_XFGVIRT(IUnknown, Release)
2913 ULONG ( STDMETHODCALLTYPE *Release )(
2914 ID3D12VideoMotionVectorHeap * This);
2915
2916 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2917 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2918 ID3D12VideoMotionVectorHeap * This,
2919 _In_ REFGUID guid,
2920 _Inout_ UINT *pDataSize,
2921 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2922
2923 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2924 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2925 ID3D12VideoMotionVectorHeap * This,
2926 _In_ REFGUID guid,
2927 _In_ UINT DataSize,
2928 _In_reads_bytes_opt_( DataSize ) const void *pData);
2929
2930 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2931 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2932 ID3D12VideoMotionVectorHeap * This,
2933 _In_ REFGUID guid,
2934 _In_opt_ const IUnknown *pData);
2935
2936 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2937 HRESULT ( STDMETHODCALLTYPE *SetName )(
2938 ID3D12VideoMotionVectorHeap * This,
2939 _In_z_ LPCWSTR Name);
2940
2941 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2942 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2943 ID3D12VideoMotionVectorHeap * This,
2944 REFIID riid,
2945 _COM_Outptr_opt_ void **ppvDevice);
2946
2947 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetDesc)
2948 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
2949 ID3D12VideoMotionVectorHeap * This,
2950 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal);
2951
2952 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetProtectedResourceSession)
2953 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2954 ID3D12VideoMotionVectorHeap * This,
2955 REFIID riid,
2956 _COM_Outptr_opt_ void **ppProtectedSession);
2957
2958 END_INTERFACE
2959 } ID3D12VideoMotionVectorHeapVtbl;
2960
2961 interface ID3D12VideoMotionVectorHeap
2962 {
2963 CONST_VTBL struct ID3D12VideoMotionVectorHeapVtbl *lpVtbl;
2964 };
2965
2966
2967
2968#ifdef COBJMACROS
2969
2970
2971#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) \
2972 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2973
2974#define ID3D12VideoMotionVectorHeap_AddRef(This) \
2975 ( (This)->lpVtbl -> AddRef(This) )
2976
2977#define ID3D12VideoMotionVectorHeap_Release(This) \
2978 ( (This)->lpVtbl -> Release(This) )
2979
2980
2981#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,pDataSize,pData) \
2982 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2983
2984#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,DataSize,pData) \
2985 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2986
2987#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,pData) \
2988 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2989
2990#define ID3D12VideoMotionVectorHeap_SetName(This,Name) \
2991 ( (This)->lpVtbl -> SetName(This,Name) )
2992
2993
2994#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,ppvDevice) \
2995 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2996
2997
2998
2999#define ID3D12VideoMotionVectorHeap_GetDesc(This,RetVal) \
3000 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3001
3002#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3003 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3004
3005#endif /* COBJMACROS */
3006
3007
3008#endif /* C style interface */
3009
3010
3011
3012
3013#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
3014
3015
3016#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
3017#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
3018
3019/* interface ID3D12VideoDevice1 */
3020/* [unique][local][object][uuid] */
3021
3022
3023EXTERN_C const IID IID_ID3D12VideoDevice1;
3024
3025#if defined(__cplusplus) && !defined(CINTERFACE)
3026
3027 MIDL_INTERFACE("981611AD-A144-4C83-9890-F30E26D658AB")
3028 ID3D12VideoDevice1 : public ID3D12VideoDevice
3029 {
3030 public:
3031 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
3032 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3033 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3034 _In_ REFIID riid,
3035 _COM_Outptr_ void **ppVideoMotionEstimator) = 0;
3036
3037 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
3038 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3039 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3040 _In_ REFIID riid,
3041 _COM_Outptr_ void **ppVideoMotionVectorHeap) = 0;
3042
3043 };
3044
3045
3046#else /* C style interface */
3047
3048 typedef struct ID3D12VideoDevice1Vtbl
3049 {
3050 BEGIN_INTERFACE
3051
3052 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3053 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3054 ID3D12VideoDevice1 * This,
3055 REFIID riid,
3056 _COM_Outptr_ void **ppvObject);
3057
3058 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3059 ULONG ( STDMETHODCALLTYPE *AddRef )(
3060 ID3D12VideoDevice1 * This);
3061
3062 DECLSPEC_XFGVIRT(IUnknown, Release)
3063 ULONG ( STDMETHODCALLTYPE *Release )(
3064 ID3D12VideoDevice1 * This);
3065
3066 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
3067 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
3068 ID3D12VideoDevice1 * This,
3069 D3D12_FEATURE_VIDEO FeatureVideo,
3070 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
3071 UINT FeatureSupportDataSize);
3072
3073 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
3074 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
3075 ID3D12VideoDevice1 * This,
3076 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
3077 _In_ REFIID riid,
3078 _COM_Outptr_ void **ppVideoDecoder);
3079
3080 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
3081 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
3082 ID3D12VideoDevice1 * This,
3083 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
3084 _In_ REFIID riid,
3085 _COM_Outptr_ void **ppVideoDecoderHeap);
3086
3087 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
3088 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
3089 ID3D12VideoDevice1 * This,
3090 UINT NodeMask,
3091 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
3092 UINT NumInputStreamDescs,
3093 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
3094 _In_ REFIID riid,
3095 _COM_Outptr_ void **ppVideoProcessor);
3096
3097 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
3098 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
3099 ID3D12VideoDevice1 * This,
3100 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3101 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3102 _In_ REFIID riid,
3103 _COM_Outptr_ void **ppVideoMotionEstimator);
3104
3105 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
3106 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
3107 ID3D12VideoDevice1 * This,
3108 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3109 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3110 _In_ REFIID riid,
3111 _COM_Outptr_ void **ppVideoMotionVectorHeap);
3112
3113 END_INTERFACE
3114 } ID3D12VideoDevice1Vtbl;
3115
3116 interface ID3D12VideoDevice1
3117 {
3118 CONST_VTBL struct ID3D12VideoDevice1Vtbl *lpVtbl;
3119 };
3120
3121
3122
3123#ifdef COBJMACROS
3124
3125
3126#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) \
3127 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3128
3129#define ID3D12VideoDevice1_AddRef(This) \
3130 ( (This)->lpVtbl -> AddRef(This) )
3131
3132#define ID3D12VideoDevice1_Release(This) \
3133 ( (This)->lpVtbl -> Release(This) )
3134
3135
3136#define ID3D12VideoDevice1_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
3137 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
3138
3139#define ID3D12VideoDevice1_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
3140 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
3141
3142#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
3143 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
3144
3145#define ID3D12VideoDevice1_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
3146 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
3147
3148
3149#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
3150 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
3151
3152#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
3153 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
3154
3155#endif /* COBJMACROS */
3156
3157
3158#endif /* C style interface */
3159
3160
3161
3162
3163#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
3164
3165
3166/* interface __MIDL_itf_d3d12video_0000_0011 */
3167/* [local] */
3168
3169typedef struct D3D12_RESOURCE_COORDINATE
3170 {
3171 UINT64 X;
3172 UINT Y;
3173 UINT Z;
3174 UINT SubresourceIndex;
3175 } D3D12_RESOURCE_COORDINATE;
3176
3177typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
3178 {
3179 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3180 } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
3181
3182typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
3183 {
3184 ID3D12Resource *pInputTexture2D;
3185 UINT InputSubresourceIndex;
3186 ID3D12Resource *pReferenceTexture2D;
3187 UINT ReferenceSubresourceIndex;
3188 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
3189 } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
3190
3191typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
3192 {
3193 ID3D12Resource *pMotionVectorTexture2D;
3194 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
3195 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
3196
3197typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
3198 {
3199 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3200 UINT PixelWidth;
3201 UINT PixelHeight;
3202 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
3203
3204
3205
3206extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
3207extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_s_ifspec;
3208
3209#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3210#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3211
3212/* interface ID3D12VideoEncodeCommandList */
3213/* [unique][local][object][uuid] */
3214
3215
3216EXTERN_C const IID IID_ID3D12VideoEncodeCommandList;
3217
3218#if defined(__cplusplus) && !defined(CINTERFACE)
3219
3220 MIDL_INTERFACE("8455293A-0CBD-4831-9B39-FBDBAB724723")
3221 ID3D12VideoEncodeCommandList : public ID3D12CommandList
3222 {
3223 public:
3224 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
3225
3226 virtual HRESULT STDMETHODCALLTYPE Reset(
3227 _In_ ID3D12CommandAllocator *pAllocator) = 0;
3228
3229 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
3230
3231 virtual void STDMETHODCALLTYPE ResourceBarrier(
3232 _In_ UINT NumBarriers,
3233 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
3234
3235 virtual void STDMETHODCALLTYPE DiscardResource(
3236 _In_ ID3D12Resource *pResource,
3237 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
3238
3239 virtual void STDMETHODCALLTYPE BeginQuery(
3240 _In_ ID3D12QueryHeap *pQueryHeap,
3241 _In_ D3D12_QUERY_TYPE Type,
3242 _In_ UINT Index) = 0;
3243
3244 virtual void STDMETHODCALLTYPE EndQuery(
3245 _In_ ID3D12QueryHeap *pQueryHeap,
3246 _In_ D3D12_QUERY_TYPE Type,
3247 _In_ UINT Index) = 0;
3248
3249 virtual void STDMETHODCALLTYPE ResolveQueryData(
3250 _In_ ID3D12QueryHeap *pQueryHeap,
3251 _In_ D3D12_QUERY_TYPE Type,
3252 _In_ UINT StartIndex,
3253 _In_ UINT NumQueries,
3254 _In_ ID3D12Resource *pDestinationBuffer,
3255 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
3256
3257 virtual void STDMETHODCALLTYPE SetPredication(
3258 _In_opt_ ID3D12Resource *pBuffer,
3259 _In_ UINT64 AlignedBufferOffset,
3260 _In_ D3D12_PREDICATION_OP Operation) = 0;
3261
3262 virtual void STDMETHODCALLTYPE SetMarker(
3263 UINT Metadata,
3264 _In_reads_bytes_opt_(Size) const void *pData,
3265 UINT Size) = 0;
3266
3267 virtual void STDMETHODCALLTYPE BeginEvent(
3268 UINT Metadata,
3269 _In_reads_bytes_opt_(Size) const void *pData,
3270 UINT Size) = 0;
3271
3272 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
3273
3274 virtual void STDMETHODCALLTYPE EstimateMotion(
3275 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3276 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3277 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments) = 0;
3278
3279 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
3280 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3281 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments) = 0;
3282
3283 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
3284 UINT Count,
3285 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3286 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
3287
3288 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
3289 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
3290
3291 };
3292
3293
3294#else /* C style interface */
3295
3296 typedef struct ID3D12VideoEncodeCommandListVtbl
3297 {
3298 BEGIN_INTERFACE
3299
3300 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3301 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3302 ID3D12VideoEncodeCommandList * This,
3303 REFIID riid,
3304 _COM_Outptr_ void **ppvObject);
3305
3306 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3307 ULONG ( STDMETHODCALLTYPE *AddRef )(
3308 ID3D12VideoEncodeCommandList * This);
3309
3310 DECLSPEC_XFGVIRT(IUnknown, Release)
3311 ULONG ( STDMETHODCALLTYPE *Release )(
3312 ID3D12VideoEncodeCommandList * This);
3313
3314 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3315 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3316 ID3D12VideoEncodeCommandList * This,
3317 _In_ REFGUID guid,
3318 _Inout_ UINT *pDataSize,
3319 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3320
3321 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3322 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3323 ID3D12VideoEncodeCommandList * This,
3324 _In_ REFGUID guid,
3325 _In_ UINT DataSize,
3326 _In_reads_bytes_opt_( DataSize ) const void *pData);
3327
3328 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3329 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3330 ID3D12VideoEncodeCommandList * This,
3331 _In_ REFGUID guid,
3332 _In_opt_ const IUnknown *pData);
3333
3334 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3335 HRESULT ( STDMETHODCALLTYPE *SetName )(
3336 ID3D12VideoEncodeCommandList * This,
3337 _In_z_ LPCWSTR Name);
3338
3339 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3340 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3341 ID3D12VideoEncodeCommandList * This,
3342 REFIID riid,
3343 _COM_Outptr_opt_ void **ppvDevice);
3344
3345 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
3346 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
3347 ID3D12VideoEncodeCommandList * This);
3348
3349 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
3350 HRESULT ( STDMETHODCALLTYPE *Close )(
3351 ID3D12VideoEncodeCommandList * This);
3352
3353 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
3354 HRESULT ( STDMETHODCALLTYPE *Reset )(
3355 ID3D12VideoEncodeCommandList * This,
3356 _In_ ID3D12CommandAllocator *pAllocator);
3357
3358 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
3359 void ( STDMETHODCALLTYPE *ClearState )(
3360 ID3D12VideoEncodeCommandList * This);
3361
3362 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
3363 void ( STDMETHODCALLTYPE *ResourceBarrier )(
3364 ID3D12VideoEncodeCommandList * This,
3365 _In_ UINT NumBarriers,
3366 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
3367
3368 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
3369 void ( STDMETHODCALLTYPE *DiscardResource )(
3370 ID3D12VideoEncodeCommandList * This,
3371 _In_ ID3D12Resource *pResource,
3372 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
3373
3374 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
3375 void ( STDMETHODCALLTYPE *BeginQuery )(
3376 ID3D12VideoEncodeCommandList * This,
3377 _In_ ID3D12QueryHeap *pQueryHeap,
3378 _In_ D3D12_QUERY_TYPE Type,
3379 _In_ UINT Index);
3380
3381 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
3382 void ( STDMETHODCALLTYPE *EndQuery )(
3383 ID3D12VideoEncodeCommandList * This,
3384 _In_ ID3D12QueryHeap *pQueryHeap,
3385 _In_ D3D12_QUERY_TYPE Type,
3386 _In_ UINT Index);
3387
3388 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
3389 void ( STDMETHODCALLTYPE *ResolveQueryData )(
3390 ID3D12VideoEncodeCommandList * This,
3391 _In_ ID3D12QueryHeap *pQueryHeap,
3392 _In_ D3D12_QUERY_TYPE Type,
3393 _In_ UINT StartIndex,
3394 _In_ UINT NumQueries,
3395 _In_ ID3D12Resource *pDestinationBuffer,
3396 _In_ UINT64 AlignedDestinationBufferOffset);
3397
3398 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
3399 void ( STDMETHODCALLTYPE *SetPredication )(
3400 ID3D12VideoEncodeCommandList * This,
3401 _In_opt_ ID3D12Resource *pBuffer,
3402 _In_ UINT64 AlignedBufferOffset,
3403 _In_ D3D12_PREDICATION_OP Operation);
3404
3405 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
3406 void ( STDMETHODCALLTYPE *SetMarker )(
3407 ID3D12VideoEncodeCommandList * This,
3408 UINT Metadata,
3409 _In_reads_bytes_opt_(Size) const void *pData,
3410 UINT Size);
3411
3412 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
3413 void ( STDMETHODCALLTYPE *BeginEvent )(
3414 ID3D12VideoEncodeCommandList * This,
3415 UINT Metadata,
3416 _In_reads_bytes_opt_(Size) const void *pData,
3417 UINT Size);
3418
3419 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
3420 void ( STDMETHODCALLTYPE *EndEvent )(
3421 ID3D12VideoEncodeCommandList * This);
3422
3423 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
3424 void ( STDMETHODCALLTYPE *EstimateMotion )(
3425 ID3D12VideoEncodeCommandList * This,
3426 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3427 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3428 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
3429
3430 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
3431 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
3432 ID3D12VideoEncodeCommandList * This,
3433 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3434 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
3435
3436 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
3437 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
3438 ID3D12VideoEncodeCommandList * This,
3439 UINT Count,
3440 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3441 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
3442
3443 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
3444 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
3445 ID3D12VideoEncodeCommandList * This,
3446 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
3447
3448 END_INTERFACE
3449 } ID3D12VideoEncodeCommandListVtbl;
3450
3451 interface ID3D12VideoEncodeCommandList
3452 {
3453 CONST_VTBL struct ID3D12VideoEncodeCommandListVtbl *lpVtbl;
3454 };
3455
3456
3457
3458#ifdef COBJMACROS
3459
3460
3461#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) \
3462 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3463
3464#define ID3D12VideoEncodeCommandList_AddRef(This) \
3465 ( (This)->lpVtbl -> AddRef(This) )
3466
3467#define ID3D12VideoEncodeCommandList_Release(This) \
3468 ( (This)->lpVtbl -> Release(This) )
3469
3470
3471#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
3472 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3473
3474#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
3475 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3476
3477#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,pData) \
3478 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3479
3480#define ID3D12VideoEncodeCommandList_SetName(This,Name) \
3481 ( (This)->lpVtbl -> SetName(This,Name) )
3482
3483
3484#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,ppvDevice) \
3485 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3486
3487
3488#define ID3D12VideoEncodeCommandList_GetType(This) \
3489 ( (This)->lpVtbl -> GetType(This) )
3490
3491
3492#define ID3D12VideoEncodeCommandList_Close(This) \
3493 ( (This)->lpVtbl -> Close(This) )
3494
3495#define ID3D12VideoEncodeCommandList_Reset(This,pAllocator) \
3496 ( (This)->lpVtbl -> Reset(This,pAllocator) )
3497
3498#define ID3D12VideoEncodeCommandList_ClearState(This) \
3499 ( (This)->lpVtbl -> ClearState(This) )
3500
3501#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
3502 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
3503
3504#define ID3D12VideoEncodeCommandList_DiscardResource(This,pResource,pRegion) \
3505 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
3506
3507#define ID3D12VideoEncodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
3508 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
3509
3510#define ID3D12VideoEncodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
3511 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
3512
3513#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
3514 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
3515
3516#define ID3D12VideoEncodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
3517 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
3518
3519#define ID3D12VideoEncodeCommandList_SetMarker(This,Metadata,pData,Size) \
3520 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
3521
3522#define ID3D12VideoEncodeCommandList_BeginEvent(This,Metadata,pData,Size) \
3523 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
3524
3525#define ID3D12VideoEncodeCommandList_EndEvent(This) \
3526 ( (This)->lpVtbl -> EndEvent(This) )
3527
3528#define ID3D12VideoEncodeCommandList_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
3529 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
3530
3531#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
3532 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
3533
3534#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
3535 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
3536
3537#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,pProtectedResourceSession) \
3538 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
3539
3540#endif /* COBJMACROS */
3541
3542
3543#endif /* C style interface */
3544
3545
3546
3547
3548#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
3549
3550
3551/* interface __MIDL_itf_d3d12video_0000_0012 */
3552/* [local] */
3553
3554typedef
3555enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
3556 {
3557 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0,
3558 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
3559 } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
3560
3561DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS );
3562typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
3563 {
3564 UINT NodeIndex;
3565 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
3566 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3567 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
3568
3569typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
3570 {
3571 UINT NodeIndex;
3572 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3573 } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
3574
3575typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
3576 {
3577 UINT NodeIndex;
3578 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3579 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
3580
3581typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
3582 {
3583 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
3584 BOOL Protected;
3585 UINT64 MemoryPoolL0Size;
3586 UINT64 MemoryPoolL1Size;
3587 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
3588
3589typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
3590 {
3591 UINT NodeMask;
3592 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
3593 UINT NumInputStreamDescs;
3594 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
3595 BOOL Protected;
3596 UINT64 MemoryPoolL0Size;
3597 UINT64 MemoryPoolL1Size;
3598 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
3599
3600typedef
3601enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
3602 {
3603 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
3604 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3605 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3606 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
3607 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
3608 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
3609 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6
3610 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
3611
3612typedef
3613enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
3614 {
3615 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
3616 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
3617 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
3618 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
3619 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
3620 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
3621 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
3622 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
3623 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
3624 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
3625 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10
3626 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
3627
3628typedef
3629enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
3630 {
3631 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0,
3632 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x1,
3633 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
3634 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
3635
3636DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS );
3637typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
3638 {
3639 UINT NodeIndex;
3640 UINT CommandCount;
3641 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
3642
3643typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
3644 {
3645 GUID CommandId;
3646 LPCWSTR Name;
3647 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
3648 } D3D12_VIDEO_EXTENSION_COMMAND_INFO;
3649
3650typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
3651 {
3652 UINT NodeIndex;
3653 UINT CommandCount;
3654 _Field_size_full_(CommandCount) D3D12_VIDEO_EXTENSION_COMMAND_INFO *pCommandInfos;
3655 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
3656
3657typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
3658 {
3659 GUID CommandId;
3660 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3661 UINT ParameterCount;
3662 UINT ParameterPacking;
3663 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
3664
3665typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
3666 {
3667 LPCWSTR Name;
3668 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
3669 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
3670 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
3671
3672typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
3673 {
3674 GUID CommandId;
3675 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3676 UINT ParameterCount;
3677 _Field_size_full_(ParameterCount) D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO *pParameterInfos;
3678 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
3679
3680typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
3681 {
3682 UINT NodeIndex;
3683 GUID CommandId;
3684 _Field_size_bytes_full_opt_(InputDataSizeInBytes) const void *pInputData;
3685 SIZE_T InputDataSizeInBytes;
3686 _Field_size_bytes_full_opt_(OutputDataSizeInBytes) void *pOutputData;
3687 SIZE_T OutputDataSizeInBytes;
3688 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
3689
3690typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
3691 {
3692 UINT NodeIndex;
3693 GUID CommandId;
3694 _Field_size_bytes_full_(CreationParametersDataSizeInBytes) const void *pCreationParameters;
3695 SIZE_T CreationParametersSizeInBytes;
3696 UINT64 MemoryPoolL0Size;
3697 UINT64 MemoryPoolL1Size;
3698 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
3699
3700typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
3701 {
3702 UINT NodeMask;
3703 GUID CommandId;
3704 } D3D12_VIDEO_EXTENSION_COMMAND_DESC;
3705
3706
3707
3708extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
3709extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_s_ifspec;
3710
3711#ifndef __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3712#define __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3713
3714/* interface ID3D12VideoDecoder1 */
3715/* [unique][local][object][uuid] */
3716
3717
3718EXTERN_C const IID IID_ID3D12VideoDecoder1;
3719
3720#if defined(__cplusplus) && !defined(CINTERFACE)
3721
3722 MIDL_INTERFACE("79A2E5FB-CCD2-469A-9FDE-195D10951F7E")
3723 ID3D12VideoDecoder1 : public ID3D12VideoDecoder
3724 {
3725 public:
3726 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3727 REFIID riid,
3728 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3729
3730 };
3731
3732
3733#else /* C style interface */
3734
3735 typedef struct ID3D12VideoDecoder1Vtbl
3736 {
3737 BEGIN_INTERFACE
3738
3739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3741 ID3D12VideoDecoder1 * This,
3742 REFIID riid,
3743 _COM_Outptr_ void **ppvObject);
3744
3745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3746 ULONG ( STDMETHODCALLTYPE *AddRef )(
3747 ID3D12VideoDecoder1 * This);
3748
3749 DECLSPEC_XFGVIRT(IUnknown, Release)
3750 ULONG ( STDMETHODCALLTYPE *Release )(
3751 ID3D12VideoDecoder1 * This);
3752
3753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3755 ID3D12VideoDecoder1 * This,
3756 _In_ REFGUID guid,
3757 _Inout_ UINT *pDataSize,
3758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3759
3760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3762 ID3D12VideoDecoder1 * This,
3763 _In_ REFGUID guid,
3764 _In_ UINT DataSize,
3765 _In_reads_bytes_opt_( DataSize ) const void *pData);
3766
3767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3769 ID3D12VideoDecoder1 * This,
3770 _In_ REFGUID guid,
3771 _In_opt_ const IUnknown *pData);
3772
3773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3774 HRESULT ( STDMETHODCALLTYPE *SetName )(
3775 ID3D12VideoDecoder1 * This,
3776 _In_z_ LPCWSTR Name);
3777
3778 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3779 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3780 ID3D12VideoDecoder1 * This,
3781 REFIID riid,
3782 _COM_Outptr_opt_ void **ppvDevice);
3783
3784 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
3785 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
3786 ID3D12VideoDecoder1 * This,
3787 D3D12_VIDEO_DECODER_DESC * RetVal);
3788
3789 DECLSPEC_XFGVIRT(ID3D12VideoDecoder1, GetProtectedResourceSession)
3790 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3791 ID3D12VideoDecoder1 * This,
3792 REFIID riid,
3793 _COM_Outptr_opt_ void **ppProtectedSession);
3794
3795 END_INTERFACE
3796 } ID3D12VideoDecoder1Vtbl;
3797
3798 interface ID3D12VideoDecoder1
3799 {
3800 CONST_VTBL struct ID3D12VideoDecoder1Vtbl *lpVtbl;
3801 };
3802
3803
3804
3805#ifdef COBJMACROS
3806
3807
3808#define ID3D12VideoDecoder1_QueryInterface(This,riid,ppvObject) \
3809 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3810
3811#define ID3D12VideoDecoder1_AddRef(This) \
3812 ( (This)->lpVtbl -> AddRef(This) )
3813
3814#define ID3D12VideoDecoder1_Release(This) \
3815 ( (This)->lpVtbl -> Release(This) )
3816
3817
3818#define ID3D12VideoDecoder1_GetPrivateData(This,guid,pDataSize,pData) \
3819 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3820
3821#define ID3D12VideoDecoder1_SetPrivateData(This,guid,DataSize,pData) \
3822 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3823
3824#define ID3D12VideoDecoder1_SetPrivateDataInterface(This,guid,pData) \
3825 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3826
3827#define ID3D12VideoDecoder1_SetName(This,Name) \
3828 ( (This)->lpVtbl -> SetName(This,Name) )
3829
3830
3831#define ID3D12VideoDecoder1_GetDevice(This,riid,ppvDevice) \
3832 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3833
3834
3835
3836#define ID3D12VideoDecoder1_GetDesc(This,RetVal) \
3837 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3838
3839
3840#define ID3D12VideoDecoder1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3841 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3842
3843#endif /* COBJMACROS */
3844
3845
3846#endif /* C style interface */
3847
3848
3849
3850
3851#endif /* __ID3D12VideoDecoder1_INTERFACE_DEFINED__ */
3852
3853
3854#ifndef __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
3855#define __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
3856
3857/* interface ID3D12VideoDecoderHeap1 */
3858/* [unique][local][object][uuid] */
3859
3860
3861EXTERN_C const IID IID_ID3D12VideoDecoderHeap1;
3862
3863#if defined(__cplusplus) && !defined(CINTERFACE)
3864
3865 MIDL_INTERFACE("DA1D98C5-539F-41B2-BF6B-1198A03B6D26")
3866 ID3D12VideoDecoderHeap1 : public ID3D12VideoDecoderHeap
3867 {
3868 public:
3869 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3870 REFIID riid,
3871 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3872
3873 };
3874
3875
3876#else /* C style interface */
3877
3878 typedef struct ID3D12VideoDecoderHeap1Vtbl
3879 {
3880 BEGIN_INTERFACE
3881
3882 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3883 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3884 ID3D12VideoDecoderHeap1 * This,
3885 REFIID riid,
3886 _COM_Outptr_ void **ppvObject);
3887
3888 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3889 ULONG ( STDMETHODCALLTYPE *AddRef )(
3890 ID3D12VideoDecoderHeap1 * This);
3891
3892 DECLSPEC_XFGVIRT(IUnknown, Release)
3893 ULONG ( STDMETHODCALLTYPE *Release )(
3894 ID3D12VideoDecoderHeap1 * This);
3895
3896 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3897 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3898 ID3D12VideoDecoderHeap1 * This,
3899 _In_ REFGUID guid,
3900 _Inout_ UINT *pDataSize,
3901 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3902
3903 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3904 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3905 ID3D12VideoDecoderHeap1 * This,
3906 _In_ REFGUID guid,
3907 _In_ UINT DataSize,
3908 _In_reads_bytes_opt_( DataSize ) const void *pData);
3909
3910 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3911 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3912 ID3D12VideoDecoderHeap1 * This,
3913 _In_ REFGUID guid,
3914 _In_opt_ const IUnknown *pData);
3915
3916 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3917 HRESULT ( STDMETHODCALLTYPE *SetName )(
3918 ID3D12VideoDecoderHeap1 * This,
3919 _In_z_ LPCWSTR Name);
3920
3921 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3922 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3923 ID3D12VideoDecoderHeap1 * This,
3924 REFIID riid,
3925 _COM_Outptr_opt_ void **ppvDevice);
3926
3927 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
3928 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
3929 ID3D12VideoDecoderHeap1 * This,
3930 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
3931
3932 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap1, GetProtectedResourceSession)
3933 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3934 ID3D12VideoDecoderHeap1 * This,
3935 REFIID riid,
3936 _COM_Outptr_opt_ void **ppProtectedSession);
3937
3938 END_INTERFACE
3939 } ID3D12VideoDecoderHeap1Vtbl;
3940
3941 interface ID3D12VideoDecoderHeap1
3942 {
3943 CONST_VTBL struct ID3D12VideoDecoderHeap1Vtbl *lpVtbl;
3944 };
3945
3946
3947
3948#ifdef COBJMACROS
3949
3950
3951#define ID3D12VideoDecoderHeap1_QueryInterface(This,riid,ppvObject) \
3952 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3953
3954#define ID3D12VideoDecoderHeap1_AddRef(This) \
3955 ( (This)->lpVtbl -> AddRef(This) )
3956
3957#define ID3D12VideoDecoderHeap1_Release(This) \
3958 ( (This)->lpVtbl -> Release(This) )
3959
3960
3961#define ID3D12VideoDecoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
3962 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3963
3964#define ID3D12VideoDecoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
3965 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3966
3967#define ID3D12VideoDecoderHeap1_SetPrivateDataInterface(This,guid,pData) \
3968 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3969
3970#define ID3D12VideoDecoderHeap1_SetName(This,Name) \
3971 ( (This)->lpVtbl -> SetName(This,Name) )
3972
3973
3974#define ID3D12VideoDecoderHeap1_GetDevice(This,riid,ppvDevice) \
3975 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3976
3977
3978
3979#define ID3D12VideoDecoderHeap1_GetDesc(This,RetVal) \
3980 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3981
3982
3983#define ID3D12VideoDecoderHeap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3984 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3985
3986#endif /* COBJMACROS */
3987
3988
3989#endif /* C style interface */
3990
3991
3992
3993
3994#endif /* __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__ */
3995
3996
3997#ifndef __ID3D12VideoProcessor1_INTERFACE_DEFINED__
3998#define __ID3D12VideoProcessor1_INTERFACE_DEFINED__
3999
4000/* interface ID3D12VideoProcessor1 */
4001/* [unique][local][object][uuid] */
4002
4003
4004EXTERN_C const IID IID_ID3D12VideoProcessor1;
4005
4006#if defined(__cplusplus) && !defined(CINTERFACE)
4007
4008 MIDL_INTERFACE("F3CFE615-553F-425C-86D8-EE8C1B1FB01C")
4009 ID3D12VideoProcessor1 : public ID3D12VideoProcessor
4010 {
4011 public:
4012 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4013 REFIID riid,
4014 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4015
4016 };
4017
4018
4019#else /* C style interface */
4020
4021 typedef struct ID3D12VideoProcessor1Vtbl
4022 {
4023 BEGIN_INTERFACE
4024
4025 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4026 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4027 ID3D12VideoProcessor1 * This,
4028 REFIID riid,
4029 _COM_Outptr_ void **ppvObject);
4030
4031 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4032 ULONG ( STDMETHODCALLTYPE *AddRef )(
4033 ID3D12VideoProcessor1 * This);
4034
4035 DECLSPEC_XFGVIRT(IUnknown, Release)
4036 ULONG ( STDMETHODCALLTYPE *Release )(
4037 ID3D12VideoProcessor1 * This);
4038
4039 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4040 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4041 ID3D12VideoProcessor1 * This,
4042 _In_ REFGUID guid,
4043 _Inout_ UINT *pDataSize,
4044 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4045
4046 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4047 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4048 ID3D12VideoProcessor1 * This,
4049 _In_ REFGUID guid,
4050 _In_ UINT DataSize,
4051 _In_reads_bytes_opt_( DataSize ) const void *pData);
4052
4053 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4054 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4055 ID3D12VideoProcessor1 * This,
4056 _In_ REFGUID guid,
4057 _In_opt_ const IUnknown *pData);
4058
4059 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4060 HRESULT ( STDMETHODCALLTYPE *SetName )(
4061 ID3D12VideoProcessor1 * This,
4062 _In_z_ LPCWSTR Name);
4063
4064 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4065 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4066 ID3D12VideoProcessor1 * This,
4067 REFIID riid,
4068 _COM_Outptr_opt_ void **ppvDevice);
4069
4070 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
4071 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
4072 ID3D12VideoProcessor1 * This);
4073
4074 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
4075 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
4076 ID3D12VideoProcessor1 * This);
4077
4078 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
4079 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
4080 ID3D12VideoProcessor1 * This,
4081 UINT NumInputStreamDescs,
4082 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
4083
4084 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
4085 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4086 ID3D12VideoProcessor1 * This,
4087 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
4088
4089 DECLSPEC_XFGVIRT(ID3D12VideoProcessor1, GetProtectedResourceSession)
4090 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4091 ID3D12VideoProcessor1 * This,
4092 REFIID riid,
4093 _COM_Outptr_opt_ void **ppProtectedSession);
4094
4095 END_INTERFACE
4096 } ID3D12VideoProcessor1Vtbl;
4097
4098 interface ID3D12VideoProcessor1
4099 {
4100 CONST_VTBL struct ID3D12VideoProcessor1Vtbl *lpVtbl;
4101 };
4102
4103
4104
4105#ifdef COBJMACROS
4106
4107
4108#define ID3D12VideoProcessor1_QueryInterface(This,riid,ppvObject) \
4109 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4110
4111#define ID3D12VideoProcessor1_AddRef(This) \
4112 ( (This)->lpVtbl -> AddRef(This) )
4113
4114#define ID3D12VideoProcessor1_Release(This) \
4115 ( (This)->lpVtbl -> Release(This) )
4116
4117
4118#define ID3D12VideoProcessor1_GetPrivateData(This,guid,pDataSize,pData) \
4119 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4120
4121#define ID3D12VideoProcessor1_SetPrivateData(This,guid,DataSize,pData) \
4122 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4123
4124#define ID3D12VideoProcessor1_SetPrivateDataInterface(This,guid,pData) \
4125 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4126
4127#define ID3D12VideoProcessor1_SetName(This,Name) \
4128 ( (This)->lpVtbl -> SetName(This,Name) )
4129
4130
4131#define ID3D12VideoProcessor1_GetDevice(This,riid,ppvDevice) \
4132 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4133
4134
4135
4136#define ID3D12VideoProcessor1_GetNodeMask(This) \
4137 ( (This)->lpVtbl -> GetNodeMask(This) )
4138
4139#define ID3D12VideoProcessor1_GetNumInputStreamDescs(This) \
4140 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
4141
4142#define ID3D12VideoProcessor1_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
4143 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
4144
4145#define ID3D12VideoProcessor1_GetOutputStreamDesc(This,RetVal) \
4146 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
4147
4148
4149#define ID3D12VideoProcessor1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4150 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4151
4152#endif /* COBJMACROS */
4153
4154
4155#endif /* C style interface */
4156
4157
4158
4159
4160#endif /* __ID3D12VideoProcessor1_INTERFACE_DEFINED__ */
4161
4162
4163#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4164#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4165
4166/* interface ID3D12VideoExtensionCommand */
4167/* [unique][local][object][uuid] */
4168
4169
4170EXTERN_C const IID IID_ID3D12VideoExtensionCommand;
4171
4172#if defined(__cplusplus) && !defined(CINTERFACE)
4173
4174 MIDL_INTERFACE("554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4")
4175 ID3D12VideoExtensionCommand : public ID3D12Pageable
4176 {
4177 public:
4178 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4179
4180 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4181 REFIID riid,
4182 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4183
4184 };
4185
4186
4187#else /* C style interface */
4188
4189 typedef struct ID3D12VideoExtensionCommandVtbl
4190 {
4191 BEGIN_INTERFACE
4192
4193 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4194 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4195 ID3D12VideoExtensionCommand * This,
4196 REFIID riid,
4197 _COM_Outptr_ void **ppvObject);
4198
4199 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4200 ULONG ( STDMETHODCALLTYPE *AddRef )(
4201 ID3D12VideoExtensionCommand * This);
4202
4203 DECLSPEC_XFGVIRT(IUnknown, Release)
4204 ULONG ( STDMETHODCALLTYPE *Release )(
4205 ID3D12VideoExtensionCommand * This);
4206
4207 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4208 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4209 ID3D12VideoExtensionCommand * This,
4210 _In_ REFGUID guid,
4211 _Inout_ UINT *pDataSize,
4212 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4213
4214 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4215 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4216 ID3D12VideoExtensionCommand * This,
4217 _In_ REFGUID guid,
4218 _In_ UINT DataSize,
4219 _In_reads_bytes_opt_( DataSize ) const void *pData);
4220
4221 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4222 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4223 ID3D12VideoExtensionCommand * This,
4224 _In_ REFGUID guid,
4225 _In_opt_ const IUnknown *pData);
4226
4227 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4228 HRESULT ( STDMETHODCALLTYPE *SetName )(
4229 ID3D12VideoExtensionCommand * This,
4230 _In_z_ LPCWSTR Name);
4231
4232 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4233 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4234 ID3D12VideoExtensionCommand * This,
4235 REFIID riid,
4236 _COM_Outptr_opt_ void **ppvDevice);
4237
4238 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetDesc)
4239 D3D12_VIDEO_EXTENSION_COMMAND_DESC *( STDMETHODCALLTYPE *GetDesc )(
4240 ID3D12VideoExtensionCommand * This,
4241 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal);
4242
4243 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetProtectedResourceSession)
4244 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4245 ID3D12VideoExtensionCommand * This,
4246 REFIID riid,
4247 _COM_Outptr_opt_ void **ppProtectedSession);
4248
4249 END_INTERFACE
4250 } ID3D12VideoExtensionCommandVtbl;
4251
4252 interface ID3D12VideoExtensionCommand
4253 {
4254 CONST_VTBL struct ID3D12VideoExtensionCommandVtbl *lpVtbl;
4255 };
4256
4257
4258
4259#ifdef COBJMACROS
4260
4261
4262#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) \
4263 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4264
4265#define ID3D12VideoExtensionCommand_AddRef(This) \
4266 ( (This)->lpVtbl -> AddRef(This) )
4267
4268#define ID3D12VideoExtensionCommand_Release(This) \
4269 ( (This)->lpVtbl -> Release(This) )
4270
4271
4272#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,pDataSize,pData) \
4273 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4274
4275#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,DataSize,pData) \
4276 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4277
4278#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,pData) \
4279 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4280
4281#define ID3D12VideoExtensionCommand_SetName(This,Name) \
4282 ( (This)->lpVtbl -> SetName(This,Name) )
4283
4284
4285#define ID3D12VideoExtensionCommand_GetDevice(This,riid,ppvDevice) \
4286 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4287
4288
4289
4290#define ID3D12VideoExtensionCommand_GetDesc(This,RetVal) \
4291 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4292
4293#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4294 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4295
4296#endif /* COBJMACROS */
4297
4298
4299#endif /* C style interface */
4300
4301
4302
4303
4304#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
4305
4306
4307#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
4308#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
4309
4310/* interface ID3D12VideoDevice2 */
4311/* [unique][local][object][uuid] */
4312
4313
4314EXTERN_C const IID IID_ID3D12VideoDevice2;
4315
4316#if defined(__cplusplus) && !defined(CINTERFACE)
4317
4318 MIDL_INTERFACE("F019AC49-F838-4A95-9B17-579437C8F513")
4319 ID3D12VideoDevice2 : public ID3D12VideoDevice1
4320 {
4321 public:
4322 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
4323 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4324 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4325 _In_ REFIID riid,
4326 _COM_Outptr_ void **ppVideoDecoder) = 0;
4327
4328 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
4329 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4330 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4331 _In_ REFIID riid,
4332 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
4333
4334 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
4335 UINT NodeMask,
4336 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4337 UINT NumInputStreamDescs,
4338 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4339 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4340 _In_ REFIID riid,
4341 _COM_Outptr_ void **ppVideoProcessor) = 0;
4342
4343 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
4344 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4345 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4346 SIZE_T CreationParametersDataSizeInBytes,
4347 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4348 _In_ REFIID riid,
4349 _COM_Outptr_ void **ppVideoExtensionCommand) = 0;
4350
4351 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
4352 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4353 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4354 SIZE_T ExecutionParametersSizeInBytes,
4355 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4356 SIZE_T OutputDataSizeInBytes) = 0;
4357
4358 };
4359
4360
4361#else /* C style interface */
4362
4363 typedef struct ID3D12VideoDevice2Vtbl
4364 {
4365 BEGIN_INTERFACE
4366
4367 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4368 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4369 ID3D12VideoDevice2 * This,
4370 REFIID riid,
4371 _COM_Outptr_ void **ppvObject);
4372
4373 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4374 ULONG ( STDMETHODCALLTYPE *AddRef )(
4375 ID3D12VideoDevice2 * This);
4376
4377 DECLSPEC_XFGVIRT(IUnknown, Release)
4378 ULONG ( STDMETHODCALLTYPE *Release )(
4379 ID3D12VideoDevice2 * This);
4380
4381 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
4382 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
4383 ID3D12VideoDevice2 * This,
4384 D3D12_FEATURE_VIDEO FeatureVideo,
4385 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
4386 UINT FeatureSupportDataSize);
4387
4388 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
4389 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
4390 ID3D12VideoDevice2 * This,
4391 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4392 _In_ REFIID riid,
4393 _COM_Outptr_ void **ppVideoDecoder);
4394
4395 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
4396 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
4397 ID3D12VideoDevice2 * This,
4398 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4399 _In_ REFIID riid,
4400 _COM_Outptr_ void **ppVideoDecoderHeap);
4401
4402 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
4403 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
4404 ID3D12VideoDevice2 * This,
4405 UINT NodeMask,
4406 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4407 UINT NumInputStreamDescs,
4408 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4409 _In_ REFIID riid,
4410 _COM_Outptr_ void **ppVideoProcessor);
4411
4412 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
4413 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
4414 ID3D12VideoDevice2 * This,
4415 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
4416 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4417 _In_ REFIID riid,
4418 _COM_Outptr_ void **ppVideoMotionEstimator);
4419
4420 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
4421 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
4422 ID3D12VideoDevice2 * This,
4423 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
4424 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4425 _In_ REFIID riid,
4426 _COM_Outptr_ void **ppVideoMotionVectorHeap);
4427
4428 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
4429 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
4430 ID3D12VideoDevice2 * This,
4431 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4432 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4433 _In_ REFIID riid,
4434 _COM_Outptr_ void **ppVideoDecoder);
4435
4436 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
4437 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
4438 ID3D12VideoDevice2 * This,
4439 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4440 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4441 _In_ REFIID riid,
4442 _COM_Outptr_ void **ppVideoDecoderHeap);
4443
4444 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
4445 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
4446 ID3D12VideoDevice2 * This,
4447 UINT NodeMask,
4448 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4449 UINT NumInputStreamDescs,
4450 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4451 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4452 _In_ REFIID riid,
4453 _COM_Outptr_ void **ppVideoProcessor);
4454
4455 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
4456 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
4457 ID3D12VideoDevice2 * This,
4458 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4459 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4460 SIZE_T CreationParametersDataSizeInBytes,
4461 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4462 _In_ REFIID riid,
4463 _COM_Outptr_ void **ppVideoExtensionCommand);
4464
4465 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
4466 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4467 ID3D12VideoDevice2 * This,
4468 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4469 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4470 SIZE_T ExecutionParametersSizeInBytes,
4471 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4472 SIZE_T OutputDataSizeInBytes);
4473
4474 END_INTERFACE
4475 } ID3D12VideoDevice2Vtbl;
4476
4477 interface ID3D12VideoDevice2
4478 {
4479 CONST_VTBL struct ID3D12VideoDevice2Vtbl *lpVtbl;
4480 };
4481
4482
4483
4484#ifdef COBJMACROS
4485
4486
4487#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) \
4488 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4489
4490#define ID3D12VideoDevice2_AddRef(This) \
4491 ( (This)->lpVtbl -> AddRef(This) )
4492
4493#define ID3D12VideoDevice2_Release(This) \
4494 ( (This)->lpVtbl -> Release(This) )
4495
4496
4497#define ID3D12VideoDevice2_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
4498 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
4499
4500#define ID3D12VideoDevice2_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
4501 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
4502
4503#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
4504 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
4505
4506#define ID3D12VideoDevice2_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
4507 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
4508
4509
4510#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
4511 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
4512
4513#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
4514 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
4515
4516
4517#define ID3D12VideoDevice2_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
4518 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
4519
4520#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
4521 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
4522
4523#define ID3D12VideoDevice2_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
4524 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
4525
4526#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
4527 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
4528
4529#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
4530 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
4531
4532#endif /* COBJMACROS */
4533
4534
4535#endif /* C style interface */
4536
4537
4538
4539
4540#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
4541
4542
4543#ifndef __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4544#define __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4545
4546/* interface ID3D12VideoDecodeCommandList2 */
4547/* [unique][local][object][uuid] */
4548
4549
4550EXTERN_C const IID IID_ID3D12VideoDecodeCommandList2;
4551
4552#if defined(__cplusplus) && !defined(CINTERFACE)
4553
4554 MIDL_INTERFACE("6e120880-c114-4153-8036-d247051e1729")
4555 ID3D12VideoDecodeCommandList2 : public ID3D12VideoDecodeCommandList1
4556 {
4557 public:
4558 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4559 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4560
4561 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4562 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4563 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4564 SIZE_T InitializationParametersSizeInBytes) = 0;
4565
4566 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4567 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4568 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4569 SIZE_T ExecutionParametersSizeInBytes) = 0;
4570
4571 };
4572
4573
4574#else /* C style interface */
4575
4576 typedef struct ID3D12VideoDecodeCommandList2Vtbl
4577 {
4578 BEGIN_INTERFACE
4579
4580 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4581 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4582 ID3D12VideoDecodeCommandList2 * This,
4583 REFIID riid,
4584 _COM_Outptr_ void **ppvObject);
4585
4586 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4587 ULONG ( STDMETHODCALLTYPE *AddRef )(
4588 ID3D12VideoDecodeCommandList2 * This);
4589
4590 DECLSPEC_XFGVIRT(IUnknown, Release)
4591 ULONG ( STDMETHODCALLTYPE *Release )(
4592 ID3D12VideoDecodeCommandList2 * This);
4593
4594 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4595 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4596 ID3D12VideoDecodeCommandList2 * This,
4597 _In_ REFGUID guid,
4598 _Inout_ UINT *pDataSize,
4599 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4600
4601 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4602 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4603 ID3D12VideoDecodeCommandList2 * This,
4604 _In_ REFGUID guid,
4605 _In_ UINT DataSize,
4606 _In_reads_bytes_opt_( DataSize ) const void *pData);
4607
4608 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4609 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4610 ID3D12VideoDecodeCommandList2 * This,
4611 _In_ REFGUID guid,
4612 _In_opt_ const IUnknown *pData);
4613
4614 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4615 HRESULT ( STDMETHODCALLTYPE *SetName )(
4616 ID3D12VideoDecodeCommandList2 * This,
4617 _In_z_ LPCWSTR Name);
4618
4619 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4620 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4621 ID3D12VideoDecodeCommandList2 * This,
4622 REFIID riid,
4623 _COM_Outptr_opt_ void **ppvDevice);
4624
4625 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4626 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4627 ID3D12VideoDecodeCommandList2 * This);
4628
4629 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
4630 HRESULT ( STDMETHODCALLTYPE *Close )(
4631 ID3D12VideoDecodeCommandList2 * This);
4632
4633 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
4634 HRESULT ( STDMETHODCALLTYPE *Reset )(
4635 ID3D12VideoDecodeCommandList2 * This,
4636 _In_ ID3D12CommandAllocator *pAllocator);
4637
4638 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
4639 void ( STDMETHODCALLTYPE *ClearState )(
4640 ID3D12VideoDecodeCommandList2 * This);
4641
4642 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
4643 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4644 ID3D12VideoDecodeCommandList2 * This,
4645 _In_ UINT NumBarriers,
4646 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4647
4648 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
4649 void ( STDMETHODCALLTYPE *DiscardResource )(
4650 ID3D12VideoDecodeCommandList2 * This,
4651 _In_ ID3D12Resource *pResource,
4652 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4653
4654 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
4655 void ( STDMETHODCALLTYPE *BeginQuery )(
4656 ID3D12VideoDecodeCommandList2 * This,
4657 _In_ ID3D12QueryHeap *pQueryHeap,
4658 _In_ D3D12_QUERY_TYPE Type,
4659 _In_ UINT Index);
4660
4661 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
4662 void ( STDMETHODCALLTYPE *EndQuery )(
4663 ID3D12VideoDecodeCommandList2 * This,
4664 _In_ ID3D12QueryHeap *pQueryHeap,
4665 _In_ D3D12_QUERY_TYPE Type,
4666 _In_ UINT Index);
4667
4668 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
4669 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4670 ID3D12VideoDecodeCommandList2 * This,
4671 _In_ ID3D12QueryHeap *pQueryHeap,
4672 _In_ D3D12_QUERY_TYPE Type,
4673 _In_ UINT StartIndex,
4674 _In_ UINT NumQueries,
4675 _In_ ID3D12Resource *pDestinationBuffer,
4676 _In_ UINT64 AlignedDestinationBufferOffset);
4677
4678 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
4679 void ( STDMETHODCALLTYPE *SetPredication )(
4680 ID3D12VideoDecodeCommandList2 * This,
4681 _In_opt_ ID3D12Resource *pBuffer,
4682 _In_ UINT64 AlignedBufferOffset,
4683 _In_ D3D12_PREDICATION_OP Operation);
4684
4685 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
4686 void ( STDMETHODCALLTYPE *SetMarker )(
4687 ID3D12VideoDecodeCommandList2 * This,
4688 UINT Metadata,
4689 _In_reads_bytes_opt_(Size) const void *pData,
4690 UINT Size);
4691
4692 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
4693 void ( STDMETHODCALLTYPE *BeginEvent )(
4694 ID3D12VideoDecodeCommandList2 * This,
4695 UINT Metadata,
4696 _In_reads_bytes_opt_(Size) const void *pData,
4697 UINT Size);
4698
4699 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
4700 void ( STDMETHODCALLTYPE *EndEvent )(
4701 ID3D12VideoDecodeCommandList2 * This);
4702
4703 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
4704 void ( STDMETHODCALLTYPE *DecodeFrame )(
4705 ID3D12VideoDecodeCommandList2 * This,
4706 _In_ ID3D12VideoDecoder *pDecoder,
4707 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
4708 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4709
4710 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
4711 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
4712 ID3D12VideoDecodeCommandList2 * This,
4713 UINT Count,
4714 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
4715 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
4716
4717 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
4718 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
4719 ID3D12VideoDecodeCommandList2 * This,
4720 _In_ ID3D12VideoDecoder *pDecoder,
4721 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
4722 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4723
4724 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
4725 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
4726 ID3D12VideoDecodeCommandList2 * This,
4727 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
4728
4729 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
4730 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
4731 ID3D12VideoDecodeCommandList2 * This,
4732 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4733 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4734 SIZE_T InitializationParametersSizeInBytes);
4735
4736 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
4737 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4738 ID3D12VideoDecodeCommandList2 * This,
4739 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4740 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4741 SIZE_T ExecutionParametersSizeInBytes);
4742
4743 END_INTERFACE
4744 } ID3D12VideoDecodeCommandList2Vtbl;
4745
4746 interface ID3D12VideoDecodeCommandList2
4747 {
4748 CONST_VTBL struct ID3D12VideoDecodeCommandList2Vtbl *lpVtbl;
4749 };
4750
4751
4752
4753#ifdef COBJMACROS
4754
4755
4756#define ID3D12VideoDecodeCommandList2_QueryInterface(This,riid,ppvObject) \
4757 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4758
4759#define ID3D12VideoDecodeCommandList2_AddRef(This) \
4760 ( (This)->lpVtbl -> AddRef(This) )
4761
4762#define ID3D12VideoDecodeCommandList2_Release(This) \
4763 ( (This)->lpVtbl -> Release(This) )
4764
4765
4766#define ID3D12VideoDecodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
4767 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4768
4769#define ID3D12VideoDecodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
4770 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4771
4772#define ID3D12VideoDecodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
4773 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4774
4775#define ID3D12VideoDecodeCommandList2_SetName(This,Name) \
4776 ( (This)->lpVtbl -> SetName(This,Name) )
4777
4778
4779#define ID3D12VideoDecodeCommandList2_GetDevice(This,riid,ppvDevice) \
4780 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4781
4782
4783#define ID3D12VideoDecodeCommandList2_GetType(This) \
4784 ( (This)->lpVtbl -> GetType(This) )
4785
4786
4787#define ID3D12VideoDecodeCommandList2_Close(This) \
4788 ( (This)->lpVtbl -> Close(This) )
4789
4790#define ID3D12VideoDecodeCommandList2_Reset(This,pAllocator) \
4791 ( (This)->lpVtbl -> Reset(This,pAllocator) )
4792
4793#define ID3D12VideoDecodeCommandList2_ClearState(This) \
4794 ( (This)->lpVtbl -> ClearState(This) )
4795
4796#define ID3D12VideoDecodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
4797 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
4798
4799#define ID3D12VideoDecodeCommandList2_DiscardResource(This,pResource,pRegion) \
4800 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
4801
4802#define ID3D12VideoDecodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
4803 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
4804
4805#define ID3D12VideoDecodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
4806 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
4807
4808#define ID3D12VideoDecodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
4809 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
4810
4811#define ID3D12VideoDecodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
4812 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
4813
4814#define ID3D12VideoDecodeCommandList2_SetMarker(This,Metadata,pData,Size) \
4815 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
4816
4817#define ID3D12VideoDecodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
4818 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
4819
4820#define ID3D12VideoDecodeCommandList2_EndEvent(This) \
4821 ( (This)->lpVtbl -> EndEvent(This) )
4822
4823#define ID3D12VideoDecodeCommandList2_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
4824 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
4825
4826#define ID3D12VideoDecodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
4827 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
4828
4829
4830#define ID3D12VideoDecodeCommandList2_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
4831 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
4832
4833
4834#define ID3D12VideoDecodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
4835 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
4836
4837#define ID3D12VideoDecodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
4838 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
4839
4840#define ID3D12VideoDecodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
4841 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
4842
4843#endif /* COBJMACROS */
4844
4845
4846#endif /* C style interface */
4847
4848
4849
4850
4851#endif /* __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__ */
4852
4853
4854#ifndef __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
4855#define __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
4856
4857/* interface ID3D12VideoProcessCommandList2 */
4858/* [unique][local][object][uuid] */
4859
4860
4861EXTERN_C const IID IID_ID3D12VideoProcessCommandList2;
4862
4863#if defined(__cplusplus) && !defined(CINTERFACE)
4864
4865 MIDL_INTERFACE("db525ae4-6ad6-473c-baa7-59b2e37082e4")
4866 ID3D12VideoProcessCommandList2 : public ID3D12VideoProcessCommandList1
4867 {
4868 public:
4869 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4870 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4871
4872 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4873 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4874 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4875 SIZE_T InitializationParametersSizeInBytes) = 0;
4876
4877 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4878 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4879 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4880 SIZE_T ExecutionParametersSizeInBytes) = 0;
4881
4882 };
4883
4884
4885#else /* C style interface */
4886
4887 typedef struct ID3D12VideoProcessCommandList2Vtbl
4888 {
4889 BEGIN_INTERFACE
4890
4891 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4892 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4893 ID3D12VideoProcessCommandList2 * This,
4894 REFIID riid,
4895 _COM_Outptr_ void **ppvObject);
4896
4897 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4898 ULONG ( STDMETHODCALLTYPE *AddRef )(
4899 ID3D12VideoProcessCommandList2 * This);
4900
4901 DECLSPEC_XFGVIRT(IUnknown, Release)
4902 ULONG ( STDMETHODCALLTYPE *Release )(
4903 ID3D12VideoProcessCommandList2 * This);
4904
4905 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4906 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4907 ID3D12VideoProcessCommandList2 * This,
4908 _In_ REFGUID guid,
4909 _Inout_ UINT *pDataSize,
4910 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4911
4912 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4913 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4914 ID3D12VideoProcessCommandList2 * This,
4915 _In_ REFGUID guid,
4916 _In_ UINT DataSize,
4917 _In_reads_bytes_opt_( DataSize ) const void *pData);
4918
4919 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4920 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4921 ID3D12VideoProcessCommandList2 * This,
4922 _In_ REFGUID guid,
4923 _In_opt_ const IUnknown *pData);
4924
4925 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4926 HRESULT ( STDMETHODCALLTYPE *SetName )(
4927 ID3D12VideoProcessCommandList2 * This,
4928 _In_z_ LPCWSTR Name);
4929
4930 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4931 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4932 ID3D12VideoProcessCommandList2 * This,
4933 REFIID riid,
4934 _COM_Outptr_opt_ void **ppvDevice);
4935
4936 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4937 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4938 ID3D12VideoProcessCommandList2 * This);
4939
4940 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
4941 HRESULT ( STDMETHODCALLTYPE *Close )(
4942 ID3D12VideoProcessCommandList2 * This);
4943
4944 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
4945 HRESULT ( STDMETHODCALLTYPE *Reset )(
4946 ID3D12VideoProcessCommandList2 * This,
4947 _In_ ID3D12CommandAllocator *pAllocator);
4948
4949 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
4950 void ( STDMETHODCALLTYPE *ClearState )(
4951 ID3D12VideoProcessCommandList2 * This);
4952
4953 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
4954 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4955 ID3D12VideoProcessCommandList2 * This,
4956 _In_ UINT NumBarriers,
4957 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4958
4959 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
4960 void ( STDMETHODCALLTYPE *DiscardResource )(
4961 ID3D12VideoProcessCommandList2 * This,
4962 _In_ ID3D12Resource *pResource,
4963 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4964
4965 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
4966 void ( STDMETHODCALLTYPE *BeginQuery )(
4967 ID3D12VideoProcessCommandList2 * This,
4968 _In_ ID3D12QueryHeap *pQueryHeap,
4969 _In_ D3D12_QUERY_TYPE Type,
4970 _In_ UINT Index);
4971
4972 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
4973 void ( STDMETHODCALLTYPE *EndQuery )(
4974 ID3D12VideoProcessCommandList2 * This,
4975 _In_ ID3D12QueryHeap *pQueryHeap,
4976 _In_ D3D12_QUERY_TYPE Type,
4977 _In_ UINT Index);
4978
4979 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
4980 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4981 ID3D12VideoProcessCommandList2 * This,
4982 _In_ ID3D12QueryHeap *pQueryHeap,
4983 _In_ D3D12_QUERY_TYPE Type,
4984 _In_ UINT StartIndex,
4985 _In_ UINT NumQueries,
4986 _In_ ID3D12Resource *pDestinationBuffer,
4987 _In_ UINT64 AlignedDestinationBufferOffset);
4988
4989 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
4990 void ( STDMETHODCALLTYPE *SetPredication )(
4991 ID3D12VideoProcessCommandList2 * This,
4992 _In_opt_ ID3D12Resource *pBuffer,
4993 _In_ UINT64 AlignedBufferOffset,
4994 _In_ D3D12_PREDICATION_OP Operation);
4995
4996 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
4997 void ( STDMETHODCALLTYPE *SetMarker )(
4998 ID3D12VideoProcessCommandList2 * This,
4999 UINT Metadata,
5000 _In_reads_bytes_opt_(Size) const void *pData,
5001 UINT Size);
5002
5003 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5004 void ( STDMETHODCALLTYPE *BeginEvent )(
5005 ID3D12VideoProcessCommandList2 * This,
5006 UINT Metadata,
5007 _In_reads_bytes_opt_(Size) const void *pData,
5008 UINT Size);
5009
5010 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5011 void ( STDMETHODCALLTYPE *EndEvent )(
5012 ID3D12VideoProcessCommandList2 * This);
5013
5014 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5015 void ( STDMETHODCALLTYPE *ProcessFrames )(
5016 ID3D12VideoProcessCommandList2 * This,
5017 _In_ ID3D12VideoProcessor *pVideoProcessor,
5018 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5019 UINT NumInputStreams,
5020 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5021
5022 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5023 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5024 ID3D12VideoProcessCommandList2 * This,
5025 UINT Count,
5026 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5027 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5028
5029 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5030 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5031 ID3D12VideoProcessCommandList2 * This,
5032 _In_ ID3D12VideoProcessor *pVideoProcessor,
5033 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5034 UINT NumInputStreams,
5035 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5036
5037 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5038 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5039 ID3D12VideoProcessCommandList2 * This,
5040 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5041
5042 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5043 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5044 ID3D12VideoProcessCommandList2 * This,
5045 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5046 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5047 SIZE_T InitializationParametersSizeInBytes);
5048
5049 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5050 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5051 ID3D12VideoProcessCommandList2 * This,
5052 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5053 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5054 SIZE_T ExecutionParametersSizeInBytes);
5055
5056 END_INTERFACE
5057 } ID3D12VideoProcessCommandList2Vtbl;
5058
5059 interface ID3D12VideoProcessCommandList2
5060 {
5061 CONST_VTBL struct ID3D12VideoProcessCommandList2Vtbl *lpVtbl;
5062 };
5063
5064
5065
5066#ifdef COBJMACROS
5067
5068
5069#define ID3D12VideoProcessCommandList2_QueryInterface(This,riid,ppvObject) \
5070 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5071
5072#define ID3D12VideoProcessCommandList2_AddRef(This) \
5073 ( (This)->lpVtbl -> AddRef(This) )
5074
5075#define ID3D12VideoProcessCommandList2_Release(This) \
5076 ( (This)->lpVtbl -> Release(This) )
5077
5078
5079#define ID3D12VideoProcessCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
5080 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5081
5082#define ID3D12VideoProcessCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5083 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5084
5085#define ID3D12VideoProcessCommandList2_SetPrivateDataInterface(This,guid,pData) \
5086 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5087
5088#define ID3D12VideoProcessCommandList2_SetName(This,Name) \
5089 ( (This)->lpVtbl -> SetName(This,Name) )
5090
5091
5092#define ID3D12VideoProcessCommandList2_GetDevice(This,riid,ppvDevice) \
5093 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5094
5095
5096#define ID3D12VideoProcessCommandList2_GetType(This) \
5097 ( (This)->lpVtbl -> GetType(This) )
5098
5099
5100#define ID3D12VideoProcessCommandList2_Close(This) \
5101 ( (This)->lpVtbl -> Close(This) )
5102
5103#define ID3D12VideoProcessCommandList2_Reset(This,pAllocator) \
5104 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5105
5106#define ID3D12VideoProcessCommandList2_ClearState(This) \
5107 ( (This)->lpVtbl -> ClearState(This) )
5108
5109#define ID3D12VideoProcessCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5110 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5111
5112#define ID3D12VideoProcessCommandList2_DiscardResource(This,pResource,pRegion) \
5113 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5114
5115#define ID3D12VideoProcessCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5116 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5117
5118#define ID3D12VideoProcessCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5119 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5120
5121#define ID3D12VideoProcessCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5122 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5123
5124#define ID3D12VideoProcessCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5125 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5126
5127#define ID3D12VideoProcessCommandList2_SetMarker(This,Metadata,pData,Size) \
5128 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5129
5130#define ID3D12VideoProcessCommandList2_BeginEvent(This,Metadata,pData,Size) \
5131 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5132
5133#define ID3D12VideoProcessCommandList2_EndEvent(This) \
5134 ( (This)->lpVtbl -> EndEvent(This) )
5135
5136#define ID3D12VideoProcessCommandList2_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5137 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5138
5139#define ID3D12VideoProcessCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5140 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5141
5142
5143#define ID3D12VideoProcessCommandList2_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5144 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5145
5146
5147#define ID3D12VideoProcessCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5148 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5149
5150#define ID3D12VideoProcessCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5151 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5152
5153#define ID3D12VideoProcessCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5154 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5155
5156#endif /* COBJMACROS */
5157
5158
5159#endif /* C style interface */
5160
5161
5162
5163
5164#endif /* __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__ */
5165
5166
5167#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
5168#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
5169
5170/* interface ID3D12VideoEncodeCommandList1 */
5171/* [unique][local][object][uuid] */
5172
5173
5174EXTERN_C const IID IID_ID3D12VideoEncodeCommandList1;
5175
5176#if defined(__cplusplus) && !defined(CINTERFACE)
5177
5178 MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
5179 ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
5180 {
5181 public:
5182 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
5183 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5184 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5185 SIZE_T InitializationParametersSizeInBytes) = 0;
5186
5187 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
5188 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5189 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5190 SIZE_T ExecutionParametersSizeInBytes) = 0;
5191
5192 };
5193
5194
5195#else /* C style interface */
5196
5197 typedef struct ID3D12VideoEncodeCommandList1Vtbl
5198 {
5199 BEGIN_INTERFACE
5200
5201 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5202 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5203 ID3D12VideoEncodeCommandList1 * This,
5204 REFIID riid,
5205 _COM_Outptr_ void **ppvObject);
5206
5207 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5208 ULONG ( STDMETHODCALLTYPE *AddRef )(
5209 ID3D12VideoEncodeCommandList1 * This);
5210
5211 DECLSPEC_XFGVIRT(IUnknown, Release)
5212 ULONG ( STDMETHODCALLTYPE *Release )(
5213 ID3D12VideoEncodeCommandList1 * This);
5214
5215 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5216 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5217 ID3D12VideoEncodeCommandList1 * This,
5218 _In_ REFGUID guid,
5219 _Inout_ UINT *pDataSize,
5220 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5221
5222 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5223 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5224 ID3D12VideoEncodeCommandList1 * This,
5225 _In_ REFGUID guid,
5226 _In_ UINT DataSize,
5227 _In_reads_bytes_opt_( DataSize ) const void *pData);
5228
5229 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5230 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5231 ID3D12VideoEncodeCommandList1 * This,
5232 _In_ REFGUID guid,
5233 _In_opt_ const IUnknown *pData);
5234
5235 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5236 HRESULT ( STDMETHODCALLTYPE *SetName )(
5237 ID3D12VideoEncodeCommandList1 * This,
5238 _In_z_ LPCWSTR Name);
5239
5240 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5241 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5242 ID3D12VideoEncodeCommandList1 * This,
5243 REFIID riid,
5244 _COM_Outptr_opt_ void **ppvDevice);
5245
5246 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5247 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5248 ID3D12VideoEncodeCommandList1 * This);
5249
5250 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
5251 HRESULT ( STDMETHODCALLTYPE *Close )(
5252 ID3D12VideoEncodeCommandList1 * This);
5253
5254 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
5255 HRESULT ( STDMETHODCALLTYPE *Reset )(
5256 ID3D12VideoEncodeCommandList1 * This,
5257 _In_ ID3D12CommandAllocator *pAllocator);
5258
5259 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
5260 void ( STDMETHODCALLTYPE *ClearState )(
5261 ID3D12VideoEncodeCommandList1 * This);
5262
5263 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
5264 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5265 ID3D12VideoEncodeCommandList1 * This,
5266 _In_ UINT NumBarriers,
5267 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5268
5269 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
5270 void ( STDMETHODCALLTYPE *DiscardResource )(
5271 ID3D12VideoEncodeCommandList1 * This,
5272 _In_ ID3D12Resource *pResource,
5273 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5274
5275 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
5276 void ( STDMETHODCALLTYPE *BeginQuery )(
5277 ID3D12VideoEncodeCommandList1 * This,
5278 _In_ ID3D12QueryHeap *pQueryHeap,
5279 _In_ D3D12_QUERY_TYPE Type,
5280 _In_ UINT Index);
5281
5282 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
5283 void ( STDMETHODCALLTYPE *EndQuery )(
5284 ID3D12VideoEncodeCommandList1 * This,
5285 _In_ ID3D12QueryHeap *pQueryHeap,
5286 _In_ D3D12_QUERY_TYPE Type,
5287 _In_ UINT Index);
5288
5289 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
5290 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5291 ID3D12VideoEncodeCommandList1 * This,
5292 _In_ ID3D12QueryHeap *pQueryHeap,
5293 _In_ D3D12_QUERY_TYPE Type,
5294 _In_ UINT StartIndex,
5295 _In_ UINT NumQueries,
5296 _In_ ID3D12Resource *pDestinationBuffer,
5297 _In_ UINT64 AlignedDestinationBufferOffset);
5298
5299 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
5300 void ( STDMETHODCALLTYPE *SetPredication )(
5301 ID3D12VideoEncodeCommandList1 * This,
5302 _In_opt_ ID3D12Resource *pBuffer,
5303 _In_ UINT64 AlignedBufferOffset,
5304 _In_ D3D12_PREDICATION_OP Operation);
5305
5306 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
5307 void ( STDMETHODCALLTYPE *SetMarker )(
5308 ID3D12VideoEncodeCommandList1 * This,
5309 UINT Metadata,
5310 _In_reads_bytes_opt_(Size) const void *pData,
5311 UINT Size);
5312
5313 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
5314 void ( STDMETHODCALLTYPE *BeginEvent )(
5315 ID3D12VideoEncodeCommandList1 * This,
5316 UINT Metadata,
5317 _In_reads_bytes_opt_(Size) const void *pData,
5318 UINT Size);
5319
5320 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
5321 void ( STDMETHODCALLTYPE *EndEvent )(
5322 ID3D12VideoEncodeCommandList1 * This);
5323
5324 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
5325 void ( STDMETHODCALLTYPE *EstimateMotion )(
5326 ID3D12VideoEncodeCommandList1 * This,
5327 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
5328 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
5329 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
5330
5331 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
5332 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
5333 ID3D12VideoEncodeCommandList1 * This,
5334 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
5335 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
5336
5337 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
5338 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5339 ID3D12VideoEncodeCommandList1 * This,
5340 UINT Count,
5341 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5342 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5343
5344 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
5345 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5346 ID3D12VideoEncodeCommandList1 * This,
5347 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5348
5349 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
5350 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5351 ID3D12VideoEncodeCommandList1 * This,
5352 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5353 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5354 SIZE_T InitializationParametersSizeInBytes);
5355
5356 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
5357 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5358 ID3D12VideoEncodeCommandList1 * This,
5359 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5360 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5361 SIZE_T ExecutionParametersSizeInBytes);
5362
5363 END_INTERFACE
5364 } ID3D12VideoEncodeCommandList1Vtbl;
5365
5366 interface ID3D12VideoEncodeCommandList1
5367 {
5368 CONST_VTBL struct ID3D12VideoEncodeCommandList1Vtbl *lpVtbl;
5369 };
5370
5371
5372
5373#ifdef COBJMACROS
5374
5375
5376#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) \
5377 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5378
5379#define ID3D12VideoEncodeCommandList1_AddRef(This) \
5380 ( (This)->lpVtbl -> AddRef(This) )
5381
5382#define ID3D12VideoEncodeCommandList1_Release(This) \
5383 ( (This)->lpVtbl -> Release(This) )
5384
5385
5386#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
5387 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5388
5389#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
5390 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5391
5392#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
5393 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5394
5395#define ID3D12VideoEncodeCommandList1_SetName(This,Name) \
5396 ( (This)->lpVtbl -> SetName(This,Name) )
5397
5398
5399#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,ppvDevice) \
5400 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5401
5402
5403#define ID3D12VideoEncodeCommandList1_GetType(This) \
5404 ( (This)->lpVtbl -> GetType(This) )
5405
5406
5407#define ID3D12VideoEncodeCommandList1_Close(This) \
5408 ( (This)->lpVtbl -> Close(This) )
5409
5410#define ID3D12VideoEncodeCommandList1_Reset(This,pAllocator) \
5411 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5412
5413#define ID3D12VideoEncodeCommandList1_ClearState(This) \
5414 ( (This)->lpVtbl -> ClearState(This) )
5415
5416#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
5417 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5418
5419#define ID3D12VideoEncodeCommandList1_DiscardResource(This,pResource,pRegion) \
5420 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5421
5422#define ID3D12VideoEncodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
5423 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5424
5425#define ID3D12VideoEncodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
5426 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5427
5428#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5429 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5430
5431#define ID3D12VideoEncodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5432 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5433
5434#define ID3D12VideoEncodeCommandList1_SetMarker(This,Metadata,pData,Size) \
5435 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5436
5437#define ID3D12VideoEncodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
5438 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5439
5440#define ID3D12VideoEncodeCommandList1_EndEvent(This) \
5441 ( (This)->lpVtbl -> EndEvent(This) )
5442
5443#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
5444 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
5445
5446#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
5447 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
5448
5449#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
5450 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5451
5452#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,pProtectedResourceSession) \
5453 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5454
5455
5456#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5457 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5458
5459#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5460 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5461
5462#endif /* COBJMACROS */
5463
5464
5465#endif /* C style interface */
5466
5467
5468
5469
5470#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
5471
5472
5473/* interface __MIDL_itf_d3d12video_0000_0020 */
5474/* [local] */
5475
5476DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
5477DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
5478DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
5479DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
5480DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
5481DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
5482DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
5483DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
5484DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
5485DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
5486DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
5487DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
5488DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
5489DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
5490DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
5491DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
5492DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
5493DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
5494DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
5495DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
5496#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
5497#pragma endregion
5498DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
5499DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
5500DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
5501DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
5502DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
5503DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
5504DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
5505DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
5506DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
5507DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
5508DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
5509DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
5510DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
5511DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
5512DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
5513DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
5514DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
5515DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
5516DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
5517DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
5518
5519
5520extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0020_v0_0_c_ifspec;
5521extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0020_v0_0_s_ifspec;
5522
5523/* Additional Prototypes for ALL interfaces */
5524
5525/* end of Additional Prototypes */
5526
5527#ifdef __cplusplus
5528}
5529#endif
5530
5531#endif
5532
5533
diff --git a/contrib/DirectX-Headers/include/directx/d3d12video.idl b/contrib/DirectX-Headers/include/directx/d3d12video.idl
new file mode 100644
index 0000000..a4d8945
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12video.idl
@@ -0,0 +1,1448 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18typedef enum D3D12_VIDEO_FIELD_TYPE
19{
20 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
21 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
22 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2,
23} D3D12_VIDEO_FIELD_TYPE;
24
25typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT
26{
27 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
28 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
29 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
30 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
31 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4,
32} D3D12_VIDEO_FRAME_STEREO_FORMAT;
33
34typedef struct D3D12_VIDEO_FORMAT
35{
36 DXGI_FORMAT Format;
37 DXGI_COLOR_SPACE_TYPE ColorSpace;
38} D3D12_VIDEO_FORMAT;
39
40typedef struct D3D12_VIDEO_SAMPLE
41{
42 UINT Width;
43 UINT Height;
44 D3D12_VIDEO_FORMAT Format;
45} D3D12_VIDEO_SAMPLE;
46
47typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
48{
49 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
50 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1,
51} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
52
53typedef enum D3D12_FEATURE_VIDEO
54{
55 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
56 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
57 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
58 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
59 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
60 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
61 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
62 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
63 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
64 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
65 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
66 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
67 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
68 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
69 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
70 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
71 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
72 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
73 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
74 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
75 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
76 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
77 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
78 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
79 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
80 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
81 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
82
83} D3D12_FEATURE_VIDEO;
84
85typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE
86{
87 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0,
88} D3D12_BITSTREAM_ENCRYPTION_TYPE;
89
90typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
91{
92 GUID DecodeProfile;
93 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
94 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
95} D3D12_VIDEO_DECODE_CONFIGURATION;
96
97typedef struct D3D12_VIDEO_DECODER_DESC
98{
99 UINT NodeMask;
100 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
101} D3D12_VIDEO_DECODER_DESC;
102
103typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
104{
105 UINT NodeMask;
106 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
107 UINT DecodeWidth;
108 UINT DecodeHeight;
109 DXGI_FORMAT Format;
110 DXGI_RATIONAL FrameRate;
111 UINT BitRate;
112 UINT MaxDecodePictureBufferCount;
113} D3D12_VIDEO_DECODER_HEAP_DESC;
114
115typedef struct D3D12_VIDEO_SIZE_RANGE
116{
117 UINT MaxWidth;
118 UINT MaxHeight;
119 UINT MinWidth;
120 UINT MinHeight;
121} D3D12_VIDEO_SIZE_RANGE;
122
123typedef enum D3D12_VIDEO_PROCESS_FILTER
124{
125 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
126 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
127 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
128 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
129 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
130 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
131 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
132 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7,
133} D3D12_VIDEO_PROCESS_FILTER;
134
135typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
136{
137 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
138 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS),
139 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST),
140 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE),
141 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION),
142 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION),
143 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT),
144 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING),
145 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT),
146
147} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
148cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS );")
149
150typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
151{
152 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
153 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
154 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000,
155
156} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
157cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );")
158
159typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
160{
161 BOOL Enable;
162 FLOAT Alpha;
163} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
164
165typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
166{
167 BOOL Enable;
168 FLOAT Lower;
169 FLOAT Upper;
170} D3D12_VIDEO_PROCESS_LUMA_KEY;
171
172typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
173{
174 DXGI_FORMAT Format;
175 DXGI_COLOR_SPACE_TYPE ColorSpace;
176 DXGI_RATIONAL SourceAspectRatio;
177 DXGI_RATIONAL DestinationAspectRatio;
178 DXGI_RATIONAL FrameRate;
179 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
180 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
181 BOOL EnableOrientation;
182 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
183 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
184 D3D12_VIDEO_FIELD_TYPE FieldType;
185 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
186 BOOL EnableAlphaBlending;
187 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
188 UINT NumPastFrames;
189 UINT NumFutureFrames;
190 BOOL EnableAutoProcessing;
191} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
192
193typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
194{
195 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
196 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
197 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
198 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
199} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
200
201typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
202{
203 DXGI_FORMAT Format;
204 DXGI_COLOR_SPACE_TYPE ColorSpace;
205 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
206 UINT AlphaFillModeSourceStreamIndex;
207 FLOAT BackgroundColor[4];
208 DXGI_RATIONAL FrameRate;
209 BOOL EnableStereo;
210} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
211
212[uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)]
213interface ID3D12VideoDecoderHeap
214 : ID3D12Pageable
215{
216 D3D12_VIDEO_DECODER_HEAP_DESC GetDesc();
217}
218
219[uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)]
220interface ID3D12VideoDevice
221 : IUnknown
222{
223 HRESULT CheckFeatureSupport(
224 D3D12_FEATURE_VIDEO FeatureVideo,
225 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
226 UINT FeatureSupportDataSize
227 );
228
229 HRESULT CreateVideoDecoder(
230 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
231 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder,
232 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
233 );
234
235 HRESULT CreateVideoDecoderHeap(
236 [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
237 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap,
238 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
239 );
240
241 HRESULT CreateVideoProcessor(
242 UINT NodeMask,
243 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
244 UINT NumInputStreamDescs,
245 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
246 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor,
247 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
248 );
249}
250
251[uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)]
252interface ID3D12VideoDecoder
253 : ID3D12Pageable
254{
255 D3D12_VIDEO_DECODER_DESC GetDesc();
256}
257
258typedef enum D3D12_VIDEO_DECODE_TIER
259{
260 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
261 D3D12_VIDEO_DECODE_TIER_1 = 1,
262 D3D12_VIDEO_DECODE_TIER_2 = 2,
263 D3D12_VIDEO_DECODE_TIER_3 = 3,
264} D3D12_VIDEO_DECODE_TIER;
265
266typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
267{
268 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
269 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1,
270
271} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
272cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS );")
273
274typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
275{
276 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0,
277 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
278 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
279 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
280 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8,
281
282} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
283cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS );")
284
285typedef enum D3D12_VIDEO_DECODE_STATUS
286{
287 D3D12_VIDEO_DECODE_STATUS_OK = 0,
288 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
289 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
290 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
291 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4,
292} D3D12_VIDEO_DECODE_STATUS;
293
294typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
295{
296 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
297 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
298 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
299 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_MAX_VALID = 3
300} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
301
302typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
303{
304 UINT NodeIndex; // input
305 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
306 UINT Width; // input
307 UINT Height; // input
308 DXGI_FORMAT DecodeFormat; // input
309 DXGI_RATIONAL FrameRate; // input
310 UINT BitRate; // input
311 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags; // output
312 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output
313 D3D12_VIDEO_DECODE_TIER DecodeTier; // output
314} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
315
316typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
317{
318 UINT NodeIndex; // input
319 UINT ProfileCount; // output
320} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
321
322typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
323{
324 UINT NodeIndex; // input
325 UINT ProfileCount; // input
326 [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles; // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport.
327} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
328
329typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
330{
331 UINT NodeIndex; // input
332 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
333 UINT FormatCount; // output
334} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
335
336typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
337{
338 UINT NodeIndex; // input
339 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
340 UINT FormatCount; // input
341 [annotation("_Field_size_full_(FormatCount)")] DXGI_FORMAT *pOutputFormats; // output. The list of supported video formats. The caller allocates storage for the format list before calling CheckFeatureSupport.
342} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
343
344typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
345{
346 BOOL IOCoherent;
347} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
348
349typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
350{
351 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
352 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
353 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
354
355 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
356 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
357 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
358
359 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3,
360} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
361
362typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
363{
364 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0,
365
366 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y),
367 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U),
368 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V),
369
370 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R),
371 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G),
372 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B),
373
374 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A),
375} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
376cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS );")
377
378typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
379{
380 UINT NodeIndex; // in
381 GUID DecodeProfile; // in
382 UINT Width; // in
383 UINT Height; // in
384 DXGI_FORMAT DecodeFormat; // in
385 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components; // out
386 UINT BinCount; // out
387 UINT CounterBitDepth; // out
388} D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
389
390typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
391{
392 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0,
393 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1,
394
395} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
396cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS );")
397
398typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
399{
400 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
401 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
402 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
403
404} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
405cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS );")
406
407typedef struct D3D12_VIDEO_SCALE_SUPPORT
408{
409 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
410 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
411} D3D12_VIDEO_SCALE_SUPPORT;
412
413typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
414{
415 UINT NodeIndex; // input
416 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
417 D3D12_VIDEO_SAMPLE DecodeSample; // input
418 D3D12_VIDEO_FORMAT OutputFormat; // input
419 DXGI_RATIONAL FrameRate; // input
420 UINT BitRate; // input
421 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags; // output
422 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
423} D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
424
425typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
426{
427 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
428 UINT64 MemoryPoolL0Size; // output
429 UINT64 MemoryPoolL1Size; // output
430} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
431
432typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
433{
434 UINT NodeMask;
435 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
436 UINT NumInputStreamDescs; // input
437 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
438 UINT64 MemoryPoolL0Size; // output
439 UINT64 MemoryPoolL1Size; // output
440} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
441
442typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
443{
444 UINT64 Status; // see D3D12_VIDEO_DECODE_STATUS
445 UINT64 NumMacroblocksAffected;
446 DXGI_RATIONAL FrameRate;
447 UINT BitRate;
448} D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
449
450typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
451{
452 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
453 UINT Size;
454 [annotation("_Field_size_bytes_full_(Size)")] void *pData;
455} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
456
457typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
458{
459 UINT NumTexture2Ds;
460 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
461 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
462 [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args.
463} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
464
465typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
466{
467 ID3D12Resource* pBuffer;
468 UINT64 Offset;
469 UINT64 Size;
470} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
471
472typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
473{
474 BOOL Enable;
475 ID3D12Resource* pReferenceTexture2D;
476 UINT ReferenceSubresource;
477 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
478 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
479} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
480
481typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
482{
483 UINT NumFrameArguments;
484 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS];
485 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
486 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
487 ID3D12VideoDecoderHeap *pHeap;
488} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
489
490typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
491{
492 ID3D12Resource* pOutputTexture2D;
493 UINT OutputSubresource;
494 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
495} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
496
497[uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)]
498interface ID3D12VideoProcessor
499 : ID3D12Pageable
500{
501 UINT GetNodeMask();
502 UINT GetNumInputStreamDescs();
503 HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
504 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc();
505}
506
507typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
508{
509 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
510 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
511 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
512 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
513 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
514 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
515 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
516 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40,
517
518} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
519cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS );")
520
521typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
522{
523 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
524 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01,
525 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02,
526 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04,
527 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08,
528 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
529 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
530 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
531 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
532 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000,
533
534} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
535cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS );")
536
537typedef enum D3D12_VIDEO_PROCESS_ORIENTATION
538{
539 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
540 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
541 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
542 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
543 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
544 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
545 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
546 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7,
547} D3D12_VIDEO_PROCESS_ORIENTATION;
548
549typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
550{
551 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
552 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
553 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2,
554
555} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
556cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS );")
557
558typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
559{
560 INT Minimum;
561 INT Maximum;
562 INT Default;
563 FLOAT Multiplier;
564} D3D12_VIDEO_PROCESS_FILTER_RANGE;
565
566typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
567{
568 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
569 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1,
570
571} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
572cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS );")
573
574typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
575{
576 UINT NodeIndex; // input
577 D3D12_VIDEO_SAMPLE InputSample; // input
578 D3D12_VIDEO_FIELD_TYPE InputFieldType; // input
579 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat; // input
580 DXGI_RATIONAL InputFrameRate; // input
581 D3D12_VIDEO_FORMAT OutputFormat; // input
582 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat; // input
583 DXGI_RATIONAL OutputFrameRate; // input
584 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags; // output
585 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
586 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // output
587 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport; // output
588 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport; // output
589 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport; // output
590 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS]; // output
591} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
592
593typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
594{
595 UINT NodeIndex; // input
596 UINT MaxInputStreams; // output
597} D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
598
599typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
600{
601 UINT NodeIndex; // input
602 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode; // input
603 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters; // input
604 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // input
605 DXGI_RATIONAL InputFrameRate; // input
606 DXGI_RATIONAL OutputFrameRate; // input
607 BOOL EnableAutoProcessing; // input
608 UINT PastFrames; // output
609 UINT FutureFrames; // output
610} D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
611
612typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
613{
614 UINT NumPastFrames;
615 ID3D12Resource **ppPastFrames;
616 UINT *pPastSubresources;
617 UINT NumFutureFrames;
618 ID3D12Resource **ppFutureFrames;
619 UINT *pFutureSubresources;
620} D3D12_VIDEO_PROCESS_REFERENCE_SET;
621
622typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
623{
624 D3D12_RECT SourceRectangle;
625 D3D12_RECT DestinationRectangle;
626 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
627} D3D12_VIDEO_PROCESS_TRANSFORM;
628
629typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
630{
631 UINT OutputIndex;
632 UINT InputFrameOrField;
633} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
634
635typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
636{
637 ID3D12Resource *pTexture2D;
638 UINT Subresource;
639 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
640} D3D12_VIDEO_PROCESS_INPUT_STREAM;
641
642typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
643{
644 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
645 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
646 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
647 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
648 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
649 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
650} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
651
652typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
653{
654 ID3D12Resource* pTexture2D;
655 UINT Subresource;
656} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
657
658typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
659{
660 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
661 D3D12_RECT TargetRectangle;
662} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
663
664[uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)]
665interface ID3D12VideoDecodeCommandList
666 : ID3D12CommandList
667{
668 HRESULT Close();
669
670 HRESULT Reset(
671 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
672 );
673
674 void ClearState();
675
676 void ResourceBarrier(
677 [annotation("_In_")] UINT NumBarriers,
678 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
679 );
680
681 void DiscardResource(
682 [annotation("_In_")] ID3D12Resource* pResource,
683 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
684 );
685
686 void BeginQuery(
687 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
688 [annotation("_In_")] D3D12_QUERY_TYPE Type,
689 [annotation("_In_")] UINT Index
690 );
691
692 void EndQuery(
693 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
694 [annotation("_In_")] D3D12_QUERY_TYPE Type,
695 [annotation("_In_")] UINT Index
696 );
697
698 void ResolveQueryData(
699 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
700 [annotation("_In_")] D3D12_QUERY_TYPE Type,
701 [annotation("_In_")] UINT StartIndex,
702 [annotation("_In_")] UINT NumQueries,
703 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
704 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
705 );
706
707 void SetPredication(
708 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
709 [annotation("_In_")] UINT64 AlignedBufferOffset,
710 [annotation("_In_")] D3D12_PREDICATION_OP Operation
711 );
712
713 void SetMarker(
714 UINT Metadata,
715 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
716 UINT Size);
717
718 void BeginEvent(
719 UINT Metadata,
720 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
721 UINT Size);
722
723 void EndEvent();
724
725 void DecodeFrame(
726 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
727 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
728 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
729 );
730
731 void WriteBufferImmediate(
732 UINT Count,
733 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
734 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
735 );
736}
737
738[uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)]
739interface ID3D12VideoProcessCommandList
740 : ID3D12CommandList
741{
742 HRESULT Close();
743
744 HRESULT Reset(
745 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
746 );
747
748 void ClearState();
749
750 void ResourceBarrier(
751 [annotation("_In_")] UINT NumBarriers,
752 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
753 );
754
755 void DiscardResource(
756 [annotation("_In_")] ID3D12Resource* pResource,
757 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
758 );
759
760 void BeginQuery(
761 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
762 [annotation("_In_")] D3D12_QUERY_TYPE Type,
763 [annotation("_In_")] UINT Index
764 );
765
766 void EndQuery(
767 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
768 [annotation("_In_")] D3D12_QUERY_TYPE Type,
769 [annotation("_In_")] UINT Index
770 );
771
772 void ResolveQueryData(
773 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
774 [annotation("_In_")] D3D12_QUERY_TYPE Type,
775 [annotation("_In_")] UINT StartIndex,
776 [annotation("_In_")] UINT NumQueries,
777 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
778 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
779 );
780
781 void SetPredication(
782 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
783 [annotation("_In_")] UINT64 AlignedBufferOffset,
784 [annotation("_In_")] D3D12_PREDICATION_OP Operation
785 );
786
787 void SetMarker(
788 UINT Metadata,
789 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
790 UINT Size);
791
792 void BeginEvent(
793 UINT Metadata,
794 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
795 UINT Size);
796
797 void EndEvent();
798
799 void ProcessFrames(
800 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
801 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
802 UINT NumInputStreams,
803 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments
804 );
805
806 void WriteBufferImmediate(
807 UINT Count,
808 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
809 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
810 );
811}
812
813typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
814{
815 UINT64 Offset;
816 ID3D12Resource* pBuffer;
817} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
818
819typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
820{
821 BOOL Enable;
822 ID3D12Resource* pReferenceTexture2D;
823 UINT ReferenceSubresource;
824 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
825 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
826 UINT OutputWidth;
827 UINT OutputHeight;
828} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
829
830typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
831{
832 ID3D12Resource* pOutputTexture2D;
833 UINT OutputSubresource;
834 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
835 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS];
836} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
837
838[uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)]
839interface ID3D12VideoDecodeCommandList1
840 : ID3D12VideoDecodeCommandList
841{
842 void DecodeFrame1(
843 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
844 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
845 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
846 );
847}
848
849typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
850{
851 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
852 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
853 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
854 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
855 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
856 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
857 D3D12_VIDEO_FIELD_TYPE FieldType;
858} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
859
860[uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)]
861interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList
862{
863 void ProcessFrames1(
864 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
865 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
866 UINT NumInputStreams,
867 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments
868 );
869}
870
871typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
872{
873 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
874 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1,
875} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
876
877typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
878{
879 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
880 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8),
881 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16),
882
883} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
884cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS );" )
885
886typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
887{
888 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0,
889} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
890
891typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
892{
893 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
894 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL),
895
896} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
897cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS );" )
898
899// D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT
900typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
901{
902 UINT NodeIndex; // input
903 BOOL VideoDecodeSupport; // output
904 BOOL VideoProcessSupport; // output
905 BOOL VideoEncodeSupport; // output
906} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
907
908// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR
909typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
910{
911 UINT NodeIndex; // input
912 DXGI_FORMAT InputFormat; // input
913 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags; // output
914 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags; // output
915 D3D12_VIDEO_SIZE_RANGE SizeRange; // output
916} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
917
918// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE
919typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
920{
921 UINT NodeIndex; // input
922 DXGI_FORMAT InputFormat; // input
923 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; // input
924 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; // input
925 D3D12_VIDEO_SIZE_RANGE SizeRange; // input
926 BOOL Protected; // input
927 UINT64 MotionVectorHeapMemoryPoolL0Size; // output
928 UINT64 MotionVectorHeapMemoryPoolL1Size; // output
929 UINT64 MotionEstimatorMemoryPoolL0Size; // output
930 UINT64 MotionEstimatorMemoryPoolL1Size; // output
931} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
932
933typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
934{
935 UINT NodeMask;
936 DXGI_FORMAT InputFormat;
937 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
938 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
939 D3D12_VIDEO_SIZE_RANGE SizeRange;
940
941} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
942
943[uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)]
944interface ID3D12VideoMotionEstimator
945 : ID3D12Pageable
946{
947 D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc();
948
949 HRESULT GetProtectedResourceSession(
950 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
951 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
952}
953
954typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
955{
956 UINT NodeMask;
957 DXGI_FORMAT InputFormat;
958 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
959 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
960 D3D12_VIDEO_SIZE_RANGE SizeRange;
961
962} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
963
964[uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)]
965interface ID3D12VideoMotionVectorHeap
966 : ID3D12Pageable
967{
968 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc();
969
970 HRESULT GetProtectedResourceSession(
971 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
972 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
973}
974
975[uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)]
976interface ID3D12VideoDevice1
977 : ID3D12VideoDevice
978{
979 HRESULT CreateVideoMotionEstimator(
980 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc,
981 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
982 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator,
983 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator
984 );
985
986 HRESULT CreateVideoMotionVectorHeap(
987 [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc,
988 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
989 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap,
990 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap
991 );
992}
993
994typedef struct D3D12_RESOURCE_COORDINATE
995{
996 // Coordinate values below index pixels.
997 UINT64 X; // Used for buffer, 1D, 2D, 3D
998 UINT Y; // Used for 2D, 3D
999 UINT Z; // Used for 3D
1000 UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D
1001} D3D12_RESOURCE_COORDINATE;
1002
1003typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
1004{
1005 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1006} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
1007
1008typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
1009{
1010 ID3D12Resource* pInputTexture2D;
1011 UINT InputSubresourceIndex;
1012 ID3D12Resource* pReferenceTexture2D;
1013 UINT ReferenceSubresourceIndex;
1014 ID3D12VideoMotionVectorHeap* pHintMotionVectorHeap;
1015} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
1016
1017typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
1018{
1019 ID3D12Resource* pMotionVectorTexture2D;
1020 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
1021} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
1022
1023typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
1024{
1025 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1026 UINT PixelWidth;
1027 UINT PixelHeight;
1028} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
1029
1030[uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)]
1031interface ID3D12VideoEncodeCommandList
1032 : ID3D12CommandList
1033{
1034 HRESULT Close();
1035
1036 HRESULT Reset(
1037 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
1038 );
1039
1040 void ClearState();
1041
1042 void ResourceBarrier(
1043 [annotation("_In_")] UINT NumBarriers,
1044 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
1045 );
1046
1047 void DiscardResource(
1048 [annotation("_In_")] ID3D12Resource* pResource,
1049 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
1050 );
1051
1052 void BeginQuery(
1053 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1054 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1055 [annotation("_In_")] UINT Index
1056 );
1057
1058 void EndQuery(
1059 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1060 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1061 [annotation("_In_")] UINT Index
1062 );
1063
1064 void ResolveQueryData(
1065 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1066 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1067 [annotation("_In_")] UINT StartIndex,
1068 [annotation("_In_")] UINT NumQueries,
1069 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
1070 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
1071 );
1072
1073 void SetPredication(
1074 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
1075 [annotation("_In_")] UINT64 AlignedBufferOffset,
1076 [annotation("_In_")] D3D12_PREDICATION_OP Operation
1077 );
1078
1079 void SetMarker(
1080 UINT Metadata,
1081 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1082 UINT Size);
1083
1084 void BeginEvent(
1085 UINT Metadata,
1086 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1087 UINT Size);
1088
1089 void EndEvent();
1090
1091 void EstimateMotion(
1092 [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator,
1093 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments,
1094 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments
1095 );
1096
1097 void ResolveMotionVectorHeap(
1098 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments,
1099 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments
1100 );
1101
1102 void WriteBufferImmediate(
1103 UINT Count,
1104 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1105 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
1106 );
1107
1108 void SetProtectedResourceSession(
1109 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1110 );
1111}
1112
1113typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
1114{
1115 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0x0,
1116 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1,
1117
1118} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
1119cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS );")
1120
1121// D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES
1122typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
1123{
1124 UINT NodeIndex; // input
1125 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
1126 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1127} D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
1128
1129// D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES
1130typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
1131{
1132 UINT NodeIndex; // input
1133 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1134} D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
1135
1136// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1137typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1138{
1139 UINT NodeIndex; // input
1140 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1141} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
1142
1143//D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1
1144typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
1145{
1146 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
1147 BOOL Protected; // input
1148 UINT64 MemoryPoolL0Size; // output
1149 UINT64 MemoryPoolL1Size; // output
1150} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
1151
1152// D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1
1153typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
1154{
1155 UINT NodeMask;
1156 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
1157 UINT NumInputStreamDescs; // input
1158 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
1159 BOOL Protected; // input
1160 UINT64 MemoryPoolL0Size; // output
1161 UINT64 MemoryPoolL1Size; // output
1162} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
1163
1164typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
1165{
1166 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
1167 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
1168 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
1169 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
1170 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
1171 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
1172 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6,
1173} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
1174
1175typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
1176{
1177 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
1178 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
1179 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
1180 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
1181 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
1182 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
1183 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
1184 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
1185 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
1186 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
1187 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10,
1188} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
1189
1190typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
1191{
1192 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000,
1193 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001,
1194 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002
1195} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
1196
1197cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS );")
1198
1199typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
1200{
1201 UINT NodeIndex; // in
1202 UINT CommandCount; // out
1203} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
1204
1205typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
1206{
1207 GUID CommandId;
1208 LPCWSTR Name;
1209 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
1210} D3D12_VIDEO_EXTENSION_COMMAND_INFO;
1211
1212typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
1213{
1214 UINT NodeIndex;
1215 UINT CommandCount;
1216 [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos;
1217} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
1218
1219typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
1220{
1221 GUID CommandId; // in
1222 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1223 UINT ParameterCount; // out
1224 UINT ParameterPacking; // out
1225} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
1226
1227typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
1228{
1229 LPCWSTR Name;
1230 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
1231 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
1232} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
1233
1234typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
1235{
1236 GUID CommandId; // in
1237 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1238 UINT ParameterCount; // in
1239 [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out
1240} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
1241
1242typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
1243{
1244 UINT NodeIndex;
1245 GUID CommandId;
1246 [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData;
1247 SIZE_T InputDataSizeInBytes;
1248 [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData;
1249 SIZE_T OutputDataSizeInBytes;
1250} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
1251
1252typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
1253{
1254 UINT NodeIndex;
1255 GUID CommandId;
1256 [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters;
1257 SIZE_T CreationParametersSizeInBytes;
1258 UINT64 MemoryPoolL0Size; // output
1259 UINT64 MemoryPoolL1Size; // output
1260} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
1261
1262typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
1263{
1264 UINT NodeMask;
1265 GUID CommandId;
1266} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
1267
1268[uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)]
1269interface ID3D12VideoDecoder1
1270 : ID3D12VideoDecoder
1271{
1272 HRESULT GetProtectedResourceSession(
1273 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1274 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1275}
1276
1277[uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)]
1278interface ID3D12VideoDecoderHeap1
1279 : ID3D12VideoDecoderHeap
1280{
1281 HRESULT GetProtectedResourceSession(
1282 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1283 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1284}
1285
1286[uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)]
1287interface ID3D12VideoProcessor1
1288 : ID3D12VideoProcessor
1289{
1290 HRESULT GetProtectedResourceSession(
1291 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1292 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1293}
1294
1295[uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)]
1296interface ID3D12VideoExtensionCommand
1297 : ID3D12Pageable
1298{
1299 D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc();
1300
1301 HRESULT GetProtectedResourceSession(
1302 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1303 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1304}
1305
1306[uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)]
1307interface ID3D12VideoDevice2
1308 : ID3D12VideoDevice1
1309{
1310 HRESULT CreateVideoDecoder1(
1311 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
1312 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1313 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1,
1314 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
1315 );
1316
1317 HRESULT CreateVideoDecoderHeap1(
1318 [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
1319 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1320 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1,
1321 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
1322 );
1323
1324 HRESULT CreateVideoProcessor1(
1325 UINT NodeMask,
1326 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
1327 UINT NumInputStreamDescs,
1328 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
1329 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1330 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1,
1331 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
1332 );
1333
1334 HRESULT CreateVideoExtensionCommand(
1335 [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc,
1336 [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters,
1337 SIZE_T CreationParametersDataSizeInBytes,
1338 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession,
1339 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand,
1340 [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand);
1341
1342 HRESULT ExecuteExtensionCommand(
1343 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1344 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1345 SIZE_T ExecutionParametersSizeInBytes,
1346 [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData,
1347 SIZE_T OutputDataSizeInBytes
1348 );
1349}
1350
1351[uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)]
1352interface ID3D12VideoDecodeCommandList2
1353 : ID3D12VideoDecodeCommandList1
1354{
1355 void SetProtectedResourceSession(
1356 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1357 );
1358
1359 void InitializeExtensionCommand(
1360 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1361 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1362 SIZE_T InitializationParametersSizeInBytes);
1363
1364 void ExecuteExtensionCommand(
1365 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1366 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1367 SIZE_T ExecutionParametersSizeInBytes);
1368}
1369
1370[uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)]
1371interface ID3D12VideoProcessCommandList2
1372 : ID3D12VideoProcessCommandList1
1373{
1374
1375 void SetProtectedResourceSession(
1376 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1377 );
1378
1379 void InitializeExtensionCommand(
1380 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1381 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1382 SIZE_T InitializationParametersSizeInBytes);
1383
1384 void ExecuteExtensionCommand(
1385 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1386 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1387 SIZE_T ExecutionParametersSizeInBytes);
1388}
1389
1390[uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)]
1391interface ID3D12VideoEncodeCommandList1
1392 : ID3D12VideoEncodeCommandList
1393{
1394 void InitializeExtensionCommand(
1395 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1396 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1397 SIZE_T InitializationParametersSizeInBytes);
1398
1399 void ExecuteExtensionCommand(
1400 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1401 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1402 SIZE_T ExecutionParametersSizeInBytes);
1403}
1404
1405cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ")
1406cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ")
1407cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1408cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);")
1409cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);")
1410cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);")
1411cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1412cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1413cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);")
1414cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);")
1415cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);")
1416cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);")
1417cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);")
1418cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);")
1419cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);")
1420cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);")
1421cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);")
1422cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);")
1423cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);")
1424cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);")
1425
1426cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1427#pragma endregion
1428
1429cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" )
1430cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" )
1431cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" )
1432cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" )
1433cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" )
1434cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" )
1435cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" )
1436cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" )
1437cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" )
1438cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" )
1439cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" )
1440cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" )
1441cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" )
1442cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" )
1443cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" )
1444cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" )
1445cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" )
1446cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" )
1447cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" )
1448cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3dcommon.h b/contrib/DirectX-Headers/include/directx/d3dcommon.h
new file mode 100644
index 0000000..b41fbbf
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3dcommon.h
@@ -0,0 +1,1068 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13/* @@MIDL_FILE_HEADING( ) */
14
15
16
17/* verify that the <rpcndr.h> version is high enough to compile this file*/
18#ifndef __REQUIRED_RPCNDR_H_VERSION__
19#define __REQUIRED_RPCNDR_H_VERSION__ 500
20#endif
21
22/* verify that the <rpcsal.h> version is high enough to compile this file*/
23#ifndef __REQUIRED_RPCSAL_H_VERSION__
24#define __REQUIRED_RPCSAL_H_VERSION__ 100
25#endif
26
27#include "rpc.h"
28#include "rpcndr.h"
29
30#ifndef __RPCNDR_H_VERSION__
31#error this stub requires an updated version of <rpcndr.h>
32#endif /* __RPCNDR_H_VERSION__ */
33
34#ifndef COM_NO_WINDOWS_H
35#include "windows.h"
36#include "ole2.h"
37#endif /*COM_NO_WINDOWS_H*/
38
39#ifndef __d3dcommon_h__
40#define __d3dcommon_h__
41
42#if defined(_MSC_VER) && (_MSC_VER >= 1020)
43#pragma once
44#endif
45
46#ifndef DECLSPEC_XFGVIRT
47#if _CONTROL_FLOW_GUARD_XFG
48#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
49#else
50#define DECLSPEC_XFGVIRT(base, func)
51#endif
52#endif
53
54/* Forward Declarations */
55
56#ifndef __ID3D10Blob_FWD_DEFINED__
57#define __ID3D10Blob_FWD_DEFINED__
58typedef interface ID3D10Blob ID3D10Blob;
59
60#endif /* __ID3D10Blob_FWD_DEFINED__ */
61
62
63#ifndef __ID3DDestructionNotifier_FWD_DEFINED__
64#define __ID3DDestructionNotifier_FWD_DEFINED__
65typedef interface ID3DDestructionNotifier ID3DDestructionNotifier;
66
67#endif /* __ID3DDestructionNotifier_FWD_DEFINED__ */
68
69
70/* header files for imported files */
71#include "OAIdl.h"
72#include "OCIdl.h"
73
74#ifdef __cplusplus
75extern "C"{
76#endif
77
78
79/* interface __MIDL_itf_d3dcommon_0000_0000 */
80/* [local] */
81
82typedef
83enum D3D_DRIVER_TYPE
84 {
85 D3D_DRIVER_TYPE_UNKNOWN = 0,
86 D3D_DRIVER_TYPE_HARDWARE = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) ,
87 D3D_DRIVER_TYPE_REFERENCE = ( D3D_DRIVER_TYPE_HARDWARE + 1 ) ,
88 D3D_DRIVER_TYPE_NULL = ( D3D_DRIVER_TYPE_REFERENCE + 1 ) ,
89 D3D_DRIVER_TYPE_SOFTWARE = ( D3D_DRIVER_TYPE_NULL + 1 ) ,
90 D3D_DRIVER_TYPE_WARP = ( D3D_DRIVER_TYPE_SOFTWARE + 1 )
91 } D3D_DRIVER_TYPE;
92
93typedef
94enum D3D_FEATURE_LEVEL
95 {
96 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
97 D3D_FEATURE_LEVEL_9_1 = 0x9100,
98 D3D_FEATURE_LEVEL_9_2 = 0x9200,
99 D3D_FEATURE_LEVEL_9_3 = 0x9300,
100 D3D_FEATURE_LEVEL_10_0 = 0xa000,
101 D3D_FEATURE_LEVEL_10_1 = 0xa100,
102 D3D_FEATURE_LEVEL_11_0 = 0xb000,
103 D3D_FEATURE_LEVEL_11_1 = 0xb100,
104 D3D_FEATURE_LEVEL_12_0 = 0xc000,
105 D3D_FEATURE_LEVEL_12_1 = 0xc100,
106 D3D_FEATURE_LEVEL_12_2 = 0xc200
107 } D3D_FEATURE_LEVEL;
108
109#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048
110#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096
111#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
112#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
113#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
114#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
115#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
116#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
117#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
118#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
119#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
120#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
121#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128
122#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048
123#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192
124typedef
125enum D3D_PRIMITIVE_TOPOLOGY
126 {
127 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
128 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
129 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
130 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
131 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
132 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
133 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
134 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
135 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
136 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
137 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
138 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
139 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
140 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
141 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
142 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
143 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
144 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
145 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
146 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
147 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
148 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
149 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
150 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
151 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
152 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
153 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
154 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
155 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
156 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
157 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
158 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
159 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
160 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
161 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
162 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
163 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
164 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
165 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
166 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
167 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
168 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
169 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
170 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
171 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
172 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
173 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
174 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
175 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
176 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
177 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
178 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
179 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
180 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
181 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
182 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
183 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
184 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
185 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
186 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
187 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
188 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
189 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
190 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
191 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
192 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
193 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
194 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
195 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
196 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
197 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
198 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
199 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
200 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
201 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
202 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
203 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
204 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
205 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
206 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
207 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
208 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
209 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
210 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
211 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
212 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
213 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
214 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
215 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
216 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
217 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
218 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
219 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
220 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
221 } D3D_PRIMITIVE_TOPOLOGY;
222
223typedef
224enum D3D_PRIMITIVE
225 {
226 D3D_PRIMITIVE_UNDEFINED = 0,
227 D3D_PRIMITIVE_POINT = 1,
228 D3D_PRIMITIVE_LINE = 2,
229 D3D_PRIMITIVE_TRIANGLE = 3,
230 D3D_PRIMITIVE_LINE_ADJ = 6,
231 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
232 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
233 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
234 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
235 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
236 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
237 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
238 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
239 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
240 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
241 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
242 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
243 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
244 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
245 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
246 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
247 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
248 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
249 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
250 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
251 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
252 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
253 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
254 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
255 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
256 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
257 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
258 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
259 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
260 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
261 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
262 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
263 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
264 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
265 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
266 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
267 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
268 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
269 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
270 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
271 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
272 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
273 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
274 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
275 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
276 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
277 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
278 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
279 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
280 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
281 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
282 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
283 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
284 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
285 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
286 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
287 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
288 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
289 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
290 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
291 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
292 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
293 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
294 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
295 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
296 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
297 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
298 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
299 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
300 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
301 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
302 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
303 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
304 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
305 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
306 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
307 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
308 } D3D_PRIMITIVE;
309
310typedef
311enum D3D_SRV_DIMENSION
312 {
313 D3D_SRV_DIMENSION_UNKNOWN = 0,
314 D3D_SRV_DIMENSION_BUFFER = 1,
315 D3D_SRV_DIMENSION_TEXTURE1D = 2,
316 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
317 D3D_SRV_DIMENSION_TEXTURE2D = 4,
318 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
319 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
320 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
321 D3D_SRV_DIMENSION_TEXTURE3D = 8,
322 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
323 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
324 D3D_SRV_DIMENSION_BUFFEREX = 11,
325 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
326 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
327 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
328 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
329 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
330 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
331 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
332 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
333 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
334 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
335 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
336 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
337 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
338 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
339 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
340 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
341 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
342 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
343 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
344 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
345 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
346 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
347 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
348 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
349 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
350 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
351 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
352 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
353 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
354 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
355 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
356 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
357 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX
358 } D3D_SRV_DIMENSION;
359
360#define D3D_SHADER_FEATURE_DOUBLES 0x00001
361#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002
362#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004
363#define D3D_SHADER_FEATURE_64_UAVS 0x00008
364#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010
365#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020
366#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040
367#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080
368#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100
369#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200
370#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400
371#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800
372#define D3D_SHADER_FEATURE_ROVS 0x01000
373#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000
374#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000
375#define D3D_SHADER_FEATURE_INT64_OPS 0x08000
376#define D3D_SHADER_FEATURE_VIEW_ID 0x10000
377#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000
378#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000
379#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000
380#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000
381#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000
382#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000
383#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000
384#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000
385#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000
386#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000
387#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000
388#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
389typedef struct _D3D_SHADER_MACRO
390 {
391 LPCSTR Name;
392 LPCSTR Definition;
393 } D3D_SHADER_MACRO;
394
395typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO;
396
397DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
398
399
400extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_c_ifspec;
401extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_s_ifspec;
402
403#ifndef __ID3D10Blob_INTERFACE_DEFINED__
404#define __ID3D10Blob_INTERFACE_DEFINED__
405
406/* interface ID3D10Blob */
407/* [unique][local][object][uuid] */
408
409
410EXTERN_C const IID IID_ID3D10Blob;
411
412#if defined(__cplusplus) && !defined(CINTERFACE)
413
414 MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102")
415 ID3D10Blob : public IUnknown
416 {
417 public:
418 virtual LPVOID STDMETHODCALLTYPE GetBufferPointer( void) = 0;
419
420 virtual SIZE_T STDMETHODCALLTYPE GetBufferSize( void) = 0;
421
422 };
423
424
425#else /* C style interface */
426
427 typedef struct ID3D10BlobVtbl
428 {
429 BEGIN_INTERFACE
430
431 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
432 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
433 ID3D10Blob * This,
434 /* [in] */ REFIID riid,
435 /* [annotation][iid_is][out] */
436 _COM_Outptr_ void **ppvObject);
437
438 DECLSPEC_XFGVIRT(IUnknown, AddRef)
439 ULONG ( STDMETHODCALLTYPE *AddRef )(
440 ID3D10Blob * This);
441
442 DECLSPEC_XFGVIRT(IUnknown, Release)
443 ULONG ( STDMETHODCALLTYPE *Release )(
444 ID3D10Blob * This);
445
446 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferPointer)
447 LPVOID ( STDMETHODCALLTYPE *GetBufferPointer )(
448 ID3D10Blob * This);
449
450 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferSize)
451 SIZE_T ( STDMETHODCALLTYPE *GetBufferSize )(
452 ID3D10Blob * This);
453
454 END_INTERFACE
455 } ID3D10BlobVtbl;
456
457 interface ID3D10Blob
458 {
459 CONST_VTBL struct ID3D10BlobVtbl *lpVtbl;
460 };
461
462
463
464#ifdef COBJMACROS
465
466
467#define ID3D10Blob_QueryInterface(This,riid,ppvObject) \
468 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
469
470#define ID3D10Blob_AddRef(This) \
471 ( (This)->lpVtbl -> AddRef(This) )
472
473#define ID3D10Blob_Release(This) \
474 ( (This)->lpVtbl -> Release(This) )
475
476
477#define ID3D10Blob_GetBufferPointer(This) \
478 ( (This)->lpVtbl -> GetBufferPointer(This) )
479
480#define ID3D10Blob_GetBufferSize(This) \
481 ( (This)->lpVtbl -> GetBufferSize(This) )
482
483#endif /* COBJMACROS */
484
485
486#endif /* C style interface */
487
488
489
490
491#endif /* __ID3D10Blob_INTERFACE_DEFINED__ */
492
493
494/* interface __MIDL_itf_d3dcommon_0000_0001 */
495/* [local] */
496
497typedef interface ID3D10Blob* LPD3D10BLOB;
498typedef ID3D10Blob ID3DBlob;
499
500typedef ID3DBlob* LPD3DBLOB;
501#define IID_ID3DBlob IID_ID3D10Blob
502typedef void ( __stdcall *PFN_DESTRUCTION_CALLBACK )(
503 void *pData);
504
505
506
507extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_c_ifspec;
508extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_s_ifspec;
509
510#ifndef __ID3DDestructionNotifier_INTERFACE_DEFINED__
511#define __ID3DDestructionNotifier_INTERFACE_DEFINED__
512
513/* interface ID3DDestructionNotifier */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_ID3DDestructionNotifier;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("a06eb39a-50da-425b-8c31-4eecd6c270f3")
522 ID3DDestructionNotifier : public IUnknown
523 {
524 public:
525 virtual HRESULT STDMETHODCALLTYPE RegisterDestructionCallback(
526 /* [annotation] */
527 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
528 /* [annotation] */
529 _In_ void *pData,
530 /* [annotation] */
531 _Out_ UINT *pCallbackID) = 0;
532
533 virtual HRESULT STDMETHODCALLTYPE UnregisterDestructionCallback(
534 /* [annotation] */
535 _In_ UINT callbackID) = 0;
536
537 };
538
539
540#else /* C style interface */
541
542 typedef struct ID3DDestructionNotifierVtbl
543 {
544 BEGIN_INTERFACE
545
546 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
547 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
548 ID3DDestructionNotifier * This,
549 /* [in] */ REFIID riid,
550 /* [annotation][iid_is][out] */
551 _COM_Outptr_ void **ppvObject);
552
553 DECLSPEC_XFGVIRT(IUnknown, AddRef)
554 ULONG ( STDMETHODCALLTYPE *AddRef )(
555 ID3DDestructionNotifier * This);
556
557 DECLSPEC_XFGVIRT(IUnknown, Release)
558 ULONG ( STDMETHODCALLTYPE *Release )(
559 ID3DDestructionNotifier * This);
560
561 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, RegisterDestructionCallback)
562 HRESULT ( STDMETHODCALLTYPE *RegisterDestructionCallback )(
563 ID3DDestructionNotifier * This,
564 /* [annotation] */
565 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
566 /* [annotation] */
567 _In_ void *pData,
568 /* [annotation] */
569 _Out_ UINT *pCallbackID);
570
571 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, UnregisterDestructionCallback)
572 HRESULT ( STDMETHODCALLTYPE *UnregisterDestructionCallback )(
573 ID3DDestructionNotifier * This,
574 /* [annotation] */
575 _In_ UINT callbackID);
576
577 END_INTERFACE
578 } ID3DDestructionNotifierVtbl;
579
580 interface ID3DDestructionNotifier
581 {
582 CONST_VTBL struct ID3DDestructionNotifierVtbl *lpVtbl;
583 };
584
585
586
587#ifdef COBJMACROS
588
589
590#define ID3DDestructionNotifier_QueryInterface(This,riid,ppvObject) \
591 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
592
593#define ID3DDestructionNotifier_AddRef(This) \
594 ( (This)->lpVtbl -> AddRef(This) )
595
596#define ID3DDestructionNotifier_Release(This) \
597 ( (This)->lpVtbl -> Release(This) )
598
599
600#define ID3DDestructionNotifier_RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) \
601 ( (This)->lpVtbl -> RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) )
602
603#define ID3DDestructionNotifier_UnregisterDestructionCallback(This,callbackID) \
604 ( (This)->lpVtbl -> UnregisterDestructionCallback(This,callbackID) )
605
606#endif /* COBJMACROS */
607
608
609#endif /* C style interface */
610
611
612
613
614#endif /* __ID3DDestructionNotifier_INTERFACE_DEFINED__ */
615
616
617/* interface __MIDL_itf_d3dcommon_0000_0002 */
618/* [local] */
619
620typedef
621enum _D3D_INCLUDE_TYPE
622 {
623 D3D_INCLUDE_LOCAL = 0,
624 D3D_INCLUDE_SYSTEM = ( D3D_INCLUDE_LOCAL + 1 ) ,
625 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
626 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
627 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
628 } D3D_INCLUDE_TYPE;
629
630typedef interface ID3DInclude ID3DInclude;
631#undef INTERFACE
632#define INTERFACE ID3DInclude
633DECLARE_INTERFACE(ID3DInclude)
634{
635 STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
636 STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
637};
638typedef ID3DInclude* LPD3DINCLUDE;
639typedef
640enum _D3D_SHADER_VARIABLE_CLASS
641 {
642 D3D_SVC_SCALAR = 0,
643 D3D_SVC_VECTOR = ( D3D_SVC_SCALAR + 1 ) ,
644 D3D_SVC_MATRIX_ROWS = ( D3D_SVC_VECTOR + 1 ) ,
645 D3D_SVC_MATRIX_COLUMNS = ( D3D_SVC_MATRIX_ROWS + 1 ) ,
646 D3D_SVC_OBJECT = ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
647 D3D_SVC_STRUCT = ( D3D_SVC_OBJECT + 1 ) ,
648 D3D_SVC_INTERFACE_CLASS = ( D3D_SVC_STRUCT + 1 ) ,
649 D3D_SVC_INTERFACE_POINTER = ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
650 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
651 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
652 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
653 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
654 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
655 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
656 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
657 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
658 D3D_SVC_FORCE_DWORD = 0x7fffffff
659 } D3D_SHADER_VARIABLE_CLASS;
660
661typedef
662enum _D3D_SHADER_VARIABLE_FLAGS
663 {
664 D3D_SVF_USERPACKED = 1,
665 D3D_SVF_USED = 2,
666 D3D_SVF_INTERFACE_POINTER = 4,
667 D3D_SVF_INTERFACE_PARAMETER = 8,
668 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
669 D3D10_SVF_USED = D3D_SVF_USED,
670 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
671 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
672 D3D_SVF_FORCE_DWORD = 0x7fffffff
673 } D3D_SHADER_VARIABLE_FLAGS;
674
675typedef
676enum _D3D_SHADER_VARIABLE_TYPE
677 {
678 D3D_SVT_VOID = 0,
679 D3D_SVT_BOOL = 1,
680 D3D_SVT_INT = 2,
681 D3D_SVT_FLOAT = 3,
682 D3D_SVT_STRING = 4,
683 D3D_SVT_TEXTURE = 5,
684 D3D_SVT_TEXTURE1D = 6,
685 D3D_SVT_TEXTURE2D = 7,
686 D3D_SVT_TEXTURE3D = 8,
687 D3D_SVT_TEXTURECUBE = 9,
688 D3D_SVT_SAMPLER = 10,
689 D3D_SVT_SAMPLER1D = 11,
690 D3D_SVT_SAMPLER2D = 12,
691 D3D_SVT_SAMPLER3D = 13,
692 D3D_SVT_SAMPLERCUBE = 14,
693 D3D_SVT_PIXELSHADER = 15,
694 D3D_SVT_VERTEXSHADER = 16,
695 D3D_SVT_PIXELFRAGMENT = 17,
696 D3D_SVT_VERTEXFRAGMENT = 18,
697 D3D_SVT_UINT = 19,
698 D3D_SVT_UINT8 = 20,
699 D3D_SVT_GEOMETRYSHADER = 21,
700 D3D_SVT_RASTERIZER = 22,
701 D3D_SVT_DEPTHSTENCIL = 23,
702 D3D_SVT_BLEND = 24,
703 D3D_SVT_BUFFER = 25,
704 D3D_SVT_CBUFFER = 26,
705 D3D_SVT_TBUFFER = 27,
706 D3D_SVT_TEXTURE1DARRAY = 28,
707 D3D_SVT_TEXTURE2DARRAY = 29,
708 D3D_SVT_RENDERTARGETVIEW = 30,
709 D3D_SVT_DEPTHSTENCILVIEW = 31,
710 D3D_SVT_TEXTURE2DMS = 32,
711 D3D_SVT_TEXTURE2DMSARRAY = 33,
712 D3D_SVT_TEXTURECUBEARRAY = 34,
713 D3D_SVT_HULLSHADER = 35,
714 D3D_SVT_DOMAINSHADER = 36,
715 D3D_SVT_INTERFACE_POINTER = 37,
716 D3D_SVT_COMPUTESHADER = 38,
717 D3D_SVT_DOUBLE = 39,
718 D3D_SVT_RWTEXTURE1D = 40,
719 D3D_SVT_RWTEXTURE1DARRAY = 41,
720 D3D_SVT_RWTEXTURE2D = 42,
721 D3D_SVT_RWTEXTURE2DARRAY = 43,
722 D3D_SVT_RWTEXTURE3D = 44,
723 D3D_SVT_RWBUFFER = 45,
724 D3D_SVT_BYTEADDRESS_BUFFER = 46,
725 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
726 D3D_SVT_STRUCTURED_BUFFER = 48,
727 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
728 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
729 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
730 D3D_SVT_MIN8FLOAT = 52,
731 D3D_SVT_MIN10FLOAT = 53,
732 D3D_SVT_MIN16FLOAT = 54,
733 D3D_SVT_MIN12INT = 55,
734 D3D_SVT_MIN16INT = 56,
735 D3D_SVT_MIN16UINT = 57,
736 D3D10_SVT_VOID = D3D_SVT_VOID,
737 D3D10_SVT_BOOL = D3D_SVT_BOOL,
738 D3D10_SVT_INT = D3D_SVT_INT,
739 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
740 D3D10_SVT_STRING = D3D_SVT_STRING,
741 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
742 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
743 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
744 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
745 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
746 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
747 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
748 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
749 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
750 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
751 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
752 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
753 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
754 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
755 D3D10_SVT_UINT = D3D_SVT_UINT,
756 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
757 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
758 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
759 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
760 D3D10_SVT_BLEND = D3D_SVT_BLEND,
761 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
762 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
763 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
764 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
765 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
766 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
767 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
768 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
769 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
770 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
771 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
772 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
773 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
774 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
775 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
776 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
777 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
778 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
779 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
780 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
781 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
782 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
783 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
784 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
785 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
786 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
787 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
788 D3D_SVT_FORCE_DWORD = 0x7fffffff
789 } D3D_SHADER_VARIABLE_TYPE;
790
791typedef
792enum _D3D_SHADER_INPUT_FLAGS
793 {
794 D3D_SIF_USERPACKED = 0x1,
795 D3D_SIF_COMPARISON_SAMPLER = 0x2,
796 D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
797 D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
798 D3D_SIF_TEXTURE_COMPONENTS = 0xc,
799 D3D_SIF_UNUSED = 0x10,
800 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
801 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
802 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
803 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
804 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
805 D3D_SIF_FORCE_DWORD = 0x7fffffff
806 } D3D_SHADER_INPUT_FLAGS;
807
808typedef
809enum _D3D_SHADER_INPUT_TYPE
810 {
811 D3D_SIT_CBUFFER = 0,
812 D3D_SIT_TBUFFER = ( D3D_SIT_CBUFFER + 1 ) ,
813 D3D_SIT_TEXTURE = ( D3D_SIT_TBUFFER + 1 ) ,
814 D3D_SIT_SAMPLER = ( D3D_SIT_TEXTURE + 1 ) ,
815 D3D_SIT_UAV_RWTYPED = ( D3D_SIT_SAMPLER + 1 ) ,
816 D3D_SIT_STRUCTURED = ( D3D_SIT_UAV_RWTYPED + 1 ) ,
817 D3D_SIT_UAV_RWSTRUCTURED = ( D3D_SIT_STRUCTURED + 1 ) ,
818 D3D_SIT_BYTEADDRESS = ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
819 D3D_SIT_UAV_RWBYTEADDRESS = ( D3D_SIT_BYTEADDRESS + 1 ) ,
820 D3D_SIT_UAV_APPEND_STRUCTURED = ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
821 D3D_SIT_UAV_CONSUME_STRUCTURED = ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
822 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
823 D3D_SIT_RTACCELERATIONSTRUCTURE = ( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + 1 ) ,
824 D3D_SIT_UAV_FEEDBACKTEXTURE = ( D3D_SIT_RTACCELERATIONSTRUCTURE + 1 ) ,
825 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
826 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
827 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
828 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
829 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
830 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
831 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
832 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
833 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
834 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
835 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
836 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
837 } D3D_SHADER_INPUT_TYPE;
838
839typedef
840enum _D3D_SHADER_CBUFFER_FLAGS
841 {
842 D3D_CBF_USERPACKED = 1,
843 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
844 D3D_CBF_FORCE_DWORD = 0x7fffffff
845 } D3D_SHADER_CBUFFER_FLAGS;
846
847typedef
848enum _D3D_CBUFFER_TYPE
849 {
850 D3D_CT_CBUFFER = 0,
851 D3D_CT_TBUFFER = ( D3D_CT_CBUFFER + 1 ) ,
852 D3D_CT_INTERFACE_POINTERS = ( D3D_CT_TBUFFER + 1 ) ,
853 D3D_CT_RESOURCE_BIND_INFO = ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
854 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
855 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
856 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
857 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
858 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
859 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO
860 } D3D_CBUFFER_TYPE;
861
862typedef
863enum D3D_NAME
864 {
865 D3D_NAME_UNDEFINED = 0,
866 D3D_NAME_POSITION = 1,
867 D3D_NAME_CLIP_DISTANCE = 2,
868 D3D_NAME_CULL_DISTANCE = 3,
869 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
870 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
871 D3D_NAME_VERTEX_ID = 6,
872 D3D_NAME_PRIMITIVE_ID = 7,
873 D3D_NAME_INSTANCE_ID = 8,
874 D3D_NAME_IS_FRONT_FACE = 9,
875 D3D_NAME_SAMPLE_INDEX = 10,
876 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
877 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
878 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
879 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
880 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
881 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
882 D3D_NAME_BARYCENTRICS = 23,
883 D3D_NAME_SHADINGRATE = 24,
884 D3D_NAME_CULLPRIMITIVE = 25,
885 D3D_NAME_TARGET = 64,
886 D3D_NAME_DEPTH = 65,
887 D3D_NAME_COVERAGE = 66,
888 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
889 D3D_NAME_DEPTH_LESS_EQUAL = 68,
890 D3D_NAME_STENCIL_REF = 69,
891 D3D_NAME_INNER_COVERAGE = 70,
892 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
893 D3D10_NAME_POSITION = D3D_NAME_POSITION,
894 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
895 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
896 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
897 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
898 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
899 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
900 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
901 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
902 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
903 D3D10_NAME_TARGET = D3D_NAME_TARGET,
904 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
905 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
906 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
907 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
908 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
909 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
910 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
911 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
912 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
913 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
914 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
915 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
916 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
917 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
918 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE
919 } D3D_NAME;
920
921typedef
922enum D3D_RESOURCE_RETURN_TYPE
923 {
924 D3D_RETURN_TYPE_UNORM = 1,
925 D3D_RETURN_TYPE_SNORM = 2,
926 D3D_RETURN_TYPE_SINT = 3,
927 D3D_RETURN_TYPE_UINT = 4,
928 D3D_RETURN_TYPE_FLOAT = 5,
929 D3D_RETURN_TYPE_MIXED = 6,
930 D3D_RETURN_TYPE_DOUBLE = 7,
931 D3D_RETURN_TYPE_CONTINUED = 8,
932 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
933 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
934 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
935 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
936 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
937 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
938 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
939 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
940 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
941 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
942 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
943 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
944 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
945 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED
946 } D3D_RESOURCE_RETURN_TYPE;
947
948typedef
949enum D3D_REGISTER_COMPONENT_TYPE
950 {
951 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
952 D3D_REGISTER_COMPONENT_UINT32 = 1,
953 D3D_REGISTER_COMPONENT_SINT32 = 2,
954 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
955 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
956 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
957 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
958 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32
959 } D3D_REGISTER_COMPONENT_TYPE;
960
961typedef
962enum D3D_TESSELLATOR_DOMAIN
963 {
964 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
965 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
966 D3D_TESSELLATOR_DOMAIN_TRI = 2,
967 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
968 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
969 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
970 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
971 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD
972 } D3D_TESSELLATOR_DOMAIN;
973
974typedef
975enum D3D_TESSELLATOR_PARTITIONING
976 {
977 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
978 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
979 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
980 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
981 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
982 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
983 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
984 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
985 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
986 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
987 } D3D_TESSELLATOR_PARTITIONING;
988
989typedef
990enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
991 {
992 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
993 D3D_TESSELLATOR_OUTPUT_POINT = 1,
994 D3D_TESSELLATOR_OUTPUT_LINE = 2,
995 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
996 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
997 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
998 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
999 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
1000 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
1001 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
1002 } D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
1003
1004typedef
1005enum D3D_MIN_PRECISION
1006 {
1007 D3D_MIN_PRECISION_DEFAULT = 0,
1008 D3D_MIN_PRECISION_FLOAT_16 = 1,
1009 D3D_MIN_PRECISION_FLOAT_2_8 = 2,
1010 D3D_MIN_PRECISION_RESERVED = 3,
1011 D3D_MIN_PRECISION_SINT_16 = 4,
1012 D3D_MIN_PRECISION_UINT_16 = 5,
1013 D3D_MIN_PRECISION_ANY_16 = 0xf0,
1014 D3D_MIN_PRECISION_ANY_10 = 0xf1
1015 } D3D_MIN_PRECISION;
1016
1017typedef
1018enum D3D_INTERPOLATION_MODE
1019 {
1020 D3D_INTERPOLATION_UNDEFINED = 0,
1021 D3D_INTERPOLATION_CONSTANT = 1,
1022 D3D_INTERPOLATION_LINEAR = 2,
1023 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
1024 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
1025 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
1026 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
1027 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7
1028 } D3D_INTERPOLATION_MODE;
1029
1030typedef
1031enum _D3D_PARAMETER_FLAGS
1032 {
1033 D3D_PF_NONE = 0,
1034 D3D_PF_IN = 0x1,
1035 D3D_PF_OUT = 0x2,
1036 D3D_PF_FORCE_DWORD = 0x7fffffff
1037 } D3D_PARAMETER_FLAGS;
1038
1039DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);
1040DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);
1041DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);
1042DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);
1043#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)
1044#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)
1045#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)
1046#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)
1047#define D3D_COMPONENT_MASK_X 1
1048#define D3D_COMPONENT_MASK_Y 2
1049#define D3D_COMPONENT_MASK_Z 4
1050#define D3D_COMPONENT_MASK_W 8
1051DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);
1052DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);
1053
1054
1055extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_c_ifspec;
1056extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_s_ifspec;
1057
1058/* Additional Prototypes for ALL interfaces */
1059
1060/* end of Additional Prototypes */
1061
1062#ifdef __cplusplus
1063}
1064#endif
1065
1066#endif
1067
1068
diff --git a/contrib/DirectX-Headers/include/directx/d3dcommon.idl b/contrib/DirectX-Headers/include/directx/d3dcommon.idl
new file mode 100644
index 0000000..c7bf623
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3dcommon.idl
@@ -0,0 +1,911 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10//----------------------------------------------------------------------------
11//
12// D3D-version-neutral runtime information.
13//
14//----------------------------------------------------------------------------
15
16typedef enum D3D_DRIVER_TYPE
17{
18 D3D_DRIVER_TYPE_UNKNOWN,
19 D3D_DRIVER_TYPE_HARDWARE,
20 D3D_DRIVER_TYPE_REFERENCE,
21 D3D_DRIVER_TYPE_NULL,
22 D3D_DRIVER_TYPE_SOFTWARE,
23 D3D_DRIVER_TYPE_WARP,
24} D3D_DRIVER_TYPE;
25
26typedef enum D3D_FEATURE_LEVEL
27{
28 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
29 D3D_FEATURE_LEVEL_9_1 = 0x9100,
30 D3D_FEATURE_LEVEL_9_2 = 0x9200,
31 D3D_FEATURE_LEVEL_9_3 = 0x9300,
32 D3D_FEATURE_LEVEL_10_0 = 0xa000,
33 D3D_FEATURE_LEVEL_10_1 = 0xa100,
34 D3D_FEATURE_LEVEL_11_0 = 0xb000,
35 D3D_FEATURE_LEVEL_11_1 = 0xb100,
36 D3D_FEATURE_LEVEL_12_0 = 0xc000,
37 D3D_FEATURE_LEVEL_12_1 = 0xc100,
38 D3D_FEATURE_LEVEL_12_2 = 0xc200
39} D3D_FEATURE_LEVEL;
40
41cpp_quote("#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048")
42cpp_quote("#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096")
43cpp_quote("#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048")
44cpp_quote("#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096")
45cpp_quote("#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512")
46cpp_quote("#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096")
47cpp_quote("#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256")
48cpp_quote("#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2")
49cpp_quote("#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535")
50cpp_quote("#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575")
51cpp_quote("#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1")
52cpp_quote("#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4")
53cpp_quote("#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128")
54cpp_quote("#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048")
55cpp_quote("#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192")
56
57typedef enum D3D_PRIMITIVE_TOPOLOGY
58{
59 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
60 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
61 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
62 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
63 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
64 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
65 // 6 is reserved for legacy triangle fans
66 // Adjacency values should be equal to (0x8 & non-adjacency):
67 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
68 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
69 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
70 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
71 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
72 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
73 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
74 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
75 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
76 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
77 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
78 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
79 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
80 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
81 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
82 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
83 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
84 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
85 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
86 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
87 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
88 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
89 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
90 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
91 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
92 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
93 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
94 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
95 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
96 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
97 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
98 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
99 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
100 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
101 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
102 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
103
104 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
105 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
106 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
107 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
108 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
109 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
110 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
111 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
112 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
113 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
114
115 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
116 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
117 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
118 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
119 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
120 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
121 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
122 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
123 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
124 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
125 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
126 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
127 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
128 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
129 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
130 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
131 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
132 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
133 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
134 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
135 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
136 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
137 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
138 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
139 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
140 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
141 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
142 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
143 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
144 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
145 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
146 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
147 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
148 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
149 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
150 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
151 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
152 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
153 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
154 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
155 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
156 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST,
157} D3D_PRIMITIVE_TOPOLOGY;
158
159typedef enum D3D_PRIMITIVE
160{
161 D3D_PRIMITIVE_UNDEFINED = 0,
162 D3D_PRIMITIVE_POINT = 1,
163 D3D_PRIMITIVE_LINE = 2,
164 D3D_PRIMITIVE_TRIANGLE = 3,
165 // Adjacency values should be equal to (0x4 & non-adjacency):
166 D3D_PRIMITIVE_LINE_ADJ = 6,
167 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
168 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
169 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
170 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
171 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
172 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
173 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
174 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
175 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
176 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
177 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
178 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
179 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
180 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
181 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
182 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
183 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
184 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
185 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
186 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
187 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
188 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
189 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
190 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
191 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
192 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
193 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
194 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
195 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
196 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
197 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
198 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
199 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
200
201 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
202 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
203 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
204 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
205 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
206 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
207
208 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
209 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
210 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
211 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
212 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
213 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
214 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
215 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
216 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
217 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
218 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
219 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
220 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
221 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
222 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
223 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
224 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
225 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
226 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
227 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
228 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
229 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
230 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
231 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
232 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
233 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
234 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
235 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
236 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
237 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
238 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
239 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
240 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
241 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
242 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
243 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
244 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
245 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
246} D3D_PRIMITIVE;
247
248typedef enum D3D_SRV_DIMENSION
249{
250 D3D_SRV_DIMENSION_UNKNOWN = 0,
251 D3D_SRV_DIMENSION_BUFFER = 1,
252 D3D_SRV_DIMENSION_TEXTURE1D = 2,
253 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
254 D3D_SRV_DIMENSION_TEXTURE2D = 4,
255 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
256 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
257 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
258 D3D_SRV_DIMENSION_TEXTURE3D = 8,
259 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
260 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
261 D3D_SRV_DIMENSION_BUFFEREX = 11,
262
263 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
264 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
265 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
266 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
267 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
268 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
269 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
270 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
271 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
272 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
273
274 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
275 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
276 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
277 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
278 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
279 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
280 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
281 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
282 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
283 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
284 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
285
286 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
287 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
288 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
289 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
290 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
291 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
292 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
293 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
294 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
295 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
296 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
297 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX,
298} D3D_SRV_DIMENSION;
299
300// Bits in shaders indicating features they use which the runtime checks against current device support:
301cpp_quote("#define D3D_SHADER_FEATURE_DOUBLES 0x00001")
302cpp_quote("#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002")
303cpp_quote("#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004")
304cpp_quote("#define D3D_SHADER_FEATURE_64_UAVS 0x00008")
305cpp_quote("#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010")
306cpp_quote("#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020")
307cpp_quote("#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040")
308cpp_quote("#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080")
309cpp_quote("#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100")
310cpp_quote("#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200")
311cpp_quote("#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400")
312cpp_quote("#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800")
313cpp_quote("#define D3D_SHADER_FEATURE_ROVS 0x01000")
314cpp_quote("#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000")
315cpp_quote("#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000")
316cpp_quote("#define D3D_SHADER_FEATURE_INT64_OPS 0x08000")
317cpp_quote("#define D3D_SHADER_FEATURE_VIEW_ID 0x10000")
318cpp_quote("#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000")
319cpp_quote("#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000")
320cpp_quote("#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000")
321cpp_quote("#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000")
322cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000")
323cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000")
324cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000")
325cpp_quote("#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000")
326cpp_quote("#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000")
327cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000")
328cpp_quote("#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000")
329cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000")
330
331// Additional internal shader feature flags are listed in dxbcutils.h (not relevant/useful for public to see)
332// When adding entries here, make sure they don't conflict with what's there.
333
334//----------------------------------------------------------------------------
335//
336// Shader compilation information.
337//
338//----------------------------------------------------------------------------
339
340//----------------------------------------------------------------------------
341// D3D_SHADER_MACRO:
342// ----------
343// Preprocessor macro definition. The application pass in a NULL-terminated
344// array of this structure to various D3D APIs. This enables the application
345// to #define tokens at runtime, before the file is parsed.
346//----------------------------------------------------------------------------
347
348typedef struct _D3D_SHADER_MACRO
349{
350 LPCSTR Name;
351 LPCSTR Definition;
352} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;
353
354//----------------------------------------------------------------------------
355// ID3DBlob:
356// ------------
357// The buffer object is used by D3D to return arbitrary size data.
358// For compatibility with D3D10 this interface is also called ID3D10Blob,
359// but the version-neutral form is preferred.
360//
361// GetBufferPointer -
362// Returns a pointer to the beginning of the buffer.
363//
364// GetBufferSize -
365// Returns the size of the buffer, in bytes.
366//----------------------------------------------------------------------------
367
368// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
369cpp_quote("DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);")
370
371[ uuid( 8BA5FB08-5195-40e2-AC58-0D989C3A0102 ), object, local, pointer_default( unique ) ]
372interface ID3D10Blob : IUnknown
373{
374 LPVOID GetBufferPointer();
375 SIZE_T GetBufferSize();
376};
377
378cpp_quote("typedef interface ID3D10Blob* LPD3D10BLOB;")
379
380typedef ID3D10Blob ID3DBlob;
381cpp_quote("typedef ID3DBlob* LPD3DBLOB;")
382cpp_quote("#define IID_ID3DBlob IID_ID3D10Blob")
383
384// ID3DDestructionNotifier: An interface to QI for, to set a callback which is triggered when the object is fully destroyed
385typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void* pData);
386
387[uuid(a06eb39a-50da-425b-8c31-4eecd6c270f3), object, local, pointer_default(unique)]
388interface ID3DDestructionNotifier
389 : IUnknown
390{
391 HRESULT RegisterDestructionCallback(
392 [annotation("_In_")] PFN_DESTRUCTION_CALLBACK callbackFn,
393 [annotation("_In_")] void* pData,
394 [annotation("_Out_")] UINT* pCallbackID
395 );
396 HRESULT UnregisterDestructionCallback(
397 [annotation("_In_")] UINT callbackID
398 );
399};
400
401typedef enum _D3D_INCLUDE_TYPE
402{
403 D3D_INCLUDE_LOCAL,
404 D3D_INCLUDE_SYSTEM,
405
406 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
407 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
408
409 // force 32-bit size enum
410 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
411} D3D_INCLUDE_TYPE;
412
413//----------------------------------------------------------------------------
414// ID3DInclude:
415// -------------
416// This interface is intended to be implemented by the application, and can
417// be used by various D3D APIs. This enables application-specific handling
418// of #include directives in source files.
419//
420// Open()
421// Opens an include file. If successful, it should fill in ppData and
422// pBytes. The data pointer returned must remain valid until Close is
423// subsequently called. The name of the file is encoded in UTF-8 format.
424// Close()
425// Closes an include file. If Open was successful, Close is guaranteed
426// to be called before the API using this interface returns.
427//----------------------------------------------------------------------------
428
429cpp_quote("typedef interface ID3DInclude ID3DInclude;")
430
431cpp_quote("#undef INTERFACE")
432cpp_quote("#define INTERFACE ID3DInclude")
433
434cpp_quote("DECLARE_INTERFACE(ID3DInclude)")
435cpp_quote("{")
436cpp_quote(" STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;")
437cpp_quote(" STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;")
438cpp_quote("};")
439
440cpp_quote("typedef ID3DInclude* LPD3DINCLUDE;")
441
442//----------------------------------------------------------------------------
443//
444// Shader reflection information.
445//
446//----------------------------------------------------------------------------
447
448typedef enum _D3D_SHADER_VARIABLE_CLASS
449{
450 D3D_SVC_SCALAR,
451 D3D_SVC_VECTOR,
452 D3D_SVC_MATRIX_ROWS,
453 D3D_SVC_MATRIX_COLUMNS,
454 D3D_SVC_OBJECT,
455 D3D_SVC_STRUCT,
456 D3D_SVC_INTERFACE_CLASS,
457 D3D_SVC_INTERFACE_POINTER,
458
459 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
460 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
461 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
462 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
463 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
464 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
465
466 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
467 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
468
469 // force 32-bit size enum
470 D3D_SVC_FORCE_DWORD = 0x7fffffff
471} D3D_SHADER_VARIABLE_CLASS;
472
473typedef enum _D3D_SHADER_VARIABLE_FLAGS
474{
475 D3D_SVF_USERPACKED = 1,
476 D3D_SVF_USED = 2,
477
478 D3D_SVF_INTERFACE_POINTER = 4,
479 D3D_SVF_INTERFACE_PARAMETER = 8,
480
481 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
482 D3D10_SVF_USED = D3D_SVF_USED,
483
484 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
485 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
486
487 // force 32-bit size enum
488 D3D_SVF_FORCE_DWORD = 0x7fffffff
489} D3D_SHADER_VARIABLE_FLAGS;
490
491typedef enum _D3D_SHADER_VARIABLE_TYPE
492{
493 D3D_SVT_VOID = 0,
494 D3D_SVT_BOOL = 1,
495 D3D_SVT_INT = 2,
496 D3D_SVT_FLOAT = 3,
497 D3D_SVT_STRING = 4,
498 D3D_SVT_TEXTURE = 5,
499 D3D_SVT_TEXTURE1D = 6,
500 D3D_SVT_TEXTURE2D = 7,
501 D3D_SVT_TEXTURE3D = 8,
502 D3D_SVT_TEXTURECUBE = 9,
503 D3D_SVT_SAMPLER = 10,
504 D3D_SVT_SAMPLER1D = 11,
505 D3D_SVT_SAMPLER2D = 12,
506 D3D_SVT_SAMPLER3D = 13,
507 D3D_SVT_SAMPLERCUBE = 14,
508 D3D_SVT_PIXELSHADER = 15,
509 D3D_SVT_VERTEXSHADER = 16,
510 D3D_SVT_PIXELFRAGMENT = 17,
511 D3D_SVT_VERTEXFRAGMENT = 18,
512 D3D_SVT_UINT = 19,
513 D3D_SVT_UINT8 = 20,
514 D3D_SVT_GEOMETRYSHADER = 21,
515 D3D_SVT_RASTERIZER = 22,
516 D3D_SVT_DEPTHSTENCIL = 23,
517 D3D_SVT_BLEND = 24,
518 D3D_SVT_BUFFER = 25,
519 D3D_SVT_CBUFFER = 26,
520 D3D_SVT_TBUFFER = 27,
521 D3D_SVT_TEXTURE1DARRAY = 28,
522 D3D_SVT_TEXTURE2DARRAY = 29,
523 D3D_SVT_RENDERTARGETVIEW = 30,
524 D3D_SVT_DEPTHSTENCILVIEW = 31,
525
526 D3D_SVT_TEXTURE2DMS = 32,
527 D3D_SVT_TEXTURE2DMSARRAY = 33,
528
529 D3D_SVT_TEXTURECUBEARRAY = 34,
530
531 D3D_SVT_HULLSHADER = 35,
532 D3D_SVT_DOMAINSHADER = 36,
533
534 D3D_SVT_INTERFACE_POINTER = 37,
535 D3D_SVT_COMPUTESHADER = 38,
536
537 D3D_SVT_DOUBLE = 39,
538
539 D3D_SVT_RWTEXTURE1D = 40,
540 D3D_SVT_RWTEXTURE1DARRAY = 41,
541 D3D_SVT_RWTEXTURE2D = 42,
542 D3D_SVT_RWTEXTURE2DARRAY = 43,
543 D3D_SVT_RWTEXTURE3D = 44,
544 D3D_SVT_RWBUFFER = 45,
545
546 D3D_SVT_BYTEADDRESS_BUFFER = 46,
547 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
548 D3D_SVT_STRUCTURED_BUFFER = 48,
549 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
550 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
551 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
552
553 D3D_SVT_MIN8FLOAT = 52,
554 D3D_SVT_MIN10FLOAT = 53,
555 D3D_SVT_MIN16FLOAT = 54,
556 D3D_SVT_MIN12INT = 55,
557 D3D_SVT_MIN16INT = 56,
558 D3D_SVT_MIN16UINT = 57,
559
560 D3D10_SVT_VOID = D3D_SVT_VOID,
561 D3D10_SVT_BOOL = D3D_SVT_BOOL,
562 D3D10_SVT_INT = D3D_SVT_INT,
563 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
564 D3D10_SVT_STRING = D3D_SVT_STRING,
565 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
566 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
567 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
568 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
569 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
570 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
571 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
572 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
573 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
574 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
575 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
576 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
577 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
578 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
579 D3D10_SVT_UINT = D3D_SVT_UINT,
580 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
581 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
582 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
583 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
584 D3D10_SVT_BLEND = D3D_SVT_BLEND,
585 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
586 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
587 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
588 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
589 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
590 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
591 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
592
593 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
594 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
595
596 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
597
598 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
599 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
600
601 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
602 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
603
604 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
605
606 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
607 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
608 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
609 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
610 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
611 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
612
613 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
614 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
615 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
616 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
617 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
618 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
619
620 // force 32-bit size enum
621 D3D_SVT_FORCE_DWORD = 0x7fffffff
622} D3D_SHADER_VARIABLE_TYPE;
623
624typedef enum _D3D_SHADER_INPUT_FLAGS
625{
626 D3D_SIF_USERPACKED = 0x01,
627 D3D_SIF_COMPARISON_SAMPLER = 0x02, // is this a comparison sampler?
628 D3D_SIF_TEXTURE_COMPONENT_0 = 0x04, // this 2-bit value encodes c - 1, where c
629 D3D_SIF_TEXTURE_COMPONENT_1 = 0x08, // is the number of components in the texture
630 D3D_SIF_TEXTURE_COMPONENTS = 0x0c,
631 D3D_SIF_UNUSED = 0x10,
632
633 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
634 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
635 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
636 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
637 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
638
639 // force 32-bit size enum
640 D3D_SIF_FORCE_DWORD = 0x7fffffff
641} D3D_SHADER_INPUT_FLAGS;
642
643typedef enum _D3D_SHADER_INPUT_TYPE
644{
645 D3D_SIT_CBUFFER,
646 D3D_SIT_TBUFFER,
647 D3D_SIT_TEXTURE,
648 D3D_SIT_SAMPLER,
649 D3D_SIT_UAV_RWTYPED,
650 D3D_SIT_STRUCTURED,
651 D3D_SIT_UAV_RWSTRUCTURED,
652 D3D_SIT_BYTEADDRESS,
653 D3D_SIT_UAV_RWBYTEADDRESS,
654 D3D_SIT_UAV_APPEND_STRUCTURED,
655 D3D_SIT_UAV_CONSUME_STRUCTURED,
656 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
657 D3D_SIT_RTACCELERATIONSTRUCTURE,
658 D3D_SIT_UAV_FEEDBACKTEXTURE,
659
660 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
661 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
662 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
663 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
664
665 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
666 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
667 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
668 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
669 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
670 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
671 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
672 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
673} D3D_SHADER_INPUT_TYPE;
674
675typedef enum _D3D_SHADER_CBUFFER_FLAGS
676{
677 D3D_CBF_USERPACKED = 1,
678
679 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
680
681 // force 32-bit size enum
682 D3D_CBF_FORCE_DWORD = 0x7fffffff
683} D3D_SHADER_CBUFFER_FLAGS;
684
685typedef enum _D3D_CBUFFER_TYPE
686{
687 D3D_CT_CBUFFER,
688 D3D_CT_TBUFFER,
689 D3D_CT_INTERFACE_POINTERS,
690 D3D_CT_RESOURCE_BIND_INFO,
691
692 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
693 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
694
695 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
696 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
697 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
698 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO,
699} D3D_CBUFFER_TYPE;
700
701typedef enum D3D_NAME
702{
703 D3D_NAME_UNDEFINED = 0,
704
705 // Names meaningful to both HLSL and hardware
706 D3D_NAME_POSITION = 1,
707 D3D_NAME_CLIP_DISTANCE = 2,
708 D3D_NAME_CULL_DISTANCE = 3,
709 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
710 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
711 D3D_NAME_VERTEX_ID = 6,
712 D3D_NAME_PRIMITIVE_ID = 7,
713 D3D_NAME_INSTANCE_ID = 8,
714 D3D_NAME_IS_FRONT_FACE = 9,
715 D3D_NAME_SAMPLE_INDEX = 10,
716 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
717 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
718 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
719 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
720 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
721 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
722 D3D_NAME_BARYCENTRICS = 23,
723 D3D_NAME_SHADINGRATE = 24,
724 D3D_NAME_CULLPRIMITIVE = 25,
725
726 // Names meaningful to HLSL only
727 D3D_NAME_TARGET = 64,
728 D3D_NAME_DEPTH = 65,
729 D3D_NAME_COVERAGE = 66,
730 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
731 D3D_NAME_DEPTH_LESS_EQUAL = 68,
732 D3D_NAME_STENCIL_REF = 69,
733 D3D_NAME_INNER_COVERAGE = 70,
734
735 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
736 D3D10_NAME_POSITION = D3D_NAME_POSITION,
737 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
738 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
739 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
740 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
741 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
742 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
743 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
744 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
745 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
746 D3D10_NAME_TARGET = D3D_NAME_TARGET,
747 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
748 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
749
750 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
751 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
752 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
753 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
754 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
755 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
756 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
757 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
758
759 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
760 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
761
762 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
763 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
764 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE,
765} D3D_NAME;
766
767typedef enum D3D_RESOURCE_RETURN_TYPE
768{
769 D3D_RETURN_TYPE_UNORM = 1,
770 D3D_RETURN_TYPE_SNORM = 2,
771 D3D_RETURN_TYPE_SINT = 3,
772 D3D_RETURN_TYPE_UINT = 4,
773 D3D_RETURN_TYPE_FLOAT = 5,
774 D3D_RETURN_TYPE_MIXED = 6,
775 D3D_RETURN_TYPE_DOUBLE = 7,
776 D3D_RETURN_TYPE_CONTINUED = 8,
777
778 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
779 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
780 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
781 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
782 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
783 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
784
785 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
786 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
787 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
788 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
789 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
790 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
791 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
792 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED,
793} D3D_RESOURCE_RETURN_TYPE;
794
795typedef enum D3D_REGISTER_COMPONENT_TYPE
796{
797 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
798 D3D_REGISTER_COMPONENT_UINT32 = 1,
799 D3D_REGISTER_COMPONENT_SINT32 = 2,
800 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
801
802 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
803 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
804 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
805 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
806} D3D_REGISTER_COMPONENT_TYPE;
807
808typedef enum D3D_TESSELLATOR_DOMAIN
809{
810 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
811 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
812 D3D_TESSELLATOR_DOMAIN_TRI = 2,
813 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
814
815 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
816 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
817 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
818 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD,
819} D3D_TESSELLATOR_DOMAIN;
820
821typedef enum D3D_TESSELLATOR_PARTITIONING
822{
823 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
824 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
825 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
826 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
827 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
828
829 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
830 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
831 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
832 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
833 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
834} D3D_TESSELLATOR_PARTITIONING;
835
836typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
837{
838 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
839 D3D_TESSELLATOR_OUTPUT_POINT = 1,
840 D3D_TESSELLATOR_OUTPUT_LINE = 2,
841 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
842 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
843
844 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
845 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
846 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
847 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
848 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
849} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
850
851typedef enum D3D_MIN_PRECISION
852{
853 D3D_MIN_PRECISION_DEFAULT = 0, // Default precision for the shader model
854 D3D_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
855 D3D_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
856 D3D_MIN_PRECISION_RESERVED = 3, // Reserved for future use
857 D3D_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
858 D3D_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
859
860 // These values are abstractions of width only for use in situations
861 // where a general width is needed instead of specific types. They
862 // will never be used in shader operands.
863 D3D_MIN_PRECISION_ANY_16 = 0xf0,
864 D3D_MIN_PRECISION_ANY_10 = 0xf1,
865} D3D_MIN_PRECISION;
866
867typedef enum D3D_INTERPOLATION_MODE
868{
869 D3D_INTERPOLATION_UNDEFINED = 0,
870 D3D_INTERPOLATION_CONSTANT = 1,
871 D3D_INTERPOLATION_LINEAR = 2,
872 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
873 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
874 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
875 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
876 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
877} D3D_INTERPOLATION_MODE;
878
879// Parameter flags.
880typedef enum _D3D_PARAMETER_FLAGS
881{
882 D3D_PF_NONE = 0x00000000,
883 D3D_PF_IN = 0x00000001,
884 D3D_PF_OUT = 0x00000002,
885 D3D_PF_FORCE_DWORD = 0x7fffffff
886} D3D_PARAMETER_FLAGS;
887
888// Well-Known Private Data IDs (WKPDID_*):
889
890// WKPDID_D3DDebugObjectName provides a unique name to objects in order to assist the developer during debugging.
891//
892// const char c_szName[] = "texture.jpg";
893// pObject->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
894cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
895cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);")
896cpp_quote("DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);")
897cpp_quote("DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);")
898
899cpp_quote("#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)")
900cpp_quote("#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)")
901cpp_quote("#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)")
902cpp_quote("#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)")
903
904cpp_quote("#define D3D_COMPONENT_MASK_X 1")
905cpp_quote("#define D3D_COMPONENT_MASK_Y 2")
906cpp_quote("#define D3D_COMPONENT_MASK_Z 4")
907cpp_quote("#define D3D_COMPONENT_MASK_W 8")
908
909cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);") // Feature_D3D1XDisplayable
910cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);") // Feature_D3D1XDisplayable
911
diff --git a/contrib/DirectX-Headers/include/directx/d3dx12.h b/contrib/DirectX-Headers/include/directx/d3dx12.h
new file mode 100644
index 0000000..b135598
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3dx12.h
@@ -0,0 +1,4049 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_H__
9#define __D3DX12_H__
10
11#include "d3d12.h"
12
13#if defined( __cplusplus )
14
15struct CD3DX12_DEFAULT {};
16extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT;
17
18//------------------------------------------------------------------------------------------------
19inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
20{
21 return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width &&
22 l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth;
23}
24
25//------------------------------------------------------------------------------------------------
26inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
27{ return !( l == r ); }
28
29//------------------------------------------------------------------------------------------------
30struct CD3DX12_RECT : public D3D12_RECT
31{
32 CD3DX12_RECT() = default;
33 explicit CD3DX12_RECT( const D3D12_RECT& o ) noexcept :
34 D3D12_RECT( o )
35 {}
36 explicit CD3DX12_RECT(
37 LONG Left,
38 LONG Top,
39 LONG Right,
40 LONG Bottom ) noexcept
41 {
42 left = Left;
43 top = Top;
44 right = Right;
45 bottom = Bottom;
46 }
47};
48
49//------------------------------------------------------------------------------------------------
50struct CD3DX12_VIEWPORT : public D3D12_VIEWPORT
51{
52 CD3DX12_VIEWPORT() = default;
53 explicit CD3DX12_VIEWPORT( const D3D12_VIEWPORT& o ) noexcept :
54 D3D12_VIEWPORT( o )
55 {}
56 explicit CD3DX12_VIEWPORT(
57 FLOAT topLeftX,
58 FLOAT topLeftY,
59 FLOAT width,
60 FLOAT height,
61 FLOAT minDepth = D3D12_MIN_DEPTH,
62 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
63 {
64 TopLeftX = topLeftX;
65 TopLeftY = topLeftY;
66 Width = width;
67 Height = height;
68 MinDepth = minDepth;
69 MaxDepth = maxDepth;
70 }
71 explicit CD3DX12_VIEWPORT(
72 _In_ ID3D12Resource* pResource,
73 UINT mipSlice = 0,
74 FLOAT topLeftX = 0.0f,
75 FLOAT topLeftY = 0.0f,
76 FLOAT minDepth = D3D12_MIN_DEPTH,
77 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
78 {
79 auto Desc = pResource->GetDesc();
80 const UINT64 SubresourceWidth = Desc.Width >> mipSlice;
81 const UINT64 SubresourceHeight = Desc.Height >> mipSlice;
82 switch (Desc.Dimension)
83 {
84 case D3D12_RESOURCE_DIMENSION_BUFFER:
85 TopLeftX = topLeftX;
86 TopLeftY = 0.0f;
87 Width = float(Desc.Width) - topLeftX;
88 Height = 1.0f;
89 break;
90 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
91 TopLeftX = topLeftX;
92 TopLeftY = 0.0f;
93 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
94 Height = 1.0f;
95 break;
96 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
97 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
98 TopLeftX = topLeftX;
99 TopLeftY = topLeftY;
100 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
101 Height = (SubresourceHeight ? float(SubresourceHeight) : 1.0f) - topLeftY;
102 break;
103 default: break;
104 }
105
106 MinDepth = minDepth;
107 MaxDepth = maxDepth;
108 }
109};
110
111//------------------------------------------------------------------------------------------------
112struct CD3DX12_BOX : public D3D12_BOX
113{
114 CD3DX12_BOX() = default;
115 explicit CD3DX12_BOX( const D3D12_BOX& o ) noexcept :
116 D3D12_BOX( o )
117 {}
118 explicit CD3DX12_BOX(
119 LONG Left,
120 LONG Right ) noexcept
121 {
122 left = static_cast<UINT>(Left);
123 top = 0;
124 front = 0;
125 right = static_cast<UINT>(Right);
126 bottom = 1;
127 back = 1;
128 }
129 explicit CD3DX12_BOX(
130 LONG Left,
131 LONG Top,
132 LONG Right,
133 LONG Bottom ) noexcept
134 {
135 left = static_cast<UINT>(Left);
136 top = static_cast<UINT>(Top);
137 front = 0;
138 right = static_cast<UINT>(Right);
139 bottom = static_cast<UINT>(Bottom);
140 back = 1;
141 }
142 explicit CD3DX12_BOX(
143 LONG Left,
144 LONG Top,
145 LONG Front,
146 LONG Right,
147 LONG Bottom,
148 LONG Back ) noexcept
149 {
150 left = static_cast<UINT>(Left);
151 top = static_cast<UINT>(Top);
152 front = static_cast<UINT>(Front);
153 right = static_cast<UINT>(Right);
154 bottom = static_cast<UINT>(Bottom);
155 back = static_cast<UINT>(Back);
156 }
157};
158inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
159{
160 return l.left == r.left && l.top == r.top && l.front == r.front &&
161 l.right == r.right && l.bottom == r.bottom && l.back == r.back;
162}
163inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
164{ return !( l == r ); }
165
166//------------------------------------------------------------------------------------------------
167struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC
168{
169 CD3DX12_DEPTH_STENCIL_DESC() = default;
170 explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept :
171 D3D12_DEPTH_STENCIL_DESC( o )
172 {}
173 explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) noexcept
174 {
175 DepthEnable = TRUE;
176 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
177 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
178 StencilEnable = FALSE;
179 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
180 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
181 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
182 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
183 FrontFace = defaultStencilOp;
184 BackFace = defaultStencilOp;
185 }
186 explicit CD3DX12_DEPTH_STENCIL_DESC(
187 BOOL depthEnable,
188 D3D12_DEPTH_WRITE_MASK depthWriteMask,
189 D3D12_COMPARISON_FUNC depthFunc,
190 BOOL stencilEnable,
191 UINT8 stencilReadMask,
192 UINT8 stencilWriteMask,
193 D3D12_STENCIL_OP frontStencilFailOp,
194 D3D12_STENCIL_OP frontStencilDepthFailOp,
195 D3D12_STENCIL_OP frontStencilPassOp,
196 D3D12_COMPARISON_FUNC frontStencilFunc,
197 D3D12_STENCIL_OP backStencilFailOp,
198 D3D12_STENCIL_OP backStencilDepthFailOp,
199 D3D12_STENCIL_OP backStencilPassOp,
200 D3D12_COMPARISON_FUNC backStencilFunc ) noexcept
201 {
202 DepthEnable = depthEnable;
203 DepthWriteMask = depthWriteMask;
204 DepthFunc = depthFunc;
205 StencilEnable = stencilEnable;
206 StencilReadMask = stencilReadMask;
207 StencilWriteMask = stencilWriteMask;
208 FrontFace.StencilFailOp = frontStencilFailOp;
209 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
210 FrontFace.StencilPassOp = frontStencilPassOp;
211 FrontFace.StencilFunc = frontStencilFunc;
212 BackFace.StencilFailOp = backStencilFailOp;
213 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
214 BackFace.StencilPassOp = backStencilPassOp;
215 BackFace.StencilFunc = backStencilFunc;
216 }
217};
218
219//------------------------------------------------------------------------------------------------
220struct CD3DX12_DEPTH_STENCIL_DESC1 : public D3D12_DEPTH_STENCIL_DESC1
221{
222 CD3DX12_DEPTH_STENCIL_DESC1() = default;
223 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept :
224 D3D12_DEPTH_STENCIL_DESC1( o )
225 {}
226 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
227 {
228 DepthEnable = o.DepthEnable;
229 DepthWriteMask = o.DepthWriteMask;
230 DepthFunc = o.DepthFunc;
231 StencilEnable = o.StencilEnable;
232 StencilReadMask = o.StencilReadMask;
233 StencilWriteMask = o.StencilWriteMask;
234 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
235 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
236 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
237 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
238 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
239 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
240 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
241 BackFace.StencilFunc = o.BackFace.StencilFunc;
242 DepthBoundsTestEnable = FALSE;
243 }
244 explicit CD3DX12_DEPTH_STENCIL_DESC1( CD3DX12_DEFAULT ) noexcept
245 {
246 DepthEnable = TRUE;
247 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
248 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
249 StencilEnable = FALSE;
250 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
251 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
252 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
253 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
254 FrontFace = defaultStencilOp;
255 BackFace = defaultStencilOp;
256 DepthBoundsTestEnable = FALSE;
257 }
258 explicit CD3DX12_DEPTH_STENCIL_DESC1(
259 BOOL depthEnable,
260 D3D12_DEPTH_WRITE_MASK depthWriteMask,
261 D3D12_COMPARISON_FUNC depthFunc,
262 BOOL stencilEnable,
263 UINT8 stencilReadMask,
264 UINT8 stencilWriteMask,
265 D3D12_STENCIL_OP frontStencilFailOp,
266 D3D12_STENCIL_OP frontStencilDepthFailOp,
267 D3D12_STENCIL_OP frontStencilPassOp,
268 D3D12_COMPARISON_FUNC frontStencilFunc,
269 D3D12_STENCIL_OP backStencilFailOp,
270 D3D12_STENCIL_OP backStencilDepthFailOp,
271 D3D12_STENCIL_OP backStencilPassOp,
272 D3D12_COMPARISON_FUNC backStencilFunc,
273 BOOL depthBoundsTestEnable ) noexcept
274 {
275 DepthEnable = depthEnable;
276 DepthWriteMask = depthWriteMask;
277 DepthFunc = depthFunc;
278 StencilEnable = stencilEnable;
279 StencilReadMask = stencilReadMask;
280 StencilWriteMask = stencilWriteMask;
281 FrontFace.StencilFailOp = frontStencilFailOp;
282 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
283 FrontFace.StencilPassOp = frontStencilPassOp;
284 FrontFace.StencilFunc = frontStencilFunc;
285 BackFace.StencilFailOp = backStencilFailOp;
286 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
287 BackFace.StencilPassOp = backStencilPassOp;
288 BackFace.StencilFunc = backStencilFunc;
289 DepthBoundsTestEnable = depthBoundsTestEnable;
290 }
291 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
292 {
293 D3D12_DEPTH_STENCIL_DESC D;
294 D.DepthEnable = DepthEnable;
295 D.DepthWriteMask = DepthWriteMask;
296 D.DepthFunc = DepthFunc;
297 D.StencilEnable = StencilEnable;
298 D.StencilReadMask = StencilReadMask;
299 D.StencilWriteMask = StencilWriteMask;
300 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
301 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
302 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
303 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
304 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
305 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
306 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
307 D.BackFace.StencilFunc = BackFace.StencilFunc;
308 return D;
309 }
310};
311
312//------------------------------------------------------------------------------------------------
313struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC
314{
315 CD3DX12_BLEND_DESC() = default;
316 explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) noexcept :
317 D3D12_BLEND_DESC( o )
318 {}
319 explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) noexcept
320 {
321 AlphaToCoverageEnable = FALSE;
322 IndependentBlendEnable = FALSE;
323 const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc =
324 {
325 FALSE,FALSE,
326 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
327 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
328 D3D12_LOGIC_OP_NOOP,
329 D3D12_COLOR_WRITE_ENABLE_ALL,
330 };
331 for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
332 RenderTarget[ i ] = defaultRenderTargetBlendDesc;
333 }
334};
335
336//------------------------------------------------------------------------------------------------
337struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC
338{
339 CD3DX12_RASTERIZER_DESC() = default;
340 explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) noexcept :
341 D3D12_RASTERIZER_DESC( o )
342 {}
343 explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) noexcept
344 {
345 FillMode = D3D12_FILL_MODE_SOLID;
346 CullMode = D3D12_CULL_MODE_BACK;
347 FrontCounterClockwise = FALSE;
348 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
349 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
350 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
351 DepthClipEnable = TRUE;
352 MultisampleEnable = FALSE;
353 AntialiasedLineEnable = FALSE;
354 ForcedSampleCount = 0;
355 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
356 }
357 explicit CD3DX12_RASTERIZER_DESC(
358 D3D12_FILL_MODE fillMode,
359 D3D12_CULL_MODE cullMode,
360 BOOL frontCounterClockwise,
361 INT depthBias,
362 FLOAT depthBiasClamp,
363 FLOAT slopeScaledDepthBias,
364 BOOL depthClipEnable,
365 BOOL multisampleEnable,
366 BOOL antialiasedLineEnable,
367 UINT forcedSampleCount,
368 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
369 {
370 FillMode = fillMode;
371 CullMode = cullMode;
372 FrontCounterClockwise = frontCounterClockwise;
373 DepthBias = depthBias;
374 DepthBiasClamp = depthBiasClamp;
375 SlopeScaledDepthBias = slopeScaledDepthBias;
376 DepthClipEnable = depthClipEnable;
377 MultisampleEnable = multisampleEnable;
378 AntialiasedLineEnable = antialiasedLineEnable;
379 ForcedSampleCount = forcedSampleCount;
380 ConservativeRaster = conservativeRaster;
381 }
382};
383
384//------------------------------------------------------------------------------------------------
385struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO
386{
387 CD3DX12_RESOURCE_ALLOCATION_INFO() = default;
388 explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) noexcept :
389 D3D12_RESOURCE_ALLOCATION_INFO( o )
390 {}
391 CD3DX12_RESOURCE_ALLOCATION_INFO(
392 UINT64 size,
393 UINT64 alignment ) noexcept
394 {
395 SizeInBytes = size;
396 Alignment = alignment;
397 }
398};
399
400//------------------------------------------------------------------------------------------------
401struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES
402{
403 CD3DX12_HEAP_PROPERTIES() = default;
404 explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) noexcept :
405 D3D12_HEAP_PROPERTIES(o)
406 {}
407 CD3DX12_HEAP_PROPERTIES(
408 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
409 D3D12_MEMORY_POOL memoryPoolPreference,
410 UINT creationNodeMask = 1,
411 UINT nodeMask = 1 ) noexcept
412 {
413 Type = D3D12_HEAP_TYPE_CUSTOM;
414 CPUPageProperty = cpuPageProperty;
415 MemoryPoolPreference = memoryPoolPreference;
416 CreationNodeMask = creationNodeMask;
417 VisibleNodeMask = nodeMask;
418 }
419 explicit CD3DX12_HEAP_PROPERTIES(
420 D3D12_HEAP_TYPE type,
421 UINT creationNodeMask = 1,
422 UINT nodeMask = 1 ) noexcept
423 {
424 Type = type;
425 CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
426 MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
427 CreationNodeMask = creationNodeMask;
428 VisibleNodeMask = nodeMask;
429 }
430 bool IsCPUAccessible() const noexcept
431 {
432 return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK || (Type == D3D12_HEAP_TYPE_CUSTOM &&
433 (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK));
434 }
435};
436inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
437{
438 return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty &&
439 l.MemoryPoolPreference == r.MemoryPoolPreference &&
440 l.CreationNodeMask == r.CreationNodeMask &&
441 l.VisibleNodeMask == r.VisibleNodeMask;
442}
443inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
444{ return !( l == r ); }
445
446//------------------------------------------------------------------------------------------------
447struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC
448{
449 CD3DX12_HEAP_DESC() = default;
450 explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) noexcept :
451 D3D12_HEAP_DESC(o)
452 {}
453 CD3DX12_HEAP_DESC(
454 UINT64 size,
455 D3D12_HEAP_PROPERTIES properties,
456 UINT64 alignment = 0,
457 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
458 {
459 SizeInBytes = size;
460 Properties = properties;
461 Alignment = alignment;
462 Flags = flags;
463 }
464 CD3DX12_HEAP_DESC(
465 UINT64 size,
466 D3D12_HEAP_TYPE type,
467 UINT64 alignment = 0,
468 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
469 {
470 SizeInBytes = size;
471 Properties = CD3DX12_HEAP_PROPERTIES( type );
472 Alignment = alignment;
473 Flags = flags;
474 }
475 CD3DX12_HEAP_DESC(
476 UINT64 size,
477 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
478 D3D12_MEMORY_POOL memoryPoolPreference,
479 UINT64 alignment = 0,
480 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
481 {
482 SizeInBytes = size;
483 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
484 Alignment = alignment;
485 Flags = flags;
486 }
487 CD3DX12_HEAP_DESC(
488 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
489 D3D12_HEAP_PROPERTIES properties,
490 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
491 {
492 SizeInBytes = resAllocInfo.SizeInBytes;
493 Properties = properties;
494 Alignment = resAllocInfo.Alignment;
495 Flags = flags;
496 }
497 CD3DX12_HEAP_DESC(
498 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
499 D3D12_HEAP_TYPE type,
500 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
501 {
502 SizeInBytes = resAllocInfo.SizeInBytes;
503 Properties = CD3DX12_HEAP_PROPERTIES( type );
504 Alignment = resAllocInfo.Alignment;
505 Flags = flags;
506 }
507 CD3DX12_HEAP_DESC(
508 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
509 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
510 D3D12_MEMORY_POOL memoryPoolPreference,
511 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
512 {
513 SizeInBytes = resAllocInfo.SizeInBytes;
514 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
515 Alignment = resAllocInfo.Alignment;
516 Flags = flags;
517 }
518 bool IsCPUAccessible() const noexcept
519 { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); }
520};
521inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
522{
523 return l.SizeInBytes == r.SizeInBytes &&
524 l.Properties == r.Properties &&
525 l.Alignment == r.Alignment &&
526 l.Flags == r.Flags;
527}
528inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
529{ return !( l == r ); }
530
531//------------------------------------------------------------------------------------------------
532struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE
533{
534 CD3DX12_CLEAR_VALUE() = default;
535 explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) noexcept :
536 D3D12_CLEAR_VALUE(o)
537 {}
538 CD3DX12_CLEAR_VALUE(
539 DXGI_FORMAT format,
540 const FLOAT color[4] ) noexcept
541 {
542 Format = format;
543 memcpy( Color, color, sizeof( Color ) );
544 }
545 CD3DX12_CLEAR_VALUE(
546 DXGI_FORMAT format,
547 FLOAT depth,
548 UINT8 stencil ) noexcept
549 {
550 Format = format;
551 memset( &Color, 0, sizeof( Color ) );
552 /* Use memcpy to preserve NAN values */
553 memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) );
554 DepthStencil.Stencil = stencil;
555 }
556};
557
558//------------------------------------------------------------------------------------------------
559struct CD3DX12_RANGE : public D3D12_RANGE
560{
561 CD3DX12_RANGE() = default;
562 explicit CD3DX12_RANGE(const D3D12_RANGE &o) noexcept :
563 D3D12_RANGE(o)
564 {}
565 CD3DX12_RANGE(
566 SIZE_T begin,
567 SIZE_T end ) noexcept
568 {
569 Begin = begin;
570 End = end;
571 }
572};
573
574//------------------------------------------------------------------------------------------------
575struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
576{
577 CD3DX12_RANGE_UINT64() = default;
578 explicit CD3DX12_RANGE_UINT64(const D3D12_RANGE_UINT64 &o) noexcept :
579 D3D12_RANGE_UINT64(o)
580 {}
581 CD3DX12_RANGE_UINT64(
582 UINT64 begin,
583 UINT64 end ) noexcept
584 {
585 Begin = begin;
586 End = end;
587 }
588};
589
590//------------------------------------------------------------------------------------------------
591struct CD3DX12_SUBRESOURCE_RANGE_UINT64 : public D3D12_SUBRESOURCE_RANGE_UINT64
592{
593 CD3DX12_SUBRESOURCE_RANGE_UINT64() = default;
594 explicit CD3DX12_SUBRESOURCE_RANGE_UINT64(const D3D12_SUBRESOURCE_RANGE_UINT64 &o) noexcept :
595 D3D12_SUBRESOURCE_RANGE_UINT64(o)
596 {}
597 CD3DX12_SUBRESOURCE_RANGE_UINT64(
598 UINT subresource,
599 const D3D12_RANGE_UINT64& range ) noexcept
600 {
601 Subresource = subresource;
602 Range = range;
603 }
604 CD3DX12_SUBRESOURCE_RANGE_UINT64(
605 UINT subresource,
606 UINT64 begin,
607 UINT64 end ) noexcept
608 {
609 Subresource = subresource;
610 Range.Begin = begin;
611 Range.End = end;
612 }
613};
614
615//------------------------------------------------------------------------------------------------
616struct CD3DX12_SHADER_BYTECODE : public D3D12_SHADER_BYTECODE
617{
618 CD3DX12_SHADER_BYTECODE() = default;
619 explicit CD3DX12_SHADER_BYTECODE(const D3D12_SHADER_BYTECODE &o) noexcept :
620 D3D12_SHADER_BYTECODE(o)
621 {}
622 CD3DX12_SHADER_BYTECODE(
623 _In_ ID3DBlob* pShaderBlob ) noexcept
624 {
625 pShaderBytecode = pShaderBlob->GetBufferPointer();
626 BytecodeLength = pShaderBlob->GetBufferSize();
627 }
628 CD3DX12_SHADER_BYTECODE(
629 const void* _pShaderBytecode,
630 SIZE_T bytecodeLength ) noexcept
631 {
632 pShaderBytecode = _pShaderBytecode;
633 BytecodeLength = bytecodeLength;
634 }
635};
636
637//------------------------------------------------------------------------------------------------
638struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE
639{
640 CD3DX12_TILED_RESOURCE_COORDINATE() = default;
641 explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) noexcept :
642 D3D12_TILED_RESOURCE_COORDINATE(o)
643 {}
644 CD3DX12_TILED_RESOURCE_COORDINATE(
645 UINT x,
646 UINT y,
647 UINT z,
648 UINT subresource ) noexcept
649 {
650 X = x;
651 Y = y;
652 Z = z;
653 Subresource = subresource;
654 }
655};
656
657//------------------------------------------------------------------------------------------------
658struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE
659{
660 CD3DX12_TILE_REGION_SIZE() = default;
661 explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) noexcept :
662 D3D12_TILE_REGION_SIZE(o)
663 {}
664 CD3DX12_TILE_REGION_SIZE(
665 UINT numTiles,
666 BOOL useBox,
667 UINT width,
668 UINT16 height,
669 UINT16 depth ) noexcept
670 {
671 NumTiles = numTiles;
672 UseBox = useBox;
673 Width = width;
674 Height = height;
675 Depth = depth;
676 }
677};
678
679//------------------------------------------------------------------------------------------------
680struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING
681{
682 CD3DX12_SUBRESOURCE_TILING() = default;
683 explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) noexcept :
684 D3D12_SUBRESOURCE_TILING(o)
685 {}
686 CD3DX12_SUBRESOURCE_TILING(
687 UINT widthInTiles,
688 UINT16 heightInTiles,
689 UINT16 depthInTiles,
690 UINT startTileIndexInOverallResource ) noexcept
691 {
692 WidthInTiles = widthInTiles;
693 HeightInTiles = heightInTiles;
694 DepthInTiles = depthInTiles;
695 StartTileIndexInOverallResource = startTileIndexInOverallResource;
696 }
697};
698
699//------------------------------------------------------------------------------------------------
700struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE
701{
702 CD3DX12_TILE_SHAPE() = default;
703 explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) noexcept :
704 D3D12_TILE_SHAPE(o)
705 {}
706 CD3DX12_TILE_SHAPE(
707 UINT widthInTexels,
708 UINT heightInTexels,
709 UINT depthInTexels ) noexcept
710 {
711 WidthInTexels = widthInTexels;
712 HeightInTexels = heightInTexels;
713 DepthInTexels = depthInTexels;
714 }
715};
716
717//------------------------------------------------------------------------------------------------
718struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
719{
720 CD3DX12_RESOURCE_BARRIER() = default;
721 explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :
722 D3D12_RESOURCE_BARRIER(o)
723 {}
724 static inline CD3DX12_RESOURCE_BARRIER Transition(
725 _In_ ID3D12Resource* pResource,
726 D3D12_RESOURCE_STATES stateBefore,
727 D3D12_RESOURCE_STATES stateAfter,
728 UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,
729 D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) noexcept
730 {
731 CD3DX12_RESOURCE_BARRIER result = {};
732 D3D12_RESOURCE_BARRIER &barrier = result;
733 result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
734 result.Flags = flags;
735 barrier.Transition.pResource = pResource;
736 barrier.Transition.StateBefore = stateBefore;
737 barrier.Transition.StateAfter = stateAfter;
738 barrier.Transition.Subresource = subresource;
739 return result;
740 }
741 static inline CD3DX12_RESOURCE_BARRIER Aliasing(
742 _In_ ID3D12Resource* pResourceBefore,
743 _In_ ID3D12Resource* pResourceAfter) noexcept
744 {
745 CD3DX12_RESOURCE_BARRIER result = {};
746 D3D12_RESOURCE_BARRIER &barrier = result;
747 result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
748 barrier.Aliasing.pResourceBefore = pResourceBefore;
749 barrier.Aliasing.pResourceAfter = pResourceAfter;
750 return result;
751 }
752 static inline CD3DX12_RESOURCE_BARRIER UAV(
753 _In_ ID3D12Resource* pResource) noexcept
754 {
755 CD3DX12_RESOURCE_BARRIER result = {};
756 D3D12_RESOURCE_BARRIER &barrier = result;
757 result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
758 barrier.UAV.pResource = pResource;
759 return result;
760 }
761};
762
763//------------------------------------------------------------------------------------------------
764struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO
765{
766 CD3DX12_PACKED_MIP_INFO() = default;
767 explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) noexcept :
768 D3D12_PACKED_MIP_INFO(o)
769 {}
770 CD3DX12_PACKED_MIP_INFO(
771 UINT8 numStandardMips,
772 UINT8 numPackedMips,
773 UINT numTilesForPackedMips,
774 UINT startTileIndexInOverallResource ) noexcept
775 {
776 NumStandardMips = numStandardMips;
777 NumPackedMips = numPackedMips;
778 NumTilesForPackedMips = numTilesForPackedMips;
779 StartTileIndexInOverallResource = startTileIndexInOverallResource;
780 }
781};
782
783//------------------------------------------------------------------------------------------------
784struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT
785{
786 CD3DX12_SUBRESOURCE_FOOTPRINT() = default;
787 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) noexcept :
788 D3D12_SUBRESOURCE_FOOTPRINT(o)
789 {}
790 CD3DX12_SUBRESOURCE_FOOTPRINT(
791 DXGI_FORMAT format,
792 UINT width,
793 UINT height,
794 UINT depth,
795 UINT rowPitch ) noexcept
796 {
797 Format = format;
798 Width = width;
799 Height = height;
800 Depth = depth;
801 RowPitch = rowPitch;
802 }
803 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(
804 const D3D12_RESOURCE_DESC& resDesc,
805 UINT rowPitch ) noexcept
806 {
807 Format = resDesc.Format;
808 Width = UINT( resDesc.Width );
809 Height = resDesc.Height;
810 Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1);
811 RowPitch = rowPitch;
812 }
813};
814
815//------------------------------------------------------------------------------------------------
816struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION
817{
818 CD3DX12_TEXTURE_COPY_LOCATION() = default;
819 explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) noexcept :
820 D3D12_TEXTURE_COPY_LOCATION(o)
821 {}
822 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes) noexcept
823 {
824 pResource = pRes;
825 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
826 PlacedFootprint = {};
827 }
828 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) noexcept
829 {
830 pResource = pRes;
831 Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
832 PlacedFootprint = Footprint;
833 }
834 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, UINT Sub) noexcept
835 {
836 pResource = pRes;
837 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
838 PlacedFootprint = {};
839 SubresourceIndex = Sub;
840 }
841};
842
843//------------------------------------------------------------------------------------------------
844struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE
845{
846 CD3DX12_DESCRIPTOR_RANGE() = default;
847 explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) noexcept :
848 D3D12_DESCRIPTOR_RANGE(o)
849 {}
850 CD3DX12_DESCRIPTOR_RANGE(
851 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
852 UINT numDescriptors,
853 UINT baseShaderRegister,
854 UINT registerSpace = 0,
855 UINT offsetInDescriptorsFromTableStart =
856 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
857 {
858 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
859 }
860
861 inline void Init(
862 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
863 UINT numDescriptors,
864 UINT baseShaderRegister,
865 UINT registerSpace = 0,
866 UINT offsetInDescriptorsFromTableStart =
867 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
868 {
869 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
870 }
871
872 static inline void Init(
873 _Out_ D3D12_DESCRIPTOR_RANGE &range,
874 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
875 UINT numDescriptors,
876 UINT baseShaderRegister,
877 UINT registerSpace = 0,
878 UINT offsetInDescriptorsFromTableStart =
879 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
880 {
881 range.RangeType = rangeType;
882 range.NumDescriptors = numDescriptors;
883 range.BaseShaderRegister = baseShaderRegister;
884 range.RegisterSpace = registerSpace;
885 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
886 }
887};
888
889//------------------------------------------------------------------------------------------------
890struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE
891{
892 CD3DX12_ROOT_DESCRIPTOR_TABLE() = default;
893 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) noexcept :
894 D3D12_ROOT_DESCRIPTOR_TABLE(o)
895 {}
896 CD3DX12_ROOT_DESCRIPTOR_TABLE(
897 UINT numDescriptorRanges,
898 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
899 {
900 Init(numDescriptorRanges, _pDescriptorRanges);
901 }
902
903 inline void Init(
904 UINT numDescriptorRanges,
905 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
906 {
907 Init(*this, numDescriptorRanges, _pDescriptorRanges);
908 }
909
910 static inline void Init(
911 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable,
912 UINT numDescriptorRanges,
913 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
914 {
915 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
916 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
917 }
918};
919
920//------------------------------------------------------------------------------------------------
921struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS
922{
923 CD3DX12_ROOT_CONSTANTS() = default;
924 explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) noexcept :
925 D3D12_ROOT_CONSTANTS(o)
926 {}
927 CD3DX12_ROOT_CONSTANTS(
928 UINT num32BitValues,
929 UINT shaderRegister,
930 UINT registerSpace = 0) noexcept
931 {
932 Init(num32BitValues, shaderRegister, registerSpace);
933 }
934
935 inline void Init(
936 UINT num32BitValues,
937 UINT shaderRegister,
938 UINT registerSpace = 0) noexcept
939 {
940 Init(*this, num32BitValues, shaderRegister, registerSpace);
941 }
942
943 static inline void Init(
944 _Out_ D3D12_ROOT_CONSTANTS &rootConstants,
945 UINT num32BitValues,
946 UINT shaderRegister,
947 UINT registerSpace = 0) noexcept
948 {
949 rootConstants.Num32BitValues = num32BitValues;
950 rootConstants.ShaderRegister = shaderRegister;
951 rootConstants.RegisterSpace = registerSpace;
952 }
953};
954
955//------------------------------------------------------------------------------------------------
956struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR
957{
958 CD3DX12_ROOT_DESCRIPTOR() = default;
959 explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) noexcept :
960 D3D12_ROOT_DESCRIPTOR(o)
961 {}
962 CD3DX12_ROOT_DESCRIPTOR(
963 UINT shaderRegister,
964 UINT registerSpace = 0) noexcept
965 {
966 Init(shaderRegister, registerSpace);
967 }
968
969 inline void Init(
970 UINT shaderRegister,
971 UINT registerSpace = 0) noexcept
972 {
973 Init(*this, shaderRegister, registerSpace);
974 }
975
976 static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) noexcept
977 {
978 table.ShaderRegister = shaderRegister;
979 table.RegisterSpace = registerSpace;
980 }
981};
982
983//------------------------------------------------------------------------------------------------
984struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER
985{
986 CD3DX12_ROOT_PARAMETER() = default;
987 explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) noexcept :
988 D3D12_ROOT_PARAMETER(o)
989 {}
990
991 static inline void InitAsDescriptorTable(
992 _Out_ D3D12_ROOT_PARAMETER &rootParam,
993 UINT numDescriptorRanges,
994 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
995 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
996 {
997 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
998 rootParam.ShaderVisibility = visibility;
999 CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
1000 }
1001
1002 static inline void InitAsConstants(
1003 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1004 UINT num32BitValues,
1005 UINT shaderRegister,
1006 UINT registerSpace = 0,
1007 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1008 {
1009 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
1010 rootParam.ShaderVisibility = visibility;
1011 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
1012 }
1013
1014 static inline void InitAsConstantBufferView(
1015 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1016 UINT shaderRegister,
1017 UINT registerSpace = 0,
1018 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1019 {
1020 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
1021 rootParam.ShaderVisibility = visibility;
1022 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
1023 }
1024
1025 static inline void InitAsShaderResourceView(
1026 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1027 UINT shaderRegister,
1028 UINT registerSpace = 0,
1029 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1030 {
1031 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
1032 rootParam.ShaderVisibility = visibility;
1033 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
1034 }
1035
1036 static inline void InitAsUnorderedAccessView(
1037 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1038 UINT shaderRegister,
1039 UINT registerSpace = 0,
1040 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1041 {
1042 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
1043 rootParam.ShaderVisibility = visibility;
1044 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
1045 }
1046
1047 inline void InitAsDescriptorTable(
1048 UINT numDescriptorRanges,
1049 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
1050 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1051 {
1052 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
1053 }
1054
1055 inline void InitAsConstants(
1056 UINT num32BitValues,
1057 UINT shaderRegister,
1058 UINT registerSpace = 0,
1059 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1060 {
1061 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
1062 }
1063
1064 inline void InitAsConstantBufferView(
1065 UINT shaderRegister,
1066 UINT registerSpace = 0,
1067 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1068 {
1069 InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility);
1070 }
1071
1072 inline void InitAsShaderResourceView(
1073 UINT shaderRegister,
1074 UINT registerSpace = 0,
1075 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1076 {
1077 InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility);
1078 }
1079
1080 inline void InitAsUnorderedAccessView(
1081 UINT shaderRegister,
1082 UINT registerSpace = 0,
1083 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1084 {
1085 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility);
1086 }
1087};
1088
1089//------------------------------------------------------------------------------------------------
1090struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC
1091{
1092 CD3DX12_STATIC_SAMPLER_DESC() = default;
1093 explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) noexcept :
1094 D3D12_STATIC_SAMPLER_DESC(o)
1095 {}
1096 CD3DX12_STATIC_SAMPLER_DESC(
1097 UINT shaderRegister,
1098 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
1099 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1100 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1101 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1102 FLOAT mipLODBias = 0,
1103 UINT maxAnisotropy = 16,
1104 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1105 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1106 FLOAT minLOD = 0.f,
1107 FLOAT maxLOD = D3D12_FLOAT32_MAX,
1108 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1109 UINT registerSpace = 0) noexcept
1110 {
1111 Init(
1112 shaderRegister,
1113 filter,
1114 addressU,
1115 addressV,
1116 addressW,
1117 mipLODBias,
1118 maxAnisotropy,
1119 comparisonFunc,
1120 borderColor,
1121 minLOD,
1122 maxLOD,
1123 shaderVisibility,
1124 registerSpace);
1125 }
1126
1127 static inline void Init(
1128 _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc,
1129 UINT shaderRegister,
1130 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
1131 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1132 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1133 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1134 FLOAT mipLODBias = 0,
1135 UINT maxAnisotropy = 16,
1136 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1137 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1138 FLOAT minLOD = 0.f,
1139 FLOAT maxLOD = D3D12_FLOAT32_MAX,
1140 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1141 UINT registerSpace = 0) noexcept
1142 {
1143 samplerDesc.ShaderRegister = shaderRegister;
1144 samplerDesc.Filter = filter;
1145 samplerDesc.AddressU = addressU;
1146 samplerDesc.AddressV = addressV;
1147 samplerDesc.AddressW = addressW;
1148 samplerDesc.MipLODBias = mipLODBias;
1149 samplerDesc.MaxAnisotropy = maxAnisotropy;
1150 samplerDesc.ComparisonFunc = comparisonFunc;
1151 samplerDesc.BorderColor = borderColor;
1152 samplerDesc.MinLOD = minLOD;
1153 samplerDesc.MaxLOD = maxLOD;
1154 samplerDesc.ShaderVisibility = shaderVisibility;
1155 samplerDesc.RegisterSpace = registerSpace;
1156 }
1157 inline void Init(
1158 UINT shaderRegister,
1159 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
1160 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1161 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1162 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1163 FLOAT mipLODBias = 0,
1164 UINT maxAnisotropy = 16,
1165 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1166 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1167 FLOAT minLOD = 0.f,
1168 FLOAT maxLOD = D3D12_FLOAT32_MAX,
1169 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1170 UINT registerSpace = 0) noexcept
1171 {
1172 Init(
1173 *this,
1174 shaderRegister,
1175 filter,
1176 addressU,
1177 addressV,
1178 addressW,
1179 mipLODBias,
1180 maxAnisotropy,
1181 comparisonFunc,
1182 borderColor,
1183 minLOD,
1184 maxLOD,
1185 shaderVisibility,
1186 registerSpace);
1187 }
1188
1189};
1190
1191//------------------------------------------------------------------------------------------------
1192struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC
1193{
1194 CD3DX12_ROOT_SIGNATURE_DESC() = default;
1195 explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept :
1196 D3D12_ROOT_SIGNATURE_DESC(o)
1197 {}
1198 CD3DX12_ROOT_SIGNATURE_DESC(
1199 UINT numParameters,
1200 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1201 UINT numStaticSamplers = 0,
1202 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1203 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1204 {
1205 Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1206 }
1207 CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
1208 {
1209 Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
1210 }
1211
1212 inline void Init(
1213 UINT numParameters,
1214 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1215 UINT numStaticSamplers = 0,
1216 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1217 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1218 {
1219 Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1220 }
1221
1222 static inline void Init(
1223 _Out_ D3D12_ROOT_SIGNATURE_DESC &desc,
1224 UINT numParameters,
1225 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1226 UINT numStaticSamplers = 0,
1227 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1228 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1229 {
1230 desc.NumParameters = numParameters;
1231 desc.pParameters = _pParameters;
1232 desc.NumStaticSamplers = numStaticSamplers;
1233 desc.pStaticSamplers = _pStaticSamplers;
1234 desc.Flags = flags;
1235 }
1236};
1237
1238//------------------------------------------------------------------------------------------------
1239struct CD3DX12_DESCRIPTOR_RANGE1 : public D3D12_DESCRIPTOR_RANGE1
1240{
1241 CD3DX12_DESCRIPTOR_RANGE1() = default;
1242 explicit CD3DX12_DESCRIPTOR_RANGE1(const D3D12_DESCRIPTOR_RANGE1 &o) noexcept :
1243 D3D12_DESCRIPTOR_RANGE1(o)
1244 {}
1245 CD3DX12_DESCRIPTOR_RANGE1(
1246 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
1247 UINT numDescriptors,
1248 UINT baseShaderRegister,
1249 UINT registerSpace = 0,
1250 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
1251 UINT offsetInDescriptorsFromTableStart =
1252 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
1253 {
1254 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
1255 }
1256
1257 inline void Init(
1258 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
1259 UINT numDescriptors,
1260 UINT baseShaderRegister,
1261 UINT registerSpace = 0,
1262 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
1263 UINT offsetInDescriptorsFromTableStart =
1264 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
1265 {
1266 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
1267 }
1268
1269 static inline void Init(
1270 _Out_ D3D12_DESCRIPTOR_RANGE1 &range,
1271 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
1272 UINT numDescriptors,
1273 UINT baseShaderRegister,
1274 UINT registerSpace = 0,
1275 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
1276 UINT offsetInDescriptorsFromTableStart =
1277 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
1278 {
1279 range.RangeType = rangeType;
1280 range.NumDescriptors = numDescriptors;
1281 range.BaseShaderRegister = baseShaderRegister;
1282 range.RegisterSpace = registerSpace;
1283 range.Flags = flags;
1284 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
1285 }
1286};
1287
1288//------------------------------------------------------------------------------------------------
1289struct CD3DX12_ROOT_DESCRIPTOR_TABLE1 : public D3D12_ROOT_DESCRIPTOR_TABLE1
1290{
1291 CD3DX12_ROOT_DESCRIPTOR_TABLE1() = default;
1292 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE1(const D3D12_ROOT_DESCRIPTOR_TABLE1 &o) noexcept :
1293 D3D12_ROOT_DESCRIPTOR_TABLE1(o)
1294 {}
1295 CD3DX12_ROOT_DESCRIPTOR_TABLE1(
1296 UINT numDescriptorRanges,
1297 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
1298 {
1299 Init(numDescriptorRanges, _pDescriptorRanges);
1300 }
1301
1302 inline void Init(
1303 UINT numDescriptorRanges,
1304 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
1305 {
1306 Init(*this, numDescriptorRanges, _pDescriptorRanges);
1307 }
1308
1309 static inline void Init(
1310 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE1 &rootDescriptorTable,
1311 UINT numDescriptorRanges,
1312 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
1313 {
1314 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
1315 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
1316 }
1317};
1318
1319//------------------------------------------------------------------------------------------------
1320struct CD3DX12_ROOT_DESCRIPTOR1 : public D3D12_ROOT_DESCRIPTOR1
1321{
1322 CD3DX12_ROOT_DESCRIPTOR1() = default;
1323 explicit CD3DX12_ROOT_DESCRIPTOR1(const D3D12_ROOT_DESCRIPTOR1 &o) noexcept :
1324 D3D12_ROOT_DESCRIPTOR1(o)
1325 {}
1326 CD3DX12_ROOT_DESCRIPTOR1(
1327 UINT shaderRegister,
1328 UINT registerSpace = 0,
1329 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
1330 {
1331 Init(shaderRegister, registerSpace, flags);
1332 }
1333
1334 inline void Init(
1335 UINT shaderRegister,
1336 UINT registerSpace = 0,
1337 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
1338 {
1339 Init(*this, shaderRegister, registerSpace, flags);
1340 }
1341
1342 static inline void Init(
1343 _Out_ D3D12_ROOT_DESCRIPTOR1 &table,
1344 UINT shaderRegister,
1345 UINT registerSpace = 0,
1346 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
1347 {
1348 table.ShaderRegister = shaderRegister;
1349 table.RegisterSpace = registerSpace;
1350 table.Flags = flags;
1351 }
1352};
1353
1354//------------------------------------------------------------------------------------------------
1355struct CD3DX12_ROOT_PARAMETER1 : public D3D12_ROOT_PARAMETER1
1356{
1357 CD3DX12_ROOT_PARAMETER1() = default;
1358 explicit CD3DX12_ROOT_PARAMETER1(const D3D12_ROOT_PARAMETER1 &o) noexcept :
1359 D3D12_ROOT_PARAMETER1(o)
1360 {}
1361
1362 static inline void InitAsDescriptorTable(
1363 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1364 UINT numDescriptorRanges,
1365 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
1366 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1367 {
1368 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
1369 rootParam.ShaderVisibility = visibility;
1370 CD3DX12_ROOT_DESCRIPTOR_TABLE1::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
1371 }
1372
1373 static inline void InitAsConstants(
1374 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1375 UINT num32BitValues,
1376 UINT shaderRegister,
1377 UINT registerSpace = 0,
1378 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1379 {
1380 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
1381 rootParam.ShaderVisibility = visibility;
1382 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
1383 }
1384
1385 static inline void InitAsConstantBufferView(
1386 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1387 UINT shaderRegister,
1388 UINT registerSpace = 0,
1389 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1390 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1391 {
1392 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
1393 rootParam.ShaderVisibility = visibility;
1394 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
1395 }
1396
1397 static inline void InitAsShaderResourceView(
1398 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1399 UINT shaderRegister,
1400 UINT registerSpace = 0,
1401 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1402 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1403 {
1404 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
1405 rootParam.ShaderVisibility = visibility;
1406 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
1407 }
1408
1409 static inline void InitAsUnorderedAccessView(
1410 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1411 UINT shaderRegister,
1412 UINT registerSpace = 0,
1413 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1414 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1415 {
1416 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
1417 rootParam.ShaderVisibility = visibility;
1418 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
1419 }
1420
1421 inline void InitAsDescriptorTable(
1422 UINT numDescriptorRanges,
1423 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
1424 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1425 {
1426 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
1427 }
1428
1429 inline void InitAsConstants(
1430 UINT num32BitValues,
1431 UINT shaderRegister,
1432 UINT registerSpace = 0,
1433 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1434 {
1435 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
1436 }
1437
1438 inline void InitAsConstantBufferView(
1439 UINT shaderRegister,
1440 UINT registerSpace = 0,
1441 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1442 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1443 {
1444 InitAsConstantBufferView(*this, shaderRegister, registerSpace, flags, visibility);
1445 }
1446
1447 inline void InitAsShaderResourceView(
1448 UINT shaderRegister,
1449 UINT registerSpace = 0,
1450 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1451 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1452 {
1453 InitAsShaderResourceView(*this, shaderRegister, registerSpace, flags, visibility);
1454 }
1455
1456 inline void InitAsUnorderedAccessView(
1457 UINT shaderRegister,
1458 UINT registerSpace = 0,
1459 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1460 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1461 {
1462 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, flags, visibility);
1463 }
1464};
1465
1466//------------------------------------------------------------------------------------------------
1467struct CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC : public D3D12_VERSIONED_ROOT_SIGNATURE_DESC
1468{
1469 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC() = default;
1470 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC &o) noexcept :
1471 D3D12_VERSIONED_ROOT_SIGNATURE_DESC(o)
1472 {}
1473 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept
1474 {
1475 Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
1476 Desc_1_0 = o;
1477 }
1478 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC1 &o) noexcept
1479 {
1480 Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
1481 Desc_1_1 = o;
1482 }
1483 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
1484 UINT numParameters,
1485 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1486 UINT numStaticSamplers = 0,
1487 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1488 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1489 {
1490 Init_1_0(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1491 }
1492 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
1493 UINT numParameters,
1494 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
1495 UINT numStaticSamplers = 0,
1496 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1497 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1498 {
1499 Init_1_1(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1500 }
1501 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
1502 {
1503 Init_1_1(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
1504 }
1505
1506 inline void Init_1_0(
1507 UINT numParameters,
1508 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1509 UINT numStaticSamplers = 0,
1510 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1511 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1512 {
1513 Init_1_0(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1514 }
1515
1516 static inline void Init_1_0(
1517 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
1518 UINT numParameters,
1519 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1520 UINT numStaticSamplers = 0,
1521 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1522 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1523 {
1524 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
1525 desc.Desc_1_0.NumParameters = numParameters;
1526 desc.Desc_1_0.pParameters = _pParameters;
1527 desc.Desc_1_0.NumStaticSamplers = numStaticSamplers;
1528 desc.Desc_1_0.pStaticSamplers = _pStaticSamplers;
1529 desc.Desc_1_0.Flags = flags;
1530 }
1531
1532 inline void Init_1_1(
1533 UINT numParameters,
1534 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
1535 UINT numStaticSamplers = 0,
1536 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1537 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1538 {
1539 Init_1_1(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1540 }
1541
1542 static inline void Init_1_1(
1543 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
1544 UINT numParameters,
1545 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
1546 UINT numStaticSamplers = 0,
1547 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1548 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1549 {
1550 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
1551 desc.Desc_1_1.NumParameters = numParameters;
1552 desc.Desc_1_1.pParameters = _pParameters;
1553 desc.Desc_1_1.NumStaticSamplers = numStaticSamplers;
1554 desc.Desc_1_1.pStaticSamplers = _pStaticSamplers;
1555 desc.Desc_1_1.Flags = flags;
1556 }
1557};
1558
1559//------------------------------------------------------------------------------------------------
1560struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE
1561{
1562 CD3DX12_CPU_DESCRIPTOR_HANDLE() = default;
1563 explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) noexcept :
1564 D3D12_CPU_DESCRIPTOR_HANDLE(o)
1565 {}
1566 CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
1567 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
1568 {
1569 InitOffsetted(other, offsetScaledByIncrementSize);
1570 }
1571 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1572 {
1573 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
1574 }
1575 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1576 {
1577 ptr = SIZE_T(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1578 return *this;
1579 }
1580 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
1581 {
1582 ptr = SIZE_T(INT64(ptr) + INT64(offsetScaledByIncrementSize));
1583 return *this;
1584 }
1585 bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
1586 {
1587 return (ptr == other.ptr);
1588 }
1589 bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
1590 {
1591 return (ptr != other.ptr);
1592 }
1593 CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) noexcept
1594 {
1595 ptr = other.ptr;
1596 return *this;
1597 }
1598
1599 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1600 {
1601 InitOffsetted(*this, base, offsetScaledByIncrementSize);
1602 }
1603
1604 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1605 {
1606 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
1607 }
1608
1609 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1610 {
1611 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
1612 }
1613
1614 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1615 {
1616 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1617 }
1618};
1619
1620//------------------------------------------------------------------------------------------------
1621struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
1622{
1623 CD3DX12_GPU_DESCRIPTOR_HANDLE() = default;
1624 explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) noexcept :
1625 D3D12_GPU_DESCRIPTOR_HANDLE(o)
1626 {}
1627 CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
1628 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
1629 {
1630 InitOffsetted(other, offsetScaledByIncrementSize);
1631 }
1632 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1633 {
1634 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
1635 }
1636 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1637 {
1638 ptr = UINT64(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1639 return *this;
1640 }
1641 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
1642 {
1643 ptr = UINT64(INT64(ptr) + INT64(offsetScaledByIncrementSize));
1644 return *this;
1645 }
1646 inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
1647 {
1648 return (ptr == other.ptr);
1649 }
1650 inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
1651 {
1652 return (ptr != other.ptr);
1653 }
1654 CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) noexcept
1655 {
1656 ptr = other.ptr;
1657 return *this;
1658 }
1659
1660 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1661 {
1662 InitOffsetted(*this, base, offsetScaledByIncrementSize);
1663 }
1664
1665 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1666 {
1667 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
1668 }
1669
1670 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1671 {
1672 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
1673 }
1674
1675 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1676 {
1677 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1678 }
1679};
1680
1681//------------------------------------------------------------------------------------------------
1682inline constexpr UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) noexcept
1683{
1684 return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize;
1685}
1686
1687//------------------------------------------------------------------------------------------------
1688template <typename T, typename U, typename V>
1689inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept
1690{
1691 MipSlice = static_cast<T>(Subresource % MipLevels);
1692 ArraySlice = static_cast<U>((Subresource / MipLevels) % ArraySize);
1693 PlaneSlice = static_cast<V>(Subresource / (MipLevels * ArraySize));
1694}
1695
1696//------------------------------------------------------------------------------------------------
1697inline UINT8 D3D12GetFormatPlaneCount(
1698 _In_ ID3D12Device* pDevice,
1699 DXGI_FORMAT Format
1700 ) noexcept
1701{
1702 D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = { Format, 0 };
1703 if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
1704 {
1705 return 0;
1706 }
1707 return formatInfo.PlaneCount;
1708}
1709
1710//------------------------------------------------------------------------------------------------
1711struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC
1712{
1713 CD3DX12_RESOURCE_DESC() = default;
1714 explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) noexcept :
1715 D3D12_RESOURCE_DESC( o )
1716 {}
1717 CD3DX12_RESOURCE_DESC(
1718 D3D12_RESOURCE_DIMENSION dimension,
1719 UINT64 alignment,
1720 UINT64 width,
1721 UINT height,
1722 UINT16 depthOrArraySize,
1723 UINT16 mipLevels,
1724 DXGI_FORMAT format,
1725 UINT sampleCount,
1726 UINT sampleQuality,
1727 D3D12_TEXTURE_LAYOUT layout,
1728 D3D12_RESOURCE_FLAGS flags ) noexcept
1729 {
1730 Dimension = dimension;
1731 Alignment = alignment;
1732 Width = width;
1733 Height = height;
1734 DepthOrArraySize = depthOrArraySize;
1735 MipLevels = mipLevels;
1736 Format = format;
1737 SampleDesc.Count = sampleCount;
1738 SampleDesc.Quality = sampleQuality;
1739 Layout = layout;
1740 Flags = flags;
1741 }
1742 static inline CD3DX12_RESOURCE_DESC Buffer(
1743 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1744 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1745 {
1746 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1747 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1748 }
1749 static inline CD3DX12_RESOURCE_DESC Buffer(
1750 UINT64 width,
1751 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1752 UINT64 alignment = 0 ) noexcept
1753 {
1754 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1755 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1756 }
1757 static inline CD3DX12_RESOURCE_DESC Tex1D(
1758 DXGI_FORMAT format,
1759 UINT64 width,
1760 UINT16 arraySize = 1,
1761 UINT16 mipLevels = 0,
1762 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1763 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1764 UINT64 alignment = 0 ) noexcept
1765 {
1766 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1767 mipLevels, format, 1, 0, layout, flags );
1768 }
1769 static inline CD3DX12_RESOURCE_DESC Tex2D(
1770 DXGI_FORMAT format,
1771 UINT64 width,
1772 UINT height,
1773 UINT16 arraySize = 1,
1774 UINT16 mipLevels = 0,
1775 UINT sampleCount = 1,
1776 UINT sampleQuality = 0,
1777 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1778 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1779 UINT64 alignment = 0 ) noexcept
1780 {
1781 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1782 mipLevels, format, sampleCount, sampleQuality, layout, flags );
1783 }
1784 static inline CD3DX12_RESOURCE_DESC Tex3D(
1785 DXGI_FORMAT format,
1786 UINT64 width,
1787 UINT height,
1788 UINT16 depth,
1789 UINT16 mipLevels = 0,
1790 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1791 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1792 UINT64 alignment = 0 ) noexcept
1793 {
1794 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1795 mipLevels, format, 1, 0, layout, flags );
1796 }
1797 inline UINT16 Depth() const noexcept
1798 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1799 inline UINT16 ArraySize() const noexcept
1800 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1801 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1802 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1803 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1804 { return MipLevels * ArraySize() * PlaneCount(pDevice); }
1805 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1806 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1807};
1808inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1809{
1810 return l.Dimension == r.Dimension &&
1811 l.Alignment == r.Alignment &&
1812 l.Width == r.Width &&
1813 l.Height == r.Height &&
1814 l.DepthOrArraySize == r.DepthOrArraySize &&
1815 l.MipLevels == r.MipLevels &&
1816 l.Format == r.Format &&
1817 l.SampleDesc.Count == r.SampleDesc.Count &&
1818 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1819 l.Layout == r.Layout &&
1820 l.Flags == r.Flags;
1821}
1822inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1823{ return !( l == r ); }
1824
1825//------------------------------------------------------------------------------------------------
1826struct CD3DX12_RESOURCE_DESC1 : public D3D12_RESOURCE_DESC1
1827{
1828 CD3DX12_RESOURCE_DESC1() = default;
1829 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC1& o ) noexcept :
1830 D3D12_RESOURCE_DESC1( o )
1831 {}
1832 CD3DX12_RESOURCE_DESC1(
1833 D3D12_RESOURCE_DIMENSION dimension,
1834 UINT64 alignment,
1835 UINT64 width,
1836 UINT height,
1837 UINT16 depthOrArraySize,
1838 UINT16 mipLevels,
1839 DXGI_FORMAT format,
1840 UINT sampleCount,
1841 UINT sampleQuality,
1842 D3D12_TEXTURE_LAYOUT layout,
1843 D3D12_RESOURCE_FLAGS flags,
1844 UINT samplerFeedbackMipRegionWidth = 0,
1845 UINT samplerFeedbackMipRegionHeight = 0,
1846 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1847 {
1848 Dimension = dimension;
1849 Alignment = alignment;
1850 Width = width;
1851 Height = height;
1852 DepthOrArraySize = depthOrArraySize;
1853 MipLevels = mipLevels;
1854 Format = format;
1855 SampleDesc.Count = sampleCount;
1856 SampleDesc.Quality = sampleQuality;
1857 Layout = layout;
1858 Flags = flags;
1859 SamplerFeedbackMipRegion.Width = samplerFeedbackMipRegionWidth;
1860 SamplerFeedbackMipRegion.Height = samplerFeedbackMipRegionHeight;
1861 SamplerFeedbackMipRegion.Depth = samplerFeedbackMipRegionDepth;
1862 }
1863 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1864 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1865 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1866 {
1867 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1868 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1869 }
1870 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1871 UINT64 width,
1872 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1873 UINT64 alignment = 0 ) noexcept
1874 {
1875 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1876 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1877 }
1878 static inline CD3DX12_RESOURCE_DESC1 Tex1D(
1879 DXGI_FORMAT format,
1880 UINT64 width,
1881 UINT16 arraySize = 1,
1882 UINT16 mipLevels = 0,
1883 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1884 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1885 UINT64 alignment = 0 ) noexcept
1886 {
1887 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1888 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1889 }
1890 static inline CD3DX12_RESOURCE_DESC1 Tex2D(
1891 DXGI_FORMAT format,
1892 UINT64 width,
1893 UINT height,
1894 UINT16 arraySize = 1,
1895 UINT16 mipLevels = 0,
1896 UINT sampleCount = 1,
1897 UINT sampleQuality = 0,
1898 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1899 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1900 UINT64 alignment = 0,
1901 UINT samplerFeedbackMipRegionWidth = 0,
1902 UINT samplerFeedbackMipRegionHeight = 0,
1903 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1904 {
1905 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1906 mipLevels, format, sampleCount, sampleQuality, layout, flags, samplerFeedbackMipRegionWidth,
1907 samplerFeedbackMipRegionHeight, samplerFeedbackMipRegionDepth );
1908 }
1909 static inline CD3DX12_RESOURCE_DESC1 Tex3D(
1910 DXGI_FORMAT format,
1911 UINT64 width,
1912 UINT height,
1913 UINT16 depth,
1914 UINT16 mipLevels = 0,
1915 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1916 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1917 UINT64 alignment = 0 ) noexcept
1918 {
1919 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1920 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1921 }
1922 inline UINT16 Depth() const noexcept
1923 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1924 inline UINT16 ArraySize() const noexcept
1925 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1926 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1927 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1928 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1929 { return MipLevels * ArraySize() * PlaneCount(pDevice); }
1930 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1931 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1932};
1933inline bool operator==( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1934{
1935 return l.Dimension == r.Dimension &&
1936 l.Alignment == r.Alignment &&
1937 l.Width == r.Width &&
1938 l.Height == r.Height &&
1939 l.DepthOrArraySize == r.DepthOrArraySize &&
1940 l.MipLevels == r.MipLevels &&
1941 l.Format == r.Format &&
1942 l.SampleDesc.Count == r.SampleDesc.Count &&
1943 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1944 l.Layout == r.Layout &&
1945 l.Flags == r.Flags &&
1946 l.SamplerFeedbackMipRegion.Width == r.SamplerFeedbackMipRegion.Width &&
1947 l.SamplerFeedbackMipRegion.Height == r.SamplerFeedbackMipRegion.Height &&
1948 l.SamplerFeedbackMipRegion.Depth == r.SamplerFeedbackMipRegion.Depth;
1949}
1950inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1951{ return !( l == r ); }
1952
1953//------------------------------------------------------------------------------------------------
1954struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
1955{
1956 CD3DX12_VIEW_INSTANCING_DESC() = default;
1957 explicit CD3DX12_VIEW_INSTANCING_DESC( const D3D12_VIEW_INSTANCING_DESC& o ) noexcept :
1958 D3D12_VIEW_INSTANCING_DESC( o )
1959 {}
1960 explicit CD3DX12_VIEW_INSTANCING_DESC( CD3DX12_DEFAULT ) noexcept
1961 {
1962 ViewInstanceCount = 0;
1963 pViewInstanceLocations = nullptr;
1964 Flags = D3D12_VIEW_INSTANCING_FLAG_NONE;
1965 }
1966 explicit CD3DX12_VIEW_INSTANCING_DESC(
1967 UINT InViewInstanceCount,
1968 const D3D12_VIEW_INSTANCE_LOCATION* InViewInstanceLocations,
1969 D3D12_VIEW_INSTANCING_FLAGS InFlags) noexcept
1970 {
1971 ViewInstanceCount = InViewInstanceCount;
1972 pViewInstanceLocations = InViewInstanceLocations;
1973 Flags = InFlags;
1974 }
1975};
1976
1977//------------------------------------------------------------------------------------------------
1978// Row-by-row memcpy
1979inline void MemcpySubresource(
1980 _In_ const D3D12_MEMCPY_DEST* pDest,
1981 _In_ const D3D12_SUBRESOURCE_DATA* pSrc,
1982 SIZE_T RowSizeInBytes,
1983 UINT NumRows,
1984 UINT NumSlices) noexcept
1985{
1986 for (UINT z = 0; z < NumSlices; ++z)
1987 {
1988 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
1989 auto pSrcSlice = static_cast<const BYTE*>(pSrc->pData) + pSrc->SlicePitch * LONG_PTR(z);
1990 for (UINT y = 0; y < NumRows; ++y)
1991 {
1992 memcpy(pDestSlice + pDest->RowPitch * y,
1993 pSrcSlice + pSrc->RowPitch * LONG_PTR(y),
1994 RowSizeInBytes);
1995 }
1996 }
1997}
1998
1999//------------------------------------------------------------------------------------------------
2000// Row-by-row memcpy
2001inline void MemcpySubresource(
2002 _In_ const D3D12_MEMCPY_DEST* pDest,
2003 _In_ const void* pResourceData,
2004 _In_ const D3D12_SUBRESOURCE_INFO* pSrc,
2005 SIZE_T RowSizeInBytes,
2006 UINT NumRows,
2007 UINT NumSlices) noexcept
2008{
2009 for (UINT z = 0; z < NumSlices; ++z)
2010 {
2011 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
2012 auto pSrcSlice = (static_cast<const BYTE*>(pResourceData) + pSrc->Offset) + pSrc->DepthPitch * ULONG_PTR(z);
2013 for (UINT y = 0; y < NumRows; ++y)
2014 {
2015 memcpy(pDestSlice + pDest->RowPitch * y,
2016 pSrcSlice + pSrc->RowPitch * ULONG_PTR(y),
2017 RowSizeInBytes);
2018 }
2019 }
2020}
2021
2022//------------------------------------------------------------------------------------------------
2023// Returns required size of a buffer to be used for data upload
2024inline UINT64 GetRequiredIntermediateSize(
2025 _In_ ID3D12Resource* pDestinationResource,
2026 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2027 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) noexcept
2028{
2029 auto Desc = pDestinationResource->GetDesc();
2030 UINT64 RequiredSize = 0;
2031
2032 ID3D12Device* pDevice = nullptr;
2033 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2034 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
2035 pDevice->Release();
2036
2037 return RequiredSize;
2038}
2039
2040//------------------------------------------------------------------------------------------------
2041// All arrays must be populated (e.g. by calling GetCopyableFootprints)
2042inline UINT64 UpdateSubresources(
2043 _In_ ID3D12GraphicsCommandList* pCmdList,
2044 _In_ ID3D12Resource* pDestinationResource,
2045 _In_ ID3D12Resource* pIntermediate,
2046 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2047 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2048 UINT64 RequiredSize,
2049 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
2050 _In_reads_(NumSubresources) const UINT* pNumRows,
2051 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
2052 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
2053{
2054 // Minor validation
2055 auto IntermediateDesc = pIntermediate->GetDesc();
2056 auto DestinationDesc = pDestinationResource->GetDesc();
2057 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
2058 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
2059 RequiredSize > SIZE_T(-1) ||
2060 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
2061 (FirstSubresource != 0 || NumSubresources != 1)))
2062 {
2063 return 0;
2064 }
2065
2066 BYTE* pData;
2067 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
2068 if (FAILED(hr))
2069 {
2070 return 0;
2071 }
2072
2073 for (UINT i = 0; i < NumSubresources; ++i)
2074 {
2075 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
2076 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
2077 MemcpySubresource(&DestData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
2078 }
2079 pIntermediate->Unmap(0, nullptr);
2080
2081 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
2082 {
2083 pCmdList->CopyBufferRegion(
2084 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
2085 }
2086 else
2087 {
2088 for (UINT i = 0; i < NumSubresources; ++i)
2089 {
2090 CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
2091 CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
2092 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
2093 }
2094 }
2095 return RequiredSize;
2096}
2097
2098//------------------------------------------------------------------------------------------------
2099// All arrays must be populated (e.g. by calling GetCopyableFootprints)
2100inline UINT64 UpdateSubresources(
2101 _In_ ID3D12GraphicsCommandList* pCmdList,
2102 _In_ ID3D12Resource* pDestinationResource,
2103 _In_ ID3D12Resource* pIntermediate,
2104 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2105 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2106 UINT64 RequiredSize,
2107 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
2108 _In_reads_(NumSubresources) const UINT* pNumRows,
2109 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
2110 _In_ const void* pResourceData,
2111 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
2112{
2113 // Minor validation
2114 auto IntermediateDesc = pIntermediate->GetDesc();
2115 auto DestinationDesc = pDestinationResource->GetDesc();
2116 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
2117 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
2118 RequiredSize > SIZE_T(-1) ||
2119 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
2120 (FirstSubresource != 0 || NumSubresources != 1)))
2121 {
2122 return 0;
2123 }
2124
2125 BYTE* pData;
2126 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
2127 if (FAILED(hr))
2128 {
2129 return 0;
2130 }
2131
2132 for (UINT i = 0; i < NumSubresources; ++i)
2133 {
2134 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
2135 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
2136 MemcpySubresource(&DestData, pResourceData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
2137 }
2138 pIntermediate->Unmap(0, nullptr);
2139
2140 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
2141 {
2142 pCmdList->CopyBufferRegion(
2143 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
2144 }
2145 else
2146 {
2147 for (UINT i = 0; i < NumSubresources; ++i)
2148 {
2149 CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
2150 CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
2151 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
2152 }
2153 }
2154 return RequiredSize;
2155}
2156
2157//------------------------------------------------------------------------------------------------
2158// Heap-allocating UpdateSubresources implementation
2159inline UINT64 UpdateSubresources(
2160 _In_ ID3D12GraphicsCommandList* pCmdList,
2161 _In_ ID3D12Resource* pDestinationResource,
2162 _In_ ID3D12Resource* pIntermediate,
2163 UINT64 IntermediateOffset,
2164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2166 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
2167{
2168 UINT64 RequiredSize = 0;
2169 auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
2170 if (MemToAlloc > SIZE_MAX)
2171 {
2172 return 0;
2173 }
2174 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
2175 if (pMem == nullptr)
2176 {
2177 return 0;
2178 }
2179 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
2180 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
2181 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
2182
2183 auto Desc = pDestinationResource->GetDesc();
2184 ID3D12Device* pDevice = nullptr;
2185 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2186 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
2187 pDevice->Release();
2188
2189 UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData);
2190 HeapFree(GetProcessHeap(), 0, pMem);
2191 return Result;
2192}
2193
2194//------------------------------------------------------------------------------------------------
2195// Heap-allocating UpdateSubresources implementation
2196inline UINT64 UpdateSubresources(
2197 _In_ ID3D12GraphicsCommandList* pCmdList,
2198 _In_ ID3D12Resource* pDestinationResource,
2199 _In_ ID3D12Resource* pIntermediate,
2200 UINT64 IntermediateOffset,
2201 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2202 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2203 _In_ const void* pResourceData,
2204 _In_reads_(NumSubresources) D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
2205{
2206 UINT64 RequiredSize = 0;
2207 auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
2208 if (MemToAlloc > SIZE_MAX)
2209 {
2210 return 0;
2211 }
2212 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
2213 if (pMem == nullptr)
2214 {
2215 return 0;
2216 }
2217 auto pLayouts = reinterpret_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
2218 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
2219 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
2220
2221 auto Desc = pDestinationResource->GetDesc();
2222 ID3D12Device* pDevice = nullptr;
2223 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2224 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
2225 pDevice->Release();
2226
2227 UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pResourceData, pSrcData);
2228 HeapFree(GetProcessHeap(), 0, pMem);
2229 return Result;
2230}
2231
2232//------------------------------------------------------------------------------------------------
2233// Stack-allocating UpdateSubresources implementation
2234template <UINT MaxSubresources>
2235inline UINT64 UpdateSubresources(
2236 _In_ ID3D12GraphicsCommandList* pCmdList,
2237 _In_ ID3D12Resource* pDestinationResource,
2238 _In_ ID3D12Resource* pIntermediate,
2239 UINT64 IntermediateOffset,
2240 _In_range_(0,MaxSubresources) UINT FirstSubresource,
2241 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
2242 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
2243{
2244 UINT64 RequiredSize = 0;
2245 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
2246 UINT NumRows[MaxSubresources];
2247 UINT64 RowSizesInBytes[MaxSubresources];
2248
2249 auto Desc = pDestinationResource->GetDesc();
2250 ID3D12Device* pDevice = nullptr;
2251 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2252 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
2253 pDevice->Release();
2254
2255 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData);
2256}
2257
2258//------------------------------------------------------------------------------------------------
2259// Stack-allocating UpdateSubresources implementation
2260template <UINT MaxSubresources>
2261inline UINT64 UpdateSubresources(
2262 _In_ ID3D12GraphicsCommandList* pCmdList,
2263 _In_ ID3D12Resource* pDestinationResource,
2264 _In_ ID3D12Resource* pIntermediate,
2265 UINT64 IntermediateOffset,
2266 _In_range_(0,MaxSubresources) UINT FirstSubresource,
2267 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
2268 _In_ const void* pResourceData,
2269 _In_reads_(NumSubresources) D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
2270{
2271 UINT64 RequiredSize = 0;
2272 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
2273 UINT NumRows[MaxSubresources];
2274 UINT64 RowSizesInBytes[MaxSubresources];
2275
2276 auto Desc = pDestinationResource->GetDesc();
2277 ID3D12Device* pDevice = nullptr;
2278 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2279 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
2280 pDevice->Release();
2281
2282 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pResourceData, pSrcData);
2283}
2284
2285//------------------------------------------------------------------------------------------------
2286inline constexpr bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) noexcept
2287{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; }
2288
2289//------------------------------------------------------------------------------------------------
2290template <typename t_CommandListType>
2291inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * pp) noexcept
2292{
2293 // This cast is useful for passing strongly typed command list pointers into
2294 // ExecuteCommandLists.
2295 // This cast is valid as long as the const-ness is respected. D3D12 APIs do
2296 // respect the const-ness of their arguments.
2297 return reinterpret_cast<ID3D12CommandList * const *>(pp);
2298}
2299
2300//------------------------------------------------------------------------------------------------
2301// D3D12 exports a new method for serializing root signatures in the Windows 10 Anniversary Update.
2302// To help enable root signature 1.1 features when they are available and not require maintaining
2303// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
2304// 1.1 is not supported.
2305inline HRESULT D3DX12SerializeVersionedRootSignature(
2306 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
2307 D3D_ROOT_SIGNATURE_VERSION MaxVersion,
2308 _Outptr_ ID3DBlob** ppBlob,
2309 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob) noexcept
2310{
2311 if (ppErrorBlob != nullptr)
2312 {
2313 *ppErrorBlob = nullptr;
2314 }
2315
2316 switch (MaxVersion)
2317 {
2318 case D3D_ROOT_SIGNATURE_VERSION_1_0:
2319 switch (pRootSignatureDesc->Version)
2320 {
2321 case D3D_ROOT_SIGNATURE_VERSION_1_0:
2322 return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
2323
2324 case D3D_ROOT_SIGNATURE_VERSION_1_1:
2325 {
2326 HRESULT hr = S_OK;
2327 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
2328
2329 const SIZE_T ParametersSize = sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters;
2330 void* pParameters = (ParametersSize > 0) ? HeapAlloc(GetProcessHeap(), 0, ParametersSize) : nullptr;
2331 if (ParametersSize > 0 && pParameters == nullptr)
2332 {
2333 hr = E_OUTOFMEMORY;
2334 }
2335 auto pParameters_1_0 = static_cast<D3D12_ROOT_PARAMETER*>(pParameters);
2336
2337 if (SUCCEEDED(hr))
2338 {
2339 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
2340 {
2341 __analysis_assume(ParametersSize == sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters);
2342 pParameters_1_0[n].ParameterType = desc_1_1.pParameters[n].ParameterType;
2343 pParameters_1_0[n].ShaderVisibility = desc_1_1.pParameters[n].ShaderVisibility;
2344
2345 switch (desc_1_1.pParameters[n].ParameterType)
2346 {
2347 case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS:
2348 pParameters_1_0[n].Constants.Num32BitValues = desc_1_1.pParameters[n].Constants.Num32BitValues;
2349 pParameters_1_0[n].Constants.RegisterSpace = desc_1_1.pParameters[n].Constants.RegisterSpace;
2350 pParameters_1_0[n].Constants.ShaderRegister = desc_1_1.pParameters[n].Constants.ShaderRegister;
2351 break;
2352
2353 case D3D12_ROOT_PARAMETER_TYPE_CBV:
2354 case D3D12_ROOT_PARAMETER_TYPE_SRV:
2355 case D3D12_ROOT_PARAMETER_TYPE_UAV:
2356 pParameters_1_0[n].Descriptor.RegisterSpace = desc_1_1.pParameters[n].Descriptor.RegisterSpace;
2357 pParameters_1_0[n].Descriptor.ShaderRegister = desc_1_1.pParameters[n].Descriptor.ShaderRegister;
2358 break;
2359
2360 case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
2361 const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
2362
2363 const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
2364 void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
2365 if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
2366 {
2367 hr = E_OUTOFMEMORY;
2368 }
2369 auto pDescriptorRanges_1_0 = static_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges);
2370
2371 if (SUCCEEDED(hr))
2372 {
2373 for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
2374 {
2375 __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
2376 pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
2377 pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
2378 pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
2379 pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
2380 pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
2381 }
2382 }
2383
2384 D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
2385 table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
2386 table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
2387 }
2388 }
2389 }
2390
2391 if (SUCCEEDED(hr))
2392 {
2393 CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, desc_1_1.pStaticSamplers, desc_1_1.Flags);
2394 hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
2395 }
2396
2397 if (pParameters)
2398 {
2399 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
2400 {
2401 if (desc_1_1.pParameters[n].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE)
2402 {
2403 auto pDescriptorRanges_1_0 = pParameters_1_0[n].DescriptorTable.pDescriptorRanges;
2404 HeapFree(GetProcessHeap(), 0, reinterpret_cast<void*>(const_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges_1_0)));
2405 }
2406 }
2407 HeapFree(GetProcessHeap(), 0, pParameters);
2408 }
2409 return hr;
2410 }
2411 }
2412 break;
2413
2414 case D3D_ROOT_SIGNATURE_VERSION_1_1:
2415 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
2416 }
2417
2418 return E_INVALIDARG;
2419}
2420
2421//------------------------------------------------------------------------------------------------
2422struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
2423{
2424 CD3DX12_RT_FORMAT_ARRAY() = default;
2425 explicit CD3DX12_RT_FORMAT_ARRAY(const D3D12_RT_FORMAT_ARRAY& o) noexcept
2426 : D3D12_RT_FORMAT_ARRAY(o)
2427 {}
2428 explicit CD3DX12_RT_FORMAT_ARRAY(_In_reads_(NumFormats) const DXGI_FORMAT* pFormats, UINT NumFormats) noexcept
2429 {
2430 NumRenderTargets = NumFormats;
2431 memcpy(RTFormats, pFormats, sizeof(RTFormats));
2432 // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
2433 }
2434};
2435
2436//------------------------------------------------------------------------------------------------
2437// Pipeline State Stream Helpers
2438//------------------------------------------------------------------------------------------------
2439
2440//------------------------------------------------------------------------------------------------
2441// Stream Subobjects, i.e. elements of a stream
2442
2443struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
2444struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
2445
2446#pragma warning(push)
2447#pragma warning(disable : 4324)
2448template <typename InnerStructType, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type, typename DefaultArg = InnerStructType>
2449class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
2450{
2451private:
2452 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE _Type;
2453 InnerStructType _Inner;
2454public:
2455 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : _Type(Type), _Inner(DefaultArg()) {}
2456 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) noexcept : _Type(Type), _Inner(i) {}
2457 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) noexcept { _Type = Type; _Inner = i; return *this; }
2458 operator InnerStructType const&() const noexcept { return _Inner; }
2459 operator InnerStructType&() noexcept { return _Inner; }
2460 InnerStructType* operator&() noexcept { return &_Inner; }
2461 InnerStructType const* operator&() const noexcept { return &_Inner; }
2462};
2463#pragma warning(pop)
2464typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
2465typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
2466typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
2467typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT;
2468typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INDEX_BUFFER_STRIP_CUT_VALUE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE> CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE;
2469typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY;
2470typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS;
2471typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS;
2472typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT;
2473typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
2474typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
2475typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
2476typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
2477typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
2478typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
2479typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
2480typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
2481typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1;
2482typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT;
2483typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER;
2484typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS;
2485typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, DefaultSampleDesc> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC;
2486typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
2487typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
2488typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
2489
2490//------------------------------------------------------------------------------------------------
2491// Stream Parser Helpers
2492
2493struct ID3DX12PipelineParserCallbacks
2494{
2495 // Subobject Callbacks
2496 virtual void FlagsCb(D3D12_PIPELINE_STATE_FLAGS) {}
2497 virtual void NodeMaskCb(UINT) {}
2498 virtual void RootSignatureCb(ID3D12RootSignature*) {}
2499 virtual void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC&) {}
2500 virtual void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE) {}
2501 virtual void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE) {}
2502 virtual void VSCb(const D3D12_SHADER_BYTECODE&) {}
2503 virtual void GSCb(const D3D12_SHADER_BYTECODE&) {}
2504 virtual void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC&) {}
2505 virtual void HSCb(const D3D12_SHADER_BYTECODE&) {}
2506 virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
2507 virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
2508 virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
2509 virtual void ASCb(const D3D12_SHADER_BYTECODE&) {}
2510 virtual void MSCb(const D3D12_SHADER_BYTECODE&) {}
2511 virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
2512 virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
2513 virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
2514 virtual void DSVFormatCb(DXGI_FORMAT) {}
2515 virtual void RasterizerStateCb(const D3D12_RASTERIZER_DESC&) {}
2516 virtual void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY&) {}
2517 virtual void SampleDescCb(const DXGI_SAMPLE_DESC&) {}
2518 virtual void SampleMaskCb(UINT) {}
2519 virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
2520 virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {}
2521
2522 // Error Callbacks
2523 virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
2524 virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
2525 virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
2526
2527 virtual ~ID3DX12PipelineParserCallbacks() = default;
2528};
2529
2530struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
2531{
2532 ID3D12RootSignature* pRootSignature;
2533 D3D12_SHADER_BYTECODE AS;
2534 D3D12_SHADER_BYTECODE MS;
2535 D3D12_SHADER_BYTECODE PS;
2536 D3D12_BLEND_DESC BlendState;
2537 UINT SampleMask;
2538 D3D12_RASTERIZER_DESC RasterizerState;
2539 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
2540 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
2541 UINT NumRenderTargets;
2542 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
2543 DXGI_FORMAT DSVFormat;
2544 DXGI_SAMPLE_DESC SampleDesc;
2545 UINT NodeMask;
2546 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2547 D3D12_PIPELINE_STATE_FLAGS Flags;
2548};
2549
2550// CD3DX12_PIPELINE_STATE_STREAM2 Works on OS Build 19041+ (where there is a new mesh shader pipeline).
2551// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
2552// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
2553struct CD3DX12_PIPELINE_STATE_STREAM2
2554{
2555 CD3DX12_PIPELINE_STATE_STREAM2() = default;
2556 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
2557 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
2558 : Flags(Desc.Flags)
2559 , NodeMask(Desc.NodeMask)
2560 , pRootSignature(Desc.pRootSignature)
2561 , InputLayout(Desc.InputLayout)
2562 , IBStripCutValue(Desc.IBStripCutValue)
2563 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2564 , VS(Desc.VS)
2565 , GS(Desc.GS)
2566 , StreamOutput(Desc.StreamOutput)
2567 , HS(Desc.HS)
2568 , DS(Desc.DS)
2569 , PS(Desc.PS)
2570 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2571 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2572 , DSVFormat(Desc.DSVFormat)
2573 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2574 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2575 , SampleDesc(Desc.SampleDesc)
2576 , SampleMask(Desc.SampleMask)
2577 , CachedPSO(Desc.CachedPSO)
2578 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2579 {}
2580 CD3DX12_PIPELINE_STATE_STREAM2(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
2581 : Flags(Desc.Flags)
2582 , NodeMask(Desc.NodeMask)
2583 , pRootSignature(Desc.pRootSignature)
2584 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2585 , PS(Desc.PS)
2586 , AS(Desc.AS)
2587 , MS(Desc.MS)
2588 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2589 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2590 , DSVFormat(Desc.DSVFormat)
2591 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2592 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2593 , SampleDesc(Desc.SampleDesc)
2594 , SampleMask(Desc.SampleMask)
2595 , CachedPSO(Desc.CachedPSO)
2596 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2597 {}
2598 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
2599 : Flags(Desc.Flags)
2600 , NodeMask(Desc.NodeMask)
2601 , pRootSignature(Desc.pRootSignature)
2602 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
2603 , CachedPSO(Desc.CachedPSO)
2604 {
2605 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
2606 }
2607 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2608 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2609 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2610 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
2611 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
2612 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
2613 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
2614 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
2615 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
2616 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
2617 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
2618 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2619 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
2620 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
2621 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
2622 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2623 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2624 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2625 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2626 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2627 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2628 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2629 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2630 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
2631 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
2632 {
2633 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
2634 D.Flags = this->Flags;
2635 D.NodeMask = this->NodeMask;
2636 D.pRootSignature = this->pRootSignature;
2637 D.InputLayout = this->InputLayout;
2638 D.IBStripCutValue = this->IBStripCutValue;
2639 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
2640 D.VS = this->VS;
2641 D.GS = this->GS;
2642 D.StreamOutput = this->StreamOutput;
2643 D.HS = this->HS;
2644 D.DS = this->DS;
2645 D.PS = this->PS;
2646 D.BlendState = this->BlendState;
2647 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2648 D.DSVFormat = this->DSVFormat;
2649 D.RasterizerState = this->RasterizerState;
2650 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2651 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2652 D.SampleDesc = this->SampleDesc;
2653 D.SampleMask = this->SampleMask;
2654 D.CachedPSO = this->CachedPSO;
2655 return D;
2656 }
2657 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
2658 {
2659 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
2660 D.Flags = this->Flags;
2661 D.NodeMask = this->NodeMask;
2662 D.pRootSignature = this->pRootSignature;
2663 D.CS = this->CS;
2664 D.CachedPSO = this->CachedPSO;
2665 return D;
2666 }
2667};
2668
2669// CD3DX12_PIPELINE_STATE_STREAM1 Works on OS Build 16299+ (where there is a new view instancing subobject).
2670// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
2671struct CD3DX12_PIPELINE_STATE_STREAM1
2672{
2673 CD3DX12_PIPELINE_STATE_STREAM1() = default;
2674 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
2675 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
2676 : Flags(Desc.Flags)
2677 , NodeMask(Desc.NodeMask)
2678 , pRootSignature(Desc.pRootSignature)
2679 , InputLayout(Desc.InputLayout)
2680 , IBStripCutValue(Desc.IBStripCutValue)
2681 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2682 , VS(Desc.VS)
2683 , GS(Desc.GS)
2684 , StreamOutput(Desc.StreamOutput)
2685 , HS(Desc.HS)
2686 , DS(Desc.DS)
2687 , PS(Desc.PS)
2688 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2689 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2690 , DSVFormat(Desc.DSVFormat)
2691 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2692 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2693 , SampleDesc(Desc.SampleDesc)
2694 , SampleMask(Desc.SampleMask)
2695 , CachedPSO(Desc.CachedPSO)
2696 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2697 {}
2698 CD3DX12_PIPELINE_STATE_STREAM1(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
2699 : Flags(Desc.Flags)
2700 , NodeMask(Desc.NodeMask)
2701 , pRootSignature(Desc.pRootSignature)
2702 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2703 , PS(Desc.PS)
2704 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2705 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2706 , DSVFormat(Desc.DSVFormat)
2707 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2708 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2709 , SampleDesc(Desc.SampleDesc)
2710 , SampleMask(Desc.SampleMask)
2711 , CachedPSO(Desc.CachedPSO)
2712 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2713 {}
2714 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
2715 : Flags(Desc.Flags)
2716 , NodeMask(Desc.NodeMask)
2717 , pRootSignature(Desc.pRootSignature)
2718 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
2719 , CachedPSO(Desc.CachedPSO)
2720 {
2721 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
2722 }
2723 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2724 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2725 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2726 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
2727 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
2728 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
2729 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
2730 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
2731 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
2732 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
2733 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
2734 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2735 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
2736 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2737 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2738 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2739 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2740 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2741 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2742 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2743 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2744 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
2745 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
2746 {
2747 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
2748 D.Flags = this->Flags;
2749 D.NodeMask = this->NodeMask;
2750 D.pRootSignature = this->pRootSignature;
2751 D.InputLayout = this->InputLayout;
2752 D.IBStripCutValue = this->IBStripCutValue;
2753 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
2754 D.VS = this->VS;
2755 D.GS = this->GS;
2756 D.StreamOutput = this->StreamOutput;
2757 D.HS = this->HS;
2758 D.DS = this->DS;
2759 D.PS = this->PS;
2760 D.BlendState = this->BlendState;
2761 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2762 D.DSVFormat = this->DSVFormat;
2763 D.RasterizerState = this->RasterizerState;
2764 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2765 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2766 D.SampleDesc = this->SampleDesc;
2767 D.SampleMask = this->SampleMask;
2768 D.CachedPSO = this->CachedPSO;
2769 return D;
2770 }
2771 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
2772 {
2773 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
2774 D.Flags = this->Flags;
2775 D.NodeMask = this->NodeMask;
2776 D.pRootSignature = this->pRootSignature;
2777 D.CS = this->CS;
2778 D.CachedPSO = this->CachedPSO;
2779 return D;
2780 }
2781};
2782
2783
2784struct CD3DX12_PIPELINE_MESH_STATE_STREAM
2785{
2786 CD3DX12_PIPELINE_MESH_STATE_STREAM() = default;
2787 CD3DX12_PIPELINE_MESH_STATE_STREAM(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
2788 : Flags(Desc.Flags)
2789 , NodeMask(Desc.NodeMask)
2790 , pRootSignature(Desc.pRootSignature)
2791 , PS(Desc.PS)
2792 , AS(Desc.AS)
2793 , MS(Desc.MS)
2794 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2795 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2796 , DSVFormat(Desc.DSVFormat)
2797 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2798 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2799 , SampleDesc(Desc.SampleDesc)
2800 , SampleMask(Desc.SampleMask)
2801 , CachedPSO(Desc.CachedPSO)
2802 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2803 {}
2804 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2805 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2806 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2807 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2808 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
2809 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
2810 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2811 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2812 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2813 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2814 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2815 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2816 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2817 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2818 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
2819 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
2820 {
2821 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
2822 D.Flags = this->Flags;
2823 D.NodeMask = this->NodeMask;
2824 D.pRootSignature = this->pRootSignature;
2825 D.PS = this->PS;
2826 D.AS = this->AS;
2827 D.MS = this->MS;
2828 D.BlendState = this->BlendState;
2829 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2830 D.DSVFormat = this->DSVFormat;
2831 D.RasterizerState = this->RasterizerState;
2832 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2833 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2834 D.SampleDesc = this->SampleDesc;
2835 D.SampleMask = this->SampleMask;
2836 D.CachedPSO = this->CachedPSO;
2837 return D;
2838 }
2839};
2840
2841// CD3DX12_PIPELINE_STATE_STREAM works on OS Build 15063+ but does not support new subobject(s) added in OS Build 16299+.
2842// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
2843struct CD3DX12_PIPELINE_STATE_STREAM
2844{
2845 CD3DX12_PIPELINE_STATE_STREAM() = default;
2846 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
2847 : Flags(Desc.Flags)
2848 , NodeMask(Desc.NodeMask)
2849 , pRootSignature(Desc.pRootSignature)
2850 , InputLayout(Desc.InputLayout)
2851 , IBStripCutValue(Desc.IBStripCutValue)
2852 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2853 , VS(Desc.VS)
2854 , GS(Desc.GS)
2855 , StreamOutput(Desc.StreamOutput)
2856 , HS(Desc.HS)
2857 , DS(Desc.DS)
2858 , PS(Desc.PS)
2859 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2860 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2861 , DSVFormat(Desc.DSVFormat)
2862 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2863 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2864 , SampleDesc(Desc.SampleDesc)
2865 , SampleMask(Desc.SampleMask)
2866 , CachedPSO(Desc.CachedPSO)
2867 {}
2868 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
2869 : Flags(Desc.Flags)
2870 , NodeMask(Desc.NodeMask)
2871 , pRootSignature(Desc.pRootSignature)
2872 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
2873 , CachedPSO(Desc.CachedPSO)
2874 {}
2875 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2876 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2877 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2878 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
2879 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
2880 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
2881 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
2882 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
2883 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
2884 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
2885 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
2886 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2887 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
2888 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2889 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2890 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2891 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2892 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2893 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2894 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2895 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2896 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
2897 {
2898 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
2899 D.Flags = this->Flags;
2900 D.NodeMask = this->NodeMask;
2901 D.pRootSignature = this->pRootSignature;
2902 D.InputLayout = this->InputLayout;
2903 D.IBStripCutValue = this->IBStripCutValue;
2904 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
2905 D.VS = this->VS;
2906 D.GS = this->GS;
2907 D.StreamOutput = this->StreamOutput;
2908 D.HS = this->HS;
2909 D.DS = this->DS;
2910 D.PS = this->PS;
2911 D.BlendState = this->BlendState;
2912 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2913 D.DSVFormat = this->DSVFormat;
2914 D.RasterizerState = this->RasterizerState;
2915 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2916 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2917 D.SampleDesc = this->SampleDesc;
2918 D.SampleMask = this->SampleMask;
2919 D.CachedPSO = this->CachedPSO;
2920 return D;
2921 }
2922 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
2923 {
2924 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
2925 D.Flags = this->Flags;
2926 D.NodeMask = this->NodeMask;
2927 D.pRootSignature = this->pRootSignature;
2928 D.CS = this->CS;
2929 D.CachedPSO = this->CachedPSO;
2930 return D;
2931 }
2932};
2933
2934struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
2935{
2936 CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
2937 CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER() noexcept
2938 : SeenDSS(false)
2939 {
2940 // Adjust defaults to account for absent members.
2941 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
2942
2943 // Depth disabled if no DSV format specified.
2944 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
2945 }
2946
2947 // ID3DX12PipelineParserCallbacks
2948 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
2949 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
2950 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
2951 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
2952 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
2953 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
2954 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
2955 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
2956 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
2957 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
2958 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
2959 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
2960 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
2961 void ASCb(const D3D12_SHADER_BYTECODE& AS) override {PipelineStream.AS = AS;}
2962 void MSCb(const D3D12_SHADER_BYTECODE& MS) override {PipelineStream.MS = MS;}
2963 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
2964 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
2965 {
2966 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
2967 SeenDSS = true;
2968 }
2969 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
2970 {
2971 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
2972 SeenDSS = true;
2973 }
2974 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
2975 {
2976 PipelineStream.DSVFormat = DSVFormat;
2977 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
2978 {
2979 // Re-enable depth for the default state.
2980 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
2981 }
2982 }
2983 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
2984 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
2985 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
2986 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
2987 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
2988 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
2989
2990private:
2991 bool SeenDSS;
2992};
2993
2994
2995struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
2996{
2997 CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
2998 CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER() noexcept
2999 : SeenDSS(false)
3000 {
3001 // Adjust defaults to account for absent members.
3002 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
3003
3004 // Depth disabled if no DSV format specified.
3005 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
3006 }
3007
3008 // ID3DX12PipelineParserCallbacks
3009 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
3010 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
3011 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
3012 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
3013 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
3014 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
3015 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
3016 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
3017 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
3018 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
3019 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
3020 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
3021 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
3022 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
3023 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
3024 {
3025 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
3026 SeenDSS = true;
3027 }
3028 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
3029 {
3030 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
3031 SeenDSS = true;
3032 }
3033 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
3034 {
3035 PipelineStream.DSVFormat = DSVFormat;
3036 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
3037 {
3038 // Re-enable depth for the default state.
3039 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
3040 }
3041 }
3042 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
3043 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
3044 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
3045 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
3046 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
3047 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
3048
3049private:
3050 bool SeenDSS;
3051};
3052
3053inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
3054{
3055 switch (SubobjectType)
3056 {
3057 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
3058 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
3059 default:
3060 return SubobjectType;
3061 }
3062}
3063
3064inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& Desc, ID3DX12PipelineParserCallbacks* pCallbacks)
3065{
3066 if (pCallbacks == nullptr)
3067 {
3068 return E_INVALIDARG;
3069 }
3070
3071 if (Desc.SizeInBytes == 0 || Desc.pPipelineStateSubobjectStream == nullptr)
3072 {
3073 pCallbacks->ErrorBadInputParameter(1); // first parameter issue
3074 return E_INVALIDARG;
3075 }
3076
3077 bool SubobjectSeen[D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID] = {};
3078 for (SIZE_T CurOffset = 0, SizeOfSubobject = 0; CurOffset < Desc.SizeInBytes; CurOffset += SizeOfSubobject)
3079 {
3080 BYTE* pStream = static_cast<BYTE*>(Desc.pPipelineStateSubobjectStream)+CurOffset;
3081 auto SubobjectType = *reinterpret_cast<D3D12_PIPELINE_STATE_SUBOBJECT_TYPE*>(pStream);
3082 if (SubobjectType < 0 || SubobjectType >= D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID)
3083 {
3084 pCallbacks->ErrorUnknownSubobject(SubobjectType);
3085 return E_INVALIDARG;
3086 }
3087 if (SubobjectSeen[D3DX12GetBaseSubobjectType(SubobjectType)])
3088 {
3089 pCallbacks->ErrorDuplicateSubobject(SubobjectType);
3090 return E_INVALIDARG; // disallow subobject duplicates in a stream
3091 }
3092 SubobjectSeen[SubobjectType] = true;
3093 switch (SubobjectType)
3094 {
3095 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE:
3096 pCallbacks->RootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature)*>(pStream));
3097 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature);
3098 break;
3099 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS:
3100 pCallbacks->VSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::VS)*>(pStream));
3101 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::VS);
3102 break;
3103 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS:
3104 pCallbacks->PSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PS)*>(pStream));
3105 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PS);
3106 break;
3107 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS:
3108 pCallbacks->DSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DS)*>(pStream));
3109 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DS);
3110 break;
3111 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS:
3112 pCallbacks->HSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::HS)*>(pStream));
3113 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::HS);
3114 break;
3115 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS:
3116 pCallbacks->GSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::GS)*>(pStream));
3117 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::GS);
3118 break;
3119 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS:
3120 pCallbacks->CSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CS)*>(pStream));
3121 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
3122 break;
3123 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS:
3124 pCallbacks->ASCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::AS)*>(pStream));
3125 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::AS);
3126 break;
3127 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS:
3128 pCallbacks->MSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::MS)*>(pStream));
3129 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::MS);
3130 break;
3131 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
3132 pCallbacks->StreamOutputCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput)*>(pStream));
3133 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
3134 break;
3135 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND:
3136 pCallbacks->BlendStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::BlendState)*>(pStream));
3137 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::BlendState);
3138 break;
3139 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK:
3140 pCallbacks->SampleMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleMask)*>(pStream));
3141 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleMask);
3142 break;
3143 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER:
3144 pCallbacks->RasterizerStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState)*>(pStream));
3145 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState);
3146 break;
3147 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL:
3148 pCallbacks->DepthStencilStateCb(*reinterpret_cast<CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL*>(pStream));
3149 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL);
3150 break;
3151 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
3152 pCallbacks->DepthStencilState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState)*>(pStream));
3153 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState);
3154 break;
3155 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT:
3156 pCallbacks->InputLayoutCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::InputLayout)*>(pStream));
3157 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::InputLayout);
3158 break;
3159 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE:
3160 pCallbacks->IBStripCutValueCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue)*>(pStream));
3161 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue);
3162 break;
3163 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY:
3164 pCallbacks->PrimitiveTopologyTypeCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType)*>(pStream));
3165 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType);
3166 break;
3167 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS:
3168 pCallbacks->RTVFormatsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats)*>(pStream));
3169 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats);
3170 break;
3171 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT:
3172 pCallbacks->DSVFormatCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat)*>(pStream));
3173 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat);
3174 break;
3175 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC:
3176 pCallbacks->SampleDescCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc)*>(pStream));
3177 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc);
3178 break;
3179 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK:
3180 pCallbacks->NodeMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::NodeMask)*>(pStream));
3181 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::NodeMask);
3182 break;
3183 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO:
3184 pCallbacks->CachedPSOCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO)*>(pStream));
3185 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO);
3186 break;
3187 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS:
3188 pCallbacks->FlagsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::Flags)*>(pStream));
3189 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::Flags);
3190 break;
3191 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING:
3192 pCallbacks->ViewInstancingCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc)*>(pStream));
3193 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
3194 break;
3195 default:
3196 pCallbacks->ErrorUnknownSubobject(SubobjectType);
3197 return E_INVALIDARG;
3198 }
3199 }
3200
3201 return S_OK;
3202}
3203
3204//------------------------------------------------------------------------------------------------
3205inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b) noexcept
3206{
3207 if (a.Format != b.Format) return false;
3208 if (a.Format == DXGI_FORMAT_D24_UNORM_S8_UINT
3209 || a.Format == DXGI_FORMAT_D16_UNORM
3210 || a.Format == DXGI_FORMAT_D32_FLOAT
3211 || a.Format == DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
3212 {
3213 return (a.DepthStencil.Depth == b.DepthStencil.Depth) &&
3214 (a.DepthStencil.Stencil == b.DepthStencil.Stencil);
3215 } else {
3216 return (a.Color[0] == b.Color[0]) &&
3217 (a.Color[1] == b.Color[1]) &&
3218 (a.Color[2] == b.Color[2]) &&
3219 (a.Color[3] == b.Color[3]);
3220 }
3221}
3222inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &b) noexcept
3223{
3224 return a.ClearValue == b.ClearValue;
3225}
3226inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &a, const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &b) noexcept
3227{
3228 if (a.pSrcResource != b.pSrcResource) return false;
3229 if (a.pDstResource != b.pDstResource) return false;
3230 if (a.SubresourceCount != b.SubresourceCount) return false;
3231 if (a.Format != b.Format) return false;
3232 if (a.ResolveMode != b.ResolveMode) return false;
3233 if (a.PreserveResolveSource != b.PreserveResolveSource) return false;
3234 return true;
3235}
3236inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS &b) noexcept
3237{
3238 if (a.Type != b.Type) return false;
3239 if (a.Type == D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR && !(a.Clear == b.Clear)) return false;
3240 return true;
3241}
3242inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS &a, const D3D12_RENDER_PASS_ENDING_ACCESS &b) noexcept
3243{
3244 if (a.Type != b.Type) return false;
3245 if (a.Type == D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE && !(a.Resolve == b.Resolve)) return false;
3246 return true;
3247}
3248inline bool operator==( const D3D12_RENDER_PASS_RENDER_TARGET_DESC &a, const D3D12_RENDER_PASS_RENDER_TARGET_DESC &b) noexcept
3249{
3250 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
3251 if (!(a.BeginningAccess == b.BeginningAccess)) return false;
3252 if (!(a.EndingAccess == b.EndingAccess)) return false;
3253 return true;
3254}
3255inline bool operator==( const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &a, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &b) noexcept
3256{
3257 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
3258 if (!(a.DepthBeginningAccess == b.DepthBeginningAccess)) return false;
3259 if (!(a.StencilBeginningAccess == b.StencilBeginningAccess)) return false;
3260 if (!(a.DepthEndingAccess == b.DepthEndingAccess)) return false;
3261 if (!(a.StencilEndingAccess == b.StencilEndingAccess)) return false;
3262 return true;
3263}
3264
3265
3266#ifndef D3DX12_NO_STATE_OBJECT_HELPERS
3267
3268//================================================================================================
3269// D3DX12 State Object Creation Helpers
3270//
3271// Helper classes for creating new style state objects out of an arbitrary set of subobjects.
3272// Uses STL
3273//
3274// Start by instantiating CD3DX12_STATE_OBJECT_DESC (see it's public methods).
3275// One of its methods is CreateSubobject(), which has a comment showing a couple of options for
3276// defining subobjects using the helper classes for each subobject (CD3DX12_DXIL_LIBRARY_SUBOBJECT
3277// etc.). The subobject helpers each have methods specific to the subobject for configuring it's
3278// contents.
3279//
3280//================================================================================================
3281#include <list>
3282#include <vector>
3283#include <string>
3284#include <memory>
3285#ifndef D3DX12_USE_ATL
3286#include <wrl/client.h>
3287#define D3DX12_COM_PTR Microsoft::WRL::ComPtr
3288#define D3DX12_COM_PTR_GET(x) x.Get()
3289#define D3DX12_COM_PTR_ADDRESSOF(x) x.GetAddressOf()
3290#else
3291#include <atlbase.h>
3292#define D3DX12_COM_PTR ATL::CComPtr
3293#define D3DX12_COM_PTR_GET(x) x.p
3294#define D3DX12_COM_PTR_ADDRESSOF(x) &x.p
3295#endif
3296
3297//------------------------------------------------------------------------------------------------
3298class CD3DX12_STATE_OBJECT_DESC
3299{
3300public:
3301 CD3DX12_STATE_OBJECT_DESC() noexcept
3302 {
3303 Init(D3D12_STATE_OBJECT_TYPE_COLLECTION);
3304 }
3305 CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE Type) noexcept
3306 {
3307 Init(Type);
3308 }
3309 void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) noexcept { m_Desc.Type = Type; }
3310 operator const D3D12_STATE_OBJECT_DESC&()
3311 {
3312 // Do final preparation work
3313 m_RepointedAssociations.clear();
3314 m_SubobjectArray.clear();
3315 m_SubobjectArray.reserve(m_Desc.NumSubobjects);
3316 // Flatten subobjects into an array (each flattened subobject still has a
3317 // member that's a pointer to it's desc that's not flattened)
3318 for (auto Iter = m_SubobjectList.begin();
3319 Iter != m_SubobjectList.end(); Iter++)
3320 {
3321 m_SubobjectArray.push_back(*Iter);
3322 // Store new location in array so we can redirect pointers contained in subobjects
3323 Iter->pSubobjectArrayLocation = &m_SubobjectArray.back();
3324 }
3325 // For subobjects with pointer fields, create a new copy of those subobject definitions
3326 // with fixed pointers
3327 for (UINT i = 0; i < m_Desc.NumSubobjects; i++)
3328 {
3329 if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION)
3330 {
3331 auto pOriginalSubobjectAssociation =
3332 static_cast<const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION*>(m_SubobjectArray[i].pDesc);
3333 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION Repointed = *pOriginalSubobjectAssociation;
3334 auto pWrapper =
3335 static_cast<const SUBOBJECT_WRAPPER*>(pOriginalSubobjectAssociation->pSubobjectToAssociate);
3336 Repointed.pSubobjectToAssociate = pWrapper->pSubobjectArrayLocation;
3337 m_RepointedAssociations.push_back(Repointed);
3338 m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
3339 }
3340 }
3341 // Below: using ugly way to get pointer in case .data() is not defined
3342 m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
3343 return m_Desc;
3344 }
3345 operator const D3D12_STATE_OBJECT_DESC*()
3346 {
3347 // Cast calls the above final preparation work
3348 return &static_cast<const D3D12_STATE_OBJECT_DESC&>(*this);
3349 }
3350
3351 // CreateSubobject creates a sububject helper (e.g. CD3DX12_HIT_GROUP_SUBOBJECT)
3352 // whose lifetime is owned by this class.
3353 // e.g.
3354 //
3355 // CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION);
3356 // auto Lib0 = Collection1.CreateSubobject<CD3DX12_DXIL_LIBRARY_SUBOBJECT>();
3357 // Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]);
3358 // Lib0->DefineExport(L"rayGenShader0"); // in practice these export listings might be
3359 // // data/engine driven
3360 // etc.
3361 //
3362 // Alternatively, users can instantiate sububject helpers explicitly, such as via local
3363 // variables instead, passing the state object desc that should point to it into the helper
3364 // constructor (or call mySubobjectHelper.AddToStateObject(Collection1)).
3365 // In this alternative scenario, the user must keep the subobject alive as long as the state
3366 // object it is associated with is alive, else it's pointer references will be stale.
3367 // e.g.
3368 //
3369 // CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
3370 // CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2);
3371 // LibA.SetDXILLibrary(&pMyAppDxilLibs[4]); // not manually specifying exports
3372 // // - meaning all exports in the libraries
3373 // // are exported
3374 // etc.
3375
3376 template<typename T>
3377 T* CreateSubobject()
3378 {
3379 T* pSubobject = new T(*this);
3380 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
3381 return pSubobject;
3382 }
3383
3384private:
3385 D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc)
3386 {
3387 SUBOBJECT_WRAPPER Subobject;
3388 Subobject.pSubobjectArrayLocation = nullptr;
3389 Subobject.Type = Type;
3390 Subobject.pDesc = pDesc;
3391 m_SubobjectList.push_back(Subobject);
3392 m_Desc.NumSubobjects++;
3393 return &m_SubobjectList.back();
3394 }
3395 void Init(D3D12_STATE_OBJECT_TYPE Type) noexcept
3396 {
3397 SetStateObjectType(Type);
3398 m_Desc.pSubobjects = nullptr;
3399 m_Desc.NumSubobjects = 0;
3400 m_SubobjectList.clear();
3401 m_SubobjectArray.clear();
3402 m_RepointedAssociations.clear();
3403 }
3404 typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
3405 {
3406 D3D12_STATE_SUBOBJECT* pSubobjectArrayLocation; // new location when flattened into array
3407 // for repointing pointers in subobjects
3408 } SUBOBJECT_WRAPPER;
3409 D3D12_STATE_OBJECT_DESC m_Desc;
3410 std::list<SUBOBJECT_WRAPPER> m_SubobjectList; // Pointers to list nodes handed out so
3411 // these can be edited live
3412 std::vector<D3D12_STATE_SUBOBJECT> m_SubobjectArray; // Built at the end, copying list contents
3413
3414 std::list<D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION>
3415 m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
3416 // repointed to flattened array
3417
3418 class StringContainer
3419 {
3420 public:
3421 LPCWSTR LocalCopy(LPCWSTR string, bool bSingleString = false)
3422 {
3423 if (string)
3424 {
3425 if (bSingleString)
3426 {
3427 m_Strings.clear();
3428 m_Strings.push_back(string);
3429 }
3430 else
3431 {
3432 m_Strings.push_back(string);
3433 }
3434 return m_Strings.back().c_str();
3435 }
3436 else
3437 {
3438 return nullptr;
3439 }
3440 }
3441 void clear() noexcept { m_Strings.clear(); }
3442 private:
3443 std::list<std::wstring> m_Strings;
3444 };
3445
3446 class SUBOBJECT_HELPER_BASE
3447 {
3448 public:
3449 SUBOBJECT_HELPER_BASE() noexcept { Init(); }
3450 virtual ~SUBOBJECT_HELPER_BASE() = default;
3451 virtual D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept = 0;
3452 void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3453 {
3454 m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data());
3455 }
3456 protected:
3457 virtual void* Data() noexcept = 0;
3458 void Init() noexcept { m_pSubobject = nullptr; }
3459 D3D12_STATE_SUBOBJECT* m_pSubobject;
3460 };
3461
3462#if(__cplusplus >= 201103L)
3463 std::list<std::unique_ptr<const SUBOBJECT_HELPER_BASE>> m_OwnedSubobjectHelpers;
3464#else
3465 class OWNED_HELPER
3466 {
3467 public:
3468 OWNED_HELPER(const SUBOBJECT_HELPER_BASE* pHelper) noexcept { m_pHelper = pHelper; }
3469 ~OWNED_HELPER() { delete m_pHelper; }
3470 const SUBOBJECT_HELPER_BASE* m_pHelper;
3471 };
3472
3473 std::list<OWNED_HELPER> m_OwnedSubobjectHelpers;
3474#endif
3475
3476 friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT;
3477 friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT;
3478 friend class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT;
3479 friend class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
3480 friend class CD3DX12_HIT_GROUP_SUBOBJECT;
3481 friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
3482 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
3483 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT;
3484 friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
3485 friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
3486 friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
3487 friend class CD3DX12_NODE_MASK_SUBOBJECT;
3488};
3489
3490//------------------------------------------------------------------------------------------------
3491class CD3DX12_DXIL_LIBRARY_SUBOBJECT
3492 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3493{
3494public:
3495 CD3DX12_DXIL_LIBRARY_SUBOBJECT() noexcept
3496 {
3497 Init();
3498 }
3499 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3500 {
3501 Init();
3502 AddToStateObject(ContainingStateObject);
3503 }
3504 void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
3505 {
3506 static const D3D12_SHADER_BYTECODE Default = {};
3507 m_Desc.DXILLibrary = pCode ? *pCode : Default;
3508 }
3509 void DefineExport(
3510 LPCWSTR Name,
3511 LPCWSTR ExportToRename = nullptr,
3512 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
3513 {
3514 D3D12_EXPORT_DESC Export;
3515 Export.Name = m_Strings.LocalCopy(Name);
3516 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
3517 Export.Flags = Flags;
3518 m_Exports.push_back(Export);
3519 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3520 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
3521 }
3522 template<size_t N>
3523 void DefineExports(LPCWSTR(&Exports)[N])
3524 {
3525 for (UINT i = 0; i < N; i++)
3526 {
3527 DefineExport(Exports[i]);
3528 }
3529 }
3530 void DefineExports(const LPCWSTR* Exports, UINT N)
3531 {
3532 for (UINT i = 0; i < N; i++)
3533 {
3534 DefineExport(Exports[i]);
3535 }
3536 }
3537 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3538 {
3539 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY;
3540 }
3541 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3542 operator const D3D12_DXIL_LIBRARY_DESC&() const noexcept { return m_Desc; }
3543private:
3544 void Init() noexcept
3545 {
3546 SUBOBJECT_HELPER_BASE::Init();
3547 m_Desc = {};
3548 m_Strings.clear();
3549 m_Exports.clear();
3550 }
3551 void* Data() noexcept override { return &m_Desc; }
3552 D3D12_DXIL_LIBRARY_DESC m_Desc;
3553 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3554 std::vector<D3D12_EXPORT_DESC> m_Exports;
3555};
3556
3557//------------------------------------------------------------------------------------------------
3558class CD3DX12_EXISTING_COLLECTION_SUBOBJECT
3559 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3560{
3561public:
3562 CD3DX12_EXISTING_COLLECTION_SUBOBJECT() noexcept
3563 {
3564 Init();
3565 }
3566 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3567 {
3568 Init();
3569 AddToStateObject(ContainingStateObject);
3570 }
3571 void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
3572 {
3573 m_Desc.pExistingCollection = pExistingCollection;
3574 m_CollectionRef = pExistingCollection;
3575 }
3576 void DefineExport(
3577 LPCWSTR Name,
3578 LPCWSTR ExportToRename = nullptr,
3579 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
3580 {
3581 D3D12_EXPORT_DESC Export;
3582 Export.Name = m_Strings.LocalCopy(Name);
3583 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
3584 Export.Flags = Flags;
3585 m_Exports.push_back(Export);
3586 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3587 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
3588 }
3589 template<size_t N>
3590 void DefineExports(LPCWSTR(&Exports)[N])
3591 {
3592 for (UINT i = 0; i < N; i++)
3593 {
3594 DefineExport(Exports[i]);
3595 }
3596 }
3597 void DefineExports(const LPCWSTR* Exports, UINT N)
3598 {
3599 for (UINT i = 0; i < N; i++)
3600 {
3601 DefineExport(Exports[i]);
3602 }
3603 }
3604 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3605 {
3606 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION;
3607 }
3608 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3609 operator const D3D12_EXISTING_COLLECTION_DESC&() const noexcept { return m_Desc; }
3610private:
3611 void Init() noexcept
3612 {
3613 SUBOBJECT_HELPER_BASE::Init();
3614 m_Desc = {};
3615 m_CollectionRef = nullptr;
3616 m_Strings.clear();
3617 m_Exports.clear();
3618 }
3619 void* Data() noexcept override { return &m_Desc; }
3620 D3D12_EXISTING_COLLECTION_DESC m_Desc;
3621 D3DX12_COM_PTR<ID3D12StateObject> m_CollectionRef;
3622 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3623 std::vector<D3D12_EXPORT_DESC> m_Exports;
3624};
3625
3626//------------------------------------------------------------------------------------------------
3627class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT
3628 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3629{
3630public:
3631 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT() noexcept
3632 {
3633 Init();
3634 }
3635 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3636 {
3637 Init();
3638 AddToStateObject(ContainingStateObject);
3639 }
3640 void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
3641 {
3642 m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
3643 }
3644 void AddExport(LPCWSTR Export)
3645 {
3646 m_Desc.NumExports++;
3647 m_Exports.push_back(m_Strings.LocalCopy(Export));
3648 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3649 }
3650 template<size_t N>
3651 void AddExports(LPCWSTR (&Exports)[N])
3652 {
3653 for (UINT i = 0; i < N; i++)
3654 {
3655 AddExport(Exports[i]);
3656 }
3657 }
3658 void AddExports(const LPCWSTR* Exports, UINT N)
3659 {
3660 for (UINT i = 0; i < N; i++)
3661 {
3662 AddExport(Exports[i]);
3663 }
3664 }
3665 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3666 {
3667 return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
3668 }
3669 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3670 operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
3671private:
3672 void Init() noexcept
3673 {
3674 SUBOBJECT_HELPER_BASE::Init();
3675 m_Desc = {};
3676 m_Strings.clear();
3677 m_Exports.clear();
3678 }
3679 void* Data() noexcept override { return &m_Desc; }
3680 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
3681 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3682 std::vector<LPCWSTR> m_Exports;
3683};
3684
3685//------------------------------------------------------------------------------------------------
3686class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
3687 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3688{
3689public:
3690 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION() noexcept
3691 {
3692 Init();
3693 }
3694 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3695 {
3696 Init();
3697 AddToStateObject(ContainingStateObject);
3698 }
3699 void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
3700 {
3701 m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
3702 }
3703 void AddExport(LPCWSTR Export)
3704 {
3705 m_Desc.NumExports++;
3706 m_Exports.push_back(m_Strings.LocalCopy(Export));
3707 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3708 }
3709 template<size_t N>
3710 void AddExports(LPCWSTR (&Exports)[N])
3711 {
3712 for (UINT i = 0; i < N; i++)
3713 {
3714 AddExport(Exports[i]);
3715 }
3716 }
3717 void AddExports(const LPCWSTR* Exports, UINT N)
3718 {
3719 for (UINT i = 0; i < N; i++)
3720 {
3721 AddExport(Exports[i]);
3722 }
3723 }
3724 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3725 {
3726 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
3727 }
3728 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3729 operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
3730private:
3731 void Init() noexcept
3732 {
3733 SUBOBJECT_HELPER_BASE::Init();
3734 m_Desc = {};
3735 m_Strings.clear();
3736 m_SubobjectName.clear();
3737 m_Exports.clear();
3738 }
3739 void* Data() noexcept override { return &m_Desc; }
3740 D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
3741 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3742 CD3DX12_STATE_OBJECT_DESC::StringContainer m_SubobjectName;
3743 std::vector<LPCWSTR> m_Exports;
3744};
3745
3746//------------------------------------------------------------------------------------------------
3747class CD3DX12_HIT_GROUP_SUBOBJECT
3748 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3749{
3750public:
3751 CD3DX12_HIT_GROUP_SUBOBJECT() noexcept
3752 {
3753 Init();
3754 }
3755 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3756 {
3757 Init();
3758 AddToStateObject(ContainingStateObject);
3759 }
3760 void SetHitGroupExport(LPCWSTR exportName)
3761 {
3762 m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
3763 }
3764 void SetHitGroupType(D3D12_HIT_GROUP_TYPE Type) noexcept { m_Desc.Type = Type; }
3765 void SetAnyHitShaderImport(LPCWSTR importName)
3766 {
3767 m_Desc.AnyHitShaderImport = m_Strings[1].LocalCopy(importName, true);
3768 }
3769 void SetClosestHitShaderImport(LPCWSTR importName)
3770 {
3771 m_Desc.ClosestHitShaderImport = m_Strings[2].LocalCopy(importName, true);
3772 }
3773 void SetIntersectionShaderImport(LPCWSTR importName)
3774 {
3775 m_Desc.IntersectionShaderImport = m_Strings[3].LocalCopy(importName, true);
3776 }
3777 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3778 {
3779 return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP;
3780 }
3781 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3782 operator const D3D12_HIT_GROUP_DESC&() const noexcept { return m_Desc; }
3783private:
3784 void Init() noexcept
3785 {
3786 SUBOBJECT_HELPER_BASE::Init();
3787 m_Desc = {};
3788 for (UINT i = 0; i < m_NumStrings; i++)
3789 {
3790 m_Strings[i].clear();
3791 }
3792 }
3793 void* Data() noexcept override { return &m_Desc; }
3794 D3D12_HIT_GROUP_DESC m_Desc;
3795 static const UINT m_NumStrings = 4;
3796 CD3DX12_STATE_OBJECT_DESC::StringContainer
3797 m_Strings[m_NumStrings]; // one string for every entrypoint name
3798};
3799
3800//------------------------------------------------------------------------------------------------
3801class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT
3802 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3803{
3804public:
3805 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() noexcept
3806 {
3807 Init();
3808 }
3809 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3810 {
3811 Init();
3812 AddToStateObject(ContainingStateObject);
3813 }
3814 void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
3815 {
3816 m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
3817 m_Desc.MaxAttributeSizeInBytes = MaxAttributeSizeInBytes;
3818 }
3819 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3820 {
3821 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG;
3822 }
3823 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3824 operator const D3D12_RAYTRACING_SHADER_CONFIG&() const noexcept { return m_Desc; }
3825private:
3826 void Init() noexcept
3827 {
3828 SUBOBJECT_HELPER_BASE::Init();
3829 m_Desc = {};
3830 }
3831 void* Data() noexcept override { return &m_Desc; }
3832 D3D12_RAYTRACING_SHADER_CONFIG m_Desc;
3833};
3834
3835//------------------------------------------------------------------------------------------------
3836class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT
3837 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3838{
3839public:
3840 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() noexcept
3841 {
3842 Init();
3843 }
3844 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3845 {
3846 Init();
3847 AddToStateObject(ContainingStateObject);
3848 }
3849 void Config(UINT MaxTraceRecursionDepth) noexcept
3850 {
3851 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
3852 }
3853 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3854 {
3855 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG;
3856 }
3857 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3858 operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const noexcept { return m_Desc; }
3859private:
3860 void Init() noexcept
3861 {
3862 SUBOBJECT_HELPER_BASE::Init();
3863 m_Desc = {};
3864 }
3865 void* Data() noexcept override { return &m_Desc; }
3866 D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
3867};
3868
3869//------------------------------------------------------------------------------------------------
3870class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
3871 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3872{
3873public:
3874 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
3875 {
3876 Init();
3877 }
3878 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3879 {
3880 Init();
3881 AddToStateObject(ContainingStateObject);
3882 }
3883 void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
3884 {
3885 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
3886 m_Desc.Flags = Flags;
3887 }
3888 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3889 {
3890 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
3891 }
3892 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3893 operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
3894private:
3895 void Init() noexcept
3896 {
3897 SUBOBJECT_HELPER_BASE::Init();
3898 m_Desc = {};
3899 }
3900 void* Data() noexcept override { return &m_Desc; }
3901 D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
3902};
3903
3904//------------------------------------------------------------------------------------------------
3905class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
3906 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3907{
3908public:
3909 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
3910 {
3911 Init();
3912 }
3913 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3914 {
3915 Init();
3916 AddToStateObject(ContainingStateObject);
3917 }
3918 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
3919 {
3920 m_pRootSig = pRootSig;
3921 }
3922 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3923 {
3924 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE;
3925 }
3926 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3927 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
3928private:
3929 void Init() noexcept
3930 {
3931 SUBOBJECT_HELPER_BASE::Init();
3932 m_pRootSig = nullptr;
3933 }
3934 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
3935 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
3936};
3937
3938//------------------------------------------------------------------------------------------------
3939class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT
3940 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3941{
3942public:
3943 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
3944 {
3945 Init();
3946 }
3947 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3948 {
3949 Init();
3950 AddToStateObject(ContainingStateObject);
3951 }
3952 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
3953 {
3954 m_pRootSig = pRootSig;
3955 }
3956 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3957 {
3958 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE;
3959 }
3960 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3961 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
3962private:
3963 void Init() noexcept
3964 {
3965 SUBOBJECT_HELPER_BASE::Init();
3966 m_pRootSig = nullptr;
3967 }
3968 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
3969 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
3970};
3971
3972//------------------------------------------------------------------------------------------------
3973class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT
3974 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3975{
3976public:
3977 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() noexcept
3978 {
3979 Init();
3980 }
3981 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3982 {
3983 Init();
3984 AddToStateObject(ContainingStateObject);
3985 }
3986 void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
3987 {
3988 m_Desc.Flags = Flags;
3989 }
3990 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3991 {
3992 return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG;
3993 }
3994 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3995 operator const D3D12_STATE_OBJECT_CONFIG&() const noexcept { return m_Desc; }
3996private:
3997 void Init() noexcept
3998 {
3999 SUBOBJECT_HELPER_BASE::Init();
4000 m_Desc = {};
4001 }
4002 void* Data() noexcept override { return &m_Desc; }
4003 D3D12_STATE_OBJECT_CONFIG m_Desc;
4004};
4005
4006//------------------------------------------------------------------------------------------------
4007class CD3DX12_NODE_MASK_SUBOBJECT
4008 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
4009{
4010public:
4011 CD3DX12_NODE_MASK_SUBOBJECT() noexcept
4012 {
4013 Init();
4014 }
4015 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
4016 {
4017 Init();
4018 AddToStateObject(ContainingStateObject);
4019 }
4020 void SetNodeMask(UINT NodeMask) noexcept
4021 {
4022 m_Desc.NodeMask = NodeMask;
4023 }
4024 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
4025 {
4026 return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK;
4027 }
4028 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
4029 operator const D3D12_NODE_MASK&() const noexcept { return m_Desc; }
4030private:
4031 void Init() noexcept
4032 {
4033 SUBOBJECT_HELPER_BASE::Init();
4034 m_Desc = {};
4035 }
4036 void* Data() noexcept override { return &m_Desc; }
4037 D3D12_NODE_MASK m_Desc;
4038};
4039
4040#undef D3DX12_COM_PTR
4041#undef D3DX12_COM_PTR_GET
4042#undef D3DX12_COM_PTR_ADDRESSOF
4043#endif // #ifndef D3DX12_NO_STATE_OBJECT_HELPERS
4044
4045#endif // defined( __cplusplus )
4046
4047#endif //__D3DX12_H__
4048
4049
diff --git a/contrib/DirectX-Headers/include/directx/dxcore.h b/contrib/DirectX-Headers/include/directx/dxcore.h
new file mode 100644
index 0000000..4244eaa
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxcore.h
@@ -0,0 +1,41 @@
1/************************************************************
2* *
3* Copyright (c) Microsoft Corporation. *
4* Licensed under the MIT license. *
5* *
6************************************************************/
7
8#ifndef _DXCOREEXTMODULE_H_
9#define _DXCOREEXTMODULE_H_
10
11#include <winapifamily.h>
12#include "dxcore_interface.h"
13
14#pragma region Application Family or OneCore Family
15#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
16
17#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
18
19STDAPI
20DXCoreCreateAdapterFactory(
21 REFIID riid,
22 _COM_Outptr_ void** ppvFactory
23);
24
25template <class T>
26HRESULT
27DXCoreCreateAdapterFactory(
28 _COM_Outptr_ T** ppvFactory
29)
30{
31 return DXCoreCreateAdapterFactory(IID_PPV_ARGS(ppvFactory));
32}
33
34#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
35
36#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
37#pragma endregion
38
39#endif // _DXCOREEXTMODULE_H_
40
41
diff --git a/contrib/DirectX-Headers/include/directx/dxcore_interface.h b/contrib/DirectX-Headers/include/directx/dxcore_interface.h
new file mode 100644
index 0000000..b487fe1
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxcore_interface.h
@@ -0,0 +1,316 @@
1//
2// DXCore Interface
3// Copyright (C) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6
7#ifndef __dxcore_interface_h__
8#define __dxcore_interface_h__
9
10#ifndef COM_NO_WINDOWS_H
11#include "windows.h"
12#include "ole2.h"
13#endif /*COM_NO_WINDOWS_H*/
14
15#include <stdint.h>
16
17#ifdef __cplusplus
18
19#define _FACDXCORE 0x880
20#define MAKE_DXCORE_HRESULT( code ) MAKE_HRESULT( 1, _FACDXCORE, code )
21
22enum class DXCoreAdapterProperty : uint32_t
23{
24 InstanceLuid = 0,
25 DriverVersion = 1,
26 DriverDescription = 2,
27 HardwareID = 3, // Use HardwareIDParts instead, if available.
28 KmdModelVersion = 4,
29 ComputePreemptionGranularity = 5,
30 GraphicsPreemptionGranularity = 6,
31 DedicatedAdapterMemory = 7,
32 DedicatedSystemMemory = 8,
33 SharedSystemMemory = 9,
34 AcgCompatible = 10,
35 IsHardware = 11,
36 IsIntegrated = 12,
37 IsDetachable = 13,
38 HardwareIDParts = 14
39};
40
41enum class DXCoreAdapterState : uint32_t
42{
43 IsDriverUpdateInProgress = 0,
44 AdapterMemoryBudget = 1
45};
46
47enum class DXCoreSegmentGroup : uint32_t
48{
49 Local = 0,
50 NonLocal = 1
51};
52
53enum class DXCoreNotificationType : uint32_t
54{
55 AdapterListStale = 0,
56 AdapterNoLongerValid = 1,
57 AdapterBudgetChange = 2,
58 AdapterHardwareContentProtectionTeardown = 3
59};
60
61enum class DXCoreAdapterPreference : uint32_t
62{
63 Hardware = 0,
64 MinimumPower = 1,
65 HighPerformance = 2
66};
67
68struct DXCoreHardwareID
69{
70 uint32_t vendorID;
71 uint32_t deviceID;
72 uint32_t subSysID;
73 uint32_t revision;
74};
75
76struct DXCoreHardwareIDParts
77{
78 uint32_t vendorID;
79 uint32_t deviceID;
80 uint32_t subSystemID;
81 uint32_t subVendorID;
82 uint32_t revisionID;
83};
84
85struct DXCoreAdapterMemoryBudgetNodeSegmentGroup
86{
87 uint32_t nodeIndex;
88 DXCoreSegmentGroup segmentGroup;
89};
90
91struct DXCoreAdapterMemoryBudget
92{
93 uint64_t budget;
94 uint64_t currentUsage;
95 uint64_t availableForReservation;
96 uint64_t currentReservation;
97};
98
99typedef void (STDMETHODCALLTYPE *PFN_DXCORE_NOTIFICATION_CALLBACK)(
100 DXCoreNotificationType notificationType,
101 _In_ IUnknown *object,
102 _In_opt_ void *context);
103
104static_assert(sizeof(bool) == 1, "bool assumed as one byte");
105
106DEFINE_GUID(IID_IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
107DEFINE_GUID(IID_IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
108DEFINE_GUID(IID_IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
109DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D11_GRAPHICS, 0x8c47866b, 0x7583, 0x450d, 0xf0, 0xf0, 0x6b, 0xad, 0xa8, 0x95, 0xaf, 0x4b);
110DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GRAPHICS, 0x0c9ece4d, 0x2f6e, 0x4f01, 0x8c, 0x96, 0xe8, 0x9e, 0x33, 0x1b, 0x47, 0xb1);
111DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, 0x248e2800, 0xa793, 0x4724, 0xab, 0xaa, 0x23, 0xa6, 0xde, 0x1b, 0xe0, 0x90);
112
113/* interface IDXCoreAdapter */
114MIDL_INTERFACE("f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e")
115IDXCoreAdapter : public IUnknown
116{
117public:
118 virtual bool STDMETHODCALLTYPE IsValid() = 0;
119
120 virtual bool STDMETHODCALLTYPE IsAttributeSupported(
121 REFGUID attributeGUID) = 0;
122
123 virtual bool STDMETHODCALLTYPE IsPropertySupported(
124 DXCoreAdapterProperty property) = 0;
125
126 virtual HRESULT STDMETHODCALLTYPE GetProperty(
127 DXCoreAdapterProperty property,
128 size_t bufferSize,
129 _Out_writes_bytes_(bufferSize) void *propertyData) = 0;
130
131 template <class T>
132 HRESULT GetProperty(
133 DXCoreAdapterProperty property,
134 _Out_writes_bytes_(sizeof(T)) T *propertyData)
135 {
136 return GetProperty(property,
137 sizeof(T),
138 (void*)propertyData);
139 }
140
141 virtual HRESULT STDMETHODCALLTYPE GetPropertySize(
142 DXCoreAdapterProperty property,
143 _Out_ size_t *bufferSize) = 0;
144
145 virtual bool STDMETHODCALLTYPE IsQueryStateSupported(
146 DXCoreAdapterState property) = 0;
147
148 virtual HRESULT STDMETHODCALLTYPE QueryState(
149 DXCoreAdapterState state,
150 size_t inputStateDetailsSize,
151 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
152 size_t outputBufferSize,
153 _Out_writes_bytes_(outputBufferSize) void *outputBuffer) = 0;
154
155 template <class T1, class T2>
156 HRESULT QueryState(
157 DXCoreAdapterState state,
158 _In_reads_bytes_opt_(sizeof(T1)) const T1 *inputStateDetails,
159 _Out_writes_bytes_(sizeof(T2)) T2 *outputBuffer)
160 {
161 return QueryState(state,
162 sizeof(T1),
163 (const void*)inputStateDetails,
164 sizeof(T2),
165 (void*)outputBuffer);
166 }
167
168 template <class T>
169 HRESULT QueryState(
170 DXCoreAdapterState state,
171 _Out_writes_bytes_(sizeof(T)) T *outputBuffer)
172 {
173 return QueryState(state,
174 0,
175 nullptr,
176 sizeof(T),
177 (void*)outputBuffer);
178 }
179
180 virtual bool STDMETHODCALLTYPE IsSetStateSupported(
181 DXCoreAdapterState property) = 0;
182
183 virtual HRESULT STDMETHODCALLTYPE SetState(
184 DXCoreAdapterState state,
185 size_t inputStateDetailsSize,
186 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
187 size_t inputDataSize,
188 _In_reads_bytes_(inputDataSize) const void *inputData) = 0;
189
190 template <class T1, class T2>
191 HRESULT SetState(
192 DXCoreAdapterState state,
193 const T1 *inputStateDetails,
194 const T2 *inputData)
195 {
196 return SetState(state,
197 sizeof(T1),
198 (const void*)inputStateDetails,
199 sizeof(T2),
200 (const void*)inputData);
201 }
202
203 virtual HRESULT STDMETHODCALLTYPE GetFactory(
204 REFIID riid,
205 _COM_Outptr_ void** ppvFactory
206 ) = 0;
207
208 template <class T>
209 HRESULT GetFactory(
210 _COM_Outptr_ T** ppvFactory
211 )
212 {
213 return GetFactory(IID_PPV_ARGS(ppvFactory));
214 }
215};
216
217/* interface IDXCoreAdapterList */
218MIDL_INTERFACE("526c7776-40e9-459b-b711-f32ad76dfc28")
219IDXCoreAdapterList : public IUnknown
220{
221public:
222 virtual HRESULT STDMETHODCALLTYPE GetAdapter(
223 uint32_t index,
224 REFIID riid,
225 _COM_Outptr_ void **ppvAdapter) = 0;
226
227 template<class T>
228 HRESULT STDMETHODCALLTYPE GetAdapter(
229 uint32_t index,
230 _COM_Outptr_ T **ppvAdapter)
231 {
232 return GetAdapter(index,
233 IID_PPV_ARGS(ppvAdapter));
234 }
235
236 virtual uint32_t STDMETHODCALLTYPE GetAdapterCount() = 0;
237
238 virtual bool STDMETHODCALLTYPE IsStale() = 0;
239
240 virtual HRESULT STDMETHODCALLTYPE GetFactory(
241 REFIID riid,
242 _COM_Outptr_ void** ppvFactory
243 ) = 0;
244
245 template <class T>
246 HRESULT GetFactory(
247 _COM_Outptr_ T** ppvFactory
248 )
249 {
250 return GetFactory(IID_PPV_ARGS(ppvFactory));
251 }
252
253 virtual HRESULT STDMETHODCALLTYPE Sort(
254 uint32_t numPreferences,
255 _In_reads_(numPreferences) const DXCoreAdapterPreference* preferences) = 0;
256
257 virtual bool STDMETHODCALLTYPE IsAdapterPreferenceSupported(
258 DXCoreAdapterPreference preference) = 0;
259};
260
261/* interface IDXCoreAdapterFactory */
262MIDL_INTERFACE("78ee5945-c36e-4b13-a669-005dd11c0f06")
263IDXCoreAdapterFactory : public IUnknown
264{
265public:
266
267 virtual HRESULT STDMETHODCALLTYPE CreateAdapterList(
268 uint32_t numAttributes,
269 _In_reads_(numAttributes) const GUID *filterAttributes,
270 REFIID riid,
271 _COM_Outptr_ void **ppvAdapterList) = 0;
272
273 template<class T>
274 HRESULT STDMETHODCALLTYPE CreateAdapterList(
275 uint32_t numAttributes,
276 _In_reads_(numAttributes) const GUID *filterAttributes,
277 _COM_Outptr_ T **ppvAdapterList)
278 {
279 return CreateAdapterList(numAttributes,
280 filterAttributes,
281 IID_PPV_ARGS(ppvAdapterList));
282 }
283
284 virtual HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
285 const LUID &adapterLUID,
286 REFIID riid,
287 _COM_Outptr_ void **ppvAdapter) = 0;
288
289 template<class T>
290 HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
291 const LUID &adapterLUID,
292 _COM_Outptr_ T **ppvAdapter)
293 {
294 return GetAdapterByLuid(adapterLUID,
295 IID_PPV_ARGS(ppvAdapter));
296 }
297
298 virtual bool STDMETHODCALLTYPE IsNotificationTypeSupported(
299 DXCoreNotificationType notificationType) = 0;
300
301 virtual HRESULT STDMETHODCALLTYPE RegisterEventNotification(
302 _In_ IUnknown *dxCoreObject,
303 DXCoreNotificationType notificationType,
304 _In_ PFN_DXCORE_NOTIFICATION_CALLBACK callbackFunction,
305 _In_opt_ void *callbackContext,
306 _Out_ uint32_t *eventCookie) = 0;
307
308 virtual HRESULT STDMETHODCALLTYPE UnregisterEventNotification(
309 uint32_t eventCookie) = 0;
310};
311
312#endif // __cplusplus
313
314#endif // __dxcore_interface_h__
315
316
diff --git a/contrib/DirectX-Headers/include/directx/dxgicommon.h b/contrib/DirectX-Headers/include/directx/dxgicommon.h
new file mode 100644
index 0000000..f83aa01
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgicommon.h
@@ -0,0 +1,57 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgicommon_h__
7#define __dxgicommon_h__
8
9
10typedef struct DXGI_RATIONAL
11{
12 UINT Numerator;
13 UINT Denominator;
14} DXGI_RATIONAL;
15
16// The following values are used with DXGI_SAMPLE_DESC::Quality:
17#define DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN 0xffffffff
18#define DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN 0xfffffffe
19
20typedef struct DXGI_SAMPLE_DESC
21{
22 UINT Count;
23 UINT Quality;
24} DXGI_SAMPLE_DESC;
25
26typedef enum DXGI_COLOR_SPACE_TYPE
27{
28 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0,
29 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1,
30 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2,
31 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3,
32 DXGI_COLOR_SPACE_RESERVED = 4,
33 DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5,
34 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6,
35 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7,
36 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8,
37 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9,
38 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10,
39 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11,
40 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12,
41 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13,
42 DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14,
43 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15,
44 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16,
45 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17,
46 DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18,
47 DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19,
48 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20,
49 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21,
50 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22,
51 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23,
52 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24,
53 DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF
54} DXGI_COLOR_SPACE_TYPE;
55
56#endif // __dxgicommon_h__
57
diff --git a/contrib/DirectX-Headers/include/directx/dxgicommon.idl b/contrib/DirectX-Headers/include/directx/dxgicommon.idl
new file mode 100644
index 0000000..ab73230
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgicommon.idl
@@ -0,0 +1,52 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6
7typedef struct DXGI_RATIONAL
8{
9 UINT Numerator;
10 UINT Denominator;
11} DXGI_RATIONAL;
12
13// The following values are used with DXGI_SAMPLE_DESC::Quality:
14#define DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN 0xffffffff
15#define DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN 0xfffffffe
16
17typedef struct DXGI_SAMPLE_DESC
18{
19 UINT Count;
20 UINT Quality;
21} DXGI_SAMPLE_DESC;
22
23typedef enum DXGI_COLOR_SPACE_TYPE
24{
25 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0,
26 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1,
27 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2,
28 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3,
29 DXGI_COLOR_SPACE_RESERVED = 4,
30 DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5,
31 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6,
32 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7,
33 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8,
34 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9,
35 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10,
36 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11,
37 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12,
38 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13,
39 DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14,
40 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15,
41 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16,
42 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17,
43 DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18,
44 DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19,
45 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20,
46 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21,
47 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22,
48 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23,
49 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24,
50 DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF
51} DXGI_COLOR_SPACE_TYPE;
52
diff --git a/contrib/DirectX-Headers/include/directx/dxgiformat.h b/contrib/DirectX-Headers/include/directx/dxgiformat.h
new file mode 100644
index 0000000..52aae1b
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgiformat.h
@@ -0,0 +1,142 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgiformat_h__
7#define __dxgiformat_h__
8
9#define DXGI_FORMAT_DEFINED 1
10
11typedef enum DXGI_FORMAT
12{
13 DXGI_FORMAT_UNKNOWN = 0,
14 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
15 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
16 DXGI_FORMAT_R32G32B32A32_UINT = 3,
17 DXGI_FORMAT_R32G32B32A32_SINT = 4,
18 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
19 DXGI_FORMAT_R32G32B32_FLOAT = 6,
20 DXGI_FORMAT_R32G32B32_UINT = 7,
21 DXGI_FORMAT_R32G32B32_SINT = 8,
22 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
23 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
24 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
25 DXGI_FORMAT_R16G16B16A16_UINT = 12,
26 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
27 DXGI_FORMAT_R16G16B16A16_SINT = 14,
28 DXGI_FORMAT_R32G32_TYPELESS = 15,
29 DXGI_FORMAT_R32G32_FLOAT = 16,
30 DXGI_FORMAT_R32G32_UINT = 17,
31 DXGI_FORMAT_R32G32_SINT = 18,
32 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
33 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
34 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
35 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
36 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
37 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
38 DXGI_FORMAT_R10G10B10A2_UINT = 25,
39 DXGI_FORMAT_R11G11B10_FLOAT = 26,
40 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
41 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
42 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
43 DXGI_FORMAT_R8G8B8A8_UINT = 30,
44 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
45 DXGI_FORMAT_R8G8B8A8_SINT = 32,
46 DXGI_FORMAT_R16G16_TYPELESS = 33,
47 DXGI_FORMAT_R16G16_FLOAT = 34,
48 DXGI_FORMAT_R16G16_UNORM = 35,
49 DXGI_FORMAT_R16G16_UINT = 36,
50 DXGI_FORMAT_R16G16_SNORM = 37,
51 DXGI_FORMAT_R16G16_SINT = 38,
52 DXGI_FORMAT_R32_TYPELESS = 39,
53 DXGI_FORMAT_D32_FLOAT = 40,
54 DXGI_FORMAT_R32_FLOAT = 41,
55 DXGI_FORMAT_R32_UINT = 42,
56 DXGI_FORMAT_R32_SINT = 43,
57 DXGI_FORMAT_R24G8_TYPELESS = 44,
58 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
59 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
60 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
61 DXGI_FORMAT_R8G8_TYPELESS = 48,
62 DXGI_FORMAT_R8G8_UNORM = 49,
63 DXGI_FORMAT_R8G8_UINT = 50,
64 DXGI_FORMAT_R8G8_SNORM = 51,
65 DXGI_FORMAT_R8G8_SINT = 52,
66 DXGI_FORMAT_R16_TYPELESS = 53,
67 DXGI_FORMAT_R16_FLOAT = 54,
68 DXGI_FORMAT_D16_UNORM = 55,
69 DXGI_FORMAT_R16_UNORM = 56,
70 DXGI_FORMAT_R16_UINT = 57,
71 DXGI_FORMAT_R16_SNORM = 58,
72 DXGI_FORMAT_R16_SINT = 59,
73 DXGI_FORMAT_R8_TYPELESS = 60,
74 DXGI_FORMAT_R8_UNORM = 61,
75 DXGI_FORMAT_R8_UINT = 62,
76 DXGI_FORMAT_R8_SNORM = 63,
77 DXGI_FORMAT_R8_SINT = 64,
78 DXGI_FORMAT_A8_UNORM = 65,
79 DXGI_FORMAT_R1_UNORM = 66,
80 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
81 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
82 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
83 DXGI_FORMAT_BC1_TYPELESS = 70,
84 DXGI_FORMAT_BC1_UNORM = 71,
85 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
86 DXGI_FORMAT_BC2_TYPELESS = 73,
87 DXGI_FORMAT_BC2_UNORM = 74,
88 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
89 DXGI_FORMAT_BC3_TYPELESS = 76,
90 DXGI_FORMAT_BC3_UNORM = 77,
91 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
92 DXGI_FORMAT_BC4_TYPELESS = 79,
93 DXGI_FORMAT_BC4_UNORM = 80,
94 DXGI_FORMAT_BC4_SNORM = 81,
95 DXGI_FORMAT_BC5_TYPELESS = 82,
96 DXGI_FORMAT_BC5_UNORM = 83,
97 DXGI_FORMAT_BC5_SNORM = 84,
98 DXGI_FORMAT_B5G6R5_UNORM = 85,
99 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
100 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
101 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
102 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
103 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
104 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
105 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
106 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
107 DXGI_FORMAT_BC6H_TYPELESS = 94,
108 DXGI_FORMAT_BC6H_UF16 = 95,
109 DXGI_FORMAT_BC6H_SF16 = 96,
110 DXGI_FORMAT_BC7_TYPELESS = 97,
111 DXGI_FORMAT_BC7_UNORM = 98,
112 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
113 DXGI_FORMAT_AYUV = 100,
114 DXGI_FORMAT_Y410 = 101,
115 DXGI_FORMAT_Y416 = 102,
116 DXGI_FORMAT_NV12 = 103,
117 DXGI_FORMAT_P010 = 104,
118 DXGI_FORMAT_P016 = 105,
119 DXGI_FORMAT_420_OPAQUE = 106,
120 DXGI_FORMAT_YUY2 = 107,
121 DXGI_FORMAT_Y210 = 108,
122 DXGI_FORMAT_Y216 = 109,
123 DXGI_FORMAT_NV11 = 110,
124 DXGI_FORMAT_AI44 = 111,
125 DXGI_FORMAT_IA44 = 112,
126 DXGI_FORMAT_P8 = 113,
127 DXGI_FORMAT_A8P8 = 114,
128 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
129
130 DXGI_FORMAT_P208 = 130,
131 DXGI_FORMAT_V208 = 131,
132 DXGI_FORMAT_V408 = 132,
133
134
135 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
136 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
137
138
139 DXGI_FORMAT_FORCE_UINT = 0xffffffff
140} DXGI_FORMAT;
141
142#endif // __dxgiformat_h__
diff --git a/contrib/DirectX-Headers/include/directx/dxgiformat.idl b/contrib/DirectX-Headers/include/directx/dxgiformat.idl
new file mode 100644
index 0000000..d9576ef
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgiformat.idl
@@ -0,0 +1,137 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6
7typedef enum DXGI_FORMAT
8{
9 DXGI_FORMAT_UNKNOWN = 0,
10 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
11 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
12 DXGI_FORMAT_R32G32B32A32_UINT = 3,
13 DXGI_FORMAT_R32G32B32A32_SINT = 4,
14 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
15 DXGI_FORMAT_R32G32B32_FLOAT = 6,
16 DXGI_FORMAT_R32G32B32_UINT = 7,
17 DXGI_FORMAT_R32G32B32_SINT = 8,
18 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
19 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
20 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
21 DXGI_FORMAT_R16G16B16A16_UINT = 12,
22 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
23 DXGI_FORMAT_R16G16B16A16_SINT = 14,
24 DXGI_FORMAT_R32G32_TYPELESS = 15,
25 DXGI_FORMAT_R32G32_FLOAT = 16,
26 DXGI_FORMAT_R32G32_UINT = 17,
27 DXGI_FORMAT_R32G32_SINT = 18,
28 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
29 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
30 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
31 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
32 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
33 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
34 DXGI_FORMAT_R10G10B10A2_UINT = 25,
35 DXGI_FORMAT_R11G11B10_FLOAT = 26,
36 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
37 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
38 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
39 DXGI_FORMAT_R8G8B8A8_UINT = 30,
40 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
41 DXGI_FORMAT_R8G8B8A8_SINT = 32,
42 DXGI_FORMAT_R16G16_TYPELESS = 33,
43 DXGI_FORMAT_R16G16_FLOAT = 34,
44 DXGI_FORMAT_R16G16_UNORM = 35,
45 DXGI_FORMAT_R16G16_UINT = 36,
46 DXGI_FORMAT_R16G16_SNORM = 37,
47 DXGI_FORMAT_R16G16_SINT = 38,
48 DXGI_FORMAT_R32_TYPELESS = 39,
49 DXGI_FORMAT_D32_FLOAT = 40,
50 DXGI_FORMAT_R32_FLOAT = 41,
51 DXGI_FORMAT_R32_UINT = 42,
52 DXGI_FORMAT_R32_SINT = 43,
53 DXGI_FORMAT_R24G8_TYPELESS = 44,
54 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
55 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
56 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
57 DXGI_FORMAT_R8G8_TYPELESS = 48,
58 DXGI_FORMAT_R8G8_UNORM = 49,
59 DXGI_FORMAT_R8G8_UINT = 50,
60 DXGI_FORMAT_R8G8_SNORM = 51,
61 DXGI_FORMAT_R8G8_SINT = 52,
62 DXGI_FORMAT_R16_TYPELESS = 53,
63 DXGI_FORMAT_R16_FLOAT = 54,
64 DXGI_FORMAT_D16_UNORM = 55,
65 DXGI_FORMAT_R16_UNORM = 56,
66 DXGI_FORMAT_R16_UINT = 57,
67 DXGI_FORMAT_R16_SNORM = 58,
68 DXGI_FORMAT_R16_SINT = 59,
69 DXGI_FORMAT_R8_TYPELESS = 60,
70 DXGI_FORMAT_R8_UNORM = 61,
71 DXGI_FORMAT_R8_UINT = 62,
72 DXGI_FORMAT_R8_SNORM = 63,
73 DXGI_FORMAT_R8_SINT = 64,
74 DXGI_FORMAT_A8_UNORM = 65,
75 DXGI_FORMAT_R1_UNORM = 66,
76 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
77 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
78 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
79 DXGI_FORMAT_BC1_TYPELESS = 70,
80 DXGI_FORMAT_BC1_UNORM = 71,
81 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
82 DXGI_FORMAT_BC2_TYPELESS = 73,
83 DXGI_FORMAT_BC2_UNORM = 74,
84 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
85 DXGI_FORMAT_BC3_TYPELESS = 76,
86 DXGI_FORMAT_BC3_UNORM = 77,
87 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
88 DXGI_FORMAT_BC4_TYPELESS = 79,
89 DXGI_FORMAT_BC4_UNORM = 80,
90 DXGI_FORMAT_BC4_SNORM = 81,
91 DXGI_FORMAT_BC5_TYPELESS = 82,
92 DXGI_FORMAT_BC5_UNORM = 83,
93 DXGI_FORMAT_BC5_SNORM = 84,
94 DXGI_FORMAT_B5G6R5_UNORM = 85,
95 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
96 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
97 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
98 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
99 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
100 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
101 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
102 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
103 DXGI_FORMAT_BC6H_TYPELESS = 94,
104 DXGI_FORMAT_BC6H_UF16 = 95,
105 DXGI_FORMAT_BC6H_SF16 = 96,
106 DXGI_FORMAT_BC7_TYPELESS = 97,
107 DXGI_FORMAT_BC7_UNORM = 98,
108 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
109 DXGI_FORMAT_AYUV = 100,
110 DXGI_FORMAT_Y410 = 101,
111 DXGI_FORMAT_Y416 = 102,
112 DXGI_FORMAT_NV12 = 103,
113 DXGI_FORMAT_P010 = 104,
114 DXGI_FORMAT_P016 = 105,
115 DXGI_FORMAT_420_OPAQUE = 106,
116 DXGI_FORMAT_YUY2 = 107,
117 DXGI_FORMAT_Y210 = 108,
118 DXGI_FORMAT_Y216 = 109,
119 DXGI_FORMAT_NV11 = 110,
120 DXGI_FORMAT_AI44 = 111,
121 DXGI_FORMAT_IA44 = 112,
122 DXGI_FORMAT_P8 = 113,
123 DXGI_FORMAT_A8P8 = 114,
124 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
125
126 DXGI_FORMAT_P208 = 130,
127 DXGI_FORMAT_V208 = 131,
128 DXGI_FORMAT_V408 = 132,
129
130
131 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
132 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
133
134
135 DXGI_FORMAT_FORCE_UINT = 0xffffffff
136} DXGI_FORMAT;
137
diff --git a/contrib/DirectX-Headers/include/dxguids/dxguids.h b/contrib/DirectX-Headers/include/dxguids/dxguids.h
new file mode 100644
index 0000000..4ee66ff
--- /dev/null
+++ b/contrib/DirectX-Headers/include/dxguids/dxguids.h
@@ -0,0 +1,126 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#ifndef __cplusplus
7#error "This header requires C++"
8#endif
9
10constexpr inline bool ConstexprIsEqualGUID(REFGUID a, REFGUID b)
11{
12 return a.Data1 == b.Data1 &&
13 a.Data2 == b.Data2 &&
14 a.Data3 == b.Data3 &&
15 a.Data4[0] == b.Data4[0] &&
16 a.Data4[1] == b.Data4[1] &&
17 a.Data4[2] == b.Data4[2] &&
18 a.Data4[3] == b.Data4[3] &&
19 a.Data4[4] == b.Data4[4] &&
20 a.Data4[5] == b.Data4[5] &&
21 a.Data4[6] == b.Data4[6] &&
22 a.Data4[7] == b.Data4[7];
23}
24
25// Each COM interface (e.g. ID3D12Device) has a unique interface ID (IID) associated with it. With MSVC, the IID is defined
26// along with the interface declaration using compiler intrinsics (__declspec(uuid(...)); the IID can then be retrieved
27// using __uuidof. These intrinsics are not supported with all toolchains, so these helpers redefine IID values that can be
28// used with the various adapter COM helpers (ComPtr, IID_PPV_ARGS, etc.) for Linux. IIDs are stable and cannot change, but as
29// a precaution we statically assert the values are as expected when compiling for Windows.
30#ifdef _WIN32
31// winadapter.h isn't included when building for Windows, so the base function template needs to be declared.
32template <typename T> GUID uuidof() = delete;
33#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
34template <> constexpr GUID uuidof<InterfaceName>() \
35{ \
36 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
37} \
38static_assert(ConstexprIsEqualGUID(uuidof<InterfaceName>(), __uuidof(InterfaceName)), "GUID definition mismatch: "#InterfaceName);
39#else
40#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
41template <> constexpr GUID uuidof<InterfaceName>() \
42{ \
43 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
44}
45#endif
46
47// Direct3D
48WINADAPTER_IID(ID3D12Object, 0xc4fec28f, 0x7966, 0x4e95, 0x9f, 0x94, 0xf4, 0x31, 0xcb, 0x56, 0xc3, 0xb8);
49WINADAPTER_IID(ID3D12DeviceChild, 0x905db94b, 0xa00c, 0x4140, 0x9d, 0xf5, 0x2b, 0x64, 0xca, 0x9e, 0xa3, 0x57);
50WINADAPTER_IID(ID3D12RootSignature, 0xc54a6b66, 0x72df, 0x4ee8, 0x8b, 0xe5, 0xa9, 0x46, 0xa1, 0x42, 0x92, 0x14);
51WINADAPTER_IID(ID3D12RootSignatureDeserializer, 0x34AB647B, 0x3CC8, 0x46AC, 0x84, 0x1B, 0xC0, 0x96, 0x56, 0x45, 0xC0, 0x46);
52WINADAPTER_IID(ID3D12VersionedRootSignatureDeserializer, 0x7F91CE67, 0x090C, 0x4BB7, 0xB7, 0x8E, 0xED, 0x8F, 0xF2, 0xE3, 0x1D, 0xA0);
53WINADAPTER_IID(ID3D12Pageable, 0x63ee58fb, 0x1268, 0x4835, 0x86, 0xda, 0xf0, 0x08, 0xce, 0x62, 0xf0, 0xd6);
54WINADAPTER_IID(ID3D12Heap, 0x6b3b2502, 0x6e51, 0x45b3, 0x90, 0xee, 0x98, 0x84, 0x26, 0x5e, 0x8d, 0xf3);
55WINADAPTER_IID(ID3D12Resource, 0x696442be, 0xa72e, 0x4059, 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad);
56WINADAPTER_IID(ID3D12CommandAllocator, 0x6102dee4, 0xaf59, 0x4b09, 0xb9, 0x99, 0xb4, 0x4d, 0x73, 0xf0, 0x9b, 0x24);
57WINADAPTER_IID(ID3D12Fence, 0x0a753dcf, 0xc4d8, 0x4b91, 0xad, 0xf6, 0xbe, 0x5a, 0x60, 0xd9, 0x5a, 0x76);
58WINADAPTER_IID(ID3D12Fence1, 0x433685fe, 0xe22b, 0x4ca0, 0xa8, 0xdb, 0xb5, 0xb4, 0xf4, 0xdd, 0x0e, 0x4a);
59WINADAPTER_IID(ID3D12PipelineState, 0x765a30f3, 0xf624, 0x4c6f, 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45);
60WINADAPTER_IID(ID3D12DescriptorHeap, 0x8efb471d, 0x616c, 0x4f49, 0x90, 0xf7, 0x12, 0x7b, 0xb7, 0x63, 0xfa, 0x51);
61WINADAPTER_IID(ID3D12QueryHeap, 0x0d9658ae, 0xed45, 0x469e, 0xa6, 0x1d, 0x97, 0x0e, 0xc5, 0x83, 0xca, 0xb4);
62WINADAPTER_IID(ID3D12CommandSignature, 0xc36a797c, 0xec80, 0x4f0a, 0x89, 0x85, 0xa7, 0xb2, 0x47, 0x50, 0x82, 0xd1);
63WINADAPTER_IID(ID3D12CommandList, 0x7116d91c, 0xe7e4, 0x47ce, 0xb8, 0xc6, 0xec, 0x81, 0x68, 0xf4, 0x37, 0xe5);
64WINADAPTER_IID(ID3D12GraphicsCommandList, 0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8, 0xb3, 0xae, 0x42, 0xa5, 0xa4, 0x55);
65WINADAPTER_IID(ID3D12GraphicsCommandList1, 0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7);
66WINADAPTER_IID(ID3D12GraphicsCommandList2, 0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28);
67WINADAPTER_IID(ID3D12CommandQueue, 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed);
68WINADAPTER_IID(ID3D12Device, 0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7);
69WINADAPTER_IID(ID3D12PipelineLibrary, 0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f);
70WINADAPTER_IID(ID3D12PipelineLibrary1, 0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3);
71WINADAPTER_IID(ID3D12Device1, 0x77acce80, 0x638e, 0x4e65, 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e);
72WINADAPTER_IID(ID3D12Device2, 0x30baa41e, 0xb15b, 0x475c, 0xa0, 0xbb, 0x1a, 0xf5, 0xc5, 0xb6, 0x43, 0x28);
73WINADAPTER_IID(ID3D12Device3, 0x81dadc15, 0x2bad, 0x4392, 0x93, 0xc5, 0x10, 0x13, 0x45, 0xc4, 0xaa, 0x98);
74WINADAPTER_IID(ID3D12ProtectedSession, 0xA1533D18, 0x0AC1, 0x4084, 0x85, 0xB9, 0x89, 0xA9, 0x61, 0x16, 0x80, 0x6B);
75WINADAPTER_IID(ID3D12ProtectedResourceSession, 0x6CD696F4, 0xF289, 0x40CC, 0x80, 0x91, 0x5A, 0x6C, 0x0A, 0x09, 0x9C, 0x3D);
76WINADAPTER_IID(ID3D12Device4, 0xe865df17, 0xa9ee, 0x46f9, 0xa4, 0x63, 0x30, 0x98, 0x31, 0x5a, 0xa2, 0xe5);
77WINADAPTER_IID(ID3D12LifetimeOwner, 0xe667af9f, 0xcd56, 0x4f46, 0x83, 0xce, 0x03, 0x2e, 0x59, 0x5d, 0x70, 0xa8);
78WINADAPTER_IID(ID3D12SwapChainAssistant, 0xf1df64b6, 0x57fd, 0x49cd, 0x88, 0x07, 0xc0, 0xeb, 0x88, 0xb4, 0x5c, 0x8f);
79WINADAPTER_IID(ID3D12LifetimeTracker, 0x3fd03d36, 0x4eb1, 0x424a, 0xa5, 0x82, 0x49, 0x4e, 0xcb, 0x8b, 0xa8, 0x13);
80WINADAPTER_IID(ID3D12StateObject, 0x47016943, 0xfca8, 0x4594, 0x93, 0xea, 0xaf, 0x25, 0x8b, 0x55, 0x34, 0x6d);
81WINADAPTER_IID(ID3D12StateObjectProperties, 0xde5fa827, 0x9bf9, 0x4f26, 0x89, 0xff, 0xd7, 0xf5, 0x6f, 0xde, 0x38, 0x60);
82WINADAPTER_IID(ID3D12Device5, 0x8b4f173b, 0x2fea, 0x4b80, 0x8f, 0x58, 0x43, 0x07, 0x19, 0x1a, 0xb9, 0x5d);
83WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings, 0x82BC481C, 0x6B9B, 0x4030, 0xAE, 0xDB, 0x7E, 0xE3, 0xD1, 0xDF, 0x1E, 0x63);
84WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings1, 0xDBD5AE51, 0x3317, 0x4F0A, 0xAD, 0xF9, 0x1D, 0x7C, 0xED, 0xCA, 0xAE, 0x0B);
85WINADAPTER_IID(ID3D12DeviceRemovedExtendedData, 0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4E, 0x71);
86WINADAPTER_IID(ID3D12DeviceRemovedExtendedData1, 0x9727A022, 0xCF1D, 0x4DDA, 0x9E, 0xBA, 0xEF, 0xFA, 0x65, 0x3F, 0xC5, 0x06);
87WINADAPTER_IID(ID3D12Device6, 0xc70b221b, 0x40e4, 0x4a17, 0x89, 0xaf, 0x02, 0x5a, 0x07, 0x27, 0xa6, 0xdc);
88WINADAPTER_IID(ID3D12ProtectedResourceSession1, 0xD6F12DD6, 0x76FB, 0x406E, 0x89, 0x61, 0x42, 0x96, 0xEE, 0xFC, 0x04, 0x09);
89WINADAPTER_IID(ID3D12Device7, 0x5c014b53, 0x68a1, 0x4b9b, 0x8b, 0xd1, 0xdd, 0x60, 0x46, 0xb9, 0x35, 0x8b);
90WINADAPTER_IID(ID3D12Device8, 0x9218E6BB, 0xF944, 0x4F7E, 0xA7, 0x5C, 0xB1, 0xB2, 0xC7, 0xB7, 0x01, 0xF3);
91WINADAPTER_IID(ID3D12Resource1, 0x9D5E227A, 0x4430, 0x4161, 0x88, 0xB3, 0x3E, 0xCA, 0x6B, 0xB1, 0x6E, 0x19);
92WINADAPTER_IID(ID3D12Resource2, 0xBE36EC3B, 0xEA85, 0x4AEB, 0xA4, 0x5A, 0xE9, 0xD7, 0x64, 0x04, 0xA4, 0x95);
93WINADAPTER_IID(ID3D12Heap1, 0x572F7389, 0x2168, 0x49E3, 0x96, 0x93, 0xD6, 0xDF, 0x58, 0x71, 0xBF, 0x6D);
94WINADAPTER_IID(ID3D12GraphicsCommandList3, 0x6FDA83A7, 0xB84C, 0x4E38, 0x9A, 0xC8, 0xC7, 0xBD, 0x22, 0x01, 0x6B, 0x3D);
95WINADAPTER_IID(ID3D12MetaCommand, 0xDBB84C27, 0x36CE, 0x4FC9, 0xB8, 0x01, 0xF0, 0x48, 0xC4, 0x6A, 0xC5, 0x70);
96WINADAPTER_IID(ID3D12GraphicsCommandList4, 0x8754318e, 0xd3a9, 0x4541, 0x98, 0xcf, 0x64, 0x5b, 0x50, 0xdc, 0x48, 0x74);
97WINADAPTER_IID(ID3D12ShaderCacheSession, 0x28e2495d, 0x0f64, 0x4ae4, 0xa6, 0xec, 0x12, 0x92, 0x55, 0xdc, 0x49, 0xa8);
98WINADAPTER_IID(ID3D12Device9, 0x4c80e962, 0xf032, 0x4f60, 0xbc, 0x9e, 0xeb, 0xc2, 0xcf, 0xa1, 0xd8, 0x3c);
99WINADAPTER_IID(ID3D12Tools, 0x7071e1f0, 0xe84b, 0x4b33, 0x97, 0x4f, 0x12, 0xfa, 0x49, 0xde, 0x65, 0xc5);
100WINADAPTER_IID(ID3D12SDKConfiguration, 0xe9eb5314, 0x33aa, 0x42b2, 0xa7, 0x18, 0xd7, 0x7f, 0x58, 0xb1, 0xf1, 0xc7);
101WINADAPTER_IID(ID3D12GraphicsCommandList5, 0x55050859, 0x4024, 0x474c, 0x87, 0xf5, 0x64, 0x72, 0xea, 0xee, 0x44, 0xea);
102WINADAPTER_IID(ID3D12GraphicsCommandList6, 0xc3827890, 0xe548, 0x4cfa, 0x96, 0xcf, 0x56, 0x89, 0xa9, 0x37, 0x0f, 0x80);
103
104#ifdef __d3d12sdklayers_h__
105WINADAPTER_IID(ID3D12Debug, 0x344488b7, 0x6846, 0x474b, 0xb9, 0x89, 0xf0, 0x27, 0x44, 0x82, 0x45, 0xe0);
106WINADAPTER_IID(ID3D12Debug1, 0xaffaa4ca, 0x63fe, 0x4d8e, 0xb8, 0xad, 0x15, 0x90, 0x00, 0xaf, 0x43, 0x04);
107WINADAPTER_IID(ID3D12Debug2, 0x93a665c4, 0xa3b2, 0x4e5d, 0xb6, 0x92, 0xa2, 0x6a, 0xe1, 0x4e, 0x33, 0x74);
108WINADAPTER_IID(ID3D12Debug3, 0x5cf4e58f, 0xf671, 0x4ff1, 0xa5, 0x42, 0x36, 0x86, 0xe3, 0xd1, 0x53, 0xd1);
109WINADAPTER_IID(ID3D12Debug4, 0x014b816e, 0x9ec5, 0x4a2f, 0xa8, 0x45, 0xff, 0xbe, 0x44, 0x1c, 0xe1, 0x3a);
110WINADAPTER_IID(ID3D12DebugDevice1, 0xa9b71770, 0xd099, 0x4a65, 0xa6, 0x98, 0x3d, 0xee, 0x10, 0x02, 0x0f, 0x88);
111WINADAPTER_IID(ID3D12DebugDevice, 0x3febd6dd, 0x4973, 0x4787, 0x81, 0x94, 0xe4, 0x5f, 0x9e, 0x28, 0x92, 0x3e);
112WINADAPTER_IID(ID3D12DebugDevice2, 0x60eccbc1, 0x378d, 0x4df1, 0x89, 0x4c, 0xf8, 0xac, 0x5c, 0xe4, 0xd7, 0xdd);
113WINADAPTER_IID(ID3D12DebugCommandQueue, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3a);
114WINADAPTER_IID(ID3D12DebugCommandList1, 0x102ca951, 0x311b, 0x4b01, 0xb1, 0x1f, 0xec, 0xb8, 0x3e, 0x06, 0x1b, 0x37);
115WINADAPTER_IID(ID3D12DebugCommandList, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3f);
116WINADAPTER_IID(ID3D12DebugCommandList2, 0xaeb575cf, 0x4e06, 0x48be, 0xba, 0x3b, 0xc4, 0x50, 0xfc, 0x96, 0x65, 0x2e);
117WINADAPTER_IID(ID3D12SharingContract, 0x0adf7d52, 0x929c, 0x4e61, 0xad, 0xdb, 0xff, 0xed, 0x30, 0xde, 0x66, 0xef);
118WINADAPTER_IID(ID3D12InfoQueue, 0x0742a90b, 0xc387, 0x483f, 0xb9, 0x46, 0x30, 0xa7, 0xe4, 0xe6, 0x14, 0x58);
119#endif
120
121// DXCore
122#ifdef __dxcore_interface_h__
123WINADAPTER_IID(IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
124WINADAPTER_IID(IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
125WINADAPTER_IID(IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
126#endif
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h b/contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h b/contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/rpc.h b/contrib/DirectX-Headers/include/wsl/stubs/rpc.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/rpc.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h b/contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h
new file mode 100644
index 0000000..5b5f2e8
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once
6#define __RPCNDR_H_VERSION__ \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h b/contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h
new file mode 100644
index 0000000..064c4c2
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include. Unconditionally light up all APIs.
5#pragma once
6#define WINAPI_FAMILY_PARTITION(Partitions) 1 \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h b/contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h
new file mode 100644
index 0000000..43e7d0b
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub to satisfy d3dx12.h include
5#pragma once
6#include "../wrladapter.h" \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h b/contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h
new file mode 100644
index 0000000..fb2bebc
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub to satisfy DML TF runtime includes
5#pragma once
6#include "wrladapter.h" \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/winadapter.h b/contrib/DirectX-Headers/include/wsl/winadapter.h
new file mode 100644
index 0000000..8400f4a
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/winadapter.h
@@ -0,0 +1,340 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6// These #defines prevent the idl-generated headers from trying to include
7// Windows.h from the SDK rather than this one.
8#define RPC_NO_WINDOWS_H
9#define COM_NO_WINDOWS_H
10
11// Allcaps type definitions
12#include <stddef.h>
13#include <stdint.h>
14#include <string.h>
15#include <limits.h>
16
17// Note: using fixed-width here to match Windows widths
18// Specifically this is different for 'long' vs 'LONG'
19typedef uint8_t UINT8;
20typedef int8_t INT8;
21typedef uint16_t UINT16;
22typedef int16_t INT16;
23typedef uint32_t UINT32, UINT, ULONG, DWORD, BOOL;
24typedef int32_t INT32, INT, LONG;
25typedef uint64_t UINT64, ULONG_PTR;
26typedef int64_t INT64, LONG_PTR;
27typedef void VOID, *HANDLE, *RPC_IF_HANDLE, *LPVOID;
28typedef const void *LPCVOID;
29typedef size_t SIZE_T;
30typedef float FLOAT;
31typedef double DOUBLE;
32typedef unsigned char BYTE;
33typedef int HWND;
34
35// Note: WCHAR is not the same between Windows and Linux, to enable
36// string manipulation APIs to work with resulting strings.
37// APIs to D3D/DXCore will work on Linux wchars, but beware with
38// interactions directly with the Windows kernel.
39typedef char CHAR, *PSTR, *LPSTR, TCHAR, *PTSTR;
40typedef const char *LPCSTR, *PCSTR, *LPCTSTR, *PCTSTR;
41typedef wchar_t WCHAR, *PWSTR, *LPWSTR, *PWCHAR;
42typedef const wchar_t *LPCWSTR, *PCWSTR;
43
44#undef LONG_MAX
45#define LONG_MAX INT_MAX
46#undef ULONG_MAX
47#define ULONG_MAX UINT_MAX
48
49// Misc defines
50#define interface struct
51#define MIDL_INTERFACE(x) interface
52#define __analysis_assume(x)
53#define TRUE 1u
54#define FALSE 0u
55#define DECLARE_INTERFACE(iface) interface iface
56#define PURE = 0
57#define THIS_
58#define DECLSPEC_UUID(x)
59#define DECLSPEC_NOVTABLE
60#define DECLSPEC_SELECTANY
61#define EXTERN_C extern "C"
62
63typedef struct _GUID {
64 uint32_t Data1;
65 uint16_t Data2;
66 uint16_t Data3;
67 uint8_t Data4[ 8 ];
68} GUID;
69
70#ifdef __cplusplus
71#ifdef INITGUID
72#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) extern "C" const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
73#else
74#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) extern "C" const GUID name
75#endif
76
77template <typename T> GUID uuidof() = delete;
78template <typename T> GUID uuidof(T*) { return uuidof<T>(); }
79template <typename T> GUID uuidof(T**) { return uuidof<T>(); }
80template <typename T> GUID uuidof(T&) { return uuidof<T>(); }
81#define __uuidof(x) uuidof(x)
82#else
83#ifdef INITGUID
84#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
85#else
86#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) extern const GUID name
87#endif
88#endif
89
90typedef GUID IID;
91typedef GUID UUID;
92typedef GUID CLSID;
93#ifdef __cplusplus
94#define REFGUID const GUID &
95#define REFIID const IID &
96#define REFCLSID const IID &
97
98__inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
99{
100 return (
101 ((uint32_t *)&rguid1)[0] == ((uint32_t *)&rguid2)[0] &&
102 ((uint32_t *)&rguid1)[1] == ((uint32_t *)&rguid2)[1] &&
103 ((uint32_t *)&rguid1)[2] == ((uint32_t *)&rguid2)[2] &&
104 ((uint32_t *)&rguid1)[3] == ((uint32_t *)&rguid2)[3]);
105}
106#else
107#define REFGUID const GUID *
108#define REFIID const IID *
109#define REFCLSID const IID *
110#endif
111
112// SAL annotations
113#define _In_
114#define _In_z_
115#define _In_opt_
116#define _In_opt_z_
117#define _In_reads_(x)
118#define _In_reads_opt_(x)
119#define _In_reads_bytes_(x)
120#define _In_reads_bytes_opt_(x)
121#define _In_range_(x, y)
122#define _In_bytecount_(x)
123#define _Out_
124#define _Out_opt_
125#define _Outptr_
126#define _Outptr_opt_result_z_
127#define _Outptr_opt_result_bytebuffer_(x)
128#define _COM_Outptr_
129#define _COM_Outptr_result_maybenull_
130#define _COM_Outptr_opt_
131#define _COM_Outptr_opt_result_maybenull_
132#define _Out_writes_(x)
133#define _Out_writes_z_(x)
134#define _Out_writes_opt_(x)
135#define _Out_writes_all_(x)
136#define _Out_writes_all_opt_(x)
137#define _Out_writes_to_opt_(x, y)
138#define _Out_writes_bytes_(x)
139#define _Out_writes_bytes_all_(x)
140#define _Out_writes_bytes_all_opt_(x)
141#define _Out_writes_bytes_opt_(x)
142#define _Inout_
143#define _Inout_opt_
144#define _Inout_updates_(x)
145#define _Inout_updates_bytes_(x)
146#define _Field_size_(x)
147#define _Field_size_opt_(x)
148#define _Field_size_bytes_(x)
149#define _Field_size_full_(x)
150#define _Field_size_bytes_full_(x)
151#define _Field_size_bytes_full_opt_(x)
152#define _Field_size_bytes_part_(x, y)
153#define _Field_range_(x, y)
154#define _Field_z_
155#define _Check_return_
156#define _IRQL_requires_(x)
157#define _IRQL_requires_min_(x)
158#define _IRQL_requires_max_(x)
159#define _At_(x, y)
160#define _Always_(x)
161#define _Return_type_success_(x)
162#define _Translates_Win32_to_HRESULT_(x)
163#define _Maybenull_
164#define _Outptr_result_maybenull_
165#define _Outptr_result_nullonfailure_
166#define _Analysis_assume_(x)
167#define _Success_(x)
168#define _In_count_(x)
169#define _In_opt_count_(x)
170#define _Use_decl_annotations_
171
172// Calling conventions
173#define __cdecl
174#define __stdcall
175#define STDMETHODCALLTYPE
176#define STDAPICALLTYPE
177#define STDAPI extern "C" HRESULT STDAPICALLTYPE
178#define WINAPI
179#define STDMETHOD(name) virtual HRESULT name
180#define STDMETHOD_(type,name) virtual type name
181#define IFACEMETHOD(method) /*__override*/ STDMETHOD(method)
182#define IFACEMETHOD_(type, method) /*__override*/ STDMETHOD_(type, method)
183
184// Error codes
185typedef LONG HRESULT;
186#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
187#define FAILED(hr) (((HRESULT)(hr)) < 0)
188#define S_OK ((HRESULT)0L)
189#define S_FALSE ((HRESULT)1L)
190#define E_NOTIMPL ((HRESULT)0x80000001L)
191#define E_OUTOFMEMORY ((HRESULT)0x80000002L)
192#define E_INVALIDARG ((HRESULT)0x80000003L)
193#define E_NOINTERFACE ((HRESULT)0x80000004L)
194#define E_POINTER ((HRESULT)0x80000005L)
195#define E_HANDLE ((HRESULT)0x80000006L)
196#define E_ABORT ((HRESULT)0x80000007L)
197#define E_FAIL ((HRESULT)0x80000008L)
198#define E_ACCESSDENIED ((HRESULT)0x80000009L)
199#define E_UNEXPECTED ((HRESULT)0x8000FFFFL)
200#define DXGI_ERROR_DEVICE_HUNG ((HRESULT)0x887A0006L)
201#define DXGI_ERROR_DEVICE_REMOVED ((HRESULT)0x887A0005L)
202#define DXGI_ERROR_DEVICE_RESET ((HRESULT)0x887A0007L)
203#define DXGI_ERROR_DRIVER_INTERNAL_ERROR ((HRESULT)0x887A0020L)
204#define DXGI_ERROR_INVALID_CALL ((HRESULT)0x887A0001L)
205
206typedef struct _LUID
207{
208 ULONG LowPart;
209 LONG HighPart;
210} LUID;
211
212struct RECT
213{
214 int left;
215 int top;
216 int right;
217 int bottom;
218};
219
220typedef union _LARGE_INTEGER {
221 struct {
222 uint32_t LowPart;
223 uint32_t HighPart;
224 } u;
225 int64_t QuadPart;
226} LARGE_INTEGER;
227
228typedef union _ULARGE_INTEGER {
229 struct {
230 uint32_t LowPart;
231 uint32_t HighPart;
232 } u;
233 uint64_t QuadPart;
234} ULARGE_INTEGER;
235
236struct SECURITY_ATTRIBUTES;
237struct STATSTG;
238
239#ifdef __cplusplus
240// ENUM_FLAG_OPERATORS
241// Define operator overloads to enable bit operations on enum values that are
242// used to define flags. Use DEFINE_ENUM_FLAG_OPERATORS(YOUR_TYPE) to enable these
243// operators on YOUR_TYPE.
244extern "C++" {
245 template <size_t S>
246 struct _ENUM_FLAG_INTEGER_FOR_SIZE;
247
248 template <>
249 struct _ENUM_FLAG_INTEGER_FOR_SIZE<1>
250 {
251 typedef int8_t type;
252 };
253
254 template <>
255 struct _ENUM_FLAG_INTEGER_FOR_SIZE<2>
256 {
257 typedef int16_t type;
258 };
259
260 template <>
261 struct _ENUM_FLAG_INTEGER_FOR_SIZE<4>
262 {
263 typedef int32_t type;
264 };
265
266 template <>
267 struct _ENUM_FLAG_INTEGER_FOR_SIZE<8>
268 {
269 typedef int64_t type;
270 };
271
272 // used as an approximation of std::underlying_type<T>
273 template <class T>
274 struct _ENUM_FLAG_SIZED_INTEGER
275 {
276 typedef typename _ENUM_FLAG_INTEGER_FOR_SIZE<sizeof(T)>::type type;
277 };
278
279}
280#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
281extern "C++" { \
282inline constexpr ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) | ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
283inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) |= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
284inline constexpr ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) & ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
285inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) &= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
286inline constexpr ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a)); } \
287inline constexpr ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) ^ ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
288inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) ^= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
289}
290#endif
291
292// D3DX12 uses these
293#include <stdlib.h>
294#define HeapAlloc(heap, flags, size) malloc(size)
295#define HeapFree(heap, flags, ptr) free(ptr)
296
297#ifdef __cplusplus
298// IUnknown
299
300interface DECLSPEC_UUID("00000000-0000-0000-C000-000000000046") DECLSPEC_NOVTABLE IUnknown
301{
302 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject) = 0;
303 virtual ULONG STDMETHODCALLTYPE AddRef() = 0;
304 virtual ULONG STDMETHODCALLTYPE Release() = 0;
305
306 template <class Q> HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp) {
307 return QueryInterface(uuidof<Q>(), (void **)pp);
308 }
309};
310
311template <> constexpr GUID uuidof<IUnknown>()
312{
313 return { 0x00000000, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } };
314}
315
316extern "C++"
317{
318 template<typename T> void** IID_PPV_ARGS_Helper(T** pp)
319 {
320 static_cast<IUnknown*>(*pp);
321 return reinterpret_cast<void**>(pp);
322 }
323}
324
325#define IID_PPV_ARGS(ppType) __uuidof(**(ppType)), IID_PPV_ARGS_Helper(ppType)
326#endif
327
328#if defined(lint)
329// Note: lint -e530 says don't complain about uninitialized variables for
330// this variable. Error 527 has to do with unreachable code.
331// -restore restores checking to the -save state
332#define UNREFERENCED_PARAMETER(P) \
333 /*lint -save -e527 -e530 */ \
334 { \
335 (P) = (P); \
336 } \
337 /*lint -restore */
338#else
339#define UNREFERENCED_PARAMETER(P) (P)
340#endif
diff --git a/contrib/DirectX-Headers/include/wsl/wrladapter.h b/contrib/DirectX-Headers/include/wsl/wrladapter.h
new file mode 100644
index 0000000..883ecab
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/wrladapter.h
@@ -0,0 +1,801 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#include "winadapter.h"
7
8// defined by winadapter.h and needed by some windows headers, but conflicts
9// with some libc++ implementation headers
10#ifdef __in
11#undef __in
12#endif
13#ifdef __out
14#undef __out
15#endif
16
17#include <type_traits>
18#include <atomic>
19#include <memory>
20#include <climits>
21#include <cassert>
22
23namespace Microsoft
24{
25namespace WRL
26{
27 namespace Details
28 {
29 struct BoolStruct { int Member; };
30 typedef int BoolStruct::* BoolType;
31
32 template <typename T> // T should be the ComPtr<T> or a derived type of it, not just the interface
33 class ComPtrRefBase
34 {
35 public:
36 typedef typename T::InterfaceType InterfaceType;
37
38 operator IUnknown**() const throw()
39 {
40 static_assert(__is_base_of(IUnknown, InterfaceType), "Invalid cast: InterfaceType does not derive from IUnknown");
41 return reinterpret_cast<IUnknown**>(ptr_->ReleaseAndGetAddressOf());
42 }
43
44 protected:
45 T* ptr_;
46 };
47
48 template <typename T>
49 class ComPtrRef : public Details::ComPtrRefBase<T> // T should be the ComPtr<T> or a derived type of it, not just the interface
50 {
51 using Super = Details::ComPtrRefBase<T>;
52 using InterfaceType = typename Super::InterfaceType;
53 public:
54 ComPtrRef(_In_opt_ T* ptr) throw()
55 {
56 this->ptr_ = ptr;
57 }
58
59 // Conversion operators
60 operator void**() const throw()
61 {
62 return reinterpret_cast<void**>(this->ptr_->ReleaseAndGetAddressOf());
63 }
64
65 // This is our operator ComPtr<U> (or the latest derived class from ComPtr (e.g. WeakRef))
66 operator T*() throw()
67 {
68 *this->ptr_ = nullptr;
69 return this->ptr_;
70 }
71
72 // We define operator InterfaceType**() here instead of on ComPtrRefBase<T>, since
73 // if InterfaceType is IUnknown or IInspectable, having it on the base will collide.
74 operator InterfaceType**() throw()
75 {
76 return this->ptr_->ReleaseAndGetAddressOf();
77 }
78
79 // This is used for IID_PPV_ARGS in order to do __uuidof(**(ppType)).
80 // It does not need to clear ptr_ at this point, it is done at IID_PPV_ARGS_Helper(ComPtrRef&) later in this file.
81 InterfaceType* operator *() throw()
82 {
83 return this->ptr_->Get();
84 }
85
86 // Explicit functions
87 InterfaceType* const * GetAddressOf() const throw()
88 {
89 return this->ptr_->GetAddressOf();
90 }
91
92 InterfaceType** ReleaseAndGetAddressOf() throw()
93 {
94 return this->ptr_->ReleaseAndGetAddressOf();
95 }
96 };
97 }
98
99 template <typename T>
100 class ComPtr
101 {
102 public:
103 typedef T InterfaceType;
104
105 protected:
106 InterfaceType *ptr_;
107 template<class U> friend class ComPtr;
108
109 void InternalAddRef() const throw()
110 {
111 if (ptr_ != nullptr)
112 {
113 ptr_->AddRef();
114 }
115 }
116
117 unsigned long InternalRelease() throw()
118 {
119 unsigned long ref = 0;
120 T* temp = ptr_;
121
122 if (temp != nullptr)
123 {
124 ptr_ = nullptr;
125 ref = temp->Release();
126 }
127
128 return ref;
129 }
130
131 public:
132 ComPtr() throw() : ptr_(nullptr)
133 {
134 }
135
136 ComPtr(decltype(nullptr)) throw() : ptr_(nullptr)
137 {
138 }
139
140 template<class U>
141 ComPtr(_In_opt_ U *other) throw() : ptr_(other)
142 {
143 InternalAddRef();
144 }
145
146 ComPtr(const ComPtr& other) throw() : ptr_(other.ptr_)
147 {
148 InternalAddRef();
149 }
150
151 // copy constructor that allows to instantiate class when U* is convertible to T*
152 template<class U>
153 ComPtr(const ComPtr<U> &other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
154 ptr_(other.ptr_)
155 {
156 InternalAddRef();
157 }
158
159 ComPtr(_Inout_ ComPtr &&other) throw() : ptr_(nullptr)
160 {
161 if (this != reinterpret_cast<ComPtr*>(&reinterpret_cast<unsigned char&>(other)))
162 {
163 Swap(other);
164 }
165 }
166
167 // Move constructor that allows instantiation of a class when U* is convertible to T*
168 template<class U>
169 ComPtr(_Inout_ ComPtr<U>&& other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
170 ptr_(other.ptr_)
171 {
172 other.ptr_ = nullptr;
173 }
174
175 ~ComPtr() throw()
176 {
177 InternalRelease();
178 }
179
180 ComPtr& operator=(decltype(nullptr)) throw()
181 {
182 InternalRelease();
183 return *this;
184 }
185
186 ComPtr& operator=(_In_opt_ T *other) throw()
187 {
188 if (ptr_ != other)
189 {
190 ComPtr(other).Swap(*this);
191 }
192 return *this;
193 }
194
195 template <typename U>
196 ComPtr& operator=(_In_opt_ U *other) throw()
197 {
198 ComPtr(other).Swap(*this);
199 return *this;
200 }
201
202 ComPtr& operator=(const ComPtr &other) throw()
203 {
204 if (ptr_ != other.ptr_)
205 {
206 ComPtr(other).Swap(*this);
207 }
208 return *this;
209 }
210
211 template<class U>
212 ComPtr& operator=(const ComPtr<U>& other) throw()
213 {
214 ComPtr(other).Swap(*this);
215 return *this;
216 }
217
218 ComPtr& operator=(_Inout_ ComPtr &&other) throw()
219 {
220 ComPtr(static_cast<ComPtr&&>(other)).Swap(*this);
221 return *this;
222 }
223
224 template<class U>
225 ComPtr& operator=(_Inout_ ComPtr<U>&& other) throw()
226 {
227 ComPtr(static_cast<ComPtr<U>&&>(other)).Swap(*this);
228 return *this;
229 }
230
231 void Swap(_Inout_ ComPtr&& r) throw()
232 {
233 T* tmp = ptr_;
234 ptr_ = r.ptr_;
235 r.ptr_ = tmp;
236 }
237
238 void Swap(_Inout_ ComPtr& r) throw()
239 {
240 T* tmp = ptr_;
241 ptr_ = r.ptr_;
242 r.ptr_ = tmp;
243 }
244
245 operator Details::BoolType() const throw()
246 {
247 return Get() != nullptr ? &Details::BoolStruct::Member : nullptr;
248 }
249
250 T* Get() const throw()
251 {
252 return ptr_;
253 }
254
255 InterfaceType* operator->() const throw()
256 {
257 return ptr_;
258 }
259
260 Details::ComPtrRef<ComPtr<T>> operator&() throw()
261 {
262 return Details::ComPtrRef<ComPtr<T>>(this);
263 }
264
265 const Details::ComPtrRef<const ComPtr<T>> operator&() const throw()
266 {
267 return Details::ComPtrRef<const ComPtr<T>>(this);
268 }
269
270 T* const* GetAddressOf() const throw()
271 {
272 return &ptr_;
273 }
274
275 T** GetAddressOf() throw()
276 {
277 return &ptr_;
278 }
279
280 T** ReleaseAndGetAddressOf() throw()
281 {
282 InternalRelease();
283 return &ptr_;
284 }
285
286 T* Detach() throw()
287 {
288 T* ptr = ptr_;
289 ptr_ = nullptr;
290 return ptr;
291 }
292
293 void Attach(_In_opt_ InterfaceType* other) throw()
294 {
295 if (ptr_ != nullptr)
296 {
297 auto ref = ptr_->Release();
298 // DBG_UNREFERENCED_LOCAL_VARIABLE(ref);
299 // Attaching to the same object only works if duplicate references are being coalesced. Otherwise
300 // re-attaching will cause the pointer to be released and may cause a crash on a subsequent dereference.
301 assert(ref != 0 || ptr_ != other);
302 }
303
304 ptr_ = other;
305 }
306
307 unsigned long Reset()
308 {
309 return InternalRelease();
310 }
311
312 // Previously, unsafe behavior could be triggered when 'this' is ComPtr<IInspectable> or ComPtr<IUnknown> and CopyTo is used to copy to another type U.
313 // The user will use operator& to convert the destination into a ComPtrRef, which can then implicit cast to IInspectable** and IUnknown**.
314 // If this overload of CopyTo is not present, it will implicitly cast to IInspectable or IUnknown and match CopyTo(InterfaceType**) instead.
315 // A valid polymoprhic downcast requires run-time type checking via QueryInterface, so CopyTo(InterfaceType**) will break type safety.
316 // This overload matches ComPtrRef before the implicit cast takes place, preventing the unsafe downcast.
317 template <typename U>
318 HRESULT CopyTo(Details::ComPtrRef<ComPtr<U>> ptr, typename std::enable_if<
319 (std::is_same<T, IUnknown>::value)
320 && !std::is_same<U*, T*>::value, void *>::type * = 0) const throw()
321 {
322 return ptr_->QueryInterface(uuidof<U>(), ptr);
323 }
324
325 HRESULT CopyTo(_Outptr_result_maybenull_ InterfaceType** ptr) const throw()
326 {
327 InternalAddRef();
328 *ptr = ptr_;
329 return S_OK;
330 }
331
332 HRESULT CopyTo(REFIID riid, _Outptr_result_nullonfailure_ void** ptr) const throw()
333 {
334 return ptr_->QueryInterface(riid, ptr);
335 }
336
337 template<typename U>
338 HRESULT CopyTo(_Outptr_result_nullonfailure_ U** ptr) const throw()
339 {
340 return ptr_->QueryInterface(uuidof<U>(), reinterpret_cast<void**>(ptr));
341 }
342
343 // query for U interface
344 template<typename U>
345 HRESULT As(_Inout_ Details::ComPtrRef<ComPtr<U>> p) const throw()
346 {
347 return ptr_->QueryInterface(uuidof<U>(), p);
348 }
349
350 // query for U interface
351 template<typename U>
352 HRESULT As(_Out_ ComPtr<U>* p) const throw()
353 {
354 return ptr_->QueryInterface(uuidof<U>(), reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
355 }
356
357 // query for riid interface and return as IUnknown
358 HRESULT AsIID(REFIID riid, _Out_ ComPtr<IUnknown>* p) const throw()
359 {
360 return ptr_->QueryInterface(riid, reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
361 }
362
363 }; // ComPtr
364
365
366 namespace Details
367 {
368 // Empty struct used as default template parameter
369 class Nil
370 {
371 };
372
373 // Empty struct used for validating template parameter types in Implements
374 struct ImplementsBase
375 {
376 };
377
378 class RuntimeClassBase
379 {
380 protected:
381 template<typename T>
382 static HRESULT AsIID(_In_ T* implements, REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject) noexcept
383 {
384 *ppvObject = nullptr;
385 bool isRefDelegated = false;
386 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
387 if (InlineIsEqualGUID(riid, uuidof<IUnknown>()))
388 {
389 *ppvObject = implements->CastToUnknown();
390 static_cast<IUnknown*>(*ppvObject)->AddRef();
391 return S_OK;
392 }
393
394 HRESULT hr = implements->CanCastTo(riid, ppvObject, &isRefDelegated);
395 if (SUCCEEDED(hr) && !isRefDelegated)
396 {
397 static_cast<IUnknown*>(*ppvObject)->AddRef();
398 }
399
400#ifdef _MSC_VER
401#pragma warning(push)
402#pragma warning(disable: 6102) // '*ppvObject' is used but may not be initialized
403#endif
404 _Analysis_assume_(SUCCEEDED(hr) || (*ppvObject == nullptr));
405#ifdef _MSC_VER
406#pragma warning(pop)
407#endif
408 return hr;
409 }
410
411 public:
412 HRESULT RuntimeClassInitialize() noexcept
413 {
414 return S_OK;
415 }
416 };
417
418 // Interface traits provides casting and filling iids methods helpers
419 template<typename I0>
420 struct InterfaceTraits
421 {
422 typedef I0 Base;
423
424 template<typename T>
425 static Base* CastToBase(_In_ T* ptr) noexcept
426 {
427 return static_cast<Base*>(ptr);
428 }
429
430 template<typename T>
431 static IUnknown* CastToUnknown(_In_ T* ptr) noexcept
432 {
433 return static_cast<IUnknown*>(static_cast<Base*>(ptr));
434 }
435
436 template <typename T>
437 _Success_(return == true)
438 static bool CanCastTo(_In_ T* ptr, REFIID riid, _Outptr_ void **ppv) noexcept
439 {
440 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
441 if (InlineIsEqualGUID(riid, uuidof<Base>()))
442 {
443 *ppv = static_cast<Base*>(ptr);
444 return true;
445 }
446
447 return false;
448 }
449 };
450
451 // Specialization for Nil parameter
452 template<>
453 struct InterfaceTraits<Nil>
454 {
455 typedef Nil Base;
456
457 template <typename T>
458 _Success_(return == true)
459 static bool CanCastTo(_In_ T*, REFIID, _Outptr_ void **) noexcept
460 {
461 return false;
462 }
463 };
464
465 // ChainInterfaces - template allows specifying a derived COM interface along with its class hierarchy to allow QI for the base interfaces
466 template <typename I0, typename I1, typename I2 = Nil, typename I3 = Nil,
467 typename I4 = Nil, typename I5 = Nil, typename I6 = Nil,
468 typename I7 = Nil, typename I8 = Nil, typename I9 = Nil>
469 struct ChainInterfaces : I0
470 {
471 protected:
472 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) throw()
473 {
474 typename InterfaceTraits<I0>::Base* ptr = InterfaceTraits<I0>::CastToBase(this);
475
476 return (InterfaceTraits<I0>::CanCastTo(this, riid, ppv) ||
477 InterfaceTraits<I1>::CanCastTo(ptr, riid, ppv) ||
478 InterfaceTraits<I2>::CanCastTo(ptr, riid, ppv) ||
479 InterfaceTraits<I3>::CanCastTo(ptr, riid, ppv) ||
480 InterfaceTraits<I4>::CanCastTo(ptr, riid, ppv) ||
481 InterfaceTraits<I5>::CanCastTo(ptr, riid, ppv) ||
482 InterfaceTraits<I6>::CanCastTo(ptr, riid, ppv) ||
483 InterfaceTraits<I7>::CanCastTo(ptr, riid, ppv) ||
484 InterfaceTraits<I8>::CanCastTo(ptr, riid, ppv) ||
485 InterfaceTraits<I9>::CanCastTo(ptr, riid, ppv)) ? S_OK : E_NOINTERFACE;
486 }
487
488 IUnknown* CastToUnknown() throw()
489 {
490 return InterfaceTraits<I0>::CastToUnknown(this);
491 }
492 };
493
494 // Helper template used by Implements. This template traverses a list of interfaces and adds them as base class and information
495 // to enable QI.
496 template <typename ...TInterfaces>
497 struct ImplementsHelper;
498
499 template <typename T>
500 struct ImplementsMarker
501 {};
502
503 template <typename I0, bool isImplements>
504 struct MarkImplements;
505
506 template <typename I0>
507 struct MarkImplements<I0, false>
508 {
509 typedef I0 Type;
510 };
511
512 template <typename I0>
513 struct MarkImplements<I0, true>
514 {
515 typedef ImplementsMarker<I0> Type;
516 };
517
518 // AdjustImplements pre-processes the type list for more efficient builds.
519 template <typename ...Bases>
520 struct AdjustImplements;
521
522 template <typename I0, typename ...Bases>
523 struct AdjustImplements<I0, Bases...>
524 {
525 typedef ImplementsHelper<typename MarkImplements<I0, std::is_base_of<ImplementsBase, I0>::value>::Type, Bases...> Type;
526 };
527
528 // Use AdjustImplements to remove instances of "Nil" from the type list.
529 template <typename ...Bases>
530 struct AdjustImplements<Nil, Bases...>
531 {
532 typedef typename AdjustImplements<Bases...>::Type Type;
533 };
534
535 template <>
536 struct AdjustImplements<>
537 {
538 typedef ImplementsHelper<> Type;
539 };
540
541 // Specialization handles unadorned interfaces
542 template <typename I0, typename ...TInterfaces>
543 struct ImplementsHelper<I0, TInterfaces...> :
544 I0,
545 AdjustImplements<TInterfaces...>::Type
546 {
547 template <typename ...> friend struct ImplementsHelper;
548 friend class RuntimeClassBase;
549
550 protected:
551
552 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
553 {
554 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
555 if (InlineIsEqualGUID(riid, uuidof<I0>()))
556 {
557 *ppv = reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
558 return S_OK;
559 }
560 return AdjustImplements<TInterfaces...>::Type::CanCastTo(riid, ppv, pRefDelegated);
561 }
562
563 IUnknown* CastToUnknown() noexcept
564 {
565 return reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
566 }
567 };
568
569
570 // Selector is used to "tag" base interfaces to be used in casting, since a runtime class may indirectly derive from
571 // the same interface or Implements<> template multiple times
572 template <typename base, typename disciminator>
573 struct Selector : public base
574 {
575 };
576
577 // Specialization handles types that derive from ImplementsHelper (e.g. nested Implements).
578 template <typename I0, typename ...TInterfaces>
579 struct ImplementsHelper<ImplementsMarker<I0>, TInterfaces...> :
580 Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>,
581 Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>
582 {
583 template <typename ...> friend struct ImplementsHelper;
584 friend class RuntimeClassBase;
585
586 protected:
587 typedef Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> CurrentType;
588 typedef Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> BaseType;
589
590 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
591 {
592 HRESULT hr = CurrentType::CanCastTo(riid, ppv);
593 if (hr == E_NOINTERFACE)
594 {
595 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
596 }
597 return hr;
598 }
599
600 IUnknown* CastToUnknown() noexcept
601 {
602 // First in list wins.
603 return CurrentType::CastToUnknown();
604 }
605 };
606
607 // terminal case specialization.
608 template <>
609 struct ImplementsHelper<>
610 {
611 template <typename ...> friend struct ImplementsHelper;
612 friend class RuntimeClassBase;
613
614 protected:
615 HRESULT CanCastTo(_In_ REFIID /*riid*/, _Outptr_ void ** /*ppv*/, bool * /*pRefDelegated*/ = nullptr) noexcept
616 {
617 return E_NOINTERFACE;
618 }
619
620 // IUnknown* CastToUnknown() noexcept; // not defined for terminal case.
621 };
622
623 // Specialization handles chaining interfaces
624 template <typename C0, typename C1, typename C2, typename C3, typename C4, typename C5, typename C6, typename C7, typename C8, typename C9, typename ...TInterfaces>
625 struct ImplementsHelper<ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>, TInterfaces...> :
626 ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>,
627 AdjustImplements<TInterfaces...>::Type
628 {
629 template <typename ...> friend struct ImplementsHelper;
630 friend class RuntimeClassBase;
631
632 protected:
633 typedef typename AdjustImplements<TInterfaces...>::Type BaseType;
634
635 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
636 {
637 HRESULT hr = ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CanCastTo(riid, ppv);
638 if (FAILED(hr))
639 {
640 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
641 }
642
643 return hr;
644 }
645
646 IUnknown* CastToUnknown() noexcept
647 {
648 return ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CastToUnknown();
649 }
650 };
651
652 // Implements - template implementing QI using the information provided through its template parameters
653 // Each template parameter has to be one of the following:
654 // * COM Interface
655 // * A class that implements one or more COM interfaces
656 // * ChainInterfaces template
657 template <typename I0, typename ...TInterfaces>
658 struct Implements :
659 AdjustImplements<I0, TInterfaces...>::Type,
660 ImplementsBase
661 {
662 public:
663 typedef I0 FirstInterface;
664 protected:
665 typedef typename AdjustImplements<I0, TInterfaces...>::Type BaseType;
666 template <typename ...> friend struct ImplementsHelper;
667 friend class RuntimeClassBase;
668
669 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) noexcept
670 {
671 return BaseType::CanCastTo(riid, ppv);
672 }
673
674 IUnknown* CastToUnknown() noexcept
675 {
676 return BaseType::CastToUnknown();
677 }
678 };
679
680 // Used on RuntimeClass to protect it from being constructed with new
681 class DontUseNewUseMake
682 {
683 private:
684 void* operator new(size_t) noexcept
685 {
686 assert(false);
687 return 0;
688 }
689
690 public:
691 void* operator new(size_t, _In_ void* placement) noexcept
692 {
693 return placement;
694 }
695 };
696
697 template <typename ...TInterfaces>
698 class RuntimeClassImpl :
699 public AdjustImplements<TInterfaces...>::Type,
700 public RuntimeClassBase,
701 public DontUseNewUseMake
702 {
703 public:
704 STDMETHOD(QueryInterface)(REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject)
705 {
706 return Super::AsIID(this, riid, ppvObject);
707 }
708
709 STDMETHOD_(ULONG, AddRef)()
710 {
711 return InternalAddRef();
712 }
713
714 STDMETHOD_(ULONG, Release)()
715 {
716 ULONG ref = InternalRelease();
717 if (ref == 0)
718 {
719 delete this;
720 }
721
722 return ref;
723 }
724
725 protected:
726 using Super = RuntimeClassBase;
727 static const LONG c_lProtectDestruction = -(LONG_MAX / 2);
728
729 RuntimeClassImpl() noexcept = default;
730
731 virtual ~RuntimeClassImpl() noexcept
732 {
733 // Set refcount_ to -(LONG_MAX/2) to protect destruction and
734 // also catch mismatched Release in debug builds
735 refcount_ = static_cast<ULONG>(c_lProtectDestruction);
736 }
737
738 ULONG InternalAddRef() noexcept
739 {
740 return ++refcount_;
741 }
742
743 ULONG InternalRelease() noexcept
744 {
745 return --refcount_;
746 }
747
748 unsigned long GetRefCount() const noexcept
749 {
750 return refcount_;
751 }
752
753 std::atomic<ULONG> refcount_{1};
754 };
755 }
756
757 template <typename ...TInterfaces>
758 class Base : public Details::RuntimeClassImpl<TInterfaces...>
759 {
760 Base(const Base&) = delete;
761 Base& operator=(const Base&) = delete;
762
763 protected:
764 HRESULT CustomQueryInterface(REFIID /*riid*/, _Outptr_result_nullonfailure_ void** /*ppvObject*/, _Out_ bool *handled)
765 {
766 *handled = false;
767 return S_OK;
768 }
769
770 public:
771 Base() throw() = default;
772 typedef Base RuntimeClassT;
773 };
774
775 // Creates a Nano-COM object wrapped in a smart pointer.
776 template <typename T, typename ...TArgs>
777 ComPtr<T> Make(TArgs&&... args)
778 {
779 ComPtr<T> object;
780
781 std::unique_ptr<unsigned char[]> buffer(new unsigned char[sizeof(T)]);
782 if (buffer)
783 {
784 T* ptr = new (buffer.get())T(std::forward<TArgs>(args)...);
785 object.Attach(ptr);
786 buffer.release();
787 }
788
789 return object;
790 }
791
792 using Details::ChainInterfaces;
793}
794}
795
796// Overloaded global function to provide to IID_PPV_ARGS that support Details::ComPtrRef
797template<typename T>
798void** IID_PPV_ARGS_Helper(Microsoft::WRL::Details::ComPtrRef<T> pp) throw()
799{
800 return pp;
801} \ No newline at end of file