zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

d3d12.h (1234117B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/d3d12.idl - Do not edit ***/
      2 
      3 #ifdef _WIN32
      4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      6 #endif
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 #endif
     10 
     11 #ifndef COM_NO_WINDOWS_H
     12 #include <windows.h>
     13 #include <ole2.h>
     14 #endif
     15 
     16 #ifndef __d3d12_h__
     17 #define __d3d12_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __ID3D12Object_FWD_DEFINED__
     22 #define __ID3D12Object_FWD_DEFINED__
     23 typedef interface ID3D12Object ID3D12Object;
     24 #ifdef __cplusplus
     25 interface ID3D12Object;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __ID3D12DeviceChild_FWD_DEFINED__
     30 #define __ID3D12DeviceChild_FWD_DEFINED__
     31 typedef interface ID3D12DeviceChild ID3D12DeviceChild;
     32 #ifdef __cplusplus
     33 interface ID3D12DeviceChild;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __ID3D12Pageable_FWD_DEFINED__
     38 #define __ID3D12Pageable_FWD_DEFINED__
     39 typedef interface ID3D12Pageable ID3D12Pageable;
     40 #ifdef __cplusplus
     41 interface ID3D12Pageable;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __ID3D12Heap_FWD_DEFINED__
     46 #define __ID3D12Heap_FWD_DEFINED__
     47 typedef interface ID3D12Heap ID3D12Heap;
     48 #ifdef __cplusplus
     49 interface ID3D12Heap;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __ID3D12Resource_FWD_DEFINED__
     54 #define __ID3D12Resource_FWD_DEFINED__
     55 typedef interface ID3D12Resource ID3D12Resource;
     56 #ifdef __cplusplus
     57 interface ID3D12Resource;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __ID3D12CommandList_FWD_DEFINED__
     62 #define __ID3D12CommandList_FWD_DEFINED__
     63 typedef interface ID3D12CommandList ID3D12CommandList;
     64 #ifdef __cplusplus
     65 interface ID3D12CommandList;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
     70 #define __ID3D12DescriptorHeap_FWD_DEFINED__
     71 typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
     72 #ifdef __cplusplus
     73 interface ID3D12DescriptorHeap;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __ID3D12QueryHeap_FWD_DEFINED__
     78 #define __ID3D12QueryHeap_FWD_DEFINED__
     79 typedef interface ID3D12QueryHeap ID3D12QueryHeap;
     80 #ifdef __cplusplus
     81 interface ID3D12QueryHeap;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __ID3D12CommandSignature_FWD_DEFINED__
     86 #define __ID3D12CommandSignature_FWD_DEFINED__
     87 typedef interface ID3D12CommandSignature ID3D12CommandSignature;
     88 #ifdef __cplusplus
     89 interface ID3D12CommandSignature;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
     94 #define __ID3D12GraphicsCommandList_FWD_DEFINED__
     95 typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
     96 #ifdef __cplusplus
     97 interface ID3D12GraphicsCommandList;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 #ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
    102 #define __ID3D12GraphicsCommandList1_FWD_DEFINED__
    103 typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
    104 #ifdef __cplusplus
    105 interface ID3D12GraphicsCommandList1;
    106 #endif /* __cplusplus */
    107 #endif
    108 
    109 #ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
    110 #define __ID3D12GraphicsCommandList2_FWD_DEFINED__
    111 typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
    112 #ifdef __cplusplus
    113 interface ID3D12GraphicsCommandList2;
    114 #endif /* __cplusplus */
    115 #endif
    116 
    117 #ifndef __ID3D12ProtectedSession_FWD_DEFINED__
    118 #define __ID3D12ProtectedSession_FWD_DEFINED__
    119 typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
    120 #ifdef __cplusplus
    121 interface ID3D12ProtectedSession;
    122 #endif /* __cplusplus */
    123 #endif
    124 
    125 #ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
    126 #define __ID3D12ProtectedResourceSession_FWD_DEFINED__
    127 typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
    128 #ifdef __cplusplus
    129 interface ID3D12ProtectedResourceSession;
    130 #endif /* __cplusplus */
    131 #endif
    132 
    133 #ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
    134 #define __ID3D12GraphicsCommandList3_FWD_DEFINED__
    135 typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
    136 #ifdef __cplusplus
    137 interface ID3D12GraphicsCommandList3;
    138 #endif /* __cplusplus */
    139 #endif
    140 
    141 #ifndef __ID3D12CommandQueue_FWD_DEFINED__
    142 #define __ID3D12CommandQueue_FWD_DEFINED__
    143 typedef interface ID3D12CommandQueue ID3D12CommandQueue;
    144 #ifdef __cplusplus
    145 interface ID3D12CommandQueue;
    146 #endif /* __cplusplus */
    147 #endif
    148 
    149 #ifndef __ID3D12RootSignature_FWD_DEFINED__
    150 #define __ID3D12RootSignature_FWD_DEFINED__
    151 typedef interface ID3D12RootSignature ID3D12RootSignature;
    152 #ifdef __cplusplus
    153 interface ID3D12RootSignature;
    154 #endif /* __cplusplus */
    155 #endif
    156 
    157 #ifndef __ID3D12PipelineState_FWD_DEFINED__
    158 #define __ID3D12PipelineState_FWD_DEFINED__
    159 typedef interface ID3D12PipelineState ID3D12PipelineState;
    160 #ifdef __cplusplus
    161 interface ID3D12PipelineState;
    162 #endif /* __cplusplus */
    163 #endif
    164 
    165 #ifndef __ID3D12Fence_FWD_DEFINED__
    166 #define __ID3D12Fence_FWD_DEFINED__
    167 typedef interface ID3D12Fence ID3D12Fence;
    168 #ifdef __cplusplus
    169 interface ID3D12Fence;
    170 #endif /* __cplusplus */
    171 #endif
    172 
    173 #ifndef __ID3D12Fence1_FWD_DEFINED__
    174 #define __ID3D12Fence1_FWD_DEFINED__
    175 typedef interface ID3D12Fence1 ID3D12Fence1;
    176 #ifdef __cplusplus
    177 interface ID3D12Fence1;
    178 #endif /* __cplusplus */
    179 #endif
    180 
    181 #ifndef __ID3D12CommandAllocator_FWD_DEFINED__
    182 #define __ID3D12CommandAllocator_FWD_DEFINED__
    183 typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
    184 #ifdef __cplusplus
    185 interface ID3D12CommandAllocator;
    186 #endif /* __cplusplus */
    187 #endif
    188 
    189 #ifndef __ID3D12Device_FWD_DEFINED__
    190 #define __ID3D12Device_FWD_DEFINED__
    191 typedef interface ID3D12Device ID3D12Device;
    192 #ifdef __cplusplus
    193 interface ID3D12Device;
    194 #endif /* __cplusplus */
    195 #endif
    196 
    197 #ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
    198 #define __ID3D12PipelineLibrary_FWD_DEFINED__
    199 typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
    200 #ifdef __cplusplus
    201 interface ID3D12PipelineLibrary;
    202 #endif /* __cplusplus */
    203 #endif
    204 
    205 #ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
    206 #define __ID3D12PipelineLibrary1_FWD_DEFINED__
    207 typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
    208 #ifdef __cplusplus
    209 interface ID3D12PipelineLibrary1;
    210 #endif /* __cplusplus */
    211 #endif
    212 
    213 #ifndef __ID3D12Device1_FWD_DEFINED__
    214 #define __ID3D12Device1_FWD_DEFINED__
    215 typedef interface ID3D12Device1 ID3D12Device1;
    216 #ifdef __cplusplus
    217 interface ID3D12Device1;
    218 #endif /* __cplusplus */
    219 #endif
    220 
    221 #ifndef __ID3D12Device2_FWD_DEFINED__
    222 #define __ID3D12Device2_FWD_DEFINED__
    223 typedef interface ID3D12Device2 ID3D12Device2;
    224 #ifdef __cplusplus
    225 interface ID3D12Device2;
    226 #endif /* __cplusplus */
    227 #endif
    228 
    229 #ifndef __ID3D12Device3_FWD_DEFINED__
    230 #define __ID3D12Device3_FWD_DEFINED__
    231 typedef interface ID3D12Device3 ID3D12Device3;
    232 #ifdef __cplusplus
    233 interface ID3D12Device3;
    234 #endif /* __cplusplus */
    235 #endif
    236 
    237 #ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
    238 #define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
    239 typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
    240 #ifdef __cplusplus
    241 interface ID3D12RootSignatureDeserializer;
    242 #endif /* __cplusplus */
    243 #endif
    244 
    245 #ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
    246 #define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
    247 typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
    248 #ifdef __cplusplus
    249 interface ID3D12VersionedRootSignatureDeserializer;
    250 #endif /* __cplusplus */
    251 #endif
    252 
    253 #ifndef __ID3D12Device4_FWD_DEFINED__
    254 #define __ID3D12Device4_FWD_DEFINED__
    255 typedef interface ID3D12Device4 ID3D12Device4;
    256 #ifdef __cplusplus
    257 interface ID3D12Device4;
    258 #endif /* __cplusplus */
    259 #endif
    260 
    261 #ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
    262 #define __ID3D12LifetimeOwner_FWD_DEFINED__
    263 typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
    264 #ifdef __cplusplus
    265 interface ID3D12LifetimeOwner;
    266 #endif /* __cplusplus */
    267 #endif
    268 
    269 #ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
    270 #define __ID3D12SwapChainAssistant_FWD_DEFINED__
    271 typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
    272 #ifdef __cplusplus
    273 interface ID3D12SwapChainAssistant;
    274 #endif /* __cplusplus */
    275 #endif
    276 
    277 #ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
    278 #define __ID3D12LifetimeTracker_FWD_DEFINED__
    279 typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
    280 #ifdef __cplusplus
    281 interface ID3D12LifetimeTracker;
    282 #endif /* __cplusplus */
    283 #endif
    284 
    285 #ifndef __ID3D12StateObject_FWD_DEFINED__
    286 #define __ID3D12StateObject_FWD_DEFINED__
    287 typedef interface ID3D12StateObject ID3D12StateObject;
    288 #ifdef __cplusplus
    289 interface ID3D12StateObject;
    290 #endif /* __cplusplus */
    291 #endif
    292 
    293 #ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
    294 #define __ID3D12StateObjectProperties_FWD_DEFINED__
    295 typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
    296 #ifdef __cplusplus
    297 interface ID3D12StateObjectProperties;
    298 #endif /* __cplusplus */
    299 #endif
    300 
    301 #ifndef __ID3D12Device5_FWD_DEFINED__
    302 #define __ID3D12Device5_FWD_DEFINED__
    303 typedef interface ID3D12Device5 ID3D12Device5;
    304 #ifdef __cplusplus
    305 interface ID3D12Device5;
    306 #endif /* __cplusplus */
    307 #endif
    308 
    309 #ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
    310 #define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
    311 typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
    312 #ifdef __cplusplus
    313 interface ID3D12DeviceRemovedExtendedDataSettings;
    314 #endif /* __cplusplus */
    315 #endif
    316 
    317 #ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
    318 #define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
    319 typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
    320 #ifdef __cplusplus
    321 interface ID3D12DeviceRemovedExtendedDataSettings1;
    322 #endif /* __cplusplus */
    323 #endif
    324 
    325 #ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
    326 #define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
    327 typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
    328 #ifdef __cplusplus
    329 interface ID3D12DeviceRemovedExtendedData;
    330 #endif /* __cplusplus */
    331 #endif
    332 
    333 #ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
    334 #define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
    335 typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
    336 #ifdef __cplusplus
    337 interface ID3D12DeviceRemovedExtendedData1;
    338 #endif /* __cplusplus */
    339 #endif
    340 
    341 #ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
    342 #define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
    343 typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
    344 #ifdef __cplusplus
    345 interface ID3D12DeviceRemovedExtendedData2;
    346 #endif /* __cplusplus */
    347 #endif
    348 
    349 #ifndef __ID3D12Device6_FWD_DEFINED__
    350 #define __ID3D12Device6_FWD_DEFINED__
    351 typedef interface ID3D12Device6 ID3D12Device6;
    352 #ifdef __cplusplus
    353 interface ID3D12Device6;
    354 #endif /* __cplusplus */
    355 #endif
    356 
    357 #ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
    358 #define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
    359 typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
    360 #ifdef __cplusplus
    361 interface ID3D12ProtectedResourceSession1;
    362 #endif /* __cplusplus */
    363 #endif
    364 
    365 #ifndef __ID3D12Device7_FWD_DEFINED__
    366 #define __ID3D12Device7_FWD_DEFINED__
    367 typedef interface ID3D12Device7 ID3D12Device7;
    368 #ifdef __cplusplus
    369 interface ID3D12Device7;
    370 #endif /* __cplusplus */
    371 #endif
    372 
    373 #ifndef __ID3D12Device8_FWD_DEFINED__
    374 #define __ID3D12Device8_FWD_DEFINED__
    375 typedef interface ID3D12Device8 ID3D12Device8;
    376 #ifdef __cplusplus
    377 interface ID3D12Device8;
    378 #endif /* __cplusplus */
    379 #endif
    380 
    381 #ifndef __ID3D12Resource1_FWD_DEFINED__
    382 #define __ID3D12Resource1_FWD_DEFINED__
    383 typedef interface ID3D12Resource1 ID3D12Resource1;
    384 #ifdef __cplusplus
    385 interface ID3D12Resource1;
    386 #endif /* __cplusplus */
    387 #endif
    388 
    389 #ifndef __ID3D12Resource2_FWD_DEFINED__
    390 #define __ID3D12Resource2_FWD_DEFINED__
    391 typedef interface ID3D12Resource2 ID3D12Resource2;
    392 #ifdef __cplusplus
    393 interface ID3D12Resource2;
    394 #endif /* __cplusplus */
    395 #endif
    396 
    397 #ifndef __ID3D12Heap1_FWD_DEFINED__
    398 #define __ID3D12Heap1_FWD_DEFINED__
    399 typedef interface ID3D12Heap1 ID3D12Heap1;
    400 #ifdef __cplusplus
    401 interface ID3D12Heap1;
    402 #endif /* __cplusplus */
    403 #endif
    404 
    405 #ifndef __ID3D12MetaCommand_FWD_DEFINED__
    406 #define __ID3D12MetaCommand_FWD_DEFINED__
    407 typedef interface ID3D12MetaCommand ID3D12MetaCommand;
    408 #ifdef __cplusplus
    409 interface ID3D12MetaCommand;
    410 #endif /* __cplusplus */
    411 #endif
    412 
    413 #ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
    414 #define __ID3D12GraphicsCommandList4_FWD_DEFINED__
    415 typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
    416 #ifdef __cplusplus
    417 interface ID3D12GraphicsCommandList4;
    418 #endif /* __cplusplus */
    419 #endif
    420 
    421 #ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
    422 #define __ID3D12ShaderCacheSession_FWD_DEFINED__
    423 typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
    424 #ifdef __cplusplus
    425 interface ID3D12ShaderCacheSession;
    426 #endif /* __cplusplus */
    427 #endif
    428 
    429 #ifndef __ID3D12Device9_FWD_DEFINED__
    430 #define __ID3D12Device9_FWD_DEFINED__
    431 typedef interface ID3D12Device9 ID3D12Device9;
    432 #ifdef __cplusplus
    433 interface ID3D12Device9;
    434 #endif /* __cplusplus */
    435 #endif
    436 
    437 #ifndef __ID3D12Device10_FWD_DEFINED__
    438 #define __ID3D12Device10_FWD_DEFINED__
    439 typedef interface ID3D12Device10 ID3D12Device10;
    440 #ifdef __cplusplus
    441 interface ID3D12Device10;
    442 #endif /* __cplusplus */
    443 #endif
    444 
    445 #ifndef __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
    446 #define __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
    447 typedef interface ID3D12VirtualizationGuestDevice ID3D12VirtualizationGuestDevice;
    448 #ifdef __cplusplus
    449 interface ID3D12VirtualizationGuestDevice;
    450 #endif /* __cplusplus */
    451 #endif
    452 
    453 #ifndef __ID3D12Tools_FWD_DEFINED__
    454 #define __ID3D12Tools_FWD_DEFINED__
    455 typedef interface ID3D12Tools ID3D12Tools;
    456 #ifdef __cplusplus
    457 interface ID3D12Tools;
    458 #endif /* __cplusplus */
    459 #endif
    460 
    461 #ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
    462 #define __ID3D12SDKConfiguration_FWD_DEFINED__
    463 typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
    464 #ifdef __cplusplus
    465 interface ID3D12SDKConfiguration;
    466 #endif /* __cplusplus */
    467 #endif
    468 
    469 #ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
    470 #define __ID3D12GraphicsCommandList5_FWD_DEFINED__
    471 typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
    472 #ifdef __cplusplus
    473 interface ID3D12GraphicsCommandList5;
    474 #endif /* __cplusplus */
    475 #endif
    476 
    477 #ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
    478 #define __ID3D12GraphicsCommandList6_FWD_DEFINED__
    479 typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
    480 #ifdef __cplusplus
    481 interface ID3D12GraphicsCommandList6;
    482 #endif /* __cplusplus */
    483 #endif
    484 
    485 #ifndef __ID3D12GraphicsCommandList7_FWD_DEFINED__
    486 #define __ID3D12GraphicsCommandList7_FWD_DEFINED__
    487 typedef interface ID3D12GraphicsCommandList7 ID3D12GraphicsCommandList7;
    488 #ifdef __cplusplus
    489 interface ID3D12GraphicsCommandList7;
    490 #endif /* __cplusplus */
    491 #endif
    492 
    493 /* Headers for imported files */
    494 
    495 #include <oaidl.h>
    496 #include <ocidl.h>
    497 #include <dxgi.h>
    498 #include <d3dcommon.h>
    499 
    500 #ifdef __cplusplus
    501 extern "C" {
    502 #endif
    503 
    504 #ifndef _D3D12_CONSTANTS
    505 #define _D3D12_CONSTANTS
    506 #define D3D12_16BIT_INDEX_STRIP_CUT_VALUE (0xffff)
    507 
    508 #define D3D12_32BIT_INDEX_STRIP_CUT_VALUE (0xffffffff)
    509 
    510 #define D3D12_8BIT_INDEX_STRIP_CUT_VALUE (0xff)
    511 
    512 #define D3D12_APPEND_ALIGNED_ELEMENT (0xffffffff)
    513 
    514 #define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT (9)
    515 
    516 #define D3D12_CLIP_OR_CULL_DISTANCE_COUNT (8)
    517 
    518 #define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT (2)
    519 
    520 #define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT (14)
    521 
    522 #define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS (4)
    523 
    524 #define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT (32)
    525 
    526 #define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT (15)
    527 
    528 #define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT (16)
    529 
    530 #define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS (4)
    531 
    532 #define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT (15)
    533 
    534 #define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST (1)
    535 
    536 #define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS (1)
    537 
    538 #define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT (64)
    539 
    540 #define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS (4)
    541 
    542 #define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT (1)
    543 
    544 #define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST (1)
    545 
    546 #define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS (1)
    547 
    548 #define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT (32)
    549 
    550 #define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS (1)
    551 
    552 #define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT (128)
    553 
    554 #define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST (1)
    555 
    556 #define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS (1)
    557 
    558 #define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT (128)
    559 
    560 #define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS (1)
    561 
    562 #define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT (16)
    563 
    564 #define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST (1)
    565 
    566 #define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS (1)
    567 
    568 #define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT (16)
    569 
    570 #define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT (32)
    571 
    572 #define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS (4)
    573 
    574 #define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT (32)
    575 
    576 #define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT (4096)
    577 
    578 #define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST (3)
    579 
    580 #define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS (3)
    581 
    582 #define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX (10)
    583 
    584 #define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN (-10)
    585 
    586 #define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE (-8)
    587 
    588 #define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE (7)
    589 
    590 #define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT (256)
    591 
    592 #define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (256)
    593 
    594 #define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP (64)
    595 
    596 #define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (240)
    597 
    598 #define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP (68)
    599 
    600 #define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (224)
    601 
    602 #define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP (72)
    603 
    604 #define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (208)
    605 
    606 #define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP (76)
    607 
    608 #define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (192)
    609 
    610 #define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP (84)
    611 
    612 #define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (176)
    613 
    614 #define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP (92)
    615 
    616 #define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (160)
    617 
    618 #define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP (100)
    619 
    620 #define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (144)
    621 
    622 #define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP (112)
    623 
    624 #define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (128)
    625 
    626 #define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP (128)
    627 
    628 #define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (112)
    629 
    630 #define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP (144)
    631 
    632 #define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (96)
    633 
    634 #define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP (168)
    635 
    636 #define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (80)
    637 
    638 #define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP (204)
    639 
    640 #define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (64)
    641 
    642 #define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP (256)
    643 
    644 #define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (48)
    645 
    646 #define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP (340)
    647 
    648 #define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (32)
    649 
    650 #define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP (512)
    651 
    652 #define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD (16)
    653 
    654 #define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP (768)
    655 
    656 #define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION (1)
    657 
    658 #define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT (256)
    659 
    660 #define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP (768)
    661 
    662 #define D3D12_CS_4_X_THREAD_GROUP_MAX_X (768)
    663 
    664 #define D3D12_CS_4_X_THREAD_GROUP_MAX_Y (768)
    665 
    666 #define D3D12_CS_4_X_UAV_REGISTER_COUNT (1)
    667 
    668 #define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION (65535)
    669 
    670 #define D3D12_CS_TGSM_REGISTER_COUNT (8192)
    671 
    672 #define D3D12_CS_TGSM_REGISTER_READS_PER_INST (1)
    673 
    674 #define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS (1)
    675 
    676 #define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS (1)
    677 
    678 #define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS (3)
    679 
    680 #define D3D12_CS_THREADGROUPID_REGISTER_COUNT (1)
    681 
    682 #define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS (1)
    683 
    684 #define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT (1)
    685 
    686 #define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS (3)
    687 
    688 #define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT (1)
    689 
    690 #define D3D12_CS_THREADID_REGISTER_COMPONENTS (3)
    691 
    692 #define D3D12_CS_THREADID_REGISTER_COUNT (1)
    693 
    694 #define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP (1024)
    695 
    696 #define D3D12_CS_THREAD_GROUP_MAX_X (1024)
    697 
    698 #define D3D12_CS_THREAD_GROUP_MAX_Y (1024)
    699 
    700 #define D3D12_CS_THREAD_GROUP_MAX_Z (64)
    701 
    702 #define D3D12_CS_THREAD_GROUP_MIN_X (1)
    703 
    704 #define D3D12_CS_THREAD_GROUP_MIN_Y (1)
    705 
    706 #define D3D12_CS_THREAD_GROUP_MIN_Z (1)
    707 
    708 #define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL (16384)
    709 
    710 #define D3D12_DEFAULT_BLEND_FACTOR_ALPHA (1.0f)
    711 #define D3D12_DEFAULT_BLEND_FACTOR_BLUE (1.0f)
    712 #define D3D12_DEFAULT_BLEND_FACTOR_GREEN (1.0f)
    713 #define D3D12_DEFAULT_BLEND_FACTOR_RED (1.0f)
    714 #define D3D12_DEFAULT_BORDER_COLOR_COMPONENT (0.0f)
    715 #define D3D12_DEFAULT_DEPTH_BIAS (0)
    716 
    717 #define D3D12_DEFAULT_DEPTH_BIAS_CLAMP (0.0f)
    718 #define D3D12_DEFAULT_MAX_ANISOTROPY (16)
    719 
    720 #define D3D12_DEFAULT_MIP_LOD_BIAS (0.0f)
    721 #define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT (4194304)
    722 
    723 #define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX (0)
    724 
    725 #define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT (65536)
    726 
    727 #define D3D12_DEFAULT_SAMPLE_MASK (0xffffffff)
    728 
    729 #define D3D12_DEFAULT_SCISSOR_ENDX (0)
    730 
    731 #define D3D12_DEFAULT_SCISSOR_ENDY (0)
    732 
    733 #define D3D12_DEFAULT_SCISSOR_STARTX (0)
    734 
    735 #define D3D12_DEFAULT_SCISSOR_STARTY (0)
    736 
    737 #define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS (0.0f)
    738 #define D3D12_DEFAULT_STENCIL_READ_MASK (0xff)
    739 
    740 #define D3D12_DEFAULT_STENCIL_REFERENCE (0)
    741 
    742 #define D3D12_DEFAULT_STENCIL_WRITE_MASK (0xff)
    743 
    744 #define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX (0)
    745 
    746 #define D3D12_DEFAULT_VIEWPORT_HEIGHT (0)
    747 
    748 #define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH (0.0f)
    749 #define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH (0.0f)
    750 #define D3D12_DEFAULT_VIEWPORT_TOPLEFTX (0)
    751 
    752 #define D3D12_DEFAULT_VIEWPORT_TOPLEFTY (0)
    753 
    754 #define D3D12_DEFAULT_VIEWPORT_WIDTH (0)
    755 
    756 #define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND (0xffffffff)
    757 
    758 #define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END (0xfffffff7)
    759 
    760 #define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START (0xfffffff0)
    761 
    762 #define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS (3968)
    763 
    764 #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS (4)
    765 
    766 #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT (32)
    767 
    768 #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT (32)
    769 
    770 #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST (2)
    771 
    772 #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS (1)
    773 
    774 #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS (3)
    775 
    776 #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT (32)
    777 
    778 #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT (1)
    779 
    780 #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST (2)
    781 
    782 #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS (1)
    783 
    784 #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS (4)
    785 
    786 #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT (32)
    787 
    788 #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT (32)
    789 
    790 #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST (2)
    791 
    792 #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS (1)
    793 
    794 #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS (1)
    795 
    796 #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT (32)
    797 
    798 #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT (1)
    799 
    800 #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST (2)
    801 
    802 #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS (1)
    803 
    804 #define D3D12_DS_OUTPUT_REGISTER_COMPONENTS (4)
    805 
    806 #define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
    807 
    808 #define D3D12_DS_OUTPUT_REGISTER_COUNT (32)
    809 
    810 #define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP (0.6)
    811 #define D3D12_FLOAT32_MAX (3.402823466e+38f)
    812 #define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP (0.6f)
    813 #define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR (2.4f)
    814 #define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR (1.0f)
    815 #define D3D12_FLOAT_TO_SRGB_OFFSET (0.055f)
    816 #define D3D12_FLOAT_TO_SRGB_SCALE_1 (12.92f)
    817 #define D3D12_FLOAT_TO_SRGB_SCALE_2 (1.055f)
    818 #define D3D12_FLOAT_TO_SRGB_THRESHOLD (0.0031308f)
    819 #define D3D12_FTOI_INSTRUCTION_MAX_INPUT (2147483647.999f)
    820 #define D3D12_FTOI_INSTRUCTION_MIN_INPUT (-2147483648.999f)
    821 #define D3D12_FTOU_INSTRUCTION_MAX_INPUT (4294967295.999f)
    822 #define D3D12_FTOU_INSTRUCTION_MIN_INPUT (0.0f)
    823 #define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST (2)
    824 
    825 #define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS (1)
    826 
    827 #define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS (1)
    828 
    829 #define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT (32)
    830 
    831 #define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT (1)
    832 
    833 #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS (1)
    834 
    835 #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT (32)
    836 
    837 #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT (1)
    838 
    839 #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST (2)
    840 
    841 #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS (1)
    842 
    843 #define D3D12_GS_INPUT_REGISTER_COMPONENTS (4)
    844 
    845 #define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT (32)
    846 
    847 #define D3D12_GS_INPUT_REGISTER_COUNT (32)
    848 
    849 #define D3D12_GS_INPUT_REGISTER_READS_PER_INST (2)
    850 
    851 #define D3D12_GS_INPUT_REGISTER_READ_PORTS (1)
    852 
    853 #define D3D12_GS_INPUT_REGISTER_VERTICES (32)
    854 
    855 #define D3D12_GS_MAX_INSTANCE_COUNT (32)
    856 
    857 #define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES (1024)
    858 
    859 #define D3D12_GS_OUTPUT_ELEMENTS (32)
    860 
    861 #define D3D12_GS_OUTPUT_REGISTER_COMPONENTS (4)
    862 
    863 #define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
    864 
    865 #define D3D12_GS_OUTPUT_REGISTER_COUNT (32)
    866 
    867 #define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT (32)
    868 
    869 #define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT (32)
    870 
    871 #define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS (4)
    872 
    873 #define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT (32)
    874 
    875 #define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST (2)
    876 
    877 #define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS (1)
    878 
    879 #define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND (0xffffffff)
    880 
    881 #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS (1)
    882 
    883 #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT (32)
    884 
    885 #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT (1)
    886 
    887 #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST (2)
    888 
    889 #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS (1)
    890 
    891 #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS (1)
    892 
    893 #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT (32)
    894 
    895 #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT (1)
    896 
    897 #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST (2)
    898 
    899 #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS (1)
    900 
    901 #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS (1)
    902 
    903 #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT (32)
    904 
    905 #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT (1)
    906 
    907 #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST (2)
    908 
    909 #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS (1)
    910 
    911 #define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND (0xffffffff)
    912 
    913 #define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND (1.0f)
    914 #define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND (64.0f)
    915 #define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS (3968)
    916 
    917 #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS (1)
    918 
    919 #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT (32)
    920 
    921 #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT (1)
    922 
    923 #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST (2)
    924 
    925 #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS (1)
    926 
    927 #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS (4)
    928 
    929 #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT (32)
    930 
    931 #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT (32)
    932 
    933 #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST (2)
    934 
    935 #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS (1)
    936 
    937 #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS (128)
    938 
    939 #define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES (0)
    940 
    941 #define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY (0)
    942 
    943 #define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES (0)
    944 
    945 #define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT (1)
    946 
    947 #define D3D12_IA_INSTANCE_ID_BIT_COUNT (32)
    948 
    949 #define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT (32)
    950 
    951 #define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT (32)
    952 
    953 #define D3D12_IA_PRIMITIVE_ID_BIT_COUNT (32)
    954 
    955 #define D3D12_IA_VERTEX_ID_BIT_COUNT (32)
    956 
    957 #define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT (32)
    958 
    959 #define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS (128)
    960 
    961 #define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT (32)
    962 
    963 #define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT (0xffffffff)
    964 
    965 #define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER (0xffffffff)
    966 
    967 #define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff)
    968 
    969 #define D3D12_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff)
    970 
    971 #define D3D12_LINEAR_GAMMA (1.0f)
    972 #define D3D12_MAJOR_VERSION (12)
    973 
    974 #define D3D12_MAX_BORDER_COLOR_COMPONENT (1.0f)
    975 #define D3D12_MAX_DEPTH (1.0f)
    976 #define D3D12_MAX_LIVE_STATIC_SAMPLERS (2032)
    977 
    978 #define D3D12_MAX_MAXANISOTROPY (16)
    979 
    980 #define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT (32)
    981 
    982 #define D3D12_MAX_POSITION_VALUE (3.402823466e+34f)
    983 #define D3D12_MAX_ROOT_COST (64)
    984 
    985 #define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 (1000000)
    986 
    987 #define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 (1000000)
    988 
    989 #define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE (2048)
    990 
    991 #define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP (17)
    992 
    993 #define D3D12_MAX_VIEW_INSTANCE_COUNT (4)
    994 
    995 #define D3D12_MINOR_VERSION (0)
    996 
    997 #define D3D12_MIN_BORDER_COLOR_COMPONENT (0.0f)
    998 #define D3D12_MIN_DEPTH (0.0f)
    999 #define D3D12_MIN_MAXANISOTROPY (0)
   1000 
   1001 #define D3D12_MIP_LOD_BIAS_MAX (15.99f)
   1002 #define D3D12_MIP_LOD_BIAS_MIN (-16.0f)
   1003 #define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT (8)
   1004 
   1005 #define D3D12_MIP_LOD_RANGE_BIT_COUNT (8)
   1006 
   1007 #define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH (1.4f)
   1008 #define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT (0)
   1009 
   1010 #define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END (0xffffffff)
   1011 
   1012 #define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START (0xfffffff8)
   1013 
   1014 #define D3D12_PACKED_TILE (0xffffffff)
   1015 
   1016 #define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT (15)
   1017 
   1018 #define D3D12_PREVIEW_SDK_VERSION (702)
   1019 
   1020 #define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT (16)
   1021 
   1022 #define D3D12_PS_CS_UAV_REGISTER_COMPONENTS (1)
   1023 
   1024 #define D3D12_PS_CS_UAV_REGISTER_COUNT (8)
   1025 
   1026 #define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST (1)
   1027 
   1028 #define D3D12_PS_CS_UAV_REGISTER_READ_PORTS (1)
   1029 
   1030 #define D3D12_PS_FRONTFACING_DEFAULT_VALUE (0xffffffff)
   1031 
   1032 #define D3D12_PS_FRONTFACING_FALSE_VALUE (0x0)
   1033 
   1034 #define D3D12_PS_FRONTFACING_TRUE_VALUE (0xffffffff)
   1035 
   1036 #define D3D12_PS_INPUT_REGISTER_COMPONENTS (4)
   1037 
   1038 #define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT (32)
   1039 
   1040 #define D3D12_PS_INPUT_REGISTER_COUNT (32)
   1041 
   1042 #define D3D12_PS_INPUT_REGISTER_READS_PER_INST (2)
   1043 
   1044 #define D3D12_PS_INPUT_REGISTER_READ_PORTS (1)
   1045 
   1046 #define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT (0.0f)
   1047 #define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS (1)
   1048 
   1049 #define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT (32)
   1050 
   1051 #define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT (1)
   1052 
   1053 #define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS (1)
   1054 
   1055 #define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT (32)
   1056 
   1057 #define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT (1)
   1058 
   1059 #define D3D12_PS_OUTPUT_REGISTER_COMPONENTS (4)
   1060 
   1061 #define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
   1062 
   1063 #define D3D12_PS_OUTPUT_REGISTER_COUNT (8)
   1064 
   1065 #define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT (0.5f)
   1066 #define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT (16)
   1067 
   1068 #define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT (8)
   1069 
   1070 #define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT (256)
   1071 
   1072 #define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT (16)
   1073 
   1074 #define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES (32)
   1075 
   1076 #define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH (31)
   1077 
   1078 #define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE (16777216)
   1079 
   1080 #define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE (16777216)
   1081 
   1082 #define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE (536870912)
   1083 
   1084 #define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS (1073741824)
   1085 
   1086 #define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE (4096)
   1087 
   1088 #define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT (32)
   1089 
   1090 #define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT (64)
   1091 
   1092 #define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT (16)
   1093 
   1094 #define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE (4096)
   1095 
   1096 #define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP (27)
   1097 
   1098 #define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT (4096)
   1099 
   1100 #define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE (4096)
   1101 
   1102 #define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP (32)
   1103 
   1104 #define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP (32)
   1105 
   1106 #define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION (16384)
   1107 
   1108 #define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT (1024)
   1109 
   1110 #define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT (4096)
   1111 
   1112 #define D3D12_REQ_MAXANISOTROPY (16)
   1113 
   1114 #define D3D12_REQ_MIP_LEVELS (15)
   1115 
   1116 #define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES (2048)
   1117 
   1118 #define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE (4096)
   1119 
   1120 #define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH (16384)
   1121 
   1122 #define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM (128)
   1123 
   1124 #define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM (0.25f)
   1125 #define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM (2048)
   1126 
   1127 #define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP (20)
   1128 
   1129 #define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE (4096)
   1130 
   1131 #define D3D12_REQ_SUBRESOURCES (30720)
   1132 
   1133 #define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION (2048)
   1134 
   1135 #define D3D12_REQ_TEXTURE1D_U_DIMENSION (16384)
   1136 
   1137 #define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION (2048)
   1138 
   1139 #define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION (16384)
   1140 
   1141 #define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (2048)
   1142 
   1143 #define D3D12_REQ_TEXTURECUBE_DIMENSION (16384)
   1144 
   1145 #define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL (0)
   1146 
   1147 #define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES (0xffffffff)
   1148 
   1149 #define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT (2)
   1150 
   1151 #define D3D12_SDK_VERSION (602)
   1152 
   1153 #define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES (32)
   1154 
   1155 #define D3D12_SHADER_MAJOR_VERSION (5)
   1156 
   1157 #define D3D12_SHADER_MAX_INSTANCES (65535)
   1158 
   1159 #define D3D12_SHADER_MAX_INTERFACES (253)
   1160 
   1161 #define D3D12_SHADER_MAX_INTERFACE_CALL_SITES (4096)
   1162 
   1163 #define D3D12_SHADER_MAX_TYPES (65535)
   1164 
   1165 #define D3D12_SHADER_MINOR_VERSION (1)
   1166 
   1167 #define D3D12_SHIFT_INSTRUCTION_PAD_VALUE (0)
   1168 
   1169 #define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT (5)
   1170 
   1171 #define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT (8)
   1172 
   1173 #define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT (65536)
   1174 
   1175 #define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT (4096)
   1176 
   1177 #define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES (2048)
   1178 
   1179 #define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES (512)
   1180 
   1181 #define D3D12_SO_BUFFER_SLOT_COUNT (4)
   1182 
   1183 #define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP (0xffffffff)
   1184 
   1185 #define D3D12_SO_NO_RASTERIZED_STREAM (0xffffffff)
   1186 
   1187 #define D3D12_SO_OUTPUT_COMPONENT_COUNT (128)
   1188 
   1189 #define D3D12_SO_STREAM_COUNT (4)
   1190 
   1191 #define D3D12_SPEC_DATE_DAY (14)
   1192 
   1193 #define D3D12_SPEC_DATE_MONTH (11)
   1194 
   1195 #define D3D12_SPEC_DATE_YEAR (2014)
   1196 
   1197 #define D3D12_SPEC_VERSION (1.16)
   1198 #define D3D12_SRGB_GAMMA (2.2f)
   1199 #define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 (12.92f)
   1200 #define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 (1.055f)
   1201 #define D3D12_SRGB_TO_FLOAT_EXPONENT (2.4f)
   1202 #define D3D12_SRGB_TO_FLOAT_OFFSET (0.055f)
   1203 #define D3D12_SRGB_TO_FLOAT_THRESHOLD (0.04045f)
   1204 #define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP (0.5f)
   1205 #define D3D12_STANDARD_COMPONENT_BIT_COUNT (32)
   1206 
   1207 #define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED (64)
   1208 
   1209 #define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE (4)
   1210 
   1211 #define D3D12_STANDARD_PIXEL_COMPONENT_COUNT (128)
   1212 
   1213 #define D3D12_STANDARD_PIXEL_ELEMENT_COUNT (32)
   1214 
   1215 #define D3D12_STANDARD_VECTOR_SIZE (4)
   1216 
   1217 #define D3D12_STANDARD_VERTEX_ELEMENT_COUNT (32)
   1218 
   1219 #define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT (64)
   1220 
   1221 #define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT (8)
   1222 
   1223 #define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT (8)
   1224 
   1225 #define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END (0xffffffff)
   1226 
   1227 #define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START (0xfffffff0)
   1228 
   1229 #define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR (64)
   1230 
   1231 #define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR (64)
   1232 
   1233 #define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR (63)
   1234 
   1235 #define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR (64)
   1236 
   1237 #define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR (2)
   1238 
   1239 #define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR (1)
   1240 
   1241 #define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR (1)
   1242 
   1243 #define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT (16)
   1244 
   1245 #define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT (256)
   1246 
   1247 #define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT (512)
   1248 
   1249 #define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES (65536)
   1250 
   1251 #define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES (32)
   1252 
   1253 #define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT (4096)
   1254 
   1255 #define D3D12_UAV_SLOT_COUNT (64)
   1256 
   1257 #define D3D12_UNBOUND_MEMORY_ACCESS_RESULT (0)
   1258 
   1259 #define D3D12_VIDEO_DECODE_MAX_ARGUMENTS (10)
   1260 
   1261 #define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS (4)
   1262 
   1263 #define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT (256)
   1264 
   1265 #define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT (256)
   1266 
   1267 #define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN (0xffffffff)
   1268 
   1269 #define D3D12_VIDEO_PROCESS_MAX_FILTERS (32)
   1270 
   1271 #define D3D12_VIDEO_PROCESS_STEREO_VIEWS (2)
   1272 
   1273 #define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX (15)
   1274 
   1275 #define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE (16)
   1276 
   1277 #define D3D12_VIEWPORT_BOUNDS_MAX (32767)
   1278 
   1279 #define D3D12_VIEWPORT_BOUNDS_MIN (-32768)
   1280 
   1281 #define D3D12_VS_INPUT_REGISTER_COMPONENTS (4)
   1282 
   1283 #define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT (32)
   1284 
   1285 #define D3D12_VS_INPUT_REGISTER_COUNT (32)
   1286 
   1287 #define D3D12_VS_INPUT_REGISTER_READS_PER_INST (2)
   1288 
   1289 #define D3D12_VS_INPUT_REGISTER_READ_PORTS (1)
   1290 
   1291 #define D3D12_VS_OUTPUT_REGISTER_COMPONENTS (4)
   1292 
   1293 #define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
   1294 
   1295 #define D3D12_VS_OUTPUT_REGISTER_COUNT (32)
   1296 
   1297 #define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT (10)
   1298 
   1299 #define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP (25)
   1300 
   1301 #define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP (25)
   1302 
   1303 #endif
   1304 #define D3D12_SHADER_COMPONENT_MAPPING_MASK (0x7)
   1305 
   1306 #define D3D12_SHADER_COMPONENT_MAPPING_SHIFT (3)
   1307 
   1308 #define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1 << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 4))
   1309 
   1310 typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT {
   1311     D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
   1312     D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
   1313     D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
   1314 } D3D12_SHADER_MIN_PRECISION_SUPPORT;
   1315 DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_MIN_PRECISION_SUPPORT);
   1316 typedef enum D3D12_TILED_RESOURCES_TIER {
   1317     D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
   1318     D3D12_TILED_RESOURCES_TIER_1 = 1,
   1319     D3D12_TILED_RESOURCES_TIER_2 = 2,
   1320     D3D12_TILED_RESOURCES_TIER_3 = 3
   1321 } D3D12_TILED_RESOURCES_TIER;
   1322 typedef enum D3D12_RESOURCE_BINDING_TIER {
   1323     D3D12_RESOURCE_BINDING_TIER_1 = 1,
   1324     D3D12_RESOURCE_BINDING_TIER_2 = 2,
   1325     D3D12_RESOURCE_BINDING_TIER_3 = 3
   1326 } D3D12_RESOURCE_BINDING_TIER;
   1327 typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
   1328     D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
   1329     D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
   1330     D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
   1331     D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
   1332 } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
   1333 typedef enum D3D12_CROSS_NODE_SHARING_TIER {
   1334     D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
   1335     D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
   1336     D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
   1337     D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
   1338     D3D12_CROSS_NODE_SHARING_TIER_3 = 4
   1339 } D3D12_CROSS_NODE_SHARING_TIER;
   1340 typedef enum D3D12_RESOURCE_HEAP_TIER {
   1341     D3D12_RESOURCE_HEAP_TIER_1 = 1,
   1342     D3D12_RESOURCE_HEAP_TIER_2 = 2
   1343 } D3D12_RESOURCE_HEAP_TIER;
   1344 typedef enum D3D12_FORMAT_SUPPORT1 {
   1345     D3D12_FORMAT_SUPPORT1_NONE = 0x0,
   1346     D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
   1347     D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
   1348     D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
   1349     D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
   1350     D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
   1351     D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
   1352     D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
   1353     D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
   1354     D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
   1355     D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
   1356     D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
   1357     D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
   1358     D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
   1359     D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
   1360     D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
   1361     D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
   1362     D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
   1363     D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
   1364     D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
   1365     D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
   1366     D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
   1367     D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
   1368     D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
   1369     D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
   1370     D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
   1371     D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
   1372     D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
   1373     D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
   1374     D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
   1375 } D3D12_FORMAT_SUPPORT1;
   1376 DEFINE_ENUM_FLAG_OPERATORS(D3D12_FORMAT_SUPPORT1);
   1377 typedef enum D3D12_FORMAT_SUPPORT2 {
   1378     D3D12_FORMAT_SUPPORT2_NONE = 0x0,
   1379     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
   1380     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
   1381     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
   1382     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
   1383     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
   1384     D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
   1385     D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
   1386     D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
   1387     D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
   1388     D3D12_FORMAT_SUPPORT2_TILED = 0x200,
   1389     D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
   1390     D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000
   1391 } D3D12_FORMAT_SUPPORT2;
   1392 DEFINE_ENUM_FLAG_OPERATORS(D3D12_FORMAT_SUPPORT2);
   1393 typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE {
   1394     D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
   1395     D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
   1396     D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2
   1397 } D3D12_WRITEBUFFERIMMEDIATE_MODE;
   1398 typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER {
   1399     D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0x0,
   1400     D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 0x1,
   1401     D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 0x2
   1402 } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
   1403 typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS {
   1404     D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
   1405     D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
   1406     D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
   1407     D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
   1408     D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
   1409     D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
   1410     D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
   1411     D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
   1412 } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
   1413 DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_SUPPORT_FLAGS);
   1414 typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS {
   1415     D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x0,
   1416     D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 0x1,
   1417     D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 0x2,
   1418     D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 0x4,
   1419     D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 0x8,
   1420     D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 0x10,
   1421     D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 0x20,
   1422     D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 0x40
   1423 } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
   1424 DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_LIST_SUPPORT_FLAGS);
   1425 typedef enum D3D12_VIEW_INSTANCING_TIER {
   1426     D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0x0,
   1427     D3D12_VIEW_INSTANCING_TIER_1 = 0x1,
   1428     D3D12_VIEW_INSTANCING_TIER_2 = 0x2,
   1429     D3D12_VIEW_INSTANCING_TIER_3 = 0x3
   1430 } D3D12_VIEW_INSTANCING_TIER;
   1431 typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER {
   1432     D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0x0,
   1433     D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = 0x1,
   1434     D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 = 0x2
   1435 } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
   1436 typedef struct D3D12_FEATURE_DATA_DISPLAYABLE {
   1437     WINBOOL DisplayableTexture;
   1438     D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
   1439 } D3D12_FEATURE_DATA_DISPLAYABLE;
   1440 typedef enum D3D12_HEAP_SERIALIZATION_TIER {
   1441     D3D12_HEAP_SERIALIZATION_TIER_0 = 0x0,
   1442     D3D12_HEAP_SERIALIZATION_TIER_10 = 0xa
   1443 } D3D12_HEAP_SERIALIZATION_TIER;
   1444 typedef enum D3D12_RENDER_PASS_TIER {
   1445     D3D12_RENDER_PASS_TIER_0 = 0x0,
   1446     D3D12_RENDER_PASS_TIER_1 = 0x1,
   1447     D3D12_RENDER_PASS_TIER_2 = 0x2
   1448 } D3D12_RENDER_PASS_TIER;
   1449 typedef enum D3D12_RAYTRACING_TIER {
   1450     D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0x0,
   1451     D3D12_RAYTRACING_TIER_1_0 = 0xa,
   1452     D3D12_RAYTRACING_TIER_1_1 = 0xb
   1453 } D3D12_RAYTRACING_TIER;
   1454 typedef enum D3D12_RESIDENCY_FLAGS {
   1455     D3D12_RESIDENCY_FLAG_NONE = 0x0,
   1456     D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
   1457 } D3D12_RESIDENCY_FLAGS;
   1458 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESIDENCY_FLAGS);
   1459 #ifndef __ID3D12Fence_FWD_DEFINED__
   1460 #define __ID3D12Fence_FWD_DEFINED__
   1461 typedef interface ID3D12Fence ID3D12Fence;
   1462 #ifdef __cplusplus
   1463 interface ID3D12Fence;
   1464 #endif /* __cplusplus */
   1465 #endif
   1466 
   1467 #ifndef __ID3D12RootSignature_FWD_DEFINED__
   1468 #define __ID3D12RootSignature_FWD_DEFINED__
   1469 typedef interface ID3D12RootSignature ID3D12RootSignature;
   1470 #ifdef __cplusplus
   1471 interface ID3D12RootSignature;
   1472 #endif /* __cplusplus */
   1473 #endif
   1474 
   1475 #ifndef __ID3D12Heap_FWD_DEFINED__
   1476 #define __ID3D12Heap_FWD_DEFINED__
   1477 typedef interface ID3D12Heap ID3D12Heap;
   1478 #ifdef __cplusplus
   1479 interface ID3D12Heap;
   1480 #endif /* __cplusplus */
   1481 #endif
   1482 
   1483 #ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
   1484 #define __ID3D12DescriptorHeap_FWD_DEFINED__
   1485 typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
   1486 #ifdef __cplusplus
   1487 interface ID3D12DescriptorHeap;
   1488 #endif /* __cplusplus */
   1489 #endif
   1490 
   1491 #ifndef __ID3D12Resource_FWD_DEFINED__
   1492 #define __ID3D12Resource_FWD_DEFINED__
   1493 typedef interface ID3D12Resource ID3D12Resource;
   1494 #ifdef __cplusplus
   1495 interface ID3D12Resource;
   1496 #endif /* __cplusplus */
   1497 #endif
   1498 
   1499 #ifndef __ID3D12CommandAllocator_FWD_DEFINED__
   1500 #define __ID3D12CommandAllocator_FWD_DEFINED__
   1501 typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
   1502 #ifdef __cplusplus
   1503 interface ID3D12CommandAllocator;
   1504 #endif /* __cplusplus */
   1505 #endif
   1506 
   1507 #ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
   1508 #define __ID3D12GraphicsCommandList_FWD_DEFINED__
   1509 typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
   1510 #ifdef __cplusplus
   1511 interface ID3D12GraphicsCommandList;
   1512 #endif /* __cplusplus */
   1513 #endif
   1514 
   1515 #ifndef __ID3D12CommandQueue_FWD_DEFINED__
   1516 #define __ID3D12CommandQueue_FWD_DEFINED__
   1517 typedef interface ID3D12CommandQueue ID3D12CommandQueue;
   1518 #ifdef __cplusplus
   1519 interface ID3D12CommandQueue;
   1520 #endif /* __cplusplus */
   1521 #endif
   1522 
   1523 #ifndef __ID3D12PipelineState_FWD_DEFINED__
   1524 #define __ID3D12PipelineState_FWD_DEFINED__
   1525 typedef interface ID3D12PipelineState ID3D12PipelineState;
   1526 #ifdef __cplusplus
   1527 interface ID3D12PipelineState;
   1528 #endif /* __cplusplus */
   1529 #endif
   1530 
   1531 #ifndef __ID3D12Device_FWD_DEFINED__
   1532 #define __ID3D12Device_FWD_DEFINED__
   1533 typedef interface ID3D12Device ID3D12Device;
   1534 #ifdef __cplusplus
   1535 interface ID3D12Device;
   1536 #endif /* __cplusplus */
   1537 #endif
   1538 
   1539 typedef RECT D3D12_RECT;
   1540 typedef struct D3D12_BOX {
   1541     UINT left;
   1542     UINT top;
   1543     UINT front;
   1544     UINT right;
   1545     UINT bottom;
   1546     UINT back;
   1547 } D3D12_BOX;
   1548 typedef struct D3D12_VIEWPORT {
   1549     FLOAT TopLeftX;
   1550     FLOAT TopLeftY;
   1551     FLOAT Width;
   1552     FLOAT Height;
   1553     FLOAT MinDepth;
   1554     FLOAT MaxDepth;
   1555 } D3D12_VIEWPORT;
   1556 typedef struct D3D12_RANGE {
   1557     SIZE_T Begin;
   1558     SIZE_T End;
   1559 } D3D12_RANGE;
   1560 typedef struct D3D12_RANGE_UINT64 {
   1561     UINT64 Begin;
   1562     UINT64 End;
   1563 } D3D12_RANGE_UINT64;
   1564 typedef struct D3D12_SUBRESOURCE_RANGE_UINT64 {
   1565     UINT Subresource;
   1566     D3D12_RANGE_UINT64 Range;
   1567 } D3D12_SUBRESOURCE_RANGE_UINT64;
   1568 typedef struct D3D12_SUBRESOURCE_INFO {
   1569     UINT64 Offset;
   1570     UINT RowPitch;
   1571     UINT DepthPitch;
   1572 } D3D12_SUBRESOURCE_INFO;
   1573 typedef struct D3D12_RESOURCE_ALLOCATION_INFO {
   1574     UINT64 SizeInBytes;
   1575     UINT64 Alignment;
   1576 } D3D12_RESOURCE_ALLOCATION_INFO;
   1577 typedef struct D3D12_RESOURCE_ALLOCATION_INFO1 {
   1578     UINT64 Offset;
   1579     UINT64 Alignment;
   1580     UINT64 SizeInBytes;
   1581 } D3D12_RESOURCE_ALLOCATION_INFO1;
   1582 typedef struct D3D12_DRAW_ARGUMENTS {
   1583     UINT VertexCountPerInstance;
   1584     UINT InstanceCount;
   1585     UINT StartVertexLocation;
   1586     UINT StartInstanceLocation;
   1587 } D3D12_DRAW_ARGUMENTS;
   1588 typedef struct D3D12_DRAW_INDEXED_ARGUMENTS {
   1589     UINT IndexCountPerInstance;
   1590     UINT InstanceCount;
   1591     UINT StartIndexLocation;
   1592     INT BaseVertexLocation;
   1593     UINT StartInstanceLocation;
   1594 } D3D12_DRAW_INDEXED_ARGUMENTS;
   1595 typedef struct D3D12_DISPATCH_ARGUMENTS {
   1596     UINT ThreadGroupCountX;
   1597     UINT ThreadGroupCountY;
   1598     UINT ThreadGroupCountZ;
   1599 } D3D12_DISPATCH_ARGUMENTS;
   1600 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS {
   1601     WINBOOL DoublePrecisionFloatShaderOps;
   1602     WINBOOL OutputMergerLogicOp;
   1603     D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
   1604     D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
   1605     D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
   1606     WINBOOL PSSpecifiedStencilRefSupported;
   1607     WINBOOL TypedUAVLoadAdditionalFormats;
   1608     WINBOOL ROVsSupported;
   1609     D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
   1610     UINT MaxGPUVirtualAddressBitsPerResource;
   1611     WINBOOL StandardSwizzle64KBSupported;
   1612     D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
   1613     WINBOOL CrossAdapterRowMajorTextureSupported;
   1614     WINBOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
   1615     D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
   1616 } D3D12_FEATURE_DATA_D3D12_OPTIONS;
   1617 typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT {
   1618     DXGI_FORMAT Format;
   1619     D3D12_FORMAT_SUPPORT1 Support1;
   1620     D3D12_FORMAT_SUPPORT2 Support2;
   1621 } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
   1622 typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS {
   1623     D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0x0,
   1624     D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
   1625 } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
   1626 DEFINE_ENUM_FLAG_OPERATORS(D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS);
   1627 typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS {
   1628     DXGI_FORMAT Format;
   1629     UINT SampleCount;
   1630     D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
   1631     UINT NumQualityLevels;
   1632 } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
   1633 typedef enum D3D12_HEAP_TYPE {
   1634     D3D12_HEAP_TYPE_DEFAULT = 1,
   1635     D3D12_HEAP_TYPE_UPLOAD = 2,
   1636     D3D12_HEAP_TYPE_READBACK = 3,
   1637     D3D12_HEAP_TYPE_CUSTOM = 4
   1638 } D3D12_HEAP_TYPE;
   1639 typedef enum D3D12_CPU_PAGE_PROPERTY {
   1640     D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
   1641     D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
   1642     D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
   1643     D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
   1644 } D3D12_CPU_PAGE_PROPERTY;
   1645 typedef enum D3D12_MEMORY_POOL {
   1646     D3D12_MEMORY_POOL_UNKNOWN = 0,
   1647     D3D12_MEMORY_POOL_L0 = 1,
   1648     D3D12_MEMORY_POOL_L1 = 2
   1649 } D3D12_MEMORY_POOL;
   1650 typedef struct D3D12_HEAP_PROPERTIES {
   1651     D3D12_HEAP_TYPE Type;
   1652     D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
   1653     D3D12_MEMORY_POOL MemoryPoolPreference;
   1654     UINT CreationNodeMask;
   1655     UINT VisibleNodeMask;
   1656 } D3D12_HEAP_PROPERTIES;
   1657 typedef enum D3D12_HEAP_FLAGS {
   1658     D3D12_HEAP_FLAG_NONE = 0x0,
   1659     D3D12_HEAP_FLAG_SHARED = 0x1,
   1660     D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
   1661     D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
   1662     D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
   1663     D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
   1664     D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
   1665     D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
   1666     D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
   1667     D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
   1668     D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
   1669     D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
   1670     D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
   1671     D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
   1672     D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
   1673     D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
   1674 } D3D12_HEAP_FLAGS;
   1675 DEFINE_ENUM_FLAG_OPERATORS(D3D12_HEAP_FLAGS);
   1676 typedef struct D3D12_HEAP_DESC {
   1677     UINT64 SizeInBytes;
   1678     D3D12_HEAP_PROPERTIES Properties;
   1679     UINT64 Alignment;
   1680     D3D12_HEAP_FLAGS Flags;
   1681 } D3D12_HEAP_DESC;
   1682 typedef struct D3D12_TILED_RESOURCE_COORDINATE {
   1683     UINT X;
   1684     UINT Y;
   1685     UINT Z;
   1686     UINT Subresource;
   1687 } D3D12_TILED_RESOURCE_COORDINATE;
   1688 typedef struct D3D12_TILE_REGION_SIZE {
   1689     UINT NumTiles;
   1690     WINBOOL UseBox;
   1691     UINT Width;
   1692     UINT16 Height;
   1693     UINT16 Depth;
   1694 } D3D12_TILE_REGION_SIZE;
   1695 typedef struct D3D12_SUBRESOURCE_TILING {
   1696     UINT WidthInTiles;
   1697     UINT16 HeightInTiles;
   1698     UINT16 DepthInTiles;
   1699     UINT StartTileIndexInOverallResource;
   1700 } D3D12_SUBRESOURCE_TILING;
   1701 typedef struct D3D12_TILE_SHAPE {
   1702     UINT WidthInTexels;
   1703     UINT HeightInTexels;
   1704     UINT DepthInTexels;
   1705 } D3D12_TILE_SHAPE;
   1706 typedef struct D3D12_SHADER_BYTECODE {
   1707     const void *pShaderBytecode;
   1708     SIZE_T BytecodeLength;
   1709 } D3D12_SHADER_BYTECODE;
   1710 typedef struct D3D12_DEPTH_STENCIL_VALUE {
   1711     FLOAT Depth;
   1712     UINT8 Stencil;
   1713 } D3D12_DEPTH_STENCIL_VALUE;
   1714 typedef struct D3D12_CLEAR_VALUE {
   1715     DXGI_FORMAT Format;
   1716     __C89_NAMELESS union {
   1717         FLOAT Color[4];
   1718         D3D12_DEPTH_STENCIL_VALUE DepthStencil;
   1719     } __C89_NAMELESSUNIONNAME;
   1720 } D3D12_CLEAR_VALUE;
   1721 typedef struct D3D12_PACKED_MIP_INFO {
   1722     UINT8 NumStandardMips;
   1723     UINT8 NumPackedMips;
   1724     UINT NumTilesForPackedMips;
   1725     UINT StartTileIndexInOverallResource;
   1726 } D3D12_PACKED_MIP_INFO;
   1727 typedef enum D3D12_RESOURCE_STATES {
   1728     D3D12_RESOURCE_STATE_COMMON = 0,
   1729     D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
   1730     D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
   1731     D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
   1732     D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
   1733     D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
   1734     D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
   1735     D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
   1736     D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
   1737     D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
   1738     D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
   1739     D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
   1740     D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
   1741     D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
   1742     D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
   1743     D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
   1744     D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
   1745     D3D12_RESOURCE_STATE_GENERIC_READ = ((((0x1 | 0x2) | 0x40) | 0x80) | 0x200) | 0x800,
   1746     D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = 0x40 | 0x80,
   1747     D3D12_RESOURCE_STATE_PRESENT = 0x0,
   1748     D3D12_RESOURCE_STATE_PREDICATION = 0x200,
   1749     D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
   1750     D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
   1751     D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
   1752     D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
   1753     D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
   1754     D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
   1755 } D3D12_RESOURCE_STATES;
   1756 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESOURCE_STATES);
   1757 typedef enum D3D12_RESOURCE_BARRIER_TYPE {
   1758     D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
   1759     D3D12_RESOURCE_BARRIER_TYPE_ALIASING = 1,
   1760     D3D12_RESOURCE_BARRIER_TYPE_UAV = 2
   1761 } D3D12_RESOURCE_BARRIER_TYPE;
   1762 typedef enum D3D12_RESOURCE_BARRIER_FLAGS {
   1763     D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
   1764     D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
   1765     D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
   1766 } D3D12_RESOURCE_BARRIER_FLAGS;
   1767 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESOURCE_BARRIER_FLAGS);
   1768 typedef struct D3D12_RESOURCE_TRANSITION_BARRIER {
   1769     ID3D12Resource *pResource;
   1770     UINT Subresource;
   1771     D3D12_RESOURCE_STATES StateBefore;
   1772     D3D12_RESOURCE_STATES StateAfter;
   1773 } D3D12_RESOURCE_TRANSITION_BARRIER;
   1774 typedef struct D3D12_RESOURCE_ALIASING_BARRIER_ALIASING {
   1775     ID3D12Resource *pResourceBefore;
   1776     ID3D12Resource *pResourceAfter;
   1777 } D3D12_RESOURCE_ALIASING_BARRIER;
   1778 typedef struct D3D12_RESOURCE_UAV_BARRIER {
   1779     ID3D12Resource *pResource;
   1780 } D3D12_RESOURCE_UAV_BARRIER;
   1781 typedef struct D3D12_RESOURCE_BARRIER {
   1782     D3D12_RESOURCE_BARRIER_TYPE Type;
   1783     D3D12_RESOURCE_BARRIER_FLAGS Flags;
   1784     __C89_NAMELESS union {
   1785         D3D12_RESOURCE_TRANSITION_BARRIER Transition;
   1786         D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
   1787         D3D12_RESOURCE_UAV_BARRIER UAV;
   1788     } __C89_NAMELESSUNIONNAME;
   1789 } D3D12_RESOURCE_BARRIER;
   1790 typedef enum D3D12_RESOURCE_DIMENSION {
   1791     D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
   1792     D3D12_RESOURCE_DIMENSION_BUFFER = 1,
   1793     D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
   1794     D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
   1795     D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
   1796 } D3D12_RESOURCE_DIMENSION;
   1797 typedef enum D3D12_TEXTURE_LAYOUT {
   1798     D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
   1799     D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
   1800     D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
   1801     D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
   1802 } D3D12_TEXTURE_LAYOUT;
   1803 typedef enum D3D12_RESOURCE_FLAGS {
   1804     D3D12_RESOURCE_FLAG_NONE = 0x0,
   1805     D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
   1806     D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
   1807     D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
   1808     D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
   1809     D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
   1810     D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
   1811     D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
   1812     D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
   1813     D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100
   1814 } D3D12_RESOURCE_FLAGS;
   1815 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESOURCE_FLAGS);
   1816 typedef struct D3D12_MIP_REGION {
   1817     UINT Width;
   1818     UINT Height;
   1819     UINT Depth;
   1820 } D3D12_MIP_REGION;
   1821 typedef struct D3D12_RESOURCE_DESC {
   1822     D3D12_RESOURCE_DIMENSION Dimension;
   1823     UINT64 Alignment;
   1824     UINT64 Width;
   1825     UINT Height;
   1826     UINT16 DepthOrArraySize;
   1827     UINT16 MipLevels;
   1828     DXGI_FORMAT Format;
   1829     DXGI_SAMPLE_DESC SampleDesc;
   1830     D3D12_TEXTURE_LAYOUT Layout;
   1831     D3D12_RESOURCE_FLAGS Flags;
   1832 } D3D12_RESOURCE_DESC;
   1833 typedef struct D3D12_RESOURCE_DESC1 {
   1834     D3D12_RESOURCE_DIMENSION Dimension;
   1835     UINT64 Alignment;
   1836     UINT64 Width;
   1837     UINT Height;
   1838     UINT16 DepthOrArraySize;
   1839     UINT16 MipLevels;
   1840     DXGI_FORMAT Format;
   1841     DXGI_SAMPLE_DESC SampleDesc;
   1842     D3D12_TEXTURE_LAYOUT Layout;
   1843     D3D12_RESOURCE_FLAGS Flags;
   1844     D3D12_MIP_REGION SamplerFeedbackMipRegion;
   1845 } D3D12_RESOURCE_DESC1;
   1846 typedef enum D3D12_RESOLVE_MODE {
   1847     D3D12_RESOLVE_MODE_DECOMPRESS = 0,
   1848     D3D12_RESOLVE_MODE_MIN = 1,
   1849     D3D12_RESOLVE_MODE_MAX = 2,
   1850     D3D12_RESOLVE_MODE_AVERAGE = 3,
   1851     D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
   1852     D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
   1853 } D3D12_RESOLVE_MODE;
   1854 typedef struct D3D12_SAMPLE_POSITION {
   1855     INT8 X;
   1856     INT8 Y;
   1857 } D3D12_SAMPLE_POSITION;
   1858 typedef enum D3D12_TEXTURE_COPY_TYPE {
   1859     D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
   1860     D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
   1861 } D3D12_TEXTURE_COPY_TYPE;
   1862 typedef struct D3D12_SUBRESOURCE_FOOTPRINT {
   1863     DXGI_FORMAT Format;
   1864     UINT Width;
   1865     UINT Height;
   1866     UINT Depth;
   1867     UINT RowPitch;
   1868 } D3D12_SUBRESOURCE_FOOTPRINT;
   1869 typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT {
   1870     UINT64 Offset;
   1871     D3D12_SUBRESOURCE_FOOTPRINT Footprint;
   1872 } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
   1873 typedef struct D3D12_TEXTURE_COPY_LOCATION {
   1874     ID3D12Resource *pResource;
   1875     D3D12_TEXTURE_COPY_TYPE Type;
   1876     __C89_NAMELESS union {
   1877         D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
   1878         UINT SubresourceIndex;
   1879     } __C89_NAMELESSUNIONNAME;
   1880 } D3D12_TEXTURE_COPY_LOCATION;
   1881 typedef enum D3D12_DESCRIPTOR_RANGE_TYPE {
   1882     D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
   1883     D3D12_DESCRIPTOR_RANGE_TYPE_UAV = 1,
   1884     D3D12_DESCRIPTOR_RANGE_TYPE_CBV = 2,
   1885     D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = 3
   1886 } D3D12_DESCRIPTOR_RANGE_TYPE;
   1887 typedef struct D3D12_DESCRIPTOR_RANGE {
   1888     D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
   1889     UINT NumDescriptors;
   1890     UINT BaseShaderRegister;
   1891     UINT RegisterSpace;
   1892     UINT OffsetInDescriptorsFromTableStart;
   1893 } D3D12_DESCRIPTOR_RANGE;
   1894 typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS {
   1895     D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
   1896     D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
   1897     D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
   1898     D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
   1899     D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
   1900     D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
   1901 } D3D12_DESCRIPTOR_RANGE_FLAGS;
   1902 DEFINE_ENUM_FLAG_OPERATORS(D3D12_DESCRIPTOR_RANGE_FLAGS);
   1903 typedef struct D3D12_DESCRIPTOR_RANGE1 {
   1904     D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
   1905     UINT NumDescriptors;
   1906     UINT BaseShaderRegister;
   1907     UINT RegisterSpace;
   1908     D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
   1909     UINT OffsetInDescriptorsFromTableStart;
   1910 } D3D12_DESCRIPTOR_RANGE1;
   1911 typedef struct D3D12_ROOT_DESCRIPTOR_TABLE {
   1912     UINT NumDescriptorRanges;
   1913     const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
   1914 } D3D12_ROOT_DESCRIPTOR_TABLE;
   1915 typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1 {
   1916     UINT NumDescriptorRanges;
   1917     const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
   1918 } D3D12_ROOT_DESCRIPTOR_TABLE1;
   1919 typedef struct D3D12_ROOT_CONSTANTS {
   1920     UINT ShaderRegister;
   1921     UINT RegisterSpace;
   1922     UINT Num32BitValues;
   1923 } D3D12_ROOT_CONSTANTS;
   1924 typedef struct D3D12_ROOT_DESCRIPTOR {
   1925     UINT ShaderRegister;
   1926     UINT RegisterSpace;
   1927 } D3D12_ROOT_DESCRIPTOR;
   1928 typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS {
   1929     D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
   1930     D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
   1931     D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
   1932     D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
   1933 } D3D12_ROOT_DESCRIPTOR_FLAGS;
   1934 DEFINE_ENUM_FLAG_OPERATORS(D3D12_ROOT_DESCRIPTOR_FLAGS);
   1935 typedef struct D3D12_ROOT_DESCRIPTOR1 {
   1936     UINT ShaderRegister;
   1937     UINT RegisterSpace;
   1938     D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
   1939 } D3D12_ROOT_DESCRIPTOR1;
   1940 typedef enum D3D12_ROOT_PARAMETER_TYPE {
   1941     D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
   1942     D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 1,
   1943     D3D12_ROOT_PARAMETER_TYPE_CBV = 2,
   1944     D3D12_ROOT_PARAMETER_TYPE_SRV = 3,
   1945     D3D12_ROOT_PARAMETER_TYPE_UAV = 4
   1946 } D3D12_ROOT_PARAMETER_TYPE;
   1947 typedef enum D3D12_SHADER_VISIBILITY {
   1948     D3D12_SHADER_VISIBILITY_ALL = 0,
   1949     D3D12_SHADER_VISIBILITY_VERTEX = 1,
   1950     D3D12_SHADER_VISIBILITY_HULL = 2,
   1951     D3D12_SHADER_VISIBILITY_DOMAIN = 3,
   1952     D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
   1953     D3D12_SHADER_VISIBILITY_PIXEL = 5,
   1954     D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
   1955     D3D12_SHADER_VISIBILITY_MESH = 7
   1956 } D3D12_SHADER_VISIBILITY;
   1957 typedef struct D3D12_ROOT_PARAMETER {
   1958     D3D12_ROOT_PARAMETER_TYPE ParameterType;
   1959     __C89_NAMELESS union {
   1960         D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
   1961         D3D12_ROOT_CONSTANTS Constants;
   1962         D3D12_ROOT_DESCRIPTOR Descriptor;
   1963     } __C89_NAMELESSUNIONNAME;
   1964     D3D12_SHADER_VISIBILITY ShaderVisibility;
   1965 } D3D12_ROOT_PARAMETER;
   1966 typedef struct D3D12_ROOT_PARAMETER1 {
   1967     D3D12_ROOT_PARAMETER_TYPE ParameterType;
   1968     __C89_NAMELESS union {
   1969         D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
   1970         D3D12_ROOT_CONSTANTS Constants;
   1971         D3D12_ROOT_DESCRIPTOR1 Descriptor;
   1972     } __C89_NAMELESSUNIONNAME;
   1973     D3D12_SHADER_VISIBILITY ShaderVisibility;
   1974 } D3D12_ROOT_PARAMETER1;
   1975 typedef enum D3D12_STATIC_BORDER_COLOR {
   1976     D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
   1977     D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = 1,
   1978     D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = 2
   1979 } D3D12_STATIC_BORDER_COLOR;
   1980 typedef enum D3D12_FILTER {
   1981     D3D12_FILTER_MIN_MAG_MIP_POINT = 0x0,
   1982     D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
   1983     D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
   1984     D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
   1985     D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
   1986     D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
   1987     D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
   1988     D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
   1989     D3D12_FILTER_ANISOTROPIC = 0x55,
   1990     D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
   1991     D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
   1992     D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
   1993     D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
   1994     D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
   1995     D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
   1996     D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
   1997     D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
   1998     D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
   1999     D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
   2000     D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
   2001     D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
   2002     D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
   2003     D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
   2004     D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
   2005     D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
   2006     D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
   2007     D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
   2008     D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
   2009     D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
   2010     D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
   2011     D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
   2012     D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
   2013     D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
   2014     D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
   2015     D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
   2016     D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
   2017 } D3D12_FILTER;
   2018 typedef enum D3D12_FILTER_TYPE {
   2019     D3D12_FILTER_TYPE_POINT = 0,
   2020     D3D12_FILTER_TYPE_LINEAR = 1
   2021 } D3D12_FILTER_TYPE;
   2022 #define D3D12_MIP_FILTER_SHIFT (0)
   2023 
   2024 #define D3D12_MAG_FILTER_SHIFT (2)
   2025 
   2026 #define D3D12_MIN_FILTER_SHIFT (4)
   2027 
   2028 #define D3D12_FILTER_TYPE_MASK (0x3)
   2029 
   2030 #define D3D12_ANISOTROPIC_FILTERING_BIT (0x40)
   2031 
   2032 typedef enum D3D12_FILTER_REDUCTION_TYPE {
   2033     D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
   2034     D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
   2035     D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
   2036     D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
   2037 } D3D12_FILTER_REDUCTION_TYPE;
   2038 #define D3D12_FILTER_REDUCTION_TYPE_MASK (0x3)
   2039 
   2040 #define D3D12_FILTER_REDUCTION_TYPE_SHIFT (7)
   2041 
   2042 #define D3D12_ENCODE_BASIC_FILTER(min, mag, mip, reduction) \
   2043     ((D3D12_FILTER) ( \
   2044     (((min) & D3D12_FILTER_TYPE_MASK) << D3D12_MIN_FILTER_SHIFT) \
   2045     | (((mag) & D3D12_FILTER_TYPE_MASK) << D3D12_MAG_FILTER_SHIFT) \
   2046     | (((mip) & D3D12_FILTER_TYPE_MASK) << D3D12_MIP_FILTER_SHIFT) \
   2047     | (((reduction) & D3D12_FILTER_REDUCTION_TYPE_MASK) << D3D12_FILTER_REDUCTION_TYPE_SHIFT)))
   2048 #define D3D12_ENCODE_ANISOTROPIC_FILTER(reduction) \
   2049     ((D3D12_FILTER) ( \
   2050      D3D12_ANISOTROPIC_FILTERING_BIT \
   2051      | D3D12_ENCODE_BASIC_FILTER(D3D12_FILTER_TYPE_LINEAR, \
   2052                                  D3D12_FILTER_TYPE_LINEAR, \
   2053                                  D3D12_FILTER_TYPE_LINEAR, \
   2054                                  reduction)))
   2055 #define D3D12_DECODE_MAG_FILTER(filter) \
   2056     ((D3D12_FILTER_TYPE)(((filter) >> D3D12_MAG_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK))
   2057 #define D3D12_DECODE_MIN_FILTER(filter) \
   2058     ((D3D12_FILTER_TYPE)(((filter) >> D3D12_MIN_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK))
   2059 #define D3D12_DECODE_MIP_FILTER(filter) \
   2060     ((D3D12_FILTER_TYPE)(((filter) >> D3D12_MIP_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK))
   2061 #define D3D12_DECODE_IS_ANISOTROPIC_FILTER(filter)  \
   2062     (((filter) & D3D12_ANISOTROPIC_FILTERING_BIT) \
   2063     && (D3D12_DECODE_MIN_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) \
   2064     && (D3D12_DECODE_MAG_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) \
   2065     && (D3D12_DECODE_MIP_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR))
   2066 #define D3D12_DECODE_FILTER_REDUCTION(filter) \
   2067     ((D3D12_FILTER_REDUCTION_TYPE)(((filter) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT) \
   2068     & D3D12_FILTER_REDUCTION_TYPE_MASK))
   2069 #define D3D12_DECODE_IS_COMPARISON_FILTER(filter) \
   2070     (D3D12_DECODE_FILTER_REDUCTION(filter) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON)
   2071 typedef enum D3D12_TEXTURE_ADDRESS_MODE {
   2072     D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
   2073     D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
   2074     D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
   2075     D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
   2076     D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
   2077 } D3D12_TEXTURE_ADDRESS_MODE;
   2078 typedef enum D3D12_COMPARISON_FUNC {
   2079     D3D12_COMPARISON_FUNC_NEVER = 1,
   2080     D3D12_COMPARISON_FUNC_LESS = 2,
   2081     D3D12_COMPARISON_FUNC_EQUAL = 3,
   2082     D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
   2083     D3D12_COMPARISON_FUNC_GREATER = 5,
   2084     D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
   2085     D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
   2086     D3D12_COMPARISON_FUNC_ALWAYS = 8
   2087 } D3D12_COMPARISON_FUNC;
   2088 typedef struct D3D12_STATIC_SAMPLER_DESC {
   2089     D3D12_FILTER Filter;
   2090     D3D12_TEXTURE_ADDRESS_MODE AddressU;
   2091     D3D12_TEXTURE_ADDRESS_MODE AddressV;
   2092     D3D12_TEXTURE_ADDRESS_MODE AddressW;
   2093     FLOAT MipLODBias;
   2094     UINT MaxAnisotropy;
   2095     D3D12_COMPARISON_FUNC ComparisonFunc;
   2096     D3D12_STATIC_BORDER_COLOR BorderColor;
   2097     FLOAT MinLOD;
   2098     FLOAT MaxLOD;
   2099     UINT ShaderRegister;
   2100     UINT RegisterSpace;
   2101     D3D12_SHADER_VISIBILITY ShaderVisibility;
   2102 } D3D12_STATIC_SAMPLER_DESC;
   2103 typedef enum D3D12_ROOT_SIGNATURE_FLAGS {
   2104     D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
   2105     D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
   2106     D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
   2107     D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
   2108     D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
   2109     D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
   2110     D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
   2111     D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
   2112     D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
   2113     D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
   2114     D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
   2115     D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
   2116     D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
   2117 } D3D12_ROOT_SIGNATURE_FLAGS;
   2118 DEFINE_ENUM_FLAG_OPERATORS(D3D12_ROOT_SIGNATURE_FLAGS);
   2119 typedef struct D3D12_ROOT_SIGNATURE_DESC {
   2120     UINT NumParameters;
   2121     const D3D12_ROOT_PARAMETER *pParameters;
   2122     UINT NumStaticSamplers;
   2123     const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
   2124     D3D12_ROOT_SIGNATURE_FLAGS Flags;
   2125 } D3D12_ROOT_SIGNATURE_DESC;
   2126 typedef struct D3D12_ROOT_SIGNATURE_DESC1 {
   2127     UINT NumParameters;
   2128     const D3D12_ROOT_PARAMETER1 *pParameters;
   2129     UINT NumStaticSamplers;
   2130     const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
   2131     D3D12_ROOT_SIGNATURE_FLAGS Flags;
   2132 } D3D12_ROOT_SIGNATURE_DESC1;
   2133 typedef enum D3D_ROOT_SIGNATURE_VERSION {
   2134     D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
   2135     D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
   2136     D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2
   2137 } D3D_ROOT_SIGNATURE_VERSION;
   2138 typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC {
   2139     D3D_ROOT_SIGNATURE_VERSION Version;
   2140     __C89_NAMELESS union {
   2141         D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
   2142         D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
   2143     } __C89_NAMELESSUNIONNAME;
   2144 } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
   2145 typedef enum D3D12_DESCRIPTOR_HEAP_TYPE {
   2146     D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
   2147     D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = 1,
   2148     D3D12_DESCRIPTOR_HEAP_TYPE_RTV = 2,
   2149     D3D12_DESCRIPTOR_HEAP_TYPE_DSV = 3,
   2150     D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = 4
   2151 } D3D12_DESCRIPTOR_HEAP_TYPE;
   2152 typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS {
   2153     D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
   2154     D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
   2155 } D3D12_DESCRIPTOR_HEAP_FLAGS;
   2156 DEFINE_ENUM_FLAG_OPERATORS(D3D12_DESCRIPTOR_HEAP_FLAGS);
   2157 typedef struct D3D12_DESCRIPTOR_HEAP_DESC {
   2158     D3D12_DESCRIPTOR_HEAP_TYPE Type;
   2159     UINT NumDescriptors;
   2160     D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
   2161     UINT NodeMask;
   2162 } D3D12_DESCRIPTOR_HEAP_DESC;
   2163 typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
   2164 typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC {
   2165     D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
   2166     UINT SizeInBytes;
   2167 } D3D12_CONSTANT_BUFFER_VIEW_DESC;
   2168 typedef enum D3D12_SRV_DIMENSION {
   2169     D3D12_SRV_DIMENSION_UNKNOWN = 0,
   2170     D3D12_SRV_DIMENSION_BUFFER = 1,
   2171     D3D12_SRV_DIMENSION_TEXTURE1D = 2,
   2172     D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
   2173     D3D12_SRV_DIMENSION_TEXTURE2D = 4,
   2174     D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
   2175     D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
   2176     D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
   2177     D3D12_SRV_DIMENSION_TEXTURE3D = 8,
   2178     D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
   2179     D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
   2180     D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11
   2181 } D3D12_SRV_DIMENSION;
   2182 typedef enum D3D12_BUFFER_SRV_FLAGS {
   2183     D3D12_BUFFER_SRV_FLAG_NONE = 0x0,
   2184     D3D12_BUFFER_SRV_FLAG_RAW = 0x1
   2185 } D3D12_BUFFER_SRV_FLAGS;
   2186 DEFINE_ENUM_FLAG_OPERATORS(D3D12_BUFFER_SRV_FLAGS);
   2187 typedef enum D3D12_SHADER_COMPONENT_MAPPING {
   2188     D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
   2189     D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
   2190     D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
   2191     D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
   2192     D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
   2193     D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
   2194 } D3D12_SHADER_COMPONENT_MAPPING;
   2195 #define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(x, y, z, w) \
   2196         (((x) & D3D12_SHADER_COMPONENT_MAPPING_MASK) \
   2197         | (((y) & D3D12_SHADER_COMPONENT_MAPPING_MASK) << D3D12_SHADER_COMPONENT_MAPPING_SHIFT) \
   2198         | (((z) & D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 2)) \
   2199         | (((w) & D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 3)) \
   2200         | D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES)
   2201 #define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0, 1, 2, 3)
   2202 #define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(i, mapping) \
   2203         ((D3D12_SHADER_COMPONENT_MAPPING)(mapping >> (i * D3D12_SHADER_COMPONENT_MAPPING_SHIFT) \
   2204         & D3D12_SHADER_COMPONENT_MAPPING_MASK))
   2205 typedef struct D3D12_BUFFER_SRV {
   2206     UINT64 FirstElement;
   2207     UINT NumElements;
   2208     UINT StructureByteStride;
   2209     D3D12_BUFFER_SRV_FLAGS Flags;
   2210 } D3D12_BUFFER_SRV;
   2211 typedef struct D3D12_TEX1D_SRV {
   2212     UINT MostDetailedMip;
   2213     UINT MipLevels;
   2214     FLOAT ResourceMinLODClamp;
   2215 } D3D12_TEX1D_SRV;
   2216 typedef struct D3D12_TEX1D_ARRAY_SRV {
   2217     UINT MostDetailedMip;
   2218     UINT MipLevels;
   2219     UINT FirstArraySlice;
   2220     UINT ArraySize;
   2221     FLOAT ResourceMinLODClamp;
   2222 } D3D12_TEX1D_ARRAY_SRV;
   2223 typedef struct D3D12_TEX2D_SRV {
   2224     UINT MostDetailedMip;
   2225     UINT MipLevels;
   2226     UINT PlaneSlice;
   2227     FLOAT ResourceMinLODClamp;
   2228 } D3D12_TEX2D_SRV;
   2229 typedef struct D3D12_TEX2D_ARRAY_SRV {
   2230     UINT MostDetailedMip;
   2231     UINT MipLevels;
   2232     UINT FirstArraySlice;
   2233     UINT ArraySize;
   2234     UINT PlaneSlice;
   2235     FLOAT ResourceMinLODClamp;
   2236 } D3D12_TEX2D_ARRAY_SRV;
   2237 typedef struct D3D12_TEX2DMS_SRV {
   2238     UINT UnusedField_NothingToDefine;
   2239 } D3D12_TEX2DMS_SRV;
   2240 typedef struct D3D12_TEX2DMS_ARRAY_SRV {
   2241     UINT FirstArraySlice;
   2242     UINT ArraySize;
   2243 } D3D12_TEX2DMS_ARRAY_SRV;
   2244 typedef struct D3D12_TEX3D_SRV {
   2245     UINT MostDetailedMip;
   2246     UINT MipLevels;
   2247     FLOAT ResourceMinLODClamp;
   2248 } D3D12_TEX3D_SRV;
   2249 typedef struct D3D12_TEXCUBE_SRV {
   2250     UINT MostDetailedMip;
   2251     UINT MipLevels;
   2252     FLOAT ResourceMinLODClamp;
   2253 } D3D12_TEXCUBE_SRV;
   2254 typedef struct D3D12_TEXCUBE_ARRAY_SRV {
   2255     UINT MostDetailedMip;
   2256     UINT MipLevels;
   2257     UINT First2DArrayFace;
   2258     UINT NumCubes;
   2259     FLOAT ResourceMinLODClamp;
   2260 } D3D12_TEXCUBE_ARRAY_SRV;
   2261 typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV {
   2262     D3D12_GPU_VIRTUAL_ADDRESS Location;
   2263 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
   2264 typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC {
   2265     DXGI_FORMAT Format;
   2266     D3D12_SRV_DIMENSION ViewDimension;
   2267     UINT Shader4ComponentMapping;
   2268     __C89_NAMELESS union {
   2269         D3D12_BUFFER_SRV Buffer;
   2270         D3D12_TEX1D_SRV Texture1D;
   2271         D3D12_TEX1D_ARRAY_SRV Texture1DArray;
   2272         D3D12_TEX2D_SRV Texture2D;
   2273         D3D12_TEX2D_ARRAY_SRV Texture2DArray;
   2274         D3D12_TEX2DMS_SRV Texture2DMS;
   2275         D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
   2276         D3D12_TEX3D_SRV Texture3D;
   2277         D3D12_TEXCUBE_SRV TextureCube;
   2278         D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
   2279         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
   2280     } __C89_NAMELESSUNIONNAME;
   2281 } D3D12_SHADER_RESOURCE_VIEW_DESC;
   2282 typedef enum D3D12_UAV_DIMENSION {
   2283     D3D12_UAV_DIMENSION_UNKNOWN = 0,
   2284     D3D12_UAV_DIMENSION_BUFFER = 1,
   2285     D3D12_UAV_DIMENSION_TEXTURE1D = 2,
   2286     D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
   2287     D3D12_UAV_DIMENSION_TEXTURE2D = 4,
   2288     D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
   2289     D3D12_UAV_DIMENSION_TEXTURE3D = 8
   2290 } D3D12_UAV_DIMENSION;
   2291 typedef enum D3D12_BUFFER_UAV_FLAGS {
   2292     D3D12_BUFFER_UAV_FLAG_NONE = 0x0,
   2293     D3D12_BUFFER_UAV_FLAG_RAW = 0x1
   2294 } D3D12_BUFFER_UAV_FLAGS;
   2295 DEFINE_ENUM_FLAG_OPERATORS(D3D12_BUFFER_UAV_FLAGS);
   2296 typedef struct D3D12_BUFFER_UAV {
   2297     UINT64 FirstElement;
   2298     UINT NumElements;
   2299     UINT StructureByteStride;
   2300     UINT64 CounterOffsetInBytes;
   2301     D3D12_BUFFER_UAV_FLAGS Flags;
   2302 } D3D12_BUFFER_UAV;
   2303 typedef struct D3D12_TEX1D_UAV {
   2304     UINT MipSlice;
   2305 } D3D12_TEX1D_UAV;
   2306 typedef struct D3D12_TEX1D_ARRAY_UAV {
   2307     UINT MipSlice;
   2308     UINT FirstArraySlice;
   2309     UINT ArraySize;
   2310 } D3D12_TEX1D_ARRAY_UAV;
   2311 typedef struct D3D12_TEX2D_UAV {
   2312     UINT MipSlice;
   2313     UINT PlaneSlice;
   2314 } D3D12_TEX2D_UAV;
   2315 typedef struct D3D12_TEX2D_ARRAY_UAV {
   2316     UINT MipSlice;
   2317     UINT FirstArraySlice;
   2318     UINT ArraySize;
   2319     UINT PlaneSlice;
   2320 } D3D12_TEX2D_ARRAY_UAV;
   2321 typedef struct D3D12_TEX3D_UAV {
   2322     UINT MipSlice;
   2323     UINT FirstWSlice;
   2324     UINT WSize;
   2325 } D3D12_TEX3D_UAV;
   2326 typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC {
   2327     DXGI_FORMAT Format;
   2328     D3D12_UAV_DIMENSION ViewDimension;
   2329     __C89_NAMELESS union {
   2330         D3D12_BUFFER_UAV Buffer;
   2331         D3D12_TEX1D_UAV Texture1D;
   2332         D3D12_TEX1D_ARRAY_UAV Texture1DArray;
   2333         D3D12_TEX2D_UAV Texture2D;
   2334         D3D12_TEX2D_ARRAY_UAV Texture2DArray;
   2335         D3D12_TEX3D_UAV Texture3D;
   2336     } __C89_NAMELESSUNIONNAME;
   2337 } D3D12_UNORDERED_ACCESS_VIEW_DESC;
   2338 typedef enum D3D12_RTV_DIMENSION {
   2339     D3D12_RTV_DIMENSION_UNKNOWN = 0,
   2340     D3D12_RTV_DIMENSION_BUFFER = 1,
   2341     D3D12_RTV_DIMENSION_TEXTURE1D = 2,
   2342     D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
   2343     D3D12_RTV_DIMENSION_TEXTURE2D = 4,
   2344     D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
   2345     D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
   2346     D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
   2347     D3D12_RTV_DIMENSION_TEXTURE3D = 8
   2348 } D3D12_RTV_DIMENSION;
   2349 typedef struct D3D12_BUFFER_RTV {
   2350     UINT64 FirstElement;
   2351     UINT NumElements;
   2352 } D3D12_BUFFER_RTV;
   2353 typedef struct D3D12_TEX1D_RTV {
   2354     UINT MipSlice;
   2355 } D3D12_TEX1D_RTV;
   2356 typedef struct D3D12_TEX1D_ARRAY_RTV {
   2357     UINT MipSlice;
   2358     UINT FirstArraySlice;
   2359     UINT ArraySize;
   2360 } D3D12_TEX1D_ARRAY_RTV;
   2361 typedef struct D3D12_TEX2D_RTV {
   2362     UINT MipSlice;
   2363     UINT PlaneSlice;
   2364 } D3D12_TEX2D_RTV;
   2365 typedef struct D3D12_TEX2D_ARRAY_RTV {
   2366     UINT MipSlice;
   2367     UINT FirstArraySlice;
   2368     UINT ArraySize;
   2369     UINT PlaneSlice;
   2370 } D3D12_TEX2D_ARRAY_RTV;
   2371 typedef struct D3D12_TEX2DMS_RTV {
   2372     UINT UnusedField_NothingToDefine;
   2373 } D3D12_TEX2DMS_RTV;
   2374 typedef struct D3D12_TEX2DMS_ARRAY_RTV {
   2375     UINT FirstArraySlice;
   2376     UINT ArraySize;
   2377 } D3D12_TEX2DMS_ARRAY_RTV;
   2378 typedef struct D3D12_TEX3D_RTV {
   2379     UINT MipSlice;
   2380     UINT FirstWSlice;
   2381     UINT WSize;
   2382 } D3D12_TEX3D_RTV;
   2383 typedef struct D3D12_RENDER_TARGET_VIEW_DESC {
   2384     DXGI_FORMAT Format;
   2385     D3D12_RTV_DIMENSION ViewDimension;
   2386     __C89_NAMELESS union {
   2387         D3D12_BUFFER_RTV Buffer;
   2388         D3D12_TEX1D_RTV Texture1D;
   2389         D3D12_TEX1D_ARRAY_RTV Texture1DArray;
   2390         D3D12_TEX2D_RTV Texture2D;
   2391         D3D12_TEX2D_ARRAY_RTV Texture2DArray;
   2392         D3D12_TEX2DMS_RTV Texture2DMS;
   2393         D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
   2394         D3D12_TEX3D_RTV Texture3D;
   2395     } __C89_NAMELESSUNIONNAME;
   2396 } D3D12_RENDER_TARGET_VIEW_DESC;
   2397 typedef enum D3D12_DSV_DIMENSION {
   2398     D3D12_DSV_DIMENSION_UNKNOWN = 0,
   2399     D3D12_DSV_DIMENSION_TEXTURE1D = 1,
   2400     D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
   2401     D3D12_DSV_DIMENSION_TEXTURE2D = 3,
   2402     D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
   2403     D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
   2404     D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
   2405 } D3D12_DSV_DIMENSION;
   2406 typedef enum D3D12_DSV_FLAGS {
   2407     D3D12_DSV_FLAG_NONE = 0x0,
   2408     D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
   2409     D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
   2410 } D3D12_DSV_FLAGS;
   2411 DEFINE_ENUM_FLAG_OPERATORS(D3D12_DSV_FLAGS);
   2412 typedef struct D3D12_TEX1D_DSV {
   2413     UINT MipSlice;
   2414 } D3D12_TEX1D_DSV;
   2415 typedef struct D3D12_TEX1D_ARRAY_DSV {
   2416     UINT MipSlice;
   2417     UINT FirstArraySlice;
   2418     UINT ArraySize;
   2419 } D3D12_TEX1D_ARRAY_DSV;
   2420 typedef struct D3D12_TEX2D_DSV {
   2421     UINT MipSlice;
   2422 } D3D12_TEX2D_DSV;
   2423 typedef struct D3D12_TEX2D_ARRAY_DSV {
   2424     UINT MipSlice;
   2425     UINT FirstArraySlice;
   2426     UINT ArraySize;
   2427 } D3D12_TEX2D_ARRAY_DSV;
   2428 typedef struct D3D12_TEX2DMS_DSV {
   2429     UINT UnusedField_NothingToDefine;
   2430 } D3D12_TEX2DMS_DSV;
   2431 typedef struct D3D12_TEX2DMS_ARRAY_DSV {
   2432     UINT FirstArraySlice;
   2433     UINT ArraySize;
   2434 } D3D12_TEX2DMS_ARRAY_DSV;
   2435 typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC {
   2436     DXGI_FORMAT Format;
   2437     D3D12_DSV_DIMENSION ViewDimension;
   2438     D3D12_DSV_FLAGS Flags;
   2439     __C89_NAMELESS union {
   2440         D3D12_TEX1D_DSV Texture1D;
   2441         D3D12_TEX1D_ARRAY_DSV Texture1DArray;
   2442         D3D12_TEX2D_DSV Texture2D;
   2443         D3D12_TEX2D_ARRAY_DSV Texture2DArray;
   2444         D3D12_TEX2DMS_DSV Texture2DMS;
   2445         D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
   2446     } __C89_NAMELESSUNIONNAME;
   2447 } D3D12_DEPTH_STENCIL_VIEW_DESC;
   2448 typedef struct D3D12_SAMPLER_DESC {
   2449     D3D12_FILTER Filter;
   2450     D3D12_TEXTURE_ADDRESS_MODE AddressU;
   2451     D3D12_TEXTURE_ADDRESS_MODE AddressV;
   2452     D3D12_TEXTURE_ADDRESS_MODE AddressW;
   2453     FLOAT MipLODBias;
   2454     UINT MaxAnisotropy;
   2455     D3D12_COMPARISON_FUNC ComparisonFunc;
   2456     FLOAT BorderColor[4];
   2457     FLOAT MinLOD;
   2458     FLOAT MaxLOD;
   2459 } D3D12_SAMPLER_DESC;
   2460 typedef struct D3D12_CPU_DESCRIPTOR_HANDLE {
   2461     SIZE_T ptr;
   2462 } D3D12_CPU_DESCRIPTOR_HANDLE;
   2463 typedef struct D3D12_GPU_DESCRIPTOR_HANDLE {
   2464     UINT64 ptr;
   2465 } D3D12_GPU_DESCRIPTOR_HANDLE;
   2466 typedef enum D3D12_STENCIL_OP {
   2467     D3D12_STENCIL_OP_KEEP = 1,
   2468     D3D12_STENCIL_OP_ZERO = 2,
   2469     D3D12_STENCIL_OP_REPLACE = 3,
   2470     D3D12_STENCIL_OP_INCR_SAT = 4,
   2471     D3D12_STENCIL_OP_DECR_SAT = 5,
   2472     D3D12_STENCIL_OP_INVERT = 6,
   2473     D3D12_STENCIL_OP_INCR = 7,
   2474     D3D12_STENCIL_OP_DECR = 8
   2475 } D3D12_STENCIL_OP;
   2476 typedef struct D3D12_DEPTH_STENCILOP_DESC {
   2477     D3D12_STENCIL_OP StencilFailOp;
   2478     D3D12_STENCIL_OP StencilDepthFailOp;
   2479     D3D12_STENCIL_OP StencilPassOp;
   2480     D3D12_COMPARISON_FUNC StencilFunc;
   2481 } D3D12_DEPTH_STENCILOP_DESC;
   2482 typedef enum D3D12_DEPTH_WRITE_MASK {
   2483     D3D12_DEPTH_WRITE_MASK_ZERO = 0,
   2484     D3D12_DEPTH_WRITE_MASK_ALL = 1
   2485 } D3D12_DEPTH_WRITE_MASK;
   2486 typedef struct D3D12_DEPTH_STENCIL_DESC {
   2487     WINBOOL DepthEnable;
   2488     D3D12_DEPTH_WRITE_MASK DepthWriteMask;
   2489     D3D12_COMPARISON_FUNC DepthFunc;
   2490     WINBOOL StencilEnable;
   2491     UINT8 StencilReadMask;
   2492     UINT8 StencilWriteMask;
   2493     D3D12_DEPTH_STENCILOP_DESC FrontFace;
   2494     D3D12_DEPTH_STENCILOP_DESC BackFace;
   2495 } D3D12_DEPTH_STENCIL_DESC;
   2496 typedef struct D3D12_DEPTH_STENCIL_DESC1 {
   2497     WINBOOL DepthEnable;
   2498     D3D12_DEPTH_WRITE_MASK DepthWriteMask;
   2499     D3D12_COMPARISON_FUNC DepthFunc;
   2500     WINBOOL StencilEnable;
   2501     UINT8 StencilReadMask;
   2502     UINT8 StencilWriteMask;
   2503     D3D12_DEPTH_STENCILOP_DESC FrontFace;
   2504     D3D12_DEPTH_STENCILOP_DESC BackFace;
   2505     WINBOOL DepthBoundsTestEnable;
   2506 } D3D12_DEPTH_STENCIL_DESC1;
   2507 typedef enum D3D12_BLEND {
   2508     D3D12_BLEND_ZERO = 1,
   2509     D3D12_BLEND_ONE = 2,
   2510     D3D12_BLEND_SRC_COLOR = 3,
   2511     D3D12_BLEND_INV_SRC_COLOR = 4,
   2512     D3D12_BLEND_SRC_ALPHA = 5,
   2513     D3D12_BLEND_INV_SRC_ALPHA = 6,
   2514     D3D12_BLEND_DEST_ALPHA = 7,
   2515     D3D12_BLEND_INV_DEST_ALPHA = 8,
   2516     D3D12_BLEND_DEST_COLOR = 9,
   2517     D3D12_BLEND_INV_DEST_COLOR = 10,
   2518     D3D12_BLEND_SRC_ALPHA_SAT = 11,
   2519     D3D12_BLEND_BLEND_FACTOR = 14,
   2520     D3D12_BLEND_INV_BLEND_FACTOR = 15,
   2521     D3D12_BLEND_SRC1_COLOR = 16,
   2522     D3D12_BLEND_INV_SRC1_COLOR = 17,
   2523     D3D12_BLEND_SRC1_ALPHA = 18,
   2524     D3D12_BLEND_INV_SRC1_ALPHA = 19,
   2525     D3D12_BLEND_ALPHA_FACTOR = 20,
   2526     D3D12_BLEND_INV_ALPHA_FACTOR = 21
   2527 } D3D12_BLEND;
   2528 typedef enum D3D12_BLEND_OP {
   2529     D3D12_BLEND_OP_ADD = 1,
   2530     D3D12_BLEND_OP_SUBTRACT = 2,
   2531     D3D12_BLEND_OP_REV_SUBTRACT = 3,
   2532     D3D12_BLEND_OP_MIN = 4,
   2533     D3D12_BLEND_OP_MAX = 5
   2534 } D3D12_BLEND_OP;
   2535 typedef enum D3D12_LOGIC_OP {
   2536     D3D12_LOGIC_OP_CLEAR = 0x0,
   2537     D3D12_LOGIC_OP_SET = 0x1,
   2538     D3D12_LOGIC_OP_COPY = 0x2,
   2539     D3D12_LOGIC_OP_COPY_INVERTED = 0x3,
   2540     D3D12_LOGIC_OP_NOOP = 0x4,
   2541     D3D12_LOGIC_OP_INVERT = 0x5,
   2542     D3D12_LOGIC_OP_AND = 0x6,
   2543     D3D12_LOGIC_OP_NAND = 0x7,
   2544     D3D12_LOGIC_OP_OR = 0x8,
   2545     D3D12_LOGIC_OP_NOR = 0x9,
   2546     D3D12_LOGIC_OP_XOR = 0xa,
   2547     D3D12_LOGIC_OP_EQUIV = 0xb,
   2548     D3D12_LOGIC_OP_AND_REVERSE = 0xc,
   2549     D3D12_LOGIC_OP_AND_INVERTED = 0xd,
   2550     D3D12_LOGIC_OP_OR_REVERSE = 0xe,
   2551     D3D12_LOGIC_OP_OR_INVERTED = 0xf
   2552 } D3D12_LOGIC_OP;
   2553 typedef enum D3D12_COLOR_WRITE_ENABLE {
   2554     D3D12_COLOR_WRITE_ENABLE_RED = 0x1,
   2555     D3D12_COLOR_WRITE_ENABLE_GREEN = 0x2,
   2556     D3D12_COLOR_WRITE_ENABLE_BLUE = 0x4,
   2557     D3D12_COLOR_WRITE_ENABLE_ALPHA = 0x8,
   2558     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
   2559 } D3D12_COLOR_WRITE_ENABLE;
   2560 typedef struct D3D12_RENDER_TARGET_BLEND_DESC {
   2561     WINBOOL BlendEnable;
   2562     WINBOOL LogicOpEnable;
   2563     D3D12_BLEND SrcBlend;
   2564     D3D12_BLEND DestBlend;
   2565     D3D12_BLEND_OP BlendOp;
   2566     D3D12_BLEND SrcBlendAlpha;
   2567     D3D12_BLEND DestBlendAlpha;
   2568     D3D12_BLEND_OP BlendOpAlpha;
   2569     D3D12_LOGIC_OP LogicOp;
   2570     UINT8 RenderTargetWriteMask;
   2571 } D3D12_RENDER_TARGET_BLEND_DESC;
   2572 typedef struct D3D12_BLEND_DESC {
   2573     WINBOOL AlphaToCoverageEnable;
   2574     WINBOOL IndependentBlendEnable;
   2575     D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[8];
   2576 } D3D12_BLEND_DESC;
   2577 typedef enum D3D12_FILL_MODE {
   2578     D3D12_FILL_MODE_WIREFRAME = 2,
   2579     D3D12_FILL_MODE_SOLID = 3
   2580 } D3D12_FILL_MODE;
   2581 typedef enum D3D12_CULL_MODE {
   2582     D3D12_CULL_MODE_NONE = 1,
   2583     D3D12_CULL_MODE_FRONT = 2,
   2584     D3D12_CULL_MODE_BACK = 3
   2585 } D3D12_CULL_MODE;
   2586 typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE {
   2587     D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
   2588     D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
   2589 } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
   2590 typedef struct D3D12_RASTERIZER_DESC {
   2591     D3D12_FILL_MODE FillMode;
   2592     D3D12_CULL_MODE CullMode;
   2593     WINBOOL FrontCounterClockwise;
   2594     INT DepthBias;
   2595     FLOAT DepthBiasClamp;
   2596     FLOAT SlopeScaledDepthBias;
   2597     WINBOOL DepthClipEnable;
   2598     WINBOOL MultisampleEnable;
   2599     WINBOOL AntialiasedLineEnable;
   2600     UINT ForcedSampleCount;
   2601     D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
   2602 } D3D12_RASTERIZER_DESC;
   2603 typedef struct D3D12_SO_DECLARATION_ENTRY {
   2604     UINT Stream;
   2605     const char *SemanticName;
   2606     UINT SemanticIndex;
   2607     BYTE StartComponent;
   2608     BYTE ComponentCount;
   2609     BYTE OutputSlot;
   2610 } D3D12_SO_DECLARATION_ENTRY;
   2611 typedef struct D3D12_STREAM_OUTPUT_DESC {
   2612     const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
   2613     UINT NumEntries;
   2614     const UINT *pBufferStrides;
   2615     UINT NumStrides;
   2616     UINT RasterizedStream;
   2617 } D3D12_STREAM_OUTPUT_DESC;
   2618 typedef enum D3D12_INPUT_CLASSIFICATION {
   2619     D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
   2620     D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
   2621 } D3D12_INPUT_CLASSIFICATION;
   2622 typedef struct D3D12_INPUT_ELEMENT_DESC {
   2623     const char *SemanticName;
   2624     UINT SemanticIndex;
   2625     DXGI_FORMAT Format;
   2626     UINT InputSlot;
   2627     UINT AlignedByteOffset;
   2628     D3D12_INPUT_CLASSIFICATION InputSlotClass;
   2629     UINT InstanceDataStepRate;
   2630 } D3D12_INPUT_ELEMENT_DESC;
   2631 typedef struct D3D12_INPUT_LAYOUT_DESC {
   2632     const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
   2633     UINT NumElements;
   2634 } D3D12_INPUT_LAYOUT_DESC;
   2635 typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE {
   2636     D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
   2637     D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
   2638     D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
   2639 } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
   2640 typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
   2641 typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
   2642 typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE {
   2643     D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
   2644     D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
   2645     D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
   2646     D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
   2647     D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
   2648 } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
   2649 typedef struct D3D12_CACHED_PIPELINE_STATE {
   2650     const void *pCachedBlob;
   2651     SIZE_T CachedBlobSizeInBytes;
   2652 } D3D12_CACHED_PIPELINE_STATE;
   2653 typedef enum D3D12_PIPELINE_STATE_FLAGS {
   2654     D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
   2655     D3D12_PIPELINE_STATE_FLAG_DEBUG = 0x1
   2656 } D3D12_PIPELINE_STATE_FLAGS;
   2657 DEFINE_ENUM_FLAG_OPERATORS(D3D12_PIPELINE_STATE_FLAGS);
   2658 typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC {
   2659     ID3D12RootSignature *pRootSignature;
   2660     D3D12_SHADER_BYTECODE VS;
   2661     D3D12_SHADER_BYTECODE PS;
   2662     D3D12_SHADER_BYTECODE DS;
   2663     D3D12_SHADER_BYTECODE HS;
   2664     D3D12_SHADER_BYTECODE GS;
   2665     D3D12_STREAM_OUTPUT_DESC StreamOutput;
   2666     D3D12_BLEND_DESC BlendState;
   2667     UINT SampleMask;
   2668     D3D12_RASTERIZER_DESC RasterizerState;
   2669     D3D12_DEPTH_STENCIL_DESC DepthStencilState;
   2670     D3D12_INPUT_LAYOUT_DESC InputLayout;
   2671     D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
   2672     D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
   2673     UINT NumRenderTargets;
   2674     DXGI_FORMAT RTVFormats[8];
   2675     DXGI_FORMAT DSVFormat;
   2676     DXGI_SAMPLE_DESC SampleDesc;
   2677     UINT NodeMask;
   2678     D3D12_CACHED_PIPELINE_STATE CachedPSO;
   2679     D3D12_PIPELINE_STATE_FLAGS Flags;
   2680 } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
   2681 typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC {
   2682     ID3D12RootSignature *pRootSignature;
   2683     D3D12_SHADER_BYTECODE CS;
   2684     UINT NodeMask;
   2685     D3D12_CACHED_PIPELINE_STATE CachedPSO;
   2686     D3D12_PIPELINE_STATE_FLAGS Flags;
   2687 } D3D12_COMPUTE_PIPELINE_STATE_DESC;
   2688 typedef struct D3D12_PIPELINE_STATE_STREAM_DESC {
   2689     SIZE_T SizeInBytes;
   2690     void *pPipelineStateSubobjectStream;
   2691 } D3D12_PIPELINE_STATE_STREAM_DESC;
   2692 struct D3D12_RT_FORMAT_ARRAY {
   2693     DXGI_FORMAT RTFormats[8];
   2694     UINT NumRenderTargets;
   2695 };
   2696 typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE {
   2697     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0x0,
   2698     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = 0x1,
   2699     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = 0x2,
   2700     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = 0x3,
   2701     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = 0x4,
   2702     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = 0x5,
   2703     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = 0x6,
   2704     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 0x7,
   2705     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = 0x8,
   2706     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 0x9,
   2707     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = 0xa,
   2708     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 0xb,
   2709     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 0xc,
   2710     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 0xd,
   2711     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 0xe,
   2712     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 0xf,
   2713     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 0x10,
   2714     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 0x11,
   2715     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = 0x12,
   2716     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = 0x13,
   2717     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = 0x14,
   2718     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 0x15,
   2719     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 0x16,
   2720     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 0x18,
   2721     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 0x19,
   2722     D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = 0x1a
   2723 } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
   2724 typedef struct D3D12_VIEW_INSTANCE_LOCATION {
   2725     UINT ViewportArrayIndex;
   2726     UINT RenderTargetArrayIndex;
   2727 } D3D12_VIEW_INSTANCE_LOCATION;
   2728 typedef enum D3D12_VIEW_INSTANCING_FLAGS {
   2729     D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
   2730     D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
   2731 } D3D12_VIEW_INSTANCING_FLAGS;
   2732 DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIEW_INSTANCING_FLAGS);
   2733 typedef struct D3D12_VIEW_INSTANCING_DESC {
   2734     UINT ViewInstanceCount;
   2735     const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
   2736     D3D12_VIEW_INSTANCING_FLAGS Flags;
   2737 } D3D12_VIEW_INSTANCING_DESC;
   2738 typedef enum D3D12_COMMAND_LIST_TYPE {
   2739     D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
   2740     D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
   2741     D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
   2742     D3D12_COMMAND_LIST_TYPE_COPY = 3,
   2743     D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
   2744     D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
   2745     D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6
   2746 } D3D12_COMMAND_LIST_TYPE;
   2747 typedef enum D3D12_COMMAND_QUEUE_PRIORITY {
   2748     D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
   2749     D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
   2750     D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
   2751 } D3D12_COMMAND_QUEUE_PRIORITY;
   2752 typedef enum D3D12_COMMAND_QUEUE_FLAGS {
   2753     D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
   2754     D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1
   2755 } D3D12_COMMAND_QUEUE_FLAGS;
   2756 DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_QUEUE_FLAGS);
   2757 typedef struct D3D12_COMMAND_QUEUE_DESC {
   2758     D3D12_COMMAND_LIST_TYPE Type;
   2759     INT Priority;
   2760     D3D12_COMMAND_QUEUE_FLAGS Flags;
   2761     UINT NodeMask;
   2762 } D3D12_COMMAND_QUEUE_DESC;
   2763 typedef struct D3D12_FEATURE_DATA_ARCHITECTURE {
   2764     UINT NodeIndex;
   2765     WINBOOL TileBasedRenderer;
   2766     WINBOOL UMA;
   2767     WINBOOL CacheCoherentUMA;
   2768 } D3D12_FEATURE_DATA_ARCHITECTURE;
   2769 typedef struct D3D12_FEATURE_DATA_FORMAT_INFO {
   2770     DXGI_FORMAT Format;
   2771     UINT8 PlaneCount;
   2772 } D3D12_FEATURE_DATA_FORMAT_INFO;
   2773 typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS {
   2774     UINT NumFeatureLevels;
   2775     const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
   2776     D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
   2777 } D3D12_FEATURE_DATA_FEATURE_LEVELS;
   2778 typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE {
   2779     D3D_ROOT_SIGNATURE_VERSION HighestVersion;
   2780 } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
   2781 typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT {
   2782     UINT MaxGPUVirtualAddressBitsPerResource;
   2783     UINT MaxGPUVirtualAddressBitsPerProcess;
   2784 } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
   2785 typedef enum D3D_SHADER_MODEL {
   2786     D3D_SHADER_MODEL_5_1 = 0x51,
   2787     D3D_SHADER_MODEL_6_0 = 0x60,
   2788     D3D_SHADER_MODEL_6_1 = 0x61,
   2789     D3D_SHADER_MODEL_6_2 = 0x62,
   2790     D3D_SHADER_MODEL_6_3 = 0x63,
   2791     D3D_SHADER_MODEL_6_4 = 0x64,
   2792     D3D_SHADER_MODEL_6_5 = 0x65,
   2793     D3D_SHADER_MODEL_6_6 = 0x66,
   2794     D3D_SHADER_MODEL_6_7 = 0x67,
   2795     D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_7
   2796 } D3D_SHADER_MODEL;
   2797 typedef struct D3D12_FEATURE_DATA_SHADER_MODEL {
   2798     D3D_SHADER_MODEL HighestShaderModel;
   2799 } D3D12_FEATURE_DATA_SHADER_MODEL;
   2800 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1 {
   2801     WINBOOL WaveOps;
   2802     UINT WaveLaneCountMin;
   2803     UINT WaveLaneCountMax;
   2804     UINT TotalLaneCount;
   2805     WINBOOL ExpandedComputeResourceStates;
   2806     WINBOOL Int64ShaderOps;
   2807 } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
   2808 typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1 {
   2809     UINT NodeIndex;
   2810     WINBOOL TileBasedRenderer;
   2811     WINBOOL UMA;
   2812     WINBOOL CacheCoherentUMA;
   2813     WINBOOL IsolatedMMU;
   2814 } D3D12_FEATURE_DATA_ARCHITECTURE1;
   2815 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2 {
   2816     WINBOOL DepthBoundsTestSupported;
   2817     D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
   2818 } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
   2819 typedef struct D3D12_FEATURE_DATA_SHADER_CACHE {
   2820     D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
   2821 } D3D12_FEATURE_DATA_SHADER_CACHE;
   2822 typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY {
   2823     D3D12_COMMAND_LIST_TYPE CommandListType;
   2824     UINT Priority;
   2825     WINBOOL PriorityForTypeIsSupported;
   2826 } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
   2827 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3 {
   2828     WINBOOL CopyQueueTimestampQueriesSupported;
   2829     WINBOOL CastingFullyTypedFormatSupported;
   2830     D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
   2831     D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
   2832     WINBOOL BarycentricsSupported;
   2833 } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
   2834 typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS {
   2835     WINBOOL Supported;
   2836 } D3D12_FEATURE_DATA_EXISTING_HEAPS;
   2837 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4 {
   2838     WINBOOL MSAA64KBAlignedTextureSupported;
   2839     D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
   2840     WINBOOL Native16BitShaderOpsSupported;
   2841 } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
   2842 typedef struct D3D12_FEATURE_DATA_SERIALIZATION {
   2843     UINT NodeIndex;
   2844     D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
   2845 } D3D12_FEATURE_DATA_SERIALIZATION;
   2846 typedef struct D3D12_FEATURE_DATA_CROSS_NODE {
   2847     D3D12_CROSS_NODE_SHARING_TIER SharingTier;
   2848     WINBOOL AtomicShaderInstructions;
   2849 } D3D12_FEATURE_DATA_CROSS_NODE;
   2850 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5 {
   2851     WINBOOL SRVOnlyTiledResourceTier3;
   2852     D3D12_RENDER_PASS_TIER RenderPassesTier;
   2853     D3D12_RAYTRACING_TIER RaytracingTier;
   2854 } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
   2855 typedef enum D3D12_VARIABLE_SHADING_RATE_TIER {
   2856     D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0x0,
   2857     D3D12_VARIABLE_SHADING_RATE_TIER_1 = 0x1,
   2858     D3D12_VARIABLE_SHADING_RATE_TIER_2 = 0x2
   2859 } D3D12_VARIABLE_SHADING_RATE_TIER;
   2860 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6 {
   2861     WINBOOL AdditionalShadingRatesSupported;
   2862     WINBOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
   2863     D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
   2864     UINT ShadingRateImageTileSize;
   2865     WINBOOL BackgroundProcessingSupported;
   2866 } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
   2867 typedef enum D3D12_MESH_SHADER_TIER {
   2868     D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0x0,
   2869     D3D12_MESH_SHADER_TIER_1 = 0xa
   2870 } D3D12_MESH_SHADER_TIER;
   2871 typedef enum D3D12_SAMPLER_FEEDBACK_TIER {
   2872     D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0x0,
   2873     D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 0x5a,
   2874     D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 0x64
   2875 } D3D12_SAMPLER_FEEDBACK_TIER;
   2876 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7 {
   2877     D3D12_MESH_SHADER_TIER MeshShaderTier;
   2878     D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
   2879 } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
   2880 typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND {
   2881     GUID CommandId;
   2882     UINT NodeMask;
   2883     const void *pQueryInputData;
   2884     SIZE_T QueryInputDataSizeInBytes;
   2885     void *pQueryOutputData;
   2886     SIZE_T QueryOutputDataSizeInBytes;
   2887 } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
   2888 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8 {
   2889     WINBOOL UnalignedBlockTexturesSupported;
   2890 } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
   2891 typedef enum D3D12_WAVE_MMA_TIER {
   2892     D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0x0,
   2893     D3D12_WAVE_MMA_TIER_1_0 = 0xa
   2894 } D3D12_WAVE_MMA_TIER;
   2895 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9 {
   2896     WINBOOL MeshShaderPipelineStatsSupported;
   2897     WINBOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
   2898     WINBOOL AtomicInt64OnTypedResourceSupported;
   2899     WINBOOL AtomicInt64OnGroupSharedSupported;
   2900     WINBOOL DerivativesInMeshAndAmplificationShadersSupported;
   2901     D3D12_WAVE_MMA_TIER WaveMMATier;
   2902 } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
   2903 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10 {
   2904     WINBOOL VariableRateShadingSumCombinerSupported;
   2905     WINBOOL MeshShaderPerPrimitiveShadingRateSupported;
   2906 } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
   2907 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11 {
   2908     WINBOOL AtomicInt64OnDescriptorHeapResourceSupported;
   2909 } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
   2910 typedef enum D3D12_TRI_STATE {
   2911     D3D12_TRI_STATE_UNKNOWN = -0x1,
   2912     D3D12_TRI_STATE_FALSE = 0x0,
   2913     D3D12_TRI_STATE_TRUE = 0x1
   2914 } D3D12_TRI_STATE;
   2915 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12 {
   2916     D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
   2917     WINBOOL EnhancedBarriersSupported;
   2918     WINBOOL RelaxedFormatCastingSupported;
   2919 } D3D12_FEATURE_DATA_D3D12_OPTIONS12;
   2920 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13 {
   2921     WINBOOL UnrestrictedBufferTextureCopyPitchSupported;
   2922     WINBOOL UnrestrictedVertexElementAlignmentSupported;
   2923     WINBOOL InvertedViewportHeightFlipsYSupported;
   2924     WINBOOL InvertedViewportDepthFlipsZSupported;
   2925     WINBOOL TextureCopyBetweenDimensionsSupported;
   2926     WINBOOL AlphaBlendFactorSupported;
   2927 } D3D12_FEATURE_DATA_D3D12_OPTIONS13;
   2928 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14 {
   2929     WINBOOL AdvancedTextureOpsSupported;
   2930     WINBOOL WriteableMSAATexturesSupported;
   2931     WINBOOL IndependentFrontAndBackStencilRefMaskSupported;
   2932 } D3D12_FEATURE_DATA_D3D12_OPTIONS14;
   2933 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15 {
   2934     WINBOOL TriangleFanSupported;
   2935     WINBOOL DynamicIndexBufferStripCutSupported;
   2936 } D3D12_FEATURE_DATA_D3D12_OPTIONS15;
   2937 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16 {
   2938     WINBOOL DynamicDepthBiasSupported;
   2939     WINBOOL GPUUploadHeapSupported;
   2940 } D3D12_FEATURE_DATA_D3D12_OPTIONS16;
   2941 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17 {
   2942     WINBOOL NonNormalizedCoordinateSamplersSupported;
   2943     WINBOOL ManualWriteTrackingResourceSupported;
   2944 } D3D12_FEATURE_DATA_D3D12_OPTIONS17;
   2945 typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18 {
   2946     WINBOOL RenderPassesValid;
   2947 } D3D12_FEATURE_DATA_D3D12_OPTIONS18;
   2948 typedef enum D3D12_FEATURE {
   2949     D3D12_FEATURE_D3D12_OPTIONS = 0,
   2950     D3D12_FEATURE_ARCHITECTURE = 1,
   2951     D3D12_FEATURE_FEATURE_LEVELS = 2,
   2952     D3D12_FEATURE_FORMAT_SUPPORT = 3,
   2953     D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
   2954     D3D12_FEATURE_FORMAT_INFO = 5,
   2955     D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
   2956     D3D12_FEATURE_SHADER_MODEL = 7,
   2957     D3D12_FEATURE_D3D12_OPTIONS1 = 8,
   2958     D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
   2959     D3D12_FEATURE_ROOT_SIGNATURE = 12,
   2960     D3D12_FEATURE_ARCHITECTURE1 = 16,
   2961     D3D12_FEATURE_D3D12_OPTIONS2 = 18,
   2962     D3D12_FEATURE_SHADER_CACHE = 19,
   2963     D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
   2964     D3D12_FEATURE_D3D12_OPTIONS3 = 21,
   2965     D3D12_FEATURE_EXISTING_HEAPS = 22,
   2966     D3D12_FEATURE_D3D12_OPTIONS4 = 23,
   2967     D3D12_FEATURE_SERIALIZATION = 24,
   2968     D3D12_FEATURE_CROSS_NODE = 25,
   2969     D3D12_FEATURE_D3D12_OPTIONS5 = 27,
   2970     D3D12_FEATURE_DISPLAYABLE = 28,
   2971     D3D12_FEATURE_D3D12_OPTIONS6 = 30,
   2972     D3D12_FEATURE_QUERY_META_COMMAND = 31,
   2973     D3D12_FEATURE_D3D12_OPTIONS7 = 32,
   2974     D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
   2975     D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
   2976     D3D12_FEATURE_D3D12_OPTIONS8 = 36,
   2977     D3D12_FEATURE_D3D12_OPTIONS9 = 37,
   2978     D3D12_FEATURE_D3D12_OPTIONS10 = 39,
   2979     D3D12_FEATURE_D3D12_OPTIONS11 = 40,
   2980     D3D12_FEATURE_D3D12_OPTIONS12 = 41,
   2981     D3D12_FEATURE_D3D12_OPTIONS13 = 42,
   2982     D3D12_FEATURE_D3D12_OPTIONS14 = 43,
   2983     D3D12_FEATURE_D3D12_OPTIONS15 = 44,
   2984     D3D12_FEATURE_D3D12_OPTIONS16 = 45,
   2985     D3D12_FEATURE_D3D12_OPTIONS17 = 46,
   2986     D3D12_FEATURE_D3D12_OPTIONS18 = 47
   2987 } D3D12_FEATURE;
   2988 typedef struct D3D12_MEMCPY_DEST {
   2989     void *pData;
   2990     SIZE_T RowPitch;
   2991     SIZE_T SlicePitch;
   2992 } D3D12_MEMCPY_DEST;
   2993 typedef struct D3D12_SUBRESOURCE_DATA {
   2994     const void *pData;
   2995     LONG_PTR RowPitch;
   2996     LONG_PTR SlicePitch;
   2997 } D3D12_SUBRESOURCE_DATA;
   2998 typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS {
   2999     D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
   3000     D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
   3001     D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0
   3002 } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
   3003 DEFINE_ENUM_FLAG_OPERATORS(D3D12_MULTIPLE_FENCE_WAIT_FLAGS);
   3004 typedef enum D3D12_RESIDENCY_PRIORITY {
   3005     D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
   3006     D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
   3007     D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
   3008     D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
   3009     D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
   3010 } D3D12_RESIDENCY_PRIORITY;
   3011 typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER {
   3012     D3D12_GPU_VIRTUAL_ADDRESS Dest;
   3013     UINT32 Value;
   3014 } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
   3015 typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS {
   3016     D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
   3017 } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
   3018 DEFINE_ENUM_FLAG_OPERATORS(D3D12_PROTECTED_RESOURCE_SESSION_FLAGS);
   3019 typedef enum D3D12_PROTECTED_SESSION_STATUS {
   3020     D3D12_PROTECTED_SESSION_STATUS_OK = 0,
   3021     D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
   3022 } D3D12_PROTECTED_SESSION_STATUS;
   3023 typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC {
   3024     UINT NodeMask;
   3025     D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
   3026 } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
   3027 /*****************************************************************************
   3028  * ID3D12Object interface
   3029  */
   3030 #ifndef __ID3D12Object_INTERFACE_DEFINED__
   3031 #define __ID3D12Object_INTERFACE_DEFINED__
   3032 
   3033 DEFINE_GUID(IID_ID3D12Object, 0xc4fec28f, 0x7966, 0x4e95, 0x9f,0x94, 0xf4,0x31,0xcb,0x56,0xc3,0xb8);
   3034 #if defined(__cplusplus) && !defined(CINTERFACE)
   3035 MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
   3036 ID3D12Object : public IUnknown
   3037 {
   3038     virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
   3039         REFGUID guid,
   3040         UINT *data_size,
   3041         void *data) = 0;
   3042 
   3043     virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
   3044         REFGUID guid,
   3045         UINT data_size,
   3046         const void *data) = 0;
   3047 
   3048     virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
   3049         REFGUID guid,
   3050         const IUnknown *data) = 0;
   3051 
   3052     virtual HRESULT STDMETHODCALLTYPE SetName(
   3053         const WCHAR *name) = 0;
   3054 
   3055 };
   3056 #ifdef __CRT_UUID_DECL
   3057 __CRT_UUID_DECL(ID3D12Object, 0xc4fec28f, 0x7966, 0x4e95, 0x9f,0x94, 0xf4,0x31,0xcb,0x56,0xc3,0xb8)
   3058 #endif
   3059 #else
   3060 typedef struct ID3D12ObjectVtbl {
   3061     BEGIN_INTERFACE
   3062 
   3063     /*** IUnknown methods ***/
   3064     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3065         ID3D12Object *This,
   3066         REFIID riid,
   3067         void **ppvObject);
   3068 
   3069     ULONG (STDMETHODCALLTYPE *AddRef)(
   3070         ID3D12Object *This);
   3071 
   3072     ULONG (STDMETHODCALLTYPE *Release)(
   3073         ID3D12Object *This);
   3074 
   3075     /*** ID3D12Object methods ***/
   3076     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   3077         ID3D12Object *This,
   3078         REFGUID guid,
   3079         UINT *data_size,
   3080         void *data);
   3081 
   3082     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   3083         ID3D12Object *This,
   3084         REFGUID guid,
   3085         UINT data_size,
   3086         const void *data);
   3087 
   3088     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   3089         ID3D12Object *This,
   3090         REFGUID guid,
   3091         const IUnknown *data);
   3092 
   3093     HRESULT (STDMETHODCALLTYPE *SetName)(
   3094         ID3D12Object *This,
   3095         const WCHAR *name);
   3096 
   3097     END_INTERFACE
   3098 } ID3D12ObjectVtbl;
   3099 
   3100 interface ID3D12Object {
   3101     CONST_VTBL ID3D12ObjectVtbl* lpVtbl;
   3102 };
   3103 
   3104 #ifdef COBJMACROS
   3105 #ifndef WIDL_C_INLINE_WRAPPERS
   3106 /*** IUnknown methods ***/
   3107 #define ID3D12Object_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3108 #define ID3D12Object_AddRef(This) (This)->lpVtbl->AddRef(This)
   3109 #define ID3D12Object_Release(This) (This)->lpVtbl->Release(This)
   3110 /*** ID3D12Object methods ***/
   3111 #define ID3D12Object_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   3112 #define ID3D12Object_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   3113 #define ID3D12Object_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   3114 #define ID3D12Object_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   3115 #else
   3116 /*** IUnknown methods ***/
   3117 static inline HRESULT ID3D12Object_QueryInterface(ID3D12Object* This,REFIID riid,void **ppvObject) {
   3118     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3119 }
   3120 static inline ULONG ID3D12Object_AddRef(ID3D12Object* This) {
   3121     return This->lpVtbl->AddRef(This);
   3122 }
   3123 static inline ULONG ID3D12Object_Release(ID3D12Object* This) {
   3124     return This->lpVtbl->Release(This);
   3125 }
   3126 /*** ID3D12Object methods ***/
   3127 static inline HRESULT ID3D12Object_GetPrivateData(ID3D12Object* This,REFGUID guid,UINT *data_size,void *data) {
   3128     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   3129 }
   3130 static inline HRESULT ID3D12Object_SetPrivateData(ID3D12Object* This,REFGUID guid,UINT data_size,const void *data) {
   3131     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   3132 }
   3133 static inline HRESULT ID3D12Object_SetPrivateDataInterface(ID3D12Object* This,REFGUID guid,const IUnknown *data) {
   3134     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   3135 }
   3136 static inline HRESULT ID3D12Object_SetName(ID3D12Object* This,const WCHAR *name) {
   3137     return This->lpVtbl->SetName(This,name);
   3138 }
   3139 #endif
   3140 #endif
   3141 
   3142 #endif
   3143 
   3144 
   3145 #endif  /* __ID3D12Object_INTERFACE_DEFINED__ */
   3146 
   3147 /*****************************************************************************
   3148  * ID3D12DeviceChild interface
   3149  */
   3150 #ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
   3151 #define __ID3D12DeviceChild_INTERFACE_DEFINED__
   3152 
   3153 DEFINE_GUID(IID_ID3D12DeviceChild, 0x905db94b, 0xa00c, 0x4140, 0x9d,0xf5, 0x2b,0x64,0xca,0x9e,0xa3,0x57);
   3154 #if defined(__cplusplus) && !defined(CINTERFACE)
   3155 MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
   3156 ID3D12DeviceChild : public ID3D12Object
   3157 {
   3158     virtual HRESULT STDMETHODCALLTYPE GetDevice(
   3159         REFIID riid,
   3160         void **device) = 0;
   3161 
   3162 };
   3163 #ifdef __CRT_UUID_DECL
   3164 __CRT_UUID_DECL(ID3D12DeviceChild, 0x905db94b, 0xa00c, 0x4140, 0x9d,0xf5, 0x2b,0x64,0xca,0x9e,0xa3,0x57)
   3165 #endif
   3166 #else
   3167 typedef struct ID3D12DeviceChildVtbl {
   3168     BEGIN_INTERFACE
   3169 
   3170     /*** IUnknown methods ***/
   3171     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3172         ID3D12DeviceChild *This,
   3173         REFIID riid,
   3174         void **ppvObject);
   3175 
   3176     ULONG (STDMETHODCALLTYPE *AddRef)(
   3177         ID3D12DeviceChild *This);
   3178 
   3179     ULONG (STDMETHODCALLTYPE *Release)(
   3180         ID3D12DeviceChild *This);
   3181 
   3182     /*** ID3D12Object methods ***/
   3183     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   3184         ID3D12DeviceChild *This,
   3185         REFGUID guid,
   3186         UINT *data_size,
   3187         void *data);
   3188 
   3189     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   3190         ID3D12DeviceChild *This,
   3191         REFGUID guid,
   3192         UINT data_size,
   3193         const void *data);
   3194 
   3195     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   3196         ID3D12DeviceChild *This,
   3197         REFGUID guid,
   3198         const IUnknown *data);
   3199 
   3200     HRESULT (STDMETHODCALLTYPE *SetName)(
   3201         ID3D12DeviceChild *This,
   3202         const WCHAR *name);
   3203 
   3204     /*** ID3D12DeviceChild methods ***/
   3205     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   3206         ID3D12DeviceChild *This,
   3207         REFIID riid,
   3208         void **device);
   3209 
   3210     END_INTERFACE
   3211 } ID3D12DeviceChildVtbl;
   3212 
   3213 interface ID3D12DeviceChild {
   3214     CONST_VTBL ID3D12DeviceChildVtbl* lpVtbl;
   3215 };
   3216 
   3217 #ifdef COBJMACROS
   3218 #ifndef WIDL_C_INLINE_WRAPPERS
   3219 /*** IUnknown methods ***/
   3220 #define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3221 #define ID3D12DeviceChild_AddRef(This) (This)->lpVtbl->AddRef(This)
   3222 #define ID3D12DeviceChild_Release(This) (This)->lpVtbl->Release(This)
   3223 /*** ID3D12Object methods ***/
   3224 #define ID3D12DeviceChild_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   3225 #define ID3D12DeviceChild_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   3226 #define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   3227 #define ID3D12DeviceChild_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   3228 /*** ID3D12DeviceChild methods ***/
   3229 #define ID3D12DeviceChild_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   3230 #else
   3231 /*** IUnknown methods ***/
   3232 static inline HRESULT ID3D12DeviceChild_QueryInterface(ID3D12DeviceChild* This,REFIID riid,void **ppvObject) {
   3233     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3234 }
   3235 static inline ULONG ID3D12DeviceChild_AddRef(ID3D12DeviceChild* This) {
   3236     return This->lpVtbl->AddRef(This);
   3237 }
   3238 static inline ULONG ID3D12DeviceChild_Release(ID3D12DeviceChild* This) {
   3239     return This->lpVtbl->Release(This);
   3240 }
   3241 /*** ID3D12Object methods ***/
   3242 static inline HRESULT ID3D12DeviceChild_GetPrivateData(ID3D12DeviceChild* This,REFGUID guid,UINT *data_size,void *data) {
   3243     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   3244 }
   3245 static inline HRESULT ID3D12DeviceChild_SetPrivateData(ID3D12DeviceChild* This,REFGUID guid,UINT data_size,const void *data) {
   3246     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   3247 }
   3248 static inline HRESULT ID3D12DeviceChild_SetPrivateDataInterface(ID3D12DeviceChild* This,REFGUID guid,const IUnknown *data) {
   3249     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   3250 }
   3251 static inline HRESULT ID3D12DeviceChild_SetName(ID3D12DeviceChild* This,const WCHAR *name) {
   3252     return This->lpVtbl->SetName(This,name);
   3253 }
   3254 /*** ID3D12DeviceChild methods ***/
   3255 static inline HRESULT ID3D12DeviceChild_GetDevice(ID3D12DeviceChild* This,REFIID riid,void **device) {
   3256     return This->lpVtbl->GetDevice(This,riid,device);
   3257 }
   3258 #endif
   3259 #endif
   3260 
   3261 #endif
   3262 
   3263 
   3264 #endif  /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
   3265 
   3266 /*****************************************************************************
   3267  * ID3D12Pageable interface
   3268  */
   3269 #ifndef __ID3D12Pageable_INTERFACE_DEFINED__
   3270 #define __ID3D12Pageable_INTERFACE_DEFINED__
   3271 
   3272 DEFINE_GUID(IID_ID3D12Pageable, 0x63ee58fb, 0x1268, 0x4835, 0x86,0xda, 0xf0,0x08,0xce,0x62,0xf0,0xd6);
   3273 #if defined(__cplusplus) && !defined(CINTERFACE)
   3274 MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
   3275 ID3D12Pageable : public ID3D12DeviceChild
   3276 {
   3277 };
   3278 #ifdef __CRT_UUID_DECL
   3279 __CRT_UUID_DECL(ID3D12Pageable, 0x63ee58fb, 0x1268, 0x4835, 0x86,0xda, 0xf0,0x08,0xce,0x62,0xf0,0xd6)
   3280 #endif
   3281 #else
   3282 typedef struct ID3D12PageableVtbl {
   3283     BEGIN_INTERFACE
   3284 
   3285     /*** IUnknown methods ***/
   3286     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3287         ID3D12Pageable *This,
   3288         REFIID riid,
   3289         void **ppvObject);
   3290 
   3291     ULONG (STDMETHODCALLTYPE *AddRef)(
   3292         ID3D12Pageable *This);
   3293 
   3294     ULONG (STDMETHODCALLTYPE *Release)(
   3295         ID3D12Pageable *This);
   3296 
   3297     /*** ID3D12Object methods ***/
   3298     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   3299         ID3D12Pageable *This,
   3300         REFGUID guid,
   3301         UINT *data_size,
   3302         void *data);
   3303 
   3304     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   3305         ID3D12Pageable *This,
   3306         REFGUID guid,
   3307         UINT data_size,
   3308         const void *data);
   3309 
   3310     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   3311         ID3D12Pageable *This,
   3312         REFGUID guid,
   3313         const IUnknown *data);
   3314 
   3315     HRESULT (STDMETHODCALLTYPE *SetName)(
   3316         ID3D12Pageable *This,
   3317         const WCHAR *name);
   3318 
   3319     /*** ID3D12DeviceChild methods ***/
   3320     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   3321         ID3D12Pageable *This,
   3322         REFIID riid,
   3323         void **device);
   3324 
   3325     END_INTERFACE
   3326 } ID3D12PageableVtbl;
   3327 
   3328 interface ID3D12Pageable {
   3329     CONST_VTBL ID3D12PageableVtbl* lpVtbl;
   3330 };
   3331 
   3332 #ifdef COBJMACROS
   3333 #ifndef WIDL_C_INLINE_WRAPPERS
   3334 /*** IUnknown methods ***/
   3335 #define ID3D12Pageable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3336 #define ID3D12Pageable_AddRef(This) (This)->lpVtbl->AddRef(This)
   3337 #define ID3D12Pageable_Release(This) (This)->lpVtbl->Release(This)
   3338 /*** ID3D12Object methods ***/
   3339 #define ID3D12Pageable_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   3340 #define ID3D12Pageable_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   3341 #define ID3D12Pageable_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   3342 #define ID3D12Pageable_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   3343 /*** ID3D12DeviceChild methods ***/
   3344 #define ID3D12Pageable_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   3345 #else
   3346 /*** IUnknown methods ***/
   3347 static inline HRESULT ID3D12Pageable_QueryInterface(ID3D12Pageable* This,REFIID riid,void **ppvObject) {
   3348     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3349 }
   3350 static inline ULONG ID3D12Pageable_AddRef(ID3D12Pageable* This) {
   3351     return This->lpVtbl->AddRef(This);
   3352 }
   3353 static inline ULONG ID3D12Pageable_Release(ID3D12Pageable* This) {
   3354     return This->lpVtbl->Release(This);
   3355 }
   3356 /*** ID3D12Object methods ***/
   3357 static inline HRESULT ID3D12Pageable_GetPrivateData(ID3D12Pageable* This,REFGUID guid,UINT *data_size,void *data) {
   3358     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   3359 }
   3360 static inline HRESULT ID3D12Pageable_SetPrivateData(ID3D12Pageable* This,REFGUID guid,UINT data_size,const void *data) {
   3361     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   3362 }
   3363 static inline HRESULT ID3D12Pageable_SetPrivateDataInterface(ID3D12Pageable* This,REFGUID guid,const IUnknown *data) {
   3364     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   3365 }
   3366 static inline HRESULT ID3D12Pageable_SetName(ID3D12Pageable* This,const WCHAR *name) {
   3367     return This->lpVtbl->SetName(This,name);
   3368 }
   3369 /*** ID3D12DeviceChild methods ***/
   3370 static inline HRESULT ID3D12Pageable_GetDevice(ID3D12Pageable* This,REFIID riid,void **device) {
   3371     return This->lpVtbl->GetDevice(This,riid,device);
   3372 }
   3373 #endif
   3374 #endif
   3375 
   3376 #endif
   3377 
   3378 
   3379 #endif  /* __ID3D12Pageable_INTERFACE_DEFINED__ */
   3380 
   3381 /*****************************************************************************
   3382  * ID3D12Heap interface
   3383  */
   3384 #ifndef __ID3D12Heap_INTERFACE_DEFINED__
   3385 #define __ID3D12Heap_INTERFACE_DEFINED__
   3386 
   3387 DEFINE_GUID(IID_ID3D12Heap, 0x6b3b2502, 0x6e51, 0x45b3, 0x90,0xee, 0x98,0x84,0x26,0x5e,0x8d,0xf3);
   3388 #if defined(__cplusplus) && !defined(CINTERFACE)
   3389 MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
   3390 ID3D12Heap : public ID3D12Pageable
   3391 {
   3392 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   3393     virtual D3D12_HEAP_DESC* STDMETHODCALLTYPE GetDesc(
   3394         D3D12_HEAP_DESC *__ret) = 0;
   3395     D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc(
   3396         )
   3397     {
   3398         D3D12_HEAP_DESC __ret;
   3399         return *GetDesc(&__ret);
   3400     }
   3401 #else
   3402     virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc(
   3403         ) = 0;
   3404 #endif
   3405 
   3406 };
   3407 #ifdef __CRT_UUID_DECL
   3408 __CRT_UUID_DECL(ID3D12Heap, 0x6b3b2502, 0x6e51, 0x45b3, 0x90,0xee, 0x98,0x84,0x26,0x5e,0x8d,0xf3)
   3409 #endif
   3410 #else
   3411 typedef struct ID3D12HeapVtbl {
   3412     BEGIN_INTERFACE
   3413 
   3414     /*** IUnknown methods ***/
   3415     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3416         ID3D12Heap *This,
   3417         REFIID riid,
   3418         void **ppvObject);
   3419 
   3420     ULONG (STDMETHODCALLTYPE *AddRef)(
   3421         ID3D12Heap *This);
   3422 
   3423     ULONG (STDMETHODCALLTYPE *Release)(
   3424         ID3D12Heap *This);
   3425 
   3426     /*** ID3D12Object methods ***/
   3427     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   3428         ID3D12Heap *This,
   3429         REFGUID guid,
   3430         UINT *data_size,
   3431         void *data);
   3432 
   3433     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   3434         ID3D12Heap *This,
   3435         REFGUID guid,
   3436         UINT data_size,
   3437         const void *data);
   3438 
   3439     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   3440         ID3D12Heap *This,
   3441         REFGUID guid,
   3442         const IUnknown *data);
   3443 
   3444     HRESULT (STDMETHODCALLTYPE *SetName)(
   3445         ID3D12Heap *This,
   3446         const WCHAR *name);
   3447 
   3448     /*** ID3D12DeviceChild methods ***/
   3449     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   3450         ID3D12Heap *This,
   3451         REFIID riid,
   3452         void **device);
   3453 
   3454     /*** ID3D12Heap methods ***/
   3455     D3D12_HEAP_DESC * (STDMETHODCALLTYPE *GetDesc)(
   3456         ID3D12Heap *This,
   3457         D3D12_HEAP_DESC *__ret);
   3458 
   3459     END_INTERFACE
   3460 } ID3D12HeapVtbl;
   3461 
   3462 interface ID3D12Heap {
   3463     CONST_VTBL ID3D12HeapVtbl* lpVtbl;
   3464 };
   3465 
   3466 #ifdef COBJMACROS
   3467 #ifndef WIDL_C_INLINE_WRAPPERS
   3468 /*** IUnknown methods ***/
   3469 #define ID3D12Heap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3470 #define ID3D12Heap_AddRef(This) (This)->lpVtbl->AddRef(This)
   3471 #define ID3D12Heap_Release(This) (This)->lpVtbl->Release(This)
   3472 /*** ID3D12Object methods ***/
   3473 #define ID3D12Heap_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   3474 #define ID3D12Heap_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   3475 #define ID3D12Heap_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   3476 #define ID3D12Heap_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   3477 /*** ID3D12DeviceChild methods ***/
   3478 #define ID3D12Heap_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   3479 /*** ID3D12Heap methods ***/
   3480 #define ID3D12Heap_GetDesc(This) ID3D12Heap_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   3481 #else
   3482 /*** IUnknown methods ***/
   3483 static inline HRESULT ID3D12Heap_QueryInterface(ID3D12Heap* This,REFIID riid,void **ppvObject) {
   3484     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3485 }
   3486 static inline ULONG ID3D12Heap_AddRef(ID3D12Heap* This) {
   3487     return This->lpVtbl->AddRef(This);
   3488 }
   3489 static inline ULONG ID3D12Heap_Release(ID3D12Heap* This) {
   3490     return This->lpVtbl->Release(This);
   3491 }
   3492 /*** ID3D12Object methods ***/
   3493 static inline HRESULT ID3D12Heap_GetPrivateData(ID3D12Heap* This,REFGUID guid,UINT *data_size,void *data) {
   3494     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   3495 }
   3496 static inline HRESULT ID3D12Heap_SetPrivateData(ID3D12Heap* This,REFGUID guid,UINT data_size,const void *data) {
   3497     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   3498 }
   3499 static inline HRESULT ID3D12Heap_SetPrivateDataInterface(ID3D12Heap* This,REFGUID guid,const IUnknown *data) {
   3500     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   3501 }
   3502 static inline HRESULT ID3D12Heap_SetName(ID3D12Heap* This,const WCHAR *name) {
   3503     return This->lpVtbl->SetName(This,name);
   3504 }
   3505 /*** ID3D12DeviceChild methods ***/
   3506 static inline HRESULT ID3D12Heap_GetDevice(ID3D12Heap* This,REFIID riid,void **device) {
   3507     return This->lpVtbl->GetDevice(This,riid,device);
   3508 }
   3509 /*** ID3D12Heap methods ***/
   3510 static inline D3D12_HEAP_DESC ID3D12Heap_GetDesc(ID3D12Heap* This) {
   3511     D3D12_HEAP_DESC __ret;
   3512     return *This->lpVtbl->GetDesc(This,&__ret);
   3513 }
   3514 #endif
   3515 #endif
   3516 
   3517 #endif
   3518 
   3519 
   3520 #endif  /* __ID3D12Heap_INTERFACE_DEFINED__ */
   3521 
   3522 /*****************************************************************************
   3523  * ID3D12Resource interface
   3524  */
   3525 #ifndef __ID3D12Resource_INTERFACE_DEFINED__
   3526 #define __ID3D12Resource_INTERFACE_DEFINED__
   3527 
   3528 DEFINE_GUID(IID_ID3D12Resource, 0x696442be, 0xa72e, 0x4059, 0xbc,0x79, 0x5b,0x5c,0x98,0x04,0x0f,0xad);
   3529 #if defined(__cplusplus) && !defined(CINTERFACE)
   3530 MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
   3531 ID3D12Resource : public ID3D12Pageable
   3532 {
   3533     virtual HRESULT STDMETHODCALLTYPE Map(
   3534         UINT sub_resource,
   3535         const D3D12_RANGE *read_range,
   3536         void **data) = 0;
   3537 
   3538     virtual void STDMETHODCALLTYPE Unmap(
   3539         UINT sub_resource,
   3540         const D3D12_RANGE *written_range) = 0;
   3541 
   3542 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   3543     virtual D3D12_RESOURCE_DESC* STDMETHODCALLTYPE GetDesc(
   3544         D3D12_RESOURCE_DESC *__ret) = 0;
   3545     D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc(
   3546         )
   3547     {
   3548         D3D12_RESOURCE_DESC __ret;
   3549         return *GetDesc(&__ret);
   3550     }
   3551 #else
   3552     virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc(
   3553         ) = 0;
   3554 #endif
   3555 
   3556     virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress(
   3557         ) = 0;
   3558 
   3559     virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
   3560         UINT dst_sub_resource,
   3561         const D3D12_BOX *dst_box,
   3562         const void *src_data,
   3563         UINT src_row_pitch,
   3564         UINT src_slice_pitch) = 0;
   3565 
   3566     virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
   3567         void *dst_data,
   3568         UINT dst_row_pitch,
   3569         UINT dst_slice_pitch,
   3570         UINT src_sub_resource,
   3571         const D3D12_BOX *src_box) = 0;
   3572 
   3573     virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
   3574         D3D12_HEAP_PROPERTIES *heap_properties,
   3575         D3D12_HEAP_FLAGS *flags) = 0;
   3576 
   3577 };
   3578 #ifdef __CRT_UUID_DECL
   3579 __CRT_UUID_DECL(ID3D12Resource, 0x696442be, 0xa72e, 0x4059, 0xbc,0x79, 0x5b,0x5c,0x98,0x04,0x0f,0xad)
   3580 #endif
   3581 #else
   3582 typedef struct ID3D12ResourceVtbl {
   3583     BEGIN_INTERFACE
   3584 
   3585     /*** IUnknown methods ***/
   3586     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3587         ID3D12Resource *This,
   3588         REFIID riid,
   3589         void **ppvObject);
   3590 
   3591     ULONG (STDMETHODCALLTYPE *AddRef)(
   3592         ID3D12Resource *This);
   3593 
   3594     ULONG (STDMETHODCALLTYPE *Release)(
   3595         ID3D12Resource *This);
   3596 
   3597     /*** ID3D12Object methods ***/
   3598     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   3599         ID3D12Resource *This,
   3600         REFGUID guid,
   3601         UINT *data_size,
   3602         void *data);
   3603 
   3604     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   3605         ID3D12Resource *This,
   3606         REFGUID guid,
   3607         UINT data_size,
   3608         const void *data);
   3609 
   3610     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   3611         ID3D12Resource *This,
   3612         REFGUID guid,
   3613         const IUnknown *data);
   3614 
   3615     HRESULT (STDMETHODCALLTYPE *SetName)(
   3616         ID3D12Resource *This,
   3617         const WCHAR *name);
   3618 
   3619     /*** ID3D12DeviceChild methods ***/
   3620     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   3621         ID3D12Resource *This,
   3622         REFIID riid,
   3623         void **device);
   3624 
   3625     /*** ID3D12Resource methods ***/
   3626     HRESULT (STDMETHODCALLTYPE *Map)(
   3627         ID3D12Resource *This,
   3628         UINT sub_resource,
   3629         const D3D12_RANGE *read_range,
   3630         void **data);
   3631 
   3632     void (STDMETHODCALLTYPE *Unmap)(
   3633         ID3D12Resource *This,
   3634         UINT sub_resource,
   3635         const D3D12_RANGE *written_range);
   3636 
   3637     D3D12_RESOURCE_DESC * (STDMETHODCALLTYPE *GetDesc)(
   3638         ID3D12Resource *This,
   3639         D3D12_RESOURCE_DESC *__ret);
   3640 
   3641     D3D12_GPU_VIRTUAL_ADDRESS (STDMETHODCALLTYPE *GetGPUVirtualAddress)(
   3642         ID3D12Resource *This);
   3643 
   3644     HRESULT (STDMETHODCALLTYPE *WriteToSubresource)(
   3645         ID3D12Resource *This,
   3646         UINT dst_sub_resource,
   3647         const D3D12_BOX *dst_box,
   3648         const void *src_data,
   3649         UINT src_row_pitch,
   3650         UINT src_slice_pitch);
   3651 
   3652     HRESULT (STDMETHODCALLTYPE *ReadFromSubresource)(
   3653         ID3D12Resource *This,
   3654         void *dst_data,
   3655         UINT dst_row_pitch,
   3656         UINT dst_slice_pitch,
   3657         UINT src_sub_resource,
   3658         const D3D12_BOX *src_box);
   3659 
   3660     HRESULT (STDMETHODCALLTYPE *GetHeapProperties)(
   3661         ID3D12Resource *This,
   3662         D3D12_HEAP_PROPERTIES *heap_properties,
   3663         D3D12_HEAP_FLAGS *flags);
   3664 
   3665     END_INTERFACE
   3666 } ID3D12ResourceVtbl;
   3667 
   3668 interface ID3D12Resource {
   3669     CONST_VTBL ID3D12ResourceVtbl* lpVtbl;
   3670 };
   3671 
   3672 #ifdef COBJMACROS
   3673 #ifndef WIDL_C_INLINE_WRAPPERS
   3674 /*** IUnknown methods ***/
   3675 #define ID3D12Resource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3676 #define ID3D12Resource_AddRef(This) (This)->lpVtbl->AddRef(This)
   3677 #define ID3D12Resource_Release(This) (This)->lpVtbl->Release(This)
   3678 /*** ID3D12Object methods ***/
   3679 #define ID3D12Resource_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   3680 #define ID3D12Resource_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   3681 #define ID3D12Resource_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   3682 #define ID3D12Resource_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   3683 /*** ID3D12DeviceChild methods ***/
   3684 #define ID3D12Resource_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   3685 /*** ID3D12Resource methods ***/
   3686 #define ID3D12Resource_Map(This,sub_resource,read_range,data) (This)->lpVtbl->Map(This,sub_resource,read_range,data)
   3687 #define ID3D12Resource_Unmap(This,sub_resource,written_range) (This)->lpVtbl->Unmap(This,sub_resource,written_range)
   3688 #define ID3D12Resource_GetDesc(This) ID3D12Resource_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   3689 #define ID3D12Resource_GetGPUVirtualAddress(This) (This)->lpVtbl->GetGPUVirtualAddress(This)
   3690 #define ID3D12Resource_WriteToSubresource(This,dst_sub_resource,dst_box,src_data,src_row_pitch,src_slice_pitch) (This)->lpVtbl->WriteToSubresource(This,dst_sub_resource,dst_box,src_data,src_row_pitch,src_slice_pitch)
   3691 #define ID3D12Resource_ReadFromSubresource(This,dst_data,dst_row_pitch,dst_slice_pitch,src_sub_resource,src_box) (This)->lpVtbl->ReadFromSubresource(This,dst_data,dst_row_pitch,dst_slice_pitch,src_sub_resource,src_box)
   3692 #define ID3D12Resource_GetHeapProperties(This,heap_properties,flags) (This)->lpVtbl->GetHeapProperties(This,heap_properties,flags)
   3693 #else
   3694 /*** IUnknown methods ***/
   3695 static inline HRESULT ID3D12Resource_QueryInterface(ID3D12Resource* This,REFIID riid,void **ppvObject) {
   3696     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3697 }
   3698 static inline ULONG ID3D12Resource_AddRef(ID3D12Resource* This) {
   3699     return This->lpVtbl->AddRef(This);
   3700 }
   3701 static inline ULONG ID3D12Resource_Release(ID3D12Resource* This) {
   3702     return This->lpVtbl->Release(This);
   3703 }
   3704 /*** ID3D12Object methods ***/
   3705 static inline HRESULT ID3D12Resource_GetPrivateData(ID3D12Resource* This,REFGUID guid,UINT *data_size,void *data) {
   3706     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   3707 }
   3708 static inline HRESULT ID3D12Resource_SetPrivateData(ID3D12Resource* This,REFGUID guid,UINT data_size,const void *data) {
   3709     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   3710 }
   3711 static inline HRESULT ID3D12Resource_SetPrivateDataInterface(ID3D12Resource* This,REFGUID guid,const IUnknown *data) {
   3712     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   3713 }
   3714 static inline HRESULT ID3D12Resource_SetName(ID3D12Resource* This,const WCHAR *name) {
   3715     return This->lpVtbl->SetName(This,name);
   3716 }
   3717 /*** ID3D12DeviceChild methods ***/
   3718 static inline HRESULT ID3D12Resource_GetDevice(ID3D12Resource* This,REFIID riid,void **device) {
   3719     return This->lpVtbl->GetDevice(This,riid,device);
   3720 }
   3721 /*** ID3D12Resource methods ***/
   3722 static inline HRESULT ID3D12Resource_Map(ID3D12Resource* This,UINT sub_resource,const D3D12_RANGE *read_range,void **data) {
   3723     return This->lpVtbl->Map(This,sub_resource,read_range,data);
   3724 }
   3725 static inline void ID3D12Resource_Unmap(ID3D12Resource* This,UINT sub_resource,const D3D12_RANGE *written_range) {
   3726     This->lpVtbl->Unmap(This,sub_resource,written_range);
   3727 }
   3728 static inline D3D12_RESOURCE_DESC ID3D12Resource_GetDesc(ID3D12Resource* This) {
   3729     D3D12_RESOURCE_DESC __ret;
   3730     return *This->lpVtbl->GetDesc(This,&__ret);
   3731 }
   3732 static inline D3D12_GPU_VIRTUAL_ADDRESS ID3D12Resource_GetGPUVirtualAddress(ID3D12Resource* This) {
   3733     return This->lpVtbl->GetGPUVirtualAddress(This);
   3734 }
   3735 static inline HRESULT ID3D12Resource_WriteToSubresource(ID3D12Resource* This,UINT dst_sub_resource,const D3D12_BOX *dst_box,const void *src_data,UINT src_row_pitch,UINT src_slice_pitch) {
   3736     return This->lpVtbl->WriteToSubresource(This,dst_sub_resource,dst_box,src_data,src_row_pitch,src_slice_pitch);
   3737 }
   3738 static inline HRESULT ID3D12Resource_ReadFromSubresource(ID3D12Resource* This,void *dst_data,UINT dst_row_pitch,UINT dst_slice_pitch,UINT src_sub_resource,const D3D12_BOX *src_box) {
   3739     return This->lpVtbl->ReadFromSubresource(This,dst_data,dst_row_pitch,dst_slice_pitch,src_sub_resource,src_box);
   3740 }
   3741 static inline HRESULT ID3D12Resource_GetHeapProperties(ID3D12Resource* This,D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS *flags) {
   3742     return This->lpVtbl->GetHeapProperties(This,heap_properties,flags);
   3743 }
   3744 #endif
   3745 #endif
   3746 
   3747 #endif
   3748 
   3749 
   3750 #endif  /* __ID3D12Resource_INTERFACE_DEFINED__ */
   3751 
   3752 /*****************************************************************************
   3753  * ID3D12CommandList interface
   3754  */
   3755 #ifndef __ID3D12CommandList_INTERFACE_DEFINED__
   3756 #define __ID3D12CommandList_INTERFACE_DEFINED__
   3757 
   3758 DEFINE_GUID(IID_ID3D12CommandList, 0x7116d91c, 0xe7e4, 0x47ce, 0xb8,0xc6, 0xec,0x81,0x68,0xf4,0x37,0xe5);
   3759 #if defined(__cplusplus) && !defined(CINTERFACE)
   3760 MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
   3761 ID3D12CommandList : public ID3D12DeviceChild
   3762 {
   3763     virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType(
   3764         ) = 0;
   3765 
   3766 };
   3767 #ifdef __CRT_UUID_DECL
   3768 __CRT_UUID_DECL(ID3D12CommandList, 0x7116d91c, 0xe7e4, 0x47ce, 0xb8,0xc6, 0xec,0x81,0x68,0xf4,0x37,0xe5)
   3769 #endif
   3770 #else
   3771 typedef struct ID3D12CommandListVtbl {
   3772     BEGIN_INTERFACE
   3773 
   3774     /*** IUnknown methods ***/
   3775     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3776         ID3D12CommandList *This,
   3777         REFIID riid,
   3778         void **ppvObject);
   3779 
   3780     ULONG (STDMETHODCALLTYPE *AddRef)(
   3781         ID3D12CommandList *This);
   3782 
   3783     ULONG (STDMETHODCALLTYPE *Release)(
   3784         ID3D12CommandList *This);
   3785 
   3786     /*** ID3D12Object methods ***/
   3787     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   3788         ID3D12CommandList *This,
   3789         REFGUID guid,
   3790         UINT *data_size,
   3791         void *data);
   3792 
   3793     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   3794         ID3D12CommandList *This,
   3795         REFGUID guid,
   3796         UINT data_size,
   3797         const void *data);
   3798 
   3799     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   3800         ID3D12CommandList *This,
   3801         REFGUID guid,
   3802         const IUnknown *data);
   3803 
   3804     HRESULT (STDMETHODCALLTYPE *SetName)(
   3805         ID3D12CommandList *This,
   3806         const WCHAR *name);
   3807 
   3808     /*** ID3D12DeviceChild methods ***/
   3809     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   3810         ID3D12CommandList *This,
   3811         REFIID riid,
   3812         void **device);
   3813 
   3814     /*** ID3D12CommandList methods ***/
   3815     D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
   3816         ID3D12CommandList *This);
   3817 
   3818     END_INTERFACE
   3819 } ID3D12CommandListVtbl;
   3820 
   3821 interface ID3D12CommandList {
   3822     CONST_VTBL ID3D12CommandListVtbl* lpVtbl;
   3823 };
   3824 
   3825 #ifdef COBJMACROS
   3826 #ifndef WIDL_C_INLINE_WRAPPERS
   3827 /*** IUnknown methods ***/
   3828 #define ID3D12CommandList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3829 #define ID3D12CommandList_AddRef(This) (This)->lpVtbl->AddRef(This)
   3830 #define ID3D12CommandList_Release(This) (This)->lpVtbl->Release(This)
   3831 /*** ID3D12Object methods ***/
   3832 #define ID3D12CommandList_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   3833 #define ID3D12CommandList_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   3834 #define ID3D12CommandList_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   3835 #define ID3D12CommandList_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   3836 /*** ID3D12DeviceChild methods ***/
   3837 #define ID3D12CommandList_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   3838 /*** ID3D12CommandList methods ***/
   3839 #define ID3D12CommandList_GetType(This) (This)->lpVtbl->GetType(This)
   3840 #else
   3841 /*** IUnknown methods ***/
   3842 static inline HRESULT ID3D12CommandList_QueryInterface(ID3D12CommandList* This,REFIID riid,void **ppvObject) {
   3843     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3844 }
   3845 static inline ULONG ID3D12CommandList_AddRef(ID3D12CommandList* This) {
   3846     return This->lpVtbl->AddRef(This);
   3847 }
   3848 static inline ULONG ID3D12CommandList_Release(ID3D12CommandList* This) {
   3849     return This->lpVtbl->Release(This);
   3850 }
   3851 /*** ID3D12Object methods ***/
   3852 static inline HRESULT ID3D12CommandList_GetPrivateData(ID3D12CommandList* This,REFGUID guid,UINT *data_size,void *data) {
   3853     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   3854 }
   3855 static inline HRESULT ID3D12CommandList_SetPrivateData(ID3D12CommandList* This,REFGUID guid,UINT data_size,const void *data) {
   3856     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   3857 }
   3858 static inline HRESULT ID3D12CommandList_SetPrivateDataInterface(ID3D12CommandList* This,REFGUID guid,const IUnknown *data) {
   3859     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   3860 }
   3861 static inline HRESULT ID3D12CommandList_SetName(ID3D12CommandList* This,const WCHAR *name) {
   3862     return This->lpVtbl->SetName(This,name);
   3863 }
   3864 /*** ID3D12DeviceChild methods ***/
   3865 static inline HRESULT ID3D12CommandList_GetDevice(ID3D12CommandList* This,REFIID riid,void **device) {
   3866     return This->lpVtbl->GetDevice(This,riid,device);
   3867 }
   3868 /*** ID3D12CommandList methods ***/
   3869 static inline D3D12_COMMAND_LIST_TYPE ID3D12CommandList_GetType(ID3D12CommandList* This) {
   3870     return This->lpVtbl->GetType(This);
   3871 }
   3872 #endif
   3873 #endif
   3874 
   3875 #endif
   3876 
   3877 
   3878 #endif  /* __ID3D12CommandList_INTERFACE_DEFINED__ */
   3879 
   3880 typedef enum D3D12_TILE_COPY_FLAGS {
   3881     D3D12_TILE_COPY_FLAG_NONE = 0x0,
   3882     D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
   3883     D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
   3884     D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
   3885 } D3D12_TILE_COPY_FLAGS;
   3886 DEFINE_ENUM_FLAG_OPERATORS(D3D12_TILE_COPY_FLAGS);
   3887 typedef struct D3D12_INDEX_BUFFER_VIEW {
   3888     D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
   3889     UINT SizeInBytes;
   3890     DXGI_FORMAT Format;
   3891 } D3D12_INDEX_BUFFER_VIEW;
   3892 typedef struct D3D12_VERTEX_BUFFER_VIEW {
   3893     D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
   3894     UINT SizeInBytes;
   3895     UINT StrideInBytes;
   3896 } D3D12_VERTEX_BUFFER_VIEW;
   3897 typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW {
   3898     D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
   3899     UINT64 SizeInBytes;
   3900     D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
   3901 } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
   3902 typedef enum D3D12_CLEAR_FLAGS {
   3903     D3D12_CLEAR_FLAG_DEPTH = 0x1,
   3904     D3D12_CLEAR_FLAG_STENCIL = 0x2
   3905 } D3D12_CLEAR_FLAGS;
   3906 DEFINE_ENUM_FLAG_OPERATORS(D3D12_CLEAR_FLAGS);
   3907 typedef struct D3D12_DISCARD_REGION {
   3908     UINT NumRects;
   3909     const D3D12_RECT *pRects;
   3910     UINT FirstSubresource;
   3911     UINT NumSubresources;
   3912 } D3D12_DISCARD_REGION;
   3913 typedef enum D3D12_QUERY_TYPE {
   3914     D3D12_QUERY_TYPE_OCCLUSION = 0,
   3915     D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
   3916     D3D12_QUERY_TYPE_TIMESTAMP = 2,
   3917     D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
   3918     D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
   3919     D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
   3920     D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
   3921     D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
   3922     D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
   3923     D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10
   3924 } D3D12_QUERY_TYPE;
   3925 typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS {
   3926     UINT64 IAVertices;
   3927     UINT64 IAPrimitives;
   3928     UINT64 VSInvocations;
   3929     UINT64 GSInvocations;
   3930     UINT64 GSPrimitives;
   3931     UINT64 CInvocations;
   3932     UINT64 CPrimitives;
   3933     UINT64 PSInvocations;
   3934     UINT64 HSInvocations;
   3935     UINT64 DSInvocations;
   3936     UINT64 CSInvocations;
   3937 } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
   3938 typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1 {
   3939     UINT64 IAVertices;
   3940     UINT64 IAPrimitives;
   3941     UINT64 VSInvocations;
   3942     UINT64 GSInvocations;
   3943     UINT64 GSPrimitives;
   3944     UINT64 CInvocations;
   3945     UINT64 CPrimitives;
   3946     UINT64 PSInvocations;
   3947     UINT64 HSInvocations;
   3948     UINT64 DSInvocations;
   3949     UINT64 CSInvocations;
   3950     UINT64 ASInvocations;
   3951     UINT64 MSInvocations;
   3952     UINT64 MSPrimitives;
   3953 } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
   3954 typedef struct D3D12_QUERY_DATA_SO_STATISTICS {
   3955     UINT64 NumPrimitivesWritten;
   3956     UINT64 PrimitivesStorageNeeded;
   3957 } D3D12_QUERY_DATA_SO_STATISTICS;
   3958 typedef enum D3D12_PREDICATION_OP {
   3959     D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
   3960     D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
   3961 } D3D12_PREDICATION_OP;
   3962 /*****************************************************************************
   3963  * ID3D12DescriptorHeap interface
   3964  */
   3965 #ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
   3966 #define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
   3967 
   3968 DEFINE_GUID(IID_ID3D12DescriptorHeap, 0x8efb471d, 0x616c, 0x4f49, 0x90,0xf7, 0x12,0x7b,0xb7,0x63,0xfa,0x51);
   3969 #if defined(__cplusplus) && !defined(CINTERFACE)
   3970 MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
   3971 ID3D12DescriptorHeap : public ID3D12Pageable
   3972 {
   3973 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   3974     virtual D3D12_DESCRIPTOR_HEAP_DESC* STDMETHODCALLTYPE GetDesc(
   3975         D3D12_DESCRIPTOR_HEAP_DESC *__ret) = 0;
   3976     D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc(
   3977         )
   3978     {
   3979         D3D12_DESCRIPTOR_HEAP_DESC __ret;
   3980         return *GetDesc(&__ret);
   3981     }
   3982 #else
   3983     virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc(
   3984         ) = 0;
   3985 #endif
   3986 
   3987 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   3988     virtual D3D12_CPU_DESCRIPTOR_HANDLE* STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart(
   3989         D3D12_CPU_DESCRIPTOR_HANDLE *__ret) = 0;
   3990     D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart(
   3991         )
   3992     {
   3993         D3D12_CPU_DESCRIPTOR_HANDLE __ret;
   3994         return *GetCPUDescriptorHandleForHeapStart(&__ret);
   3995     }
   3996 #else
   3997     virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart(
   3998         ) = 0;
   3999 #endif
   4000 
   4001 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   4002     virtual D3D12_GPU_DESCRIPTOR_HANDLE* STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart(
   4003         D3D12_GPU_DESCRIPTOR_HANDLE *__ret) = 0;
   4004     D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart(
   4005         )
   4006     {
   4007         D3D12_GPU_DESCRIPTOR_HANDLE __ret;
   4008         return *GetGPUDescriptorHandleForHeapStart(&__ret);
   4009     }
   4010 #else
   4011     virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart(
   4012         ) = 0;
   4013 #endif
   4014 
   4015 };
   4016 #ifdef __CRT_UUID_DECL
   4017 __CRT_UUID_DECL(ID3D12DescriptorHeap, 0x8efb471d, 0x616c, 0x4f49, 0x90,0xf7, 0x12,0x7b,0xb7,0x63,0xfa,0x51)
   4018 #endif
   4019 #else
   4020 typedef struct ID3D12DescriptorHeapVtbl {
   4021     BEGIN_INTERFACE
   4022 
   4023     /*** IUnknown methods ***/
   4024     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4025         ID3D12DescriptorHeap *This,
   4026         REFIID riid,
   4027         void **ppvObject);
   4028 
   4029     ULONG (STDMETHODCALLTYPE *AddRef)(
   4030         ID3D12DescriptorHeap *This);
   4031 
   4032     ULONG (STDMETHODCALLTYPE *Release)(
   4033         ID3D12DescriptorHeap *This);
   4034 
   4035     /*** ID3D12Object methods ***/
   4036     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   4037         ID3D12DescriptorHeap *This,
   4038         REFGUID guid,
   4039         UINT *data_size,
   4040         void *data);
   4041 
   4042     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   4043         ID3D12DescriptorHeap *This,
   4044         REFGUID guid,
   4045         UINT data_size,
   4046         const void *data);
   4047 
   4048     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   4049         ID3D12DescriptorHeap *This,
   4050         REFGUID guid,
   4051         const IUnknown *data);
   4052 
   4053     HRESULT (STDMETHODCALLTYPE *SetName)(
   4054         ID3D12DescriptorHeap *This,
   4055         const WCHAR *name);
   4056 
   4057     /*** ID3D12DeviceChild methods ***/
   4058     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   4059         ID3D12DescriptorHeap *This,
   4060         REFIID riid,
   4061         void **device);
   4062 
   4063     /*** ID3D12DescriptorHeap methods ***/
   4064     D3D12_DESCRIPTOR_HEAP_DESC * (STDMETHODCALLTYPE *GetDesc)(
   4065         ID3D12DescriptorHeap *This,
   4066         D3D12_DESCRIPTOR_HEAP_DESC *__ret);
   4067 
   4068     D3D12_CPU_DESCRIPTOR_HANDLE * (STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart)(
   4069         ID3D12DescriptorHeap *This,
   4070         D3D12_CPU_DESCRIPTOR_HANDLE *__ret);
   4071 
   4072     D3D12_GPU_DESCRIPTOR_HANDLE * (STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart)(
   4073         ID3D12DescriptorHeap *This,
   4074         D3D12_GPU_DESCRIPTOR_HANDLE *__ret);
   4075 
   4076     END_INTERFACE
   4077 } ID3D12DescriptorHeapVtbl;
   4078 
   4079 interface ID3D12DescriptorHeap {
   4080     CONST_VTBL ID3D12DescriptorHeapVtbl* lpVtbl;
   4081 };
   4082 
   4083 #ifdef COBJMACROS
   4084 #ifndef WIDL_C_INLINE_WRAPPERS
   4085 /*** IUnknown methods ***/
   4086 #define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4087 #define ID3D12DescriptorHeap_AddRef(This) (This)->lpVtbl->AddRef(This)
   4088 #define ID3D12DescriptorHeap_Release(This) (This)->lpVtbl->Release(This)
   4089 /*** ID3D12Object methods ***/
   4090 #define ID3D12DescriptorHeap_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   4091 #define ID3D12DescriptorHeap_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   4092 #define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   4093 #define ID3D12DescriptorHeap_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   4094 /*** ID3D12DeviceChild methods ***/
   4095 #define ID3D12DescriptorHeap_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   4096 /*** ID3D12DescriptorHeap methods ***/
   4097 #define ID3D12DescriptorHeap_GetDesc(This) ID3D12DescriptorHeap_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   4098 #define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This) ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   4099 #define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This) ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   4100 #else
   4101 /*** IUnknown methods ***/
   4102 static inline HRESULT ID3D12DescriptorHeap_QueryInterface(ID3D12DescriptorHeap* This,REFIID riid,void **ppvObject) {
   4103     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4104 }
   4105 static inline ULONG ID3D12DescriptorHeap_AddRef(ID3D12DescriptorHeap* This) {
   4106     return This->lpVtbl->AddRef(This);
   4107 }
   4108 static inline ULONG ID3D12DescriptorHeap_Release(ID3D12DescriptorHeap* This) {
   4109     return This->lpVtbl->Release(This);
   4110 }
   4111 /*** ID3D12Object methods ***/
   4112 static inline HRESULT ID3D12DescriptorHeap_GetPrivateData(ID3D12DescriptorHeap* This,REFGUID guid,UINT *data_size,void *data) {
   4113     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   4114 }
   4115 static inline HRESULT ID3D12DescriptorHeap_SetPrivateData(ID3D12DescriptorHeap* This,REFGUID guid,UINT data_size,const void *data) {
   4116     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   4117 }
   4118 static inline HRESULT ID3D12DescriptorHeap_SetPrivateDataInterface(ID3D12DescriptorHeap* This,REFGUID guid,const IUnknown *data) {
   4119     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   4120 }
   4121 static inline HRESULT ID3D12DescriptorHeap_SetName(ID3D12DescriptorHeap* This,const WCHAR *name) {
   4122     return This->lpVtbl->SetName(This,name);
   4123 }
   4124 /*** ID3D12DeviceChild methods ***/
   4125 static inline HRESULT ID3D12DescriptorHeap_GetDevice(ID3D12DescriptorHeap* This,REFIID riid,void **device) {
   4126     return This->lpVtbl->GetDevice(This,riid,device);
   4127 }
   4128 /*** ID3D12DescriptorHeap methods ***/
   4129 static inline D3D12_DESCRIPTOR_HEAP_DESC ID3D12DescriptorHeap_GetDesc(ID3D12DescriptorHeap* This) {
   4130     D3D12_DESCRIPTOR_HEAP_DESC __ret;
   4131     return *This->lpVtbl->GetDesc(This,&__ret);
   4132 }
   4133 static inline D3D12_CPU_DESCRIPTOR_HANDLE ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(ID3D12DescriptorHeap* This) {
   4134     D3D12_CPU_DESCRIPTOR_HANDLE __ret;
   4135     return *This->lpVtbl->GetCPUDescriptorHandleForHeapStart(This,&__ret);
   4136 }
   4137 static inline D3D12_GPU_DESCRIPTOR_HANDLE ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(ID3D12DescriptorHeap* This) {
   4138     D3D12_GPU_DESCRIPTOR_HANDLE __ret;
   4139     return *This->lpVtbl->GetGPUDescriptorHandleForHeapStart(This,&__ret);
   4140 }
   4141 #endif
   4142 #endif
   4143 
   4144 #endif
   4145 
   4146 
   4147 #endif  /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
   4148 
   4149 /*****************************************************************************
   4150  * ID3D12QueryHeap interface
   4151  */
   4152 #ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
   4153 #define __ID3D12QueryHeap_INTERFACE_DEFINED__
   4154 
   4155 DEFINE_GUID(IID_ID3D12QueryHeap, 0x0d9658ae, 0xed45, 0x469e, 0xa6,0x1d, 0x97,0x0e,0xc5,0x83,0xca,0xb4);
   4156 #if defined(__cplusplus) && !defined(CINTERFACE)
   4157 MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
   4158 ID3D12QueryHeap : public ID3D12Pageable
   4159 {
   4160 };
   4161 #ifdef __CRT_UUID_DECL
   4162 __CRT_UUID_DECL(ID3D12QueryHeap, 0x0d9658ae, 0xed45, 0x469e, 0xa6,0x1d, 0x97,0x0e,0xc5,0x83,0xca,0xb4)
   4163 #endif
   4164 #else
   4165 typedef struct ID3D12QueryHeapVtbl {
   4166     BEGIN_INTERFACE
   4167 
   4168     /*** IUnknown methods ***/
   4169     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4170         ID3D12QueryHeap *This,
   4171         REFIID riid,
   4172         void **ppvObject);
   4173 
   4174     ULONG (STDMETHODCALLTYPE *AddRef)(
   4175         ID3D12QueryHeap *This);
   4176 
   4177     ULONG (STDMETHODCALLTYPE *Release)(
   4178         ID3D12QueryHeap *This);
   4179 
   4180     /*** ID3D12Object methods ***/
   4181     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   4182         ID3D12QueryHeap *This,
   4183         REFGUID guid,
   4184         UINT *data_size,
   4185         void *data);
   4186 
   4187     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   4188         ID3D12QueryHeap *This,
   4189         REFGUID guid,
   4190         UINT data_size,
   4191         const void *data);
   4192 
   4193     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   4194         ID3D12QueryHeap *This,
   4195         REFGUID guid,
   4196         const IUnknown *data);
   4197 
   4198     HRESULT (STDMETHODCALLTYPE *SetName)(
   4199         ID3D12QueryHeap *This,
   4200         const WCHAR *name);
   4201 
   4202     /*** ID3D12DeviceChild methods ***/
   4203     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   4204         ID3D12QueryHeap *This,
   4205         REFIID riid,
   4206         void **device);
   4207 
   4208     END_INTERFACE
   4209 } ID3D12QueryHeapVtbl;
   4210 
   4211 interface ID3D12QueryHeap {
   4212     CONST_VTBL ID3D12QueryHeapVtbl* lpVtbl;
   4213 };
   4214 
   4215 #ifdef COBJMACROS
   4216 #ifndef WIDL_C_INLINE_WRAPPERS
   4217 /*** IUnknown methods ***/
   4218 #define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4219 #define ID3D12QueryHeap_AddRef(This) (This)->lpVtbl->AddRef(This)
   4220 #define ID3D12QueryHeap_Release(This) (This)->lpVtbl->Release(This)
   4221 /*** ID3D12Object methods ***/
   4222 #define ID3D12QueryHeap_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   4223 #define ID3D12QueryHeap_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   4224 #define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   4225 #define ID3D12QueryHeap_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   4226 /*** ID3D12DeviceChild methods ***/
   4227 #define ID3D12QueryHeap_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   4228 #else
   4229 /*** IUnknown methods ***/
   4230 static inline HRESULT ID3D12QueryHeap_QueryInterface(ID3D12QueryHeap* This,REFIID riid,void **ppvObject) {
   4231     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4232 }
   4233 static inline ULONG ID3D12QueryHeap_AddRef(ID3D12QueryHeap* This) {
   4234     return This->lpVtbl->AddRef(This);
   4235 }
   4236 static inline ULONG ID3D12QueryHeap_Release(ID3D12QueryHeap* This) {
   4237     return This->lpVtbl->Release(This);
   4238 }
   4239 /*** ID3D12Object methods ***/
   4240 static inline HRESULT ID3D12QueryHeap_GetPrivateData(ID3D12QueryHeap* This,REFGUID guid,UINT *data_size,void *data) {
   4241     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   4242 }
   4243 static inline HRESULT ID3D12QueryHeap_SetPrivateData(ID3D12QueryHeap* This,REFGUID guid,UINT data_size,const void *data) {
   4244     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   4245 }
   4246 static inline HRESULT ID3D12QueryHeap_SetPrivateDataInterface(ID3D12QueryHeap* This,REFGUID guid,const IUnknown *data) {
   4247     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   4248 }
   4249 static inline HRESULT ID3D12QueryHeap_SetName(ID3D12QueryHeap* This,const WCHAR *name) {
   4250     return This->lpVtbl->SetName(This,name);
   4251 }
   4252 /*** ID3D12DeviceChild methods ***/
   4253 static inline HRESULT ID3D12QueryHeap_GetDevice(ID3D12QueryHeap* This,REFIID riid,void **device) {
   4254     return This->lpVtbl->GetDevice(This,riid,device);
   4255 }
   4256 #endif
   4257 #endif
   4258 
   4259 #endif
   4260 
   4261 
   4262 #endif  /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
   4263 
   4264 /*****************************************************************************
   4265  * ID3D12CommandSignature interface
   4266  */
   4267 #ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
   4268 #define __ID3D12CommandSignature_INTERFACE_DEFINED__
   4269 
   4270 DEFINE_GUID(IID_ID3D12CommandSignature, 0xc36a797c, 0xec80, 0x4f0a, 0x89,0x85, 0xa7,0xb2,0x47,0x50,0x82,0xd1);
   4271 #if defined(__cplusplus) && !defined(CINTERFACE)
   4272 MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
   4273 ID3D12CommandSignature : public ID3D12Pageable
   4274 {
   4275 };
   4276 #ifdef __CRT_UUID_DECL
   4277 __CRT_UUID_DECL(ID3D12CommandSignature, 0xc36a797c, 0xec80, 0x4f0a, 0x89,0x85, 0xa7,0xb2,0x47,0x50,0x82,0xd1)
   4278 #endif
   4279 #else
   4280 typedef struct ID3D12CommandSignatureVtbl {
   4281     BEGIN_INTERFACE
   4282 
   4283     /*** IUnknown methods ***/
   4284     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4285         ID3D12CommandSignature *This,
   4286         REFIID riid,
   4287         void **ppvObject);
   4288 
   4289     ULONG (STDMETHODCALLTYPE *AddRef)(
   4290         ID3D12CommandSignature *This);
   4291 
   4292     ULONG (STDMETHODCALLTYPE *Release)(
   4293         ID3D12CommandSignature *This);
   4294 
   4295     /*** ID3D12Object methods ***/
   4296     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   4297         ID3D12CommandSignature *This,
   4298         REFGUID guid,
   4299         UINT *data_size,
   4300         void *data);
   4301 
   4302     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   4303         ID3D12CommandSignature *This,
   4304         REFGUID guid,
   4305         UINT data_size,
   4306         const void *data);
   4307 
   4308     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   4309         ID3D12CommandSignature *This,
   4310         REFGUID guid,
   4311         const IUnknown *data);
   4312 
   4313     HRESULT (STDMETHODCALLTYPE *SetName)(
   4314         ID3D12CommandSignature *This,
   4315         const WCHAR *name);
   4316 
   4317     /*** ID3D12DeviceChild methods ***/
   4318     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   4319         ID3D12CommandSignature *This,
   4320         REFIID riid,
   4321         void **device);
   4322 
   4323     END_INTERFACE
   4324 } ID3D12CommandSignatureVtbl;
   4325 
   4326 interface ID3D12CommandSignature {
   4327     CONST_VTBL ID3D12CommandSignatureVtbl* lpVtbl;
   4328 };
   4329 
   4330 #ifdef COBJMACROS
   4331 #ifndef WIDL_C_INLINE_WRAPPERS
   4332 /*** IUnknown methods ***/
   4333 #define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4334 #define ID3D12CommandSignature_AddRef(This) (This)->lpVtbl->AddRef(This)
   4335 #define ID3D12CommandSignature_Release(This) (This)->lpVtbl->Release(This)
   4336 /*** ID3D12Object methods ***/
   4337 #define ID3D12CommandSignature_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   4338 #define ID3D12CommandSignature_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   4339 #define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   4340 #define ID3D12CommandSignature_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   4341 /*** ID3D12DeviceChild methods ***/
   4342 #define ID3D12CommandSignature_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   4343 #else
   4344 /*** IUnknown methods ***/
   4345 static inline HRESULT ID3D12CommandSignature_QueryInterface(ID3D12CommandSignature* This,REFIID riid,void **ppvObject) {
   4346     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4347 }
   4348 static inline ULONG ID3D12CommandSignature_AddRef(ID3D12CommandSignature* This) {
   4349     return This->lpVtbl->AddRef(This);
   4350 }
   4351 static inline ULONG ID3D12CommandSignature_Release(ID3D12CommandSignature* This) {
   4352     return This->lpVtbl->Release(This);
   4353 }
   4354 /*** ID3D12Object methods ***/
   4355 static inline HRESULT ID3D12CommandSignature_GetPrivateData(ID3D12CommandSignature* This,REFGUID guid,UINT *data_size,void *data) {
   4356     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   4357 }
   4358 static inline HRESULT ID3D12CommandSignature_SetPrivateData(ID3D12CommandSignature* This,REFGUID guid,UINT data_size,const void *data) {
   4359     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   4360 }
   4361 static inline HRESULT ID3D12CommandSignature_SetPrivateDataInterface(ID3D12CommandSignature* This,REFGUID guid,const IUnknown *data) {
   4362     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   4363 }
   4364 static inline HRESULT ID3D12CommandSignature_SetName(ID3D12CommandSignature* This,const WCHAR *name) {
   4365     return This->lpVtbl->SetName(This,name);
   4366 }
   4367 /*** ID3D12DeviceChild methods ***/
   4368 static inline HRESULT ID3D12CommandSignature_GetDevice(ID3D12CommandSignature* This,REFIID riid,void **device) {
   4369     return This->lpVtbl->GetDevice(This,riid,device);
   4370 }
   4371 #endif
   4372 #endif
   4373 
   4374 #endif
   4375 
   4376 
   4377 #endif  /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
   4378 
   4379 /*****************************************************************************
   4380  * ID3D12GraphicsCommandList interface
   4381  */
   4382 #ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
   4383 #define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
   4384 
   4385 DEFINE_GUID(IID_ID3D12GraphicsCommandList, 0x5b160d0f, 0xac1b, 0x4185, 0x8b,0xa8, 0xb3,0xae,0x42,0xa5,0xa4,0x55);
   4386 #if defined(__cplusplus) && !defined(CINTERFACE)
   4387 MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
   4388 ID3D12GraphicsCommandList : public ID3D12CommandList
   4389 {
   4390     virtual HRESULT STDMETHODCALLTYPE Close(
   4391         ) = 0;
   4392 
   4393     virtual HRESULT STDMETHODCALLTYPE Reset(
   4394         ID3D12CommandAllocator *allocator,
   4395         ID3D12PipelineState *initial_state) = 0;
   4396 
   4397     virtual void STDMETHODCALLTYPE ClearState(
   4398         ID3D12PipelineState *pipeline_state) = 0;
   4399 
   4400     virtual void STDMETHODCALLTYPE DrawInstanced(
   4401         UINT vertex_count_per_instance,
   4402         UINT instance_count,
   4403         UINT start_vertex_location,
   4404         UINT start_instance_location) = 0;
   4405 
   4406     virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
   4407         UINT index_count_per_instance,
   4408         UINT instance_count,
   4409         UINT start_vertex_location,
   4410         INT base_vertex_location,
   4411         UINT start_instance_location) = 0;
   4412 
   4413     virtual void STDMETHODCALLTYPE Dispatch(
   4414         UINT x,
   4415         UINT u,
   4416         UINT z) = 0;
   4417 
   4418     virtual void STDMETHODCALLTYPE CopyBufferRegion(
   4419         ID3D12Resource *dst_buffer,
   4420         UINT64 dst_offset,
   4421         ID3D12Resource *src_buffer,
   4422         UINT64 src_offset,
   4423         UINT64 byte_count) = 0;
   4424 
   4425     virtual void STDMETHODCALLTYPE CopyTextureRegion(
   4426         const D3D12_TEXTURE_COPY_LOCATION *dst,
   4427         UINT dst_x,
   4428         UINT dst_y,
   4429         UINT dst_z,
   4430         const D3D12_TEXTURE_COPY_LOCATION *src,
   4431         const D3D12_BOX *src_box) = 0;
   4432 
   4433     virtual void STDMETHODCALLTYPE CopyResource(
   4434         ID3D12Resource *dst_resource,
   4435         ID3D12Resource *src_resource) = 0;
   4436 
   4437     virtual void STDMETHODCALLTYPE CopyTiles(
   4438         ID3D12Resource *tiled_resource,
   4439         const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
   4440         const D3D12_TILE_REGION_SIZE *tile_region_size,
   4441         ID3D12Resource *buffer,
   4442         UINT64 buffer_offset,
   4443         D3D12_TILE_COPY_FLAGS flags) = 0;
   4444 
   4445     virtual void STDMETHODCALLTYPE ResolveSubresource(
   4446         ID3D12Resource *dst_resource,
   4447         UINT dst_sub_resource,
   4448         ID3D12Resource *src_resource,
   4449         UINT src_sub_resource,
   4450         DXGI_FORMAT format) = 0;
   4451 
   4452     virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
   4453         D3D12_PRIMITIVE_TOPOLOGY primitive_topology) = 0;
   4454 
   4455     virtual void STDMETHODCALLTYPE RSSetViewports(
   4456         UINT viewport_count,
   4457         const D3D12_VIEWPORT *viewports) = 0;
   4458 
   4459     virtual void STDMETHODCALLTYPE RSSetScissorRects(
   4460         UINT rect_count,
   4461         const D3D12_RECT *rects) = 0;
   4462 
   4463     virtual void STDMETHODCALLTYPE OMSetBlendFactor(
   4464         const FLOAT blend_factor[4]) = 0;
   4465 
   4466     virtual void STDMETHODCALLTYPE OMSetStencilRef(
   4467         UINT stencil_ref) = 0;
   4468 
   4469     virtual void STDMETHODCALLTYPE SetPipelineState(
   4470         ID3D12PipelineState *pipeline_state) = 0;
   4471 
   4472     virtual void STDMETHODCALLTYPE ResourceBarrier(
   4473         UINT barrier_count,
   4474         const D3D12_RESOURCE_BARRIER *barriers) = 0;
   4475 
   4476     virtual void STDMETHODCALLTYPE ExecuteBundle(
   4477         ID3D12GraphicsCommandList *command_list) = 0;
   4478 
   4479     virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
   4480         UINT heap_count,
   4481         ID3D12DescriptorHeap *const *heaps) = 0;
   4482 
   4483     virtual void STDMETHODCALLTYPE SetComputeRootSignature(
   4484         ID3D12RootSignature *root_signature) = 0;
   4485 
   4486     virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
   4487         ID3D12RootSignature *root_signature) = 0;
   4488 
   4489     virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
   4490         UINT root_parameter_index,
   4491         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) = 0;
   4492 
   4493     virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
   4494         UINT root_parameter_index,
   4495         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) = 0;
   4496 
   4497     virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
   4498         UINT root_parameter_index,
   4499         UINT data,
   4500         UINT dst_offset) = 0;
   4501 
   4502     virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
   4503         UINT root_parameter_index,
   4504         UINT data,
   4505         UINT dst_offset) = 0;
   4506 
   4507     virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
   4508         UINT root_parameter_index,
   4509         UINT constant_count,
   4510         const void *data,
   4511         UINT dst_offset) = 0;
   4512 
   4513     virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
   4514         UINT root_parameter_index,
   4515         UINT constant_count,
   4516         const void *data,
   4517         UINT dst_offset) = 0;
   4518 
   4519     virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
   4520         UINT root_parameter_index,
   4521         D3D12_GPU_VIRTUAL_ADDRESS address) = 0;
   4522 
   4523     virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
   4524         UINT root_parameter_index,
   4525         D3D12_GPU_VIRTUAL_ADDRESS address) = 0;
   4526 
   4527     virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
   4528         UINT root_parameter_index,
   4529         D3D12_GPU_VIRTUAL_ADDRESS address) = 0;
   4530 
   4531     virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
   4532         UINT root_parameter_index,
   4533         D3D12_GPU_VIRTUAL_ADDRESS address) = 0;
   4534 
   4535     virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
   4536         UINT root_parameter_index,
   4537         D3D12_GPU_VIRTUAL_ADDRESS address) = 0;
   4538 
   4539     virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
   4540         UINT root_parameter_index,
   4541         D3D12_GPU_VIRTUAL_ADDRESS address) = 0;
   4542 
   4543     virtual void STDMETHODCALLTYPE IASetIndexBuffer(
   4544         const D3D12_INDEX_BUFFER_VIEW *view) = 0;
   4545 
   4546     virtual void STDMETHODCALLTYPE IASetVertexBuffers(
   4547         UINT start_slot,
   4548         UINT view_count,
   4549         const D3D12_VERTEX_BUFFER_VIEW *views) = 0;
   4550 
   4551     virtual void STDMETHODCALLTYPE SOSetTargets(
   4552         UINT start_slot,
   4553         UINT view_count,
   4554         const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views) = 0;
   4555 
   4556     virtual void STDMETHODCALLTYPE OMSetRenderTargets(
   4557         UINT render_target_descriptor_count,
   4558         const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
   4559         WINBOOL single_descriptor_handle,
   4560         const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor) = 0;
   4561 
   4562     virtual void STDMETHODCALLTYPE ClearDepthStencilView(
   4563         D3D12_CPU_DESCRIPTOR_HANDLE dsv,
   4564         D3D12_CLEAR_FLAGS flags,
   4565         FLOAT depth,
   4566         UINT8 stencil,
   4567         UINT rect_count,
   4568         const D3D12_RECT *rects) = 0;
   4569 
   4570     virtual void STDMETHODCALLTYPE ClearRenderTargetView(
   4571         D3D12_CPU_DESCRIPTOR_HANDLE rtv,
   4572         const FLOAT color[4],
   4573         UINT rect_count,
   4574         const D3D12_RECT *rects) = 0;
   4575 
   4576     virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
   4577         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   4578         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   4579         ID3D12Resource *resource,
   4580         const UINT values[4],
   4581         UINT rect_count,
   4582         const D3D12_RECT *rects) = 0;
   4583 
   4584     virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
   4585         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   4586         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   4587         ID3D12Resource *resource,
   4588         const float values[4],
   4589         UINT rect_count,
   4590         const D3D12_RECT *rects) = 0;
   4591 
   4592     virtual void STDMETHODCALLTYPE DiscardResource(
   4593         ID3D12Resource *resource,
   4594         const D3D12_DISCARD_REGION *region) = 0;
   4595 
   4596     virtual void STDMETHODCALLTYPE BeginQuery(
   4597         ID3D12QueryHeap *heap,
   4598         D3D12_QUERY_TYPE type,
   4599         UINT index) = 0;
   4600 
   4601     virtual void STDMETHODCALLTYPE EndQuery(
   4602         ID3D12QueryHeap *heap,
   4603         D3D12_QUERY_TYPE type,
   4604         UINT index) = 0;
   4605 
   4606     virtual void STDMETHODCALLTYPE ResolveQueryData(
   4607         ID3D12QueryHeap *heap,
   4608         D3D12_QUERY_TYPE type,
   4609         UINT start_index,
   4610         UINT query_count,
   4611         ID3D12Resource *dst_buffer,
   4612         UINT64 aligned_dst_buffer_offset) = 0;
   4613 
   4614     virtual void STDMETHODCALLTYPE SetPredication(
   4615         ID3D12Resource *buffer,
   4616         UINT64 aligned_buffer_offset,
   4617         D3D12_PREDICATION_OP operation) = 0;
   4618 
   4619     virtual void STDMETHODCALLTYPE SetMarker(
   4620         UINT metadata,
   4621         const void *data,
   4622         UINT size) = 0;
   4623 
   4624     virtual void STDMETHODCALLTYPE BeginEvent(
   4625         UINT metadata,
   4626         const void *data,
   4627         UINT size) = 0;
   4628 
   4629     virtual void STDMETHODCALLTYPE EndEvent(
   4630         ) = 0;
   4631 
   4632     virtual void STDMETHODCALLTYPE ExecuteIndirect(
   4633         ID3D12CommandSignature *command_signature,
   4634         UINT max_command_count,
   4635         ID3D12Resource *arg_buffer,
   4636         UINT64 arg_buffer_offset,
   4637         ID3D12Resource *count_buffer,
   4638         UINT64 count_buffer_offset) = 0;
   4639 
   4640 };
   4641 #ifdef __CRT_UUID_DECL
   4642 __CRT_UUID_DECL(ID3D12GraphicsCommandList, 0x5b160d0f, 0xac1b, 0x4185, 0x8b,0xa8, 0xb3,0xae,0x42,0xa5,0xa4,0x55)
   4643 #endif
   4644 #else
   4645 typedef struct ID3D12GraphicsCommandListVtbl {
   4646     BEGIN_INTERFACE
   4647 
   4648     /*** IUnknown methods ***/
   4649     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4650         ID3D12GraphicsCommandList *This,
   4651         REFIID riid,
   4652         void **ppvObject);
   4653 
   4654     ULONG (STDMETHODCALLTYPE *AddRef)(
   4655         ID3D12GraphicsCommandList *This);
   4656 
   4657     ULONG (STDMETHODCALLTYPE *Release)(
   4658         ID3D12GraphicsCommandList *This);
   4659 
   4660     /*** ID3D12Object methods ***/
   4661     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   4662         ID3D12GraphicsCommandList *This,
   4663         REFGUID guid,
   4664         UINT *data_size,
   4665         void *data);
   4666 
   4667     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   4668         ID3D12GraphicsCommandList *This,
   4669         REFGUID guid,
   4670         UINT data_size,
   4671         const void *data);
   4672 
   4673     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   4674         ID3D12GraphicsCommandList *This,
   4675         REFGUID guid,
   4676         const IUnknown *data);
   4677 
   4678     HRESULT (STDMETHODCALLTYPE *SetName)(
   4679         ID3D12GraphicsCommandList *This,
   4680         const WCHAR *name);
   4681 
   4682     /*** ID3D12DeviceChild methods ***/
   4683     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   4684         ID3D12GraphicsCommandList *This,
   4685         REFIID riid,
   4686         void **device);
   4687 
   4688     /*** ID3D12CommandList methods ***/
   4689     D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
   4690         ID3D12GraphicsCommandList *This);
   4691 
   4692     /*** ID3D12GraphicsCommandList methods ***/
   4693     HRESULT (STDMETHODCALLTYPE *Close)(
   4694         ID3D12GraphicsCommandList *This);
   4695 
   4696     HRESULT (STDMETHODCALLTYPE *Reset)(
   4697         ID3D12GraphicsCommandList *This,
   4698         ID3D12CommandAllocator *allocator,
   4699         ID3D12PipelineState *initial_state);
   4700 
   4701     void (STDMETHODCALLTYPE *ClearState)(
   4702         ID3D12GraphicsCommandList *This,
   4703         ID3D12PipelineState *pipeline_state);
   4704 
   4705     void (STDMETHODCALLTYPE *DrawInstanced)(
   4706         ID3D12GraphicsCommandList *This,
   4707         UINT vertex_count_per_instance,
   4708         UINT instance_count,
   4709         UINT start_vertex_location,
   4710         UINT start_instance_location);
   4711 
   4712     void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
   4713         ID3D12GraphicsCommandList *This,
   4714         UINT index_count_per_instance,
   4715         UINT instance_count,
   4716         UINT start_vertex_location,
   4717         INT base_vertex_location,
   4718         UINT start_instance_location);
   4719 
   4720     void (STDMETHODCALLTYPE *Dispatch)(
   4721         ID3D12GraphicsCommandList *This,
   4722         UINT x,
   4723         UINT u,
   4724         UINT z);
   4725 
   4726     void (STDMETHODCALLTYPE *CopyBufferRegion)(
   4727         ID3D12GraphicsCommandList *This,
   4728         ID3D12Resource *dst_buffer,
   4729         UINT64 dst_offset,
   4730         ID3D12Resource *src_buffer,
   4731         UINT64 src_offset,
   4732         UINT64 byte_count);
   4733 
   4734     void (STDMETHODCALLTYPE *CopyTextureRegion)(
   4735         ID3D12GraphicsCommandList *This,
   4736         const D3D12_TEXTURE_COPY_LOCATION *dst,
   4737         UINT dst_x,
   4738         UINT dst_y,
   4739         UINT dst_z,
   4740         const D3D12_TEXTURE_COPY_LOCATION *src,
   4741         const D3D12_BOX *src_box);
   4742 
   4743     void (STDMETHODCALLTYPE *CopyResource)(
   4744         ID3D12GraphicsCommandList *This,
   4745         ID3D12Resource *dst_resource,
   4746         ID3D12Resource *src_resource);
   4747 
   4748     void (STDMETHODCALLTYPE *CopyTiles)(
   4749         ID3D12GraphicsCommandList *This,
   4750         ID3D12Resource *tiled_resource,
   4751         const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
   4752         const D3D12_TILE_REGION_SIZE *tile_region_size,
   4753         ID3D12Resource *buffer,
   4754         UINT64 buffer_offset,
   4755         D3D12_TILE_COPY_FLAGS flags);
   4756 
   4757     void (STDMETHODCALLTYPE *ResolveSubresource)(
   4758         ID3D12GraphicsCommandList *This,
   4759         ID3D12Resource *dst_resource,
   4760         UINT dst_sub_resource,
   4761         ID3D12Resource *src_resource,
   4762         UINT src_sub_resource,
   4763         DXGI_FORMAT format);
   4764 
   4765     void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
   4766         ID3D12GraphicsCommandList *This,
   4767         D3D12_PRIMITIVE_TOPOLOGY primitive_topology);
   4768 
   4769     void (STDMETHODCALLTYPE *RSSetViewports)(
   4770         ID3D12GraphicsCommandList *This,
   4771         UINT viewport_count,
   4772         const D3D12_VIEWPORT *viewports);
   4773 
   4774     void (STDMETHODCALLTYPE *RSSetScissorRects)(
   4775         ID3D12GraphicsCommandList *This,
   4776         UINT rect_count,
   4777         const D3D12_RECT *rects);
   4778 
   4779     void (STDMETHODCALLTYPE *OMSetBlendFactor)(
   4780         ID3D12GraphicsCommandList *This,
   4781         const FLOAT blend_factor[4]);
   4782 
   4783     void (STDMETHODCALLTYPE *OMSetStencilRef)(
   4784         ID3D12GraphicsCommandList *This,
   4785         UINT stencil_ref);
   4786 
   4787     void (STDMETHODCALLTYPE *SetPipelineState)(
   4788         ID3D12GraphicsCommandList *This,
   4789         ID3D12PipelineState *pipeline_state);
   4790 
   4791     void (STDMETHODCALLTYPE *ResourceBarrier)(
   4792         ID3D12GraphicsCommandList *This,
   4793         UINT barrier_count,
   4794         const D3D12_RESOURCE_BARRIER *barriers);
   4795 
   4796     void (STDMETHODCALLTYPE *ExecuteBundle)(
   4797         ID3D12GraphicsCommandList *This,
   4798         ID3D12GraphicsCommandList *command_list);
   4799 
   4800     void (STDMETHODCALLTYPE *SetDescriptorHeaps)(
   4801         ID3D12GraphicsCommandList *This,
   4802         UINT heap_count,
   4803         ID3D12DescriptorHeap *const *heaps);
   4804 
   4805     void (STDMETHODCALLTYPE *SetComputeRootSignature)(
   4806         ID3D12GraphicsCommandList *This,
   4807         ID3D12RootSignature *root_signature);
   4808 
   4809     void (STDMETHODCALLTYPE *SetGraphicsRootSignature)(
   4810         ID3D12GraphicsCommandList *This,
   4811         ID3D12RootSignature *root_signature);
   4812 
   4813     void (STDMETHODCALLTYPE *SetComputeRootDescriptorTable)(
   4814         ID3D12GraphicsCommandList *This,
   4815         UINT root_parameter_index,
   4816         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
   4817 
   4818     void (STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable)(
   4819         ID3D12GraphicsCommandList *This,
   4820         UINT root_parameter_index,
   4821         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
   4822 
   4823     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstant)(
   4824         ID3D12GraphicsCommandList *This,
   4825         UINT root_parameter_index,
   4826         UINT data,
   4827         UINT dst_offset);
   4828 
   4829     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant)(
   4830         ID3D12GraphicsCommandList *This,
   4831         UINT root_parameter_index,
   4832         UINT data,
   4833         UINT dst_offset);
   4834 
   4835     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstants)(
   4836         ID3D12GraphicsCommandList *This,
   4837         UINT root_parameter_index,
   4838         UINT constant_count,
   4839         const void *data,
   4840         UINT dst_offset);
   4841 
   4842     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants)(
   4843         ID3D12GraphicsCommandList *This,
   4844         UINT root_parameter_index,
   4845         UINT constant_count,
   4846         const void *data,
   4847         UINT dst_offset);
   4848 
   4849     void (STDMETHODCALLTYPE *SetComputeRootConstantBufferView)(
   4850         ID3D12GraphicsCommandList *This,
   4851         UINT root_parameter_index,
   4852         D3D12_GPU_VIRTUAL_ADDRESS address);
   4853 
   4854     void (STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView)(
   4855         ID3D12GraphicsCommandList *This,
   4856         UINT root_parameter_index,
   4857         D3D12_GPU_VIRTUAL_ADDRESS address);
   4858 
   4859     void (STDMETHODCALLTYPE *SetComputeRootShaderResourceView)(
   4860         ID3D12GraphicsCommandList *This,
   4861         UINT root_parameter_index,
   4862         D3D12_GPU_VIRTUAL_ADDRESS address);
   4863 
   4864     void (STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView)(
   4865         ID3D12GraphicsCommandList *This,
   4866         UINT root_parameter_index,
   4867         D3D12_GPU_VIRTUAL_ADDRESS address);
   4868 
   4869     void (STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView)(
   4870         ID3D12GraphicsCommandList *This,
   4871         UINT root_parameter_index,
   4872         D3D12_GPU_VIRTUAL_ADDRESS address);
   4873 
   4874     void (STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView)(
   4875         ID3D12GraphicsCommandList *This,
   4876         UINT root_parameter_index,
   4877         D3D12_GPU_VIRTUAL_ADDRESS address);
   4878 
   4879     void (STDMETHODCALLTYPE *IASetIndexBuffer)(
   4880         ID3D12GraphicsCommandList *This,
   4881         const D3D12_INDEX_BUFFER_VIEW *view);
   4882 
   4883     void (STDMETHODCALLTYPE *IASetVertexBuffers)(
   4884         ID3D12GraphicsCommandList *This,
   4885         UINT start_slot,
   4886         UINT view_count,
   4887         const D3D12_VERTEX_BUFFER_VIEW *views);
   4888 
   4889     void (STDMETHODCALLTYPE *SOSetTargets)(
   4890         ID3D12GraphicsCommandList *This,
   4891         UINT start_slot,
   4892         UINT view_count,
   4893         const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views);
   4894 
   4895     void (STDMETHODCALLTYPE *OMSetRenderTargets)(
   4896         ID3D12GraphicsCommandList *This,
   4897         UINT render_target_descriptor_count,
   4898         const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
   4899         WINBOOL single_descriptor_handle,
   4900         const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor);
   4901 
   4902     void (STDMETHODCALLTYPE *ClearDepthStencilView)(
   4903         ID3D12GraphicsCommandList *This,
   4904         D3D12_CPU_DESCRIPTOR_HANDLE dsv,
   4905         D3D12_CLEAR_FLAGS flags,
   4906         FLOAT depth,
   4907         UINT8 stencil,
   4908         UINT rect_count,
   4909         const D3D12_RECT *rects);
   4910 
   4911     void (STDMETHODCALLTYPE *ClearRenderTargetView)(
   4912         ID3D12GraphicsCommandList *This,
   4913         D3D12_CPU_DESCRIPTOR_HANDLE rtv,
   4914         const FLOAT color[4],
   4915         UINT rect_count,
   4916         const D3D12_RECT *rects);
   4917 
   4918     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewUint)(
   4919         ID3D12GraphicsCommandList *This,
   4920         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   4921         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   4922         ID3D12Resource *resource,
   4923         const UINT values[4],
   4924         UINT rect_count,
   4925         const D3D12_RECT *rects);
   4926 
   4927     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat)(
   4928         ID3D12GraphicsCommandList *This,
   4929         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   4930         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   4931         ID3D12Resource *resource,
   4932         const float values[4],
   4933         UINT rect_count,
   4934         const D3D12_RECT *rects);
   4935 
   4936     void (STDMETHODCALLTYPE *DiscardResource)(
   4937         ID3D12GraphicsCommandList *This,
   4938         ID3D12Resource *resource,
   4939         const D3D12_DISCARD_REGION *region);
   4940 
   4941     void (STDMETHODCALLTYPE *BeginQuery)(
   4942         ID3D12GraphicsCommandList *This,
   4943         ID3D12QueryHeap *heap,
   4944         D3D12_QUERY_TYPE type,
   4945         UINT index);
   4946 
   4947     void (STDMETHODCALLTYPE *EndQuery)(
   4948         ID3D12GraphicsCommandList *This,
   4949         ID3D12QueryHeap *heap,
   4950         D3D12_QUERY_TYPE type,
   4951         UINT index);
   4952 
   4953     void (STDMETHODCALLTYPE *ResolveQueryData)(
   4954         ID3D12GraphicsCommandList *This,
   4955         ID3D12QueryHeap *heap,
   4956         D3D12_QUERY_TYPE type,
   4957         UINT start_index,
   4958         UINT query_count,
   4959         ID3D12Resource *dst_buffer,
   4960         UINT64 aligned_dst_buffer_offset);
   4961 
   4962     void (STDMETHODCALLTYPE *SetPredication)(
   4963         ID3D12GraphicsCommandList *This,
   4964         ID3D12Resource *buffer,
   4965         UINT64 aligned_buffer_offset,
   4966         D3D12_PREDICATION_OP operation);
   4967 
   4968     void (STDMETHODCALLTYPE *SetMarker)(
   4969         ID3D12GraphicsCommandList *This,
   4970         UINT metadata,
   4971         const void *data,
   4972         UINT size);
   4973 
   4974     void (STDMETHODCALLTYPE *BeginEvent)(
   4975         ID3D12GraphicsCommandList *This,
   4976         UINT metadata,
   4977         const void *data,
   4978         UINT size);
   4979 
   4980     void (STDMETHODCALLTYPE *EndEvent)(
   4981         ID3D12GraphicsCommandList *This);
   4982 
   4983     void (STDMETHODCALLTYPE *ExecuteIndirect)(
   4984         ID3D12GraphicsCommandList *This,
   4985         ID3D12CommandSignature *command_signature,
   4986         UINT max_command_count,
   4987         ID3D12Resource *arg_buffer,
   4988         UINT64 arg_buffer_offset,
   4989         ID3D12Resource *count_buffer,
   4990         UINT64 count_buffer_offset);
   4991 
   4992     END_INTERFACE
   4993 } ID3D12GraphicsCommandListVtbl;
   4994 
   4995 interface ID3D12GraphicsCommandList {
   4996     CONST_VTBL ID3D12GraphicsCommandListVtbl* lpVtbl;
   4997 };
   4998 
   4999 #ifdef COBJMACROS
   5000 #ifndef WIDL_C_INLINE_WRAPPERS
   5001 /*** IUnknown methods ***/
   5002 #define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5003 #define ID3D12GraphicsCommandList_AddRef(This) (This)->lpVtbl->AddRef(This)
   5004 #define ID3D12GraphicsCommandList_Release(This) (This)->lpVtbl->Release(This)
   5005 /*** ID3D12Object methods ***/
   5006 #define ID3D12GraphicsCommandList_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   5007 #define ID3D12GraphicsCommandList_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   5008 #define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   5009 #define ID3D12GraphicsCommandList_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   5010 /*** ID3D12DeviceChild methods ***/
   5011 #define ID3D12GraphicsCommandList_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   5012 /*** ID3D12CommandList methods ***/
   5013 #define ID3D12GraphicsCommandList_GetType(This) (This)->lpVtbl->GetType(This)
   5014 /*** ID3D12GraphicsCommandList methods ***/
   5015 #define ID3D12GraphicsCommandList_Close(This) (This)->lpVtbl->Close(This)
   5016 #define ID3D12GraphicsCommandList_Reset(This,allocator,initial_state) (This)->lpVtbl->Reset(This,allocator,initial_state)
   5017 #define ID3D12GraphicsCommandList_ClearState(This,pipeline_state) (This)->lpVtbl->ClearState(This,pipeline_state)
   5018 #define ID3D12GraphicsCommandList_DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location) (This)->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location)
   5019 #define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location) (This)->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location)
   5020 #define ID3D12GraphicsCommandList_Dispatch(This,x,u,z) (This)->lpVtbl->Dispatch(This,x,u,z)
   5021 #define ID3D12GraphicsCommandList_CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count) (This)->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count)
   5022 #define ID3D12GraphicsCommandList_CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box) (This)->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box)
   5023 #define ID3D12GraphicsCommandList_CopyResource(This,dst_resource,src_resource) (This)->lpVtbl->CopyResource(This,dst_resource,src_resource)
   5024 #define ID3D12GraphicsCommandList_CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags) (This)->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags)
   5025 #define ID3D12GraphicsCommandList_ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format) (This)->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format)
   5026 #define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,primitive_topology) (This)->lpVtbl->IASetPrimitiveTopology(This,primitive_topology)
   5027 #define ID3D12GraphicsCommandList_RSSetViewports(This,viewport_count,viewports) (This)->lpVtbl->RSSetViewports(This,viewport_count,viewports)
   5028 #define ID3D12GraphicsCommandList_RSSetScissorRects(This,rect_count,rects) (This)->lpVtbl->RSSetScissorRects(This,rect_count,rects)
   5029 #define ID3D12GraphicsCommandList_OMSetBlendFactor(This,blend_factor) (This)->lpVtbl->OMSetBlendFactor(This,blend_factor)
   5030 #define ID3D12GraphicsCommandList_OMSetStencilRef(This,stencil_ref) (This)->lpVtbl->OMSetStencilRef(This,stencil_ref)
   5031 #define ID3D12GraphicsCommandList_SetPipelineState(This,pipeline_state) (This)->lpVtbl->SetPipelineState(This,pipeline_state)
   5032 #define ID3D12GraphicsCommandList_ResourceBarrier(This,barrier_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barrier_count,barriers)
   5033 #define ID3D12GraphicsCommandList_ExecuteBundle(This,command_list) (This)->lpVtbl->ExecuteBundle(This,command_list)
   5034 #define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,heap_count,heaps) (This)->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps)
   5035 #define ID3D12GraphicsCommandList_SetComputeRootSignature(This,root_signature) (This)->lpVtbl->SetComputeRootSignature(This,root_signature)
   5036 #define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,root_signature) (This)->lpVtbl->SetGraphicsRootSignature(This,root_signature)
   5037 #define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor)
   5038 #define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor)
   5039 #define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset)
   5040 #define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset)
   5041 #define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
   5042 #define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
   5043 #define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address)
   5044 #define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address)
   5045 #define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address)
   5046 #define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address)
   5047 #define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address)
   5048 #define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address)
   5049 #define ID3D12GraphicsCommandList_IASetIndexBuffer(This,view) (This)->lpVtbl->IASetIndexBuffer(This,view)
   5050 #define ID3D12GraphicsCommandList_IASetVertexBuffers(This,start_slot,view_count,views) (This)->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views)
   5051 #define ID3D12GraphicsCommandList_SOSetTargets(This,start_slot,view_count,views) (This)->lpVtbl->SOSetTargets(This,start_slot,view_count,views)
   5052 #define ID3D12GraphicsCommandList_OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor) (This)->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor)
   5053 #define ID3D12GraphicsCommandList_ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects) (This)->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects)
   5054 #define ID3D12GraphicsCommandList_ClearRenderTargetView(This,rtv,color,rect_count,rects) (This)->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects)
   5055 #define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
   5056 #define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
   5057 #define ID3D12GraphicsCommandList_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
   5058 #define ID3D12GraphicsCommandList_BeginQuery(This,heap,type,index) (This)->lpVtbl->BeginQuery(This,heap,type,index)
   5059 #define ID3D12GraphicsCommandList_EndQuery(This,heap,type,index) (This)->lpVtbl->EndQuery(This,heap,type,index)
   5060 #define ID3D12GraphicsCommandList_ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset)
   5061 #define ID3D12GraphicsCommandList_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
   5062 #define ID3D12GraphicsCommandList_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
   5063 #define ID3D12GraphicsCommandList_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
   5064 #define ID3D12GraphicsCommandList_EndEvent(This) (This)->lpVtbl->EndEvent(This)
   5065 #define ID3D12GraphicsCommandList_ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset) (This)->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset)
   5066 #else
   5067 /*** IUnknown methods ***/
   5068 static inline HRESULT ID3D12GraphicsCommandList_QueryInterface(ID3D12GraphicsCommandList* This,REFIID riid,void **ppvObject) {
   5069     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5070 }
   5071 static inline ULONG ID3D12GraphicsCommandList_AddRef(ID3D12GraphicsCommandList* This) {
   5072     return This->lpVtbl->AddRef(This);
   5073 }
   5074 static inline ULONG ID3D12GraphicsCommandList_Release(ID3D12GraphicsCommandList* This) {
   5075     return This->lpVtbl->Release(This);
   5076 }
   5077 /*** ID3D12Object methods ***/
   5078 static inline HRESULT ID3D12GraphicsCommandList_GetPrivateData(ID3D12GraphicsCommandList* This,REFGUID guid,UINT *data_size,void *data) {
   5079     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   5080 }
   5081 static inline HRESULT ID3D12GraphicsCommandList_SetPrivateData(ID3D12GraphicsCommandList* This,REFGUID guid,UINT data_size,const void *data) {
   5082     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   5083 }
   5084 static inline HRESULT ID3D12GraphicsCommandList_SetPrivateDataInterface(ID3D12GraphicsCommandList* This,REFGUID guid,const IUnknown *data) {
   5085     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   5086 }
   5087 static inline HRESULT ID3D12GraphicsCommandList_SetName(ID3D12GraphicsCommandList* This,const WCHAR *name) {
   5088     return This->lpVtbl->SetName(This,name);
   5089 }
   5090 /*** ID3D12DeviceChild methods ***/
   5091 static inline HRESULT ID3D12GraphicsCommandList_GetDevice(ID3D12GraphicsCommandList* This,REFIID riid,void **device) {
   5092     return This->lpVtbl->GetDevice(This,riid,device);
   5093 }
   5094 /*** ID3D12CommandList methods ***/
   5095 static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList_GetType(ID3D12GraphicsCommandList* This) {
   5096     return This->lpVtbl->GetType(This);
   5097 }
   5098 /*** ID3D12GraphicsCommandList methods ***/
   5099 static inline HRESULT ID3D12GraphicsCommandList_Close(ID3D12GraphicsCommandList* This) {
   5100     return This->lpVtbl->Close(This);
   5101 }
   5102 static inline HRESULT ID3D12GraphicsCommandList_Reset(ID3D12GraphicsCommandList* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
   5103     return This->lpVtbl->Reset(This,allocator,initial_state);
   5104 }
   5105 static inline void ID3D12GraphicsCommandList_ClearState(ID3D12GraphicsCommandList* This,ID3D12PipelineState *pipeline_state) {
   5106     This->lpVtbl->ClearState(This,pipeline_state);
   5107 }
   5108 static inline void ID3D12GraphicsCommandList_DrawInstanced(ID3D12GraphicsCommandList* This,UINT vertex_count_per_instance,UINT instance_count,UINT start_vertex_location,UINT start_instance_location) {
   5109     This->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location);
   5110 }
   5111 static inline void ID3D12GraphicsCommandList_DrawIndexedInstanced(ID3D12GraphicsCommandList* This,UINT index_count_per_instance,UINT instance_count,UINT start_vertex_location,INT base_vertex_location,UINT start_instance_location) {
   5112     This->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location);
   5113 }
   5114 static inline void ID3D12GraphicsCommandList_Dispatch(ID3D12GraphicsCommandList* This,UINT x,UINT u,UINT z) {
   5115     This->lpVtbl->Dispatch(This,x,u,z);
   5116 }
   5117 static inline void ID3D12GraphicsCommandList_CopyBufferRegion(ID3D12GraphicsCommandList* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT64 byte_count) {
   5118     This->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count);
   5119 }
   5120 static inline void ID3D12GraphicsCommandList_CopyTextureRegion(ID3D12GraphicsCommandList* This,const D3D12_TEXTURE_COPY_LOCATION *dst,UINT dst_x,UINT dst_y,UINT dst_z,const D3D12_TEXTURE_COPY_LOCATION *src,const D3D12_BOX *src_box) {
   5121     This->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box);
   5122 }
   5123 static inline void ID3D12GraphicsCommandList_CopyResource(ID3D12GraphicsCommandList* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
   5124     This->lpVtbl->CopyResource(This,dst_resource,src_resource);
   5125 }
   5126 static inline void ID3D12GraphicsCommandList_CopyTiles(ID3D12GraphicsCommandList* This,ID3D12Resource *tiled_resource,const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,const D3D12_TILE_REGION_SIZE *tile_region_size,ID3D12Resource *buffer,UINT64 buffer_offset,D3D12_TILE_COPY_FLAGS flags) {
   5127     This->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags);
   5128 }
   5129 static inline void ID3D12GraphicsCommandList_ResolveSubresource(ID3D12GraphicsCommandList* This,ID3D12Resource *dst_resource,UINT dst_sub_resource,ID3D12Resource *src_resource,UINT src_sub_resource,DXGI_FORMAT format) {
   5130     This->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format);
   5131 }
   5132 static inline void ID3D12GraphicsCommandList_IASetPrimitiveTopology(ID3D12GraphicsCommandList* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
   5133     This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
   5134 }
   5135 static inline void ID3D12GraphicsCommandList_RSSetViewports(ID3D12GraphicsCommandList* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
   5136     This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
   5137 }
   5138 static inline void ID3D12GraphicsCommandList_RSSetScissorRects(ID3D12GraphicsCommandList* This,UINT rect_count,const D3D12_RECT *rects) {
   5139     This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
   5140 }
   5141 static inline void ID3D12GraphicsCommandList_OMSetBlendFactor(ID3D12GraphicsCommandList* This,const FLOAT blend_factor[4]) {
   5142     This->lpVtbl->OMSetBlendFactor(This,blend_factor);
   5143 }
   5144 static inline void ID3D12GraphicsCommandList_OMSetStencilRef(ID3D12GraphicsCommandList* This,UINT stencil_ref) {
   5145     This->lpVtbl->OMSetStencilRef(This,stencil_ref);
   5146 }
   5147 static inline void ID3D12GraphicsCommandList_SetPipelineState(ID3D12GraphicsCommandList* This,ID3D12PipelineState *pipeline_state) {
   5148     This->lpVtbl->SetPipelineState(This,pipeline_state);
   5149 }
   5150 static inline void ID3D12GraphicsCommandList_ResourceBarrier(ID3D12GraphicsCommandList* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
   5151     This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
   5152 }
   5153 static inline void ID3D12GraphicsCommandList_ExecuteBundle(ID3D12GraphicsCommandList* This,ID3D12GraphicsCommandList *command_list) {
   5154     This->lpVtbl->ExecuteBundle(This,command_list);
   5155 }
   5156 static inline void ID3D12GraphicsCommandList_SetDescriptorHeaps(ID3D12GraphicsCommandList* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
   5157     This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
   5158 }
   5159 static inline void ID3D12GraphicsCommandList_SetComputeRootSignature(ID3D12GraphicsCommandList* This,ID3D12RootSignature *root_signature) {
   5160     This->lpVtbl->SetComputeRootSignature(This,root_signature);
   5161 }
   5162 static inline void ID3D12GraphicsCommandList_SetGraphicsRootSignature(ID3D12GraphicsCommandList* This,ID3D12RootSignature *root_signature) {
   5163     This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
   5164 }
   5165 static inline void ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(ID3D12GraphicsCommandList* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
   5166     This->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor);
   5167 }
   5168 static inline void ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(ID3D12GraphicsCommandList* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
   5169     This->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor);
   5170 }
   5171 static inline void ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(ID3D12GraphicsCommandList* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
   5172     This->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset);
   5173 }
   5174 static inline void ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(ID3D12GraphicsCommandList* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
   5175     This->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset);
   5176 }
   5177 static inline void ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(ID3D12GraphicsCommandList* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
   5178     This->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
   5179 }
   5180 static inline void ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(ID3D12GraphicsCommandList* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
   5181     This->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
   5182 }
   5183 static inline void ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(ID3D12GraphicsCommandList* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5184     This->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address);
   5185 }
   5186 static inline void ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(ID3D12GraphicsCommandList* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5187     This->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address);
   5188 }
   5189 static inline void ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(ID3D12GraphicsCommandList* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5190     This->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address);
   5191 }
   5192 static inline void ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(ID3D12GraphicsCommandList* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5193     This->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address);
   5194 }
   5195 static inline void ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(ID3D12GraphicsCommandList* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5196     This->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address);
   5197 }
   5198 static inline void ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(ID3D12GraphicsCommandList* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5199     This->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address);
   5200 }
   5201 static inline void ID3D12GraphicsCommandList_IASetIndexBuffer(ID3D12GraphicsCommandList* This,const D3D12_INDEX_BUFFER_VIEW *view) {
   5202     This->lpVtbl->IASetIndexBuffer(This,view);
   5203 }
   5204 static inline void ID3D12GraphicsCommandList_IASetVertexBuffers(ID3D12GraphicsCommandList* This,UINT start_slot,UINT view_count,const D3D12_VERTEX_BUFFER_VIEW *views) {
   5205     This->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views);
   5206 }
   5207 static inline void ID3D12GraphicsCommandList_SOSetTargets(ID3D12GraphicsCommandList* This,UINT start_slot,UINT view_count,const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views) {
   5208     This->lpVtbl->SOSetTargets(This,start_slot,view_count,views);
   5209 }
   5210 static inline void ID3D12GraphicsCommandList_OMSetRenderTargets(ID3D12GraphicsCommandList* This,UINT render_target_descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,WINBOOL single_descriptor_handle,const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor) {
   5211     This->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor);
   5212 }
   5213 static inline void ID3D12GraphicsCommandList_ClearDepthStencilView(ID3D12GraphicsCommandList* This,D3D12_CPU_DESCRIPTOR_HANDLE dsv,D3D12_CLEAR_FLAGS flags,FLOAT depth,UINT8 stencil,UINT rect_count,const D3D12_RECT *rects) {
   5214     This->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects);
   5215 }
   5216 static inline void ID3D12GraphicsCommandList_ClearRenderTargetView(ID3D12GraphicsCommandList* This,D3D12_CPU_DESCRIPTOR_HANDLE rtv,const FLOAT color[4],UINT rect_count,const D3D12_RECT *rects) {
   5217     This->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects);
   5218 }
   5219 static inline void ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(ID3D12GraphicsCommandList* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const UINT values[4],UINT rect_count,const D3D12_RECT *rects) {
   5220     This->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
   5221 }
   5222 static inline void ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(ID3D12GraphicsCommandList* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const float values[4],UINT rect_count,const D3D12_RECT *rects) {
   5223     This->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
   5224 }
   5225 static inline void ID3D12GraphicsCommandList_DiscardResource(ID3D12GraphicsCommandList* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
   5226     This->lpVtbl->DiscardResource(This,resource,region);
   5227 }
   5228 static inline void ID3D12GraphicsCommandList_BeginQuery(ID3D12GraphicsCommandList* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
   5229     This->lpVtbl->BeginQuery(This,heap,type,index);
   5230 }
   5231 static inline void ID3D12GraphicsCommandList_EndQuery(ID3D12GraphicsCommandList* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
   5232     This->lpVtbl->EndQuery(This,heap,type,index);
   5233 }
   5234 static inline void ID3D12GraphicsCommandList_ResolveQueryData(ID3D12GraphicsCommandList* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT start_index,UINT query_count,ID3D12Resource *dst_buffer,UINT64 aligned_dst_buffer_offset) {
   5235     This->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset);
   5236 }
   5237 static inline void ID3D12GraphicsCommandList_SetPredication(ID3D12GraphicsCommandList* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
   5238     This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
   5239 }
   5240 static inline void ID3D12GraphicsCommandList_SetMarker(ID3D12GraphicsCommandList* This,UINT metadata,const void *data,UINT size) {
   5241     This->lpVtbl->SetMarker(This,metadata,data,size);
   5242 }
   5243 static inline void ID3D12GraphicsCommandList_BeginEvent(ID3D12GraphicsCommandList* This,UINT metadata,const void *data,UINT size) {
   5244     This->lpVtbl->BeginEvent(This,metadata,data,size);
   5245 }
   5246 static inline void ID3D12GraphicsCommandList_EndEvent(ID3D12GraphicsCommandList* This) {
   5247     This->lpVtbl->EndEvent(This);
   5248 }
   5249 static inline void ID3D12GraphicsCommandList_ExecuteIndirect(ID3D12GraphicsCommandList* This,ID3D12CommandSignature *command_signature,UINT max_command_count,ID3D12Resource *arg_buffer,UINT64 arg_buffer_offset,ID3D12Resource *count_buffer,UINT64 count_buffer_offset) {
   5250     This->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset);
   5251 }
   5252 #endif
   5253 #endif
   5254 
   5255 #endif
   5256 
   5257 
   5258 #endif  /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
   5259 
   5260 /*****************************************************************************
   5261  * ID3D12GraphicsCommandList1 interface
   5262  */
   5263 #ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
   5264 #define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
   5265 
   5266 DEFINE_GUID(IID_ID3D12GraphicsCommandList1, 0x553103fb, 0x1fe7, 0x4557, 0xbb,0x38, 0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
   5267 #if defined(__cplusplus) && !defined(CINTERFACE)
   5268 MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
   5269 ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
   5270 {
   5271     virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
   5272         ID3D12Resource *dst_buffer,
   5273         UINT64 dst_offset,
   5274         ID3D12Resource *src_buffer,
   5275         UINT64 src_offset,
   5276         UINT dependent_resource_count,
   5277         ID3D12Resource *const *dependent_resources,
   5278         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) = 0;
   5279 
   5280     virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
   5281         ID3D12Resource *dst_buffer,
   5282         UINT64 dst_offset,
   5283         ID3D12Resource *src_buffer,
   5284         UINT64 src_offset,
   5285         UINT dependent_resource_count,
   5286         ID3D12Resource *const *dependent_resources,
   5287         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) = 0;
   5288 
   5289     virtual void STDMETHODCALLTYPE OMSetDepthBounds(
   5290         FLOAT min,
   5291         FLOAT max) = 0;
   5292 
   5293     virtual void STDMETHODCALLTYPE SetSamplePositions(
   5294         UINT sample_count,
   5295         UINT pixel_count,
   5296         D3D12_SAMPLE_POSITION *sample_positions) = 0;
   5297 
   5298     virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
   5299         ID3D12Resource *dst_resource,
   5300         UINT dst_sub_resource_idx,
   5301         UINT dst_x,
   5302         UINT dst_y,
   5303         ID3D12Resource *src_resource,
   5304         UINT src_sub_resource_idx,
   5305         D3D12_RECT *src_rect,
   5306         DXGI_FORMAT format,
   5307         D3D12_RESOLVE_MODE mode) = 0;
   5308 
   5309     virtual void STDMETHODCALLTYPE SetViewInstanceMask(
   5310         UINT mask) = 0;
   5311 
   5312 };
   5313 #ifdef __CRT_UUID_DECL
   5314 __CRT_UUID_DECL(ID3D12GraphicsCommandList1, 0x553103fb, 0x1fe7, 0x4557, 0xbb,0x38, 0x94,0x6d,0x7d,0x0e,0x7c,0xa7)
   5315 #endif
   5316 #else
   5317 typedef struct ID3D12GraphicsCommandList1Vtbl {
   5318     BEGIN_INTERFACE
   5319 
   5320     /*** IUnknown methods ***/
   5321     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5322         ID3D12GraphicsCommandList1 *This,
   5323         REFIID riid,
   5324         void **ppvObject);
   5325 
   5326     ULONG (STDMETHODCALLTYPE *AddRef)(
   5327         ID3D12GraphicsCommandList1 *This);
   5328 
   5329     ULONG (STDMETHODCALLTYPE *Release)(
   5330         ID3D12GraphicsCommandList1 *This);
   5331 
   5332     /*** ID3D12Object methods ***/
   5333     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   5334         ID3D12GraphicsCommandList1 *This,
   5335         REFGUID guid,
   5336         UINT *data_size,
   5337         void *data);
   5338 
   5339     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   5340         ID3D12GraphicsCommandList1 *This,
   5341         REFGUID guid,
   5342         UINT data_size,
   5343         const void *data);
   5344 
   5345     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   5346         ID3D12GraphicsCommandList1 *This,
   5347         REFGUID guid,
   5348         const IUnknown *data);
   5349 
   5350     HRESULT (STDMETHODCALLTYPE *SetName)(
   5351         ID3D12GraphicsCommandList1 *This,
   5352         const WCHAR *name);
   5353 
   5354     /*** ID3D12DeviceChild methods ***/
   5355     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   5356         ID3D12GraphicsCommandList1 *This,
   5357         REFIID riid,
   5358         void **device);
   5359 
   5360     /*** ID3D12CommandList methods ***/
   5361     D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
   5362         ID3D12GraphicsCommandList1 *This);
   5363 
   5364     /*** ID3D12GraphicsCommandList methods ***/
   5365     HRESULT (STDMETHODCALLTYPE *Close)(
   5366         ID3D12GraphicsCommandList1 *This);
   5367 
   5368     HRESULT (STDMETHODCALLTYPE *Reset)(
   5369         ID3D12GraphicsCommandList1 *This,
   5370         ID3D12CommandAllocator *allocator,
   5371         ID3D12PipelineState *initial_state);
   5372 
   5373     void (STDMETHODCALLTYPE *ClearState)(
   5374         ID3D12GraphicsCommandList1 *This,
   5375         ID3D12PipelineState *pipeline_state);
   5376 
   5377     void (STDMETHODCALLTYPE *DrawInstanced)(
   5378         ID3D12GraphicsCommandList1 *This,
   5379         UINT vertex_count_per_instance,
   5380         UINT instance_count,
   5381         UINT start_vertex_location,
   5382         UINT start_instance_location);
   5383 
   5384     void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
   5385         ID3D12GraphicsCommandList1 *This,
   5386         UINT index_count_per_instance,
   5387         UINT instance_count,
   5388         UINT start_vertex_location,
   5389         INT base_vertex_location,
   5390         UINT start_instance_location);
   5391 
   5392     void (STDMETHODCALLTYPE *Dispatch)(
   5393         ID3D12GraphicsCommandList1 *This,
   5394         UINT x,
   5395         UINT u,
   5396         UINT z);
   5397 
   5398     void (STDMETHODCALLTYPE *CopyBufferRegion)(
   5399         ID3D12GraphicsCommandList1 *This,
   5400         ID3D12Resource *dst_buffer,
   5401         UINT64 dst_offset,
   5402         ID3D12Resource *src_buffer,
   5403         UINT64 src_offset,
   5404         UINT64 byte_count);
   5405 
   5406     void (STDMETHODCALLTYPE *CopyTextureRegion)(
   5407         ID3D12GraphicsCommandList1 *This,
   5408         const D3D12_TEXTURE_COPY_LOCATION *dst,
   5409         UINT dst_x,
   5410         UINT dst_y,
   5411         UINT dst_z,
   5412         const D3D12_TEXTURE_COPY_LOCATION *src,
   5413         const D3D12_BOX *src_box);
   5414 
   5415     void (STDMETHODCALLTYPE *CopyResource)(
   5416         ID3D12GraphicsCommandList1 *This,
   5417         ID3D12Resource *dst_resource,
   5418         ID3D12Resource *src_resource);
   5419 
   5420     void (STDMETHODCALLTYPE *CopyTiles)(
   5421         ID3D12GraphicsCommandList1 *This,
   5422         ID3D12Resource *tiled_resource,
   5423         const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
   5424         const D3D12_TILE_REGION_SIZE *tile_region_size,
   5425         ID3D12Resource *buffer,
   5426         UINT64 buffer_offset,
   5427         D3D12_TILE_COPY_FLAGS flags);
   5428 
   5429     void (STDMETHODCALLTYPE *ResolveSubresource)(
   5430         ID3D12GraphicsCommandList1 *This,
   5431         ID3D12Resource *dst_resource,
   5432         UINT dst_sub_resource,
   5433         ID3D12Resource *src_resource,
   5434         UINT src_sub_resource,
   5435         DXGI_FORMAT format);
   5436 
   5437     void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
   5438         ID3D12GraphicsCommandList1 *This,
   5439         D3D12_PRIMITIVE_TOPOLOGY primitive_topology);
   5440 
   5441     void (STDMETHODCALLTYPE *RSSetViewports)(
   5442         ID3D12GraphicsCommandList1 *This,
   5443         UINT viewport_count,
   5444         const D3D12_VIEWPORT *viewports);
   5445 
   5446     void (STDMETHODCALLTYPE *RSSetScissorRects)(
   5447         ID3D12GraphicsCommandList1 *This,
   5448         UINT rect_count,
   5449         const D3D12_RECT *rects);
   5450 
   5451     void (STDMETHODCALLTYPE *OMSetBlendFactor)(
   5452         ID3D12GraphicsCommandList1 *This,
   5453         const FLOAT blend_factor[4]);
   5454 
   5455     void (STDMETHODCALLTYPE *OMSetStencilRef)(
   5456         ID3D12GraphicsCommandList1 *This,
   5457         UINT stencil_ref);
   5458 
   5459     void (STDMETHODCALLTYPE *SetPipelineState)(
   5460         ID3D12GraphicsCommandList1 *This,
   5461         ID3D12PipelineState *pipeline_state);
   5462 
   5463     void (STDMETHODCALLTYPE *ResourceBarrier)(
   5464         ID3D12GraphicsCommandList1 *This,
   5465         UINT barrier_count,
   5466         const D3D12_RESOURCE_BARRIER *barriers);
   5467 
   5468     void (STDMETHODCALLTYPE *ExecuteBundle)(
   5469         ID3D12GraphicsCommandList1 *This,
   5470         ID3D12GraphicsCommandList *command_list);
   5471 
   5472     void (STDMETHODCALLTYPE *SetDescriptorHeaps)(
   5473         ID3D12GraphicsCommandList1 *This,
   5474         UINT heap_count,
   5475         ID3D12DescriptorHeap *const *heaps);
   5476 
   5477     void (STDMETHODCALLTYPE *SetComputeRootSignature)(
   5478         ID3D12GraphicsCommandList1 *This,
   5479         ID3D12RootSignature *root_signature);
   5480 
   5481     void (STDMETHODCALLTYPE *SetGraphicsRootSignature)(
   5482         ID3D12GraphicsCommandList1 *This,
   5483         ID3D12RootSignature *root_signature);
   5484 
   5485     void (STDMETHODCALLTYPE *SetComputeRootDescriptorTable)(
   5486         ID3D12GraphicsCommandList1 *This,
   5487         UINT root_parameter_index,
   5488         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
   5489 
   5490     void (STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable)(
   5491         ID3D12GraphicsCommandList1 *This,
   5492         UINT root_parameter_index,
   5493         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
   5494 
   5495     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstant)(
   5496         ID3D12GraphicsCommandList1 *This,
   5497         UINT root_parameter_index,
   5498         UINT data,
   5499         UINT dst_offset);
   5500 
   5501     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant)(
   5502         ID3D12GraphicsCommandList1 *This,
   5503         UINT root_parameter_index,
   5504         UINT data,
   5505         UINT dst_offset);
   5506 
   5507     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstants)(
   5508         ID3D12GraphicsCommandList1 *This,
   5509         UINT root_parameter_index,
   5510         UINT constant_count,
   5511         const void *data,
   5512         UINT dst_offset);
   5513 
   5514     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants)(
   5515         ID3D12GraphicsCommandList1 *This,
   5516         UINT root_parameter_index,
   5517         UINT constant_count,
   5518         const void *data,
   5519         UINT dst_offset);
   5520 
   5521     void (STDMETHODCALLTYPE *SetComputeRootConstantBufferView)(
   5522         ID3D12GraphicsCommandList1 *This,
   5523         UINT root_parameter_index,
   5524         D3D12_GPU_VIRTUAL_ADDRESS address);
   5525 
   5526     void (STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView)(
   5527         ID3D12GraphicsCommandList1 *This,
   5528         UINT root_parameter_index,
   5529         D3D12_GPU_VIRTUAL_ADDRESS address);
   5530 
   5531     void (STDMETHODCALLTYPE *SetComputeRootShaderResourceView)(
   5532         ID3D12GraphicsCommandList1 *This,
   5533         UINT root_parameter_index,
   5534         D3D12_GPU_VIRTUAL_ADDRESS address);
   5535 
   5536     void (STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView)(
   5537         ID3D12GraphicsCommandList1 *This,
   5538         UINT root_parameter_index,
   5539         D3D12_GPU_VIRTUAL_ADDRESS address);
   5540 
   5541     void (STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView)(
   5542         ID3D12GraphicsCommandList1 *This,
   5543         UINT root_parameter_index,
   5544         D3D12_GPU_VIRTUAL_ADDRESS address);
   5545 
   5546     void (STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView)(
   5547         ID3D12GraphicsCommandList1 *This,
   5548         UINT root_parameter_index,
   5549         D3D12_GPU_VIRTUAL_ADDRESS address);
   5550 
   5551     void (STDMETHODCALLTYPE *IASetIndexBuffer)(
   5552         ID3D12GraphicsCommandList1 *This,
   5553         const D3D12_INDEX_BUFFER_VIEW *view);
   5554 
   5555     void (STDMETHODCALLTYPE *IASetVertexBuffers)(
   5556         ID3D12GraphicsCommandList1 *This,
   5557         UINT start_slot,
   5558         UINT view_count,
   5559         const D3D12_VERTEX_BUFFER_VIEW *views);
   5560 
   5561     void (STDMETHODCALLTYPE *SOSetTargets)(
   5562         ID3D12GraphicsCommandList1 *This,
   5563         UINT start_slot,
   5564         UINT view_count,
   5565         const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views);
   5566 
   5567     void (STDMETHODCALLTYPE *OMSetRenderTargets)(
   5568         ID3D12GraphicsCommandList1 *This,
   5569         UINT render_target_descriptor_count,
   5570         const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
   5571         WINBOOL single_descriptor_handle,
   5572         const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor);
   5573 
   5574     void (STDMETHODCALLTYPE *ClearDepthStencilView)(
   5575         ID3D12GraphicsCommandList1 *This,
   5576         D3D12_CPU_DESCRIPTOR_HANDLE dsv,
   5577         D3D12_CLEAR_FLAGS flags,
   5578         FLOAT depth,
   5579         UINT8 stencil,
   5580         UINT rect_count,
   5581         const D3D12_RECT *rects);
   5582 
   5583     void (STDMETHODCALLTYPE *ClearRenderTargetView)(
   5584         ID3D12GraphicsCommandList1 *This,
   5585         D3D12_CPU_DESCRIPTOR_HANDLE rtv,
   5586         const FLOAT color[4],
   5587         UINT rect_count,
   5588         const D3D12_RECT *rects);
   5589 
   5590     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewUint)(
   5591         ID3D12GraphicsCommandList1 *This,
   5592         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   5593         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   5594         ID3D12Resource *resource,
   5595         const UINT values[4],
   5596         UINT rect_count,
   5597         const D3D12_RECT *rects);
   5598 
   5599     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat)(
   5600         ID3D12GraphicsCommandList1 *This,
   5601         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   5602         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   5603         ID3D12Resource *resource,
   5604         const float values[4],
   5605         UINT rect_count,
   5606         const D3D12_RECT *rects);
   5607 
   5608     void (STDMETHODCALLTYPE *DiscardResource)(
   5609         ID3D12GraphicsCommandList1 *This,
   5610         ID3D12Resource *resource,
   5611         const D3D12_DISCARD_REGION *region);
   5612 
   5613     void (STDMETHODCALLTYPE *BeginQuery)(
   5614         ID3D12GraphicsCommandList1 *This,
   5615         ID3D12QueryHeap *heap,
   5616         D3D12_QUERY_TYPE type,
   5617         UINT index);
   5618 
   5619     void (STDMETHODCALLTYPE *EndQuery)(
   5620         ID3D12GraphicsCommandList1 *This,
   5621         ID3D12QueryHeap *heap,
   5622         D3D12_QUERY_TYPE type,
   5623         UINT index);
   5624 
   5625     void (STDMETHODCALLTYPE *ResolveQueryData)(
   5626         ID3D12GraphicsCommandList1 *This,
   5627         ID3D12QueryHeap *heap,
   5628         D3D12_QUERY_TYPE type,
   5629         UINT start_index,
   5630         UINT query_count,
   5631         ID3D12Resource *dst_buffer,
   5632         UINT64 aligned_dst_buffer_offset);
   5633 
   5634     void (STDMETHODCALLTYPE *SetPredication)(
   5635         ID3D12GraphicsCommandList1 *This,
   5636         ID3D12Resource *buffer,
   5637         UINT64 aligned_buffer_offset,
   5638         D3D12_PREDICATION_OP operation);
   5639 
   5640     void (STDMETHODCALLTYPE *SetMarker)(
   5641         ID3D12GraphicsCommandList1 *This,
   5642         UINT metadata,
   5643         const void *data,
   5644         UINT size);
   5645 
   5646     void (STDMETHODCALLTYPE *BeginEvent)(
   5647         ID3D12GraphicsCommandList1 *This,
   5648         UINT metadata,
   5649         const void *data,
   5650         UINT size);
   5651 
   5652     void (STDMETHODCALLTYPE *EndEvent)(
   5653         ID3D12GraphicsCommandList1 *This);
   5654 
   5655     void (STDMETHODCALLTYPE *ExecuteIndirect)(
   5656         ID3D12GraphicsCommandList1 *This,
   5657         ID3D12CommandSignature *command_signature,
   5658         UINT max_command_count,
   5659         ID3D12Resource *arg_buffer,
   5660         UINT64 arg_buffer_offset,
   5661         ID3D12Resource *count_buffer,
   5662         UINT64 count_buffer_offset);
   5663 
   5664     /*** ID3D12GraphicsCommandList1 methods ***/
   5665     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT)(
   5666         ID3D12GraphicsCommandList1 *This,
   5667         ID3D12Resource *dst_buffer,
   5668         UINT64 dst_offset,
   5669         ID3D12Resource *src_buffer,
   5670         UINT64 src_offset,
   5671         UINT dependent_resource_count,
   5672         ID3D12Resource *const *dependent_resources,
   5673         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
   5674 
   5675     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT64)(
   5676         ID3D12GraphicsCommandList1 *This,
   5677         ID3D12Resource *dst_buffer,
   5678         UINT64 dst_offset,
   5679         ID3D12Resource *src_buffer,
   5680         UINT64 src_offset,
   5681         UINT dependent_resource_count,
   5682         ID3D12Resource *const *dependent_resources,
   5683         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
   5684 
   5685     void (STDMETHODCALLTYPE *OMSetDepthBounds)(
   5686         ID3D12GraphicsCommandList1 *This,
   5687         FLOAT min,
   5688         FLOAT max);
   5689 
   5690     void (STDMETHODCALLTYPE *SetSamplePositions)(
   5691         ID3D12GraphicsCommandList1 *This,
   5692         UINT sample_count,
   5693         UINT pixel_count,
   5694         D3D12_SAMPLE_POSITION *sample_positions);
   5695 
   5696     void (STDMETHODCALLTYPE *ResolveSubresourceRegion)(
   5697         ID3D12GraphicsCommandList1 *This,
   5698         ID3D12Resource *dst_resource,
   5699         UINT dst_sub_resource_idx,
   5700         UINT dst_x,
   5701         UINT dst_y,
   5702         ID3D12Resource *src_resource,
   5703         UINT src_sub_resource_idx,
   5704         D3D12_RECT *src_rect,
   5705         DXGI_FORMAT format,
   5706         D3D12_RESOLVE_MODE mode);
   5707 
   5708     void (STDMETHODCALLTYPE *SetViewInstanceMask)(
   5709         ID3D12GraphicsCommandList1 *This,
   5710         UINT mask);
   5711 
   5712     END_INTERFACE
   5713 } ID3D12GraphicsCommandList1Vtbl;
   5714 
   5715 interface ID3D12GraphicsCommandList1 {
   5716     CONST_VTBL ID3D12GraphicsCommandList1Vtbl* lpVtbl;
   5717 };
   5718 
   5719 #ifdef COBJMACROS
   5720 #ifndef WIDL_C_INLINE_WRAPPERS
   5721 /*** IUnknown methods ***/
   5722 #define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5723 #define ID3D12GraphicsCommandList1_AddRef(This) (This)->lpVtbl->AddRef(This)
   5724 #define ID3D12GraphicsCommandList1_Release(This) (This)->lpVtbl->Release(This)
   5725 /*** ID3D12Object methods ***/
   5726 #define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   5727 #define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   5728 #define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   5729 #define ID3D12GraphicsCommandList1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   5730 /*** ID3D12DeviceChild methods ***/
   5731 #define ID3D12GraphicsCommandList1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   5732 /*** ID3D12CommandList methods ***/
   5733 #define ID3D12GraphicsCommandList1_GetType(This) (This)->lpVtbl->GetType(This)
   5734 /*** ID3D12GraphicsCommandList methods ***/
   5735 #define ID3D12GraphicsCommandList1_Close(This) (This)->lpVtbl->Close(This)
   5736 #define ID3D12GraphicsCommandList1_Reset(This,allocator,initial_state) (This)->lpVtbl->Reset(This,allocator,initial_state)
   5737 #define ID3D12GraphicsCommandList1_ClearState(This,pipeline_state) (This)->lpVtbl->ClearState(This,pipeline_state)
   5738 #define ID3D12GraphicsCommandList1_DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location) (This)->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location)
   5739 #define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location) (This)->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location)
   5740 #define ID3D12GraphicsCommandList1_Dispatch(This,x,u,z) (This)->lpVtbl->Dispatch(This,x,u,z)
   5741 #define ID3D12GraphicsCommandList1_CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count) (This)->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count)
   5742 #define ID3D12GraphicsCommandList1_CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box) (This)->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box)
   5743 #define ID3D12GraphicsCommandList1_CopyResource(This,dst_resource,src_resource) (This)->lpVtbl->CopyResource(This,dst_resource,src_resource)
   5744 #define ID3D12GraphicsCommandList1_CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags) (This)->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags)
   5745 #define ID3D12GraphicsCommandList1_ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format) (This)->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format)
   5746 #define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,primitive_topology) (This)->lpVtbl->IASetPrimitiveTopology(This,primitive_topology)
   5747 #define ID3D12GraphicsCommandList1_RSSetViewports(This,viewport_count,viewports) (This)->lpVtbl->RSSetViewports(This,viewport_count,viewports)
   5748 #define ID3D12GraphicsCommandList1_RSSetScissorRects(This,rect_count,rects) (This)->lpVtbl->RSSetScissorRects(This,rect_count,rects)
   5749 #define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,blend_factor) (This)->lpVtbl->OMSetBlendFactor(This,blend_factor)
   5750 #define ID3D12GraphicsCommandList1_OMSetStencilRef(This,stencil_ref) (This)->lpVtbl->OMSetStencilRef(This,stencil_ref)
   5751 #define ID3D12GraphicsCommandList1_SetPipelineState(This,pipeline_state) (This)->lpVtbl->SetPipelineState(This,pipeline_state)
   5752 #define ID3D12GraphicsCommandList1_ResourceBarrier(This,barrier_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barrier_count,barriers)
   5753 #define ID3D12GraphicsCommandList1_ExecuteBundle(This,command_list) (This)->lpVtbl->ExecuteBundle(This,command_list)
   5754 #define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,heap_count,heaps) (This)->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps)
   5755 #define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,root_signature) (This)->lpVtbl->SetComputeRootSignature(This,root_signature)
   5756 #define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,root_signature) (This)->lpVtbl->SetGraphicsRootSignature(This,root_signature)
   5757 #define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor)
   5758 #define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor)
   5759 #define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset)
   5760 #define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset)
   5761 #define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
   5762 #define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
   5763 #define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address)
   5764 #define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address)
   5765 #define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address)
   5766 #define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address)
   5767 #define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address)
   5768 #define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address)
   5769 #define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,view) (This)->lpVtbl->IASetIndexBuffer(This,view)
   5770 #define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,start_slot,view_count,views) (This)->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views)
   5771 #define ID3D12GraphicsCommandList1_SOSetTargets(This,start_slot,view_count,views) (This)->lpVtbl->SOSetTargets(This,start_slot,view_count,views)
   5772 #define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor) (This)->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor)
   5773 #define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects) (This)->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects)
   5774 #define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,rtv,color,rect_count,rects) (This)->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects)
   5775 #define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
   5776 #define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
   5777 #define ID3D12GraphicsCommandList1_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
   5778 #define ID3D12GraphicsCommandList1_BeginQuery(This,heap,type,index) (This)->lpVtbl->BeginQuery(This,heap,type,index)
   5779 #define ID3D12GraphicsCommandList1_EndQuery(This,heap,type,index) (This)->lpVtbl->EndQuery(This,heap,type,index)
   5780 #define ID3D12GraphicsCommandList1_ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset)
   5781 #define ID3D12GraphicsCommandList1_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
   5782 #define ID3D12GraphicsCommandList1_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
   5783 #define ID3D12GraphicsCommandList1_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
   5784 #define ID3D12GraphicsCommandList1_EndEvent(This) (This)->lpVtbl->EndEvent(This)
   5785 #define ID3D12GraphicsCommandList1_ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset) (This)->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset)
   5786 /*** ID3D12GraphicsCommandList1 methods ***/
   5787 #define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
   5788 #define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
   5789 #define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,min,max) (This)->lpVtbl->OMSetDepthBounds(This,min,max)
   5790 #define ID3D12GraphicsCommandList1_SetSamplePositions(This,sample_count,pixel_count,sample_positions) (This)->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions)
   5791 #define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode) (This)->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode)
   5792 #define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,mask) (This)->lpVtbl->SetViewInstanceMask(This,mask)
   5793 #else
   5794 /*** IUnknown methods ***/
   5795 static inline HRESULT ID3D12GraphicsCommandList1_QueryInterface(ID3D12GraphicsCommandList1* This,REFIID riid,void **ppvObject) {
   5796     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5797 }
   5798 static inline ULONG ID3D12GraphicsCommandList1_AddRef(ID3D12GraphicsCommandList1* This) {
   5799     return This->lpVtbl->AddRef(This);
   5800 }
   5801 static inline ULONG ID3D12GraphicsCommandList1_Release(ID3D12GraphicsCommandList1* This) {
   5802     return This->lpVtbl->Release(This);
   5803 }
   5804 /*** ID3D12Object methods ***/
   5805 static inline HRESULT ID3D12GraphicsCommandList1_GetPrivateData(ID3D12GraphicsCommandList1* This,REFGUID guid,UINT *data_size,void *data) {
   5806     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   5807 }
   5808 static inline HRESULT ID3D12GraphicsCommandList1_SetPrivateData(ID3D12GraphicsCommandList1* This,REFGUID guid,UINT data_size,const void *data) {
   5809     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   5810 }
   5811 static inline HRESULT ID3D12GraphicsCommandList1_SetPrivateDataInterface(ID3D12GraphicsCommandList1* This,REFGUID guid,const IUnknown *data) {
   5812     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   5813 }
   5814 static inline HRESULT ID3D12GraphicsCommandList1_SetName(ID3D12GraphicsCommandList1* This,const WCHAR *name) {
   5815     return This->lpVtbl->SetName(This,name);
   5816 }
   5817 /*** ID3D12DeviceChild methods ***/
   5818 static inline HRESULT ID3D12GraphicsCommandList1_GetDevice(ID3D12GraphicsCommandList1* This,REFIID riid,void **device) {
   5819     return This->lpVtbl->GetDevice(This,riid,device);
   5820 }
   5821 /*** ID3D12CommandList methods ***/
   5822 static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList1_GetType(ID3D12GraphicsCommandList1* This) {
   5823     return This->lpVtbl->GetType(This);
   5824 }
   5825 /*** ID3D12GraphicsCommandList methods ***/
   5826 static inline HRESULT ID3D12GraphicsCommandList1_Close(ID3D12GraphicsCommandList1* This) {
   5827     return This->lpVtbl->Close(This);
   5828 }
   5829 static inline HRESULT ID3D12GraphicsCommandList1_Reset(ID3D12GraphicsCommandList1* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
   5830     return This->lpVtbl->Reset(This,allocator,initial_state);
   5831 }
   5832 static inline void ID3D12GraphicsCommandList1_ClearState(ID3D12GraphicsCommandList1* This,ID3D12PipelineState *pipeline_state) {
   5833     This->lpVtbl->ClearState(This,pipeline_state);
   5834 }
   5835 static inline void ID3D12GraphicsCommandList1_DrawInstanced(ID3D12GraphicsCommandList1* This,UINT vertex_count_per_instance,UINT instance_count,UINT start_vertex_location,UINT start_instance_location) {
   5836     This->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location);
   5837 }
   5838 static inline void ID3D12GraphicsCommandList1_DrawIndexedInstanced(ID3D12GraphicsCommandList1* This,UINT index_count_per_instance,UINT instance_count,UINT start_vertex_location,INT base_vertex_location,UINT start_instance_location) {
   5839     This->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location);
   5840 }
   5841 static inline void ID3D12GraphicsCommandList1_Dispatch(ID3D12GraphicsCommandList1* This,UINT x,UINT u,UINT z) {
   5842     This->lpVtbl->Dispatch(This,x,u,z);
   5843 }
   5844 static inline void ID3D12GraphicsCommandList1_CopyBufferRegion(ID3D12GraphicsCommandList1* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT64 byte_count) {
   5845     This->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count);
   5846 }
   5847 static inline void ID3D12GraphicsCommandList1_CopyTextureRegion(ID3D12GraphicsCommandList1* This,const D3D12_TEXTURE_COPY_LOCATION *dst,UINT dst_x,UINT dst_y,UINT dst_z,const D3D12_TEXTURE_COPY_LOCATION *src,const D3D12_BOX *src_box) {
   5848     This->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box);
   5849 }
   5850 static inline void ID3D12GraphicsCommandList1_CopyResource(ID3D12GraphicsCommandList1* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
   5851     This->lpVtbl->CopyResource(This,dst_resource,src_resource);
   5852 }
   5853 static inline void ID3D12GraphicsCommandList1_CopyTiles(ID3D12GraphicsCommandList1* This,ID3D12Resource *tiled_resource,const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,const D3D12_TILE_REGION_SIZE *tile_region_size,ID3D12Resource *buffer,UINT64 buffer_offset,D3D12_TILE_COPY_FLAGS flags) {
   5854     This->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags);
   5855 }
   5856 static inline void ID3D12GraphicsCommandList1_ResolveSubresource(ID3D12GraphicsCommandList1* This,ID3D12Resource *dst_resource,UINT dst_sub_resource,ID3D12Resource *src_resource,UINT src_sub_resource,DXGI_FORMAT format) {
   5857     This->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format);
   5858 }
   5859 static inline void ID3D12GraphicsCommandList1_IASetPrimitiveTopology(ID3D12GraphicsCommandList1* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
   5860     This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
   5861 }
   5862 static inline void ID3D12GraphicsCommandList1_RSSetViewports(ID3D12GraphicsCommandList1* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
   5863     This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
   5864 }
   5865 static inline void ID3D12GraphicsCommandList1_RSSetScissorRects(ID3D12GraphicsCommandList1* This,UINT rect_count,const D3D12_RECT *rects) {
   5866     This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
   5867 }
   5868 static inline void ID3D12GraphicsCommandList1_OMSetBlendFactor(ID3D12GraphicsCommandList1* This,const FLOAT blend_factor[4]) {
   5869     This->lpVtbl->OMSetBlendFactor(This,blend_factor);
   5870 }
   5871 static inline void ID3D12GraphicsCommandList1_OMSetStencilRef(ID3D12GraphicsCommandList1* This,UINT stencil_ref) {
   5872     This->lpVtbl->OMSetStencilRef(This,stencil_ref);
   5873 }
   5874 static inline void ID3D12GraphicsCommandList1_SetPipelineState(ID3D12GraphicsCommandList1* This,ID3D12PipelineState *pipeline_state) {
   5875     This->lpVtbl->SetPipelineState(This,pipeline_state);
   5876 }
   5877 static inline void ID3D12GraphicsCommandList1_ResourceBarrier(ID3D12GraphicsCommandList1* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
   5878     This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
   5879 }
   5880 static inline void ID3D12GraphicsCommandList1_ExecuteBundle(ID3D12GraphicsCommandList1* This,ID3D12GraphicsCommandList *command_list) {
   5881     This->lpVtbl->ExecuteBundle(This,command_list);
   5882 }
   5883 static inline void ID3D12GraphicsCommandList1_SetDescriptorHeaps(ID3D12GraphicsCommandList1* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
   5884     This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
   5885 }
   5886 static inline void ID3D12GraphicsCommandList1_SetComputeRootSignature(ID3D12GraphicsCommandList1* This,ID3D12RootSignature *root_signature) {
   5887     This->lpVtbl->SetComputeRootSignature(This,root_signature);
   5888 }
   5889 static inline void ID3D12GraphicsCommandList1_SetGraphicsRootSignature(ID3D12GraphicsCommandList1* This,ID3D12RootSignature *root_signature) {
   5890     This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
   5891 }
   5892 static inline void ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
   5893     This->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor);
   5894 }
   5895 static inline void ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
   5896     This->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor);
   5897 }
   5898 static inline void ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
   5899     This->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset);
   5900 }
   5901 static inline void ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
   5902     This->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset);
   5903 }
   5904 static inline void ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
   5905     This->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
   5906 }
   5907 static inline void ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
   5908     This->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
   5909 }
   5910 static inline void ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5911     This->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address);
   5912 }
   5913 static inline void ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5914     This->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address);
   5915 }
   5916 static inline void ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5917     This->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address);
   5918 }
   5919 static inline void ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5920     This->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address);
   5921 }
   5922 static inline void ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5923     This->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address);
   5924 }
   5925 static inline void ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(ID3D12GraphicsCommandList1* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   5926     This->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address);
   5927 }
   5928 static inline void ID3D12GraphicsCommandList1_IASetIndexBuffer(ID3D12GraphicsCommandList1* This,const D3D12_INDEX_BUFFER_VIEW *view) {
   5929     This->lpVtbl->IASetIndexBuffer(This,view);
   5930 }
   5931 static inline void ID3D12GraphicsCommandList1_IASetVertexBuffers(ID3D12GraphicsCommandList1* This,UINT start_slot,UINT view_count,const D3D12_VERTEX_BUFFER_VIEW *views) {
   5932     This->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views);
   5933 }
   5934 static inline void ID3D12GraphicsCommandList1_SOSetTargets(ID3D12GraphicsCommandList1* This,UINT start_slot,UINT view_count,const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views) {
   5935     This->lpVtbl->SOSetTargets(This,start_slot,view_count,views);
   5936 }
   5937 static inline void ID3D12GraphicsCommandList1_OMSetRenderTargets(ID3D12GraphicsCommandList1* This,UINT render_target_descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,WINBOOL single_descriptor_handle,const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor) {
   5938     This->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor);
   5939 }
   5940 static inline void ID3D12GraphicsCommandList1_ClearDepthStencilView(ID3D12GraphicsCommandList1* This,D3D12_CPU_DESCRIPTOR_HANDLE dsv,D3D12_CLEAR_FLAGS flags,FLOAT depth,UINT8 stencil,UINT rect_count,const D3D12_RECT *rects) {
   5941     This->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects);
   5942 }
   5943 static inline void ID3D12GraphicsCommandList1_ClearRenderTargetView(ID3D12GraphicsCommandList1* This,D3D12_CPU_DESCRIPTOR_HANDLE rtv,const FLOAT color[4],UINT rect_count,const D3D12_RECT *rects) {
   5944     This->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects);
   5945 }
   5946 static inline void ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(ID3D12GraphicsCommandList1* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const UINT values[4],UINT rect_count,const D3D12_RECT *rects) {
   5947     This->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
   5948 }
   5949 static inline void ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(ID3D12GraphicsCommandList1* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const float values[4],UINT rect_count,const D3D12_RECT *rects) {
   5950     This->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
   5951 }
   5952 static inline void ID3D12GraphicsCommandList1_DiscardResource(ID3D12GraphicsCommandList1* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
   5953     This->lpVtbl->DiscardResource(This,resource,region);
   5954 }
   5955 static inline void ID3D12GraphicsCommandList1_BeginQuery(ID3D12GraphicsCommandList1* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
   5956     This->lpVtbl->BeginQuery(This,heap,type,index);
   5957 }
   5958 static inline void ID3D12GraphicsCommandList1_EndQuery(ID3D12GraphicsCommandList1* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
   5959     This->lpVtbl->EndQuery(This,heap,type,index);
   5960 }
   5961 static inline void ID3D12GraphicsCommandList1_ResolveQueryData(ID3D12GraphicsCommandList1* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT start_index,UINT query_count,ID3D12Resource *dst_buffer,UINT64 aligned_dst_buffer_offset) {
   5962     This->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset);
   5963 }
   5964 static inline void ID3D12GraphicsCommandList1_SetPredication(ID3D12GraphicsCommandList1* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
   5965     This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
   5966 }
   5967 static inline void ID3D12GraphicsCommandList1_SetMarker(ID3D12GraphicsCommandList1* This,UINT metadata,const void *data,UINT size) {
   5968     This->lpVtbl->SetMarker(This,metadata,data,size);
   5969 }
   5970 static inline void ID3D12GraphicsCommandList1_BeginEvent(ID3D12GraphicsCommandList1* This,UINT metadata,const void *data,UINT size) {
   5971     This->lpVtbl->BeginEvent(This,metadata,data,size);
   5972 }
   5973 static inline void ID3D12GraphicsCommandList1_EndEvent(ID3D12GraphicsCommandList1* This) {
   5974     This->lpVtbl->EndEvent(This);
   5975 }
   5976 static inline void ID3D12GraphicsCommandList1_ExecuteIndirect(ID3D12GraphicsCommandList1* This,ID3D12CommandSignature *command_signature,UINT max_command_count,ID3D12Resource *arg_buffer,UINT64 arg_buffer_offset,ID3D12Resource *count_buffer,UINT64 count_buffer_offset) {
   5977     This->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset);
   5978 }
   5979 /*** ID3D12GraphicsCommandList1 methods ***/
   5980 static inline void ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(ID3D12GraphicsCommandList1* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
   5981     This->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
   5982 }
   5983 static inline void ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(ID3D12GraphicsCommandList1* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
   5984     This->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
   5985 }
   5986 static inline void ID3D12GraphicsCommandList1_OMSetDepthBounds(ID3D12GraphicsCommandList1* This,FLOAT min,FLOAT max) {
   5987     This->lpVtbl->OMSetDepthBounds(This,min,max);
   5988 }
   5989 static inline void ID3D12GraphicsCommandList1_SetSamplePositions(ID3D12GraphicsCommandList1* This,UINT sample_count,UINT pixel_count,D3D12_SAMPLE_POSITION *sample_positions) {
   5990     This->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions);
   5991 }
   5992 static inline void ID3D12GraphicsCommandList1_ResolveSubresourceRegion(ID3D12GraphicsCommandList1* This,ID3D12Resource *dst_resource,UINT dst_sub_resource_idx,UINT dst_x,UINT dst_y,ID3D12Resource *src_resource,UINT src_sub_resource_idx,D3D12_RECT *src_rect,DXGI_FORMAT format,D3D12_RESOLVE_MODE mode) {
   5993     This->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode);
   5994 }
   5995 static inline void ID3D12GraphicsCommandList1_SetViewInstanceMask(ID3D12GraphicsCommandList1* This,UINT mask) {
   5996     This->lpVtbl->SetViewInstanceMask(This,mask);
   5997 }
   5998 #endif
   5999 #endif
   6000 
   6001 #endif
   6002 
   6003 
   6004 #endif  /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
   6005 
   6006 /*****************************************************************************
   6007  * ID3D12GraphicsCommandList2 interface
   6008  */
   6009 #ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
   6010 #define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
   6011 
   6012 DEFINE_GUID(IID_ID3D12GraphicsCommandList2, 0x38c3e585, 0xff17, 0x412c, 0x91,0x50, 0x4f,0xc6,0xf9,0xd7,0x2a,0x28);
   6013 #if defined(__cplusplus) && !defined(CINTERFACE)
   6014 MIDL_INTERFACE("38c3e585-ff17-412c-9150-4fc6f9d72a28")
   6015 ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1
   6016 {
   6017     virtual void STDMETHODCALLTYPE WriteBufferImmediate(
   6018         UINT count,
   6019         const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,
   6020         const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) = 0;
   6021 
   6022 };
   6023 #ifdef __CRT_UUID_DECL
   6024 __CRT_UUID_DECL(ID3D12GraphicsCommandList2, 0x38c3e585, 0xff17, 0x412c, 0x91,0x50, 0x4f,0xc6,0xf9,0xd7,0x2a,0x28)
   6025 #endif
   6026 #else
   6027 typedef struct ID3D12GraphicsCommandList2Vtbl {
   6028     BEGIN_INTERFACE
   6029 
   6030     /*** IUnknown methods ***/
   6031     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6032         ID3D12GraphicsCommandList2 *This,
   6033         REFIID riid,
   6034         void **ppvObject);
   6035 
   6036     ULONG (STDMETHODCALLTYPE *AddRef)(
   6037         ID3D12GraphicsCommandList2 *This);
   6038 
   6039     ULONG (STDMETHODCALLTYPE *Release)(
   6040         ID3D12GraphicsCommandList2 *This);
   6041 
   6042     /*** ID3D12Object methods ***/
   6043     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   6044         ID3D12GraphicsCommandList2 *This,
   6045         REFGUID guid,
   6046         UINT *data_size,
   6047         void *data);
   6048 
   6049     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   6050         ID3D12GraphicsCommandList2 *This,
   6051         REFGUID guid,
   6052         UINT data_size,
   6053         const void *data);
   6054 
   6055     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   6056         ID3D12GraphicsCommandList2 *This,
   6057         REFGUID guid,
   6058         const IUnknown *data);
   6059 
   6060     HRESULT (STDMETHODCALLTYPE *SetName)(
   6061         ID3D12GraphicsCommandList2 *This,
   6062         const WCHAR *name);
   6063 
   6064     /*** ID3D12DeviceChild methods ***/
   6065     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   6066         ID3D12GraphicsCommandList2 *This,
   6067         REFIID riid,
   6068         void **device);
   6069 
   6070     /*** ID3D12CommandList methods ***/
   6071     D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
   6072         ID3D12GraphicsCommandList2 *This);
   6073 
   6074     /*** ID3D12GraphicsCommandList methods ***/
   6075     HRESULT (STDMETHODCALLTYPE *Close)(
   6076         ID3D12GraphicsCommandList2 *This);
   6077 
   6078     HRESULT (STDMETHODCALLTYPE *Reset)(
   6079         ID3D12GraphicsCommandList2 *This,
   6080         ID3D12CommandAllocator *allocator,
   6081         ID3D12PipelineState *initial_state);
   6082 
   6083     void (STDMETHODCALLTYPE *ClearState)(
   6084         ID3D12GraphicsCommandList2 *This,
   6085         ID3D12PipelineState *pipeline_state);
   6086 
   6087     void (STDMETHODCALLTYPE *DrawInstanced)(
   6088         ID3D12GraphicsCommandList2 *This,
   6089         UINT vertex_count_per_instance,
   6090         UINT instance_count,
   6091         UINT start_vertex_location,
   6092         UINT start_instance_location);
   6093 
   6094     void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
   6095         ID3D12GraphicsCommandList2 *This,
   6096         UINT index_count_per_instance,
   6097         UINT instance_count,
   6098         UINT start_vertex_location,
   6099         INT base_vertex_location,
   6100         UINT start_instance_location);
   6101 
   6102     void (STDMETHODCALLTYPE *Dispatch)(
   6103         ID3D12GraphicsCommandList2 *This,
   6104         UINT x,
   6105         UINT u,
   6106         UINT z);
   6107 
   6108     void (STDMETHODCALLTYPE *CopyBufferRegion)(
   6109         ID3D12GraphicsCommandList2 *This,
   6110         ID3D12Resource *dst_buffer,
   6111         UINT64 dst_offset,
   6112         ID3D12Resource *src_buffer,
   6113         UINT64 src_offset,
   6114         UINT64 byte_count);
   6115 
   6116     void (STDMETHODCALLTYPE *CopyTextureRegion)(
   6117         ID3D12GraphicsCommandList2 *This,
   6118         const D3D12_TEXTURE_COPY_LOCATION *dst,
   6119         UINT dst_x,
   6120         UINT dst_y,
   6121         UINT dst_z,
   6122         const D3D12_TEXTURE_COPY_LOCATION *src,
   6123         const D3D12_BOX *src_box);
   6124 
   6125     void (STDMETHODCALLTYPE *CopyResource)(
   6126         ID3D12GraphicsCommandList2 *This,
   6127         ID3D12Resource *dst_resource,
   6128         ID3D12Resource *src_resource);
   6129 
   6130     void (STDMETHODCALLTYPE *CopyTiles)(
   6131         ID3D12GraphicsCommandList2 *This,
   6132         ID3D12Resource *tiled_resource,
   6133         const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
   6134         const D3D12_TILE_REGION_SIZE *tile_region_size,
   6135         ID3D12Resource *buffer,
   6136         UINT64 buffer_offset,
   6137         D3D12_TILE_COPY_FLAGS flags);
   6138 
   6139     void (STDMETHODCALLTYPE *ResolveSubresource)(
   6140         ID3D12GraphicsCommandList2 *This,
   6141         ID3D12Resource *dst_resource,
   6142         UINT dst_sub_resource,
   6143         ID3D12Resource *src_resource,
   6144         UINT src_sub_resource,
   6145         DXGI_FORMAT format);
   6146 
   6147     void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
   6148         ID3D12GraphicsCommandList2 *This,
   6149         D3D12_PRIMITIVE_TOPOLOGY primitive_topology);
   6150 
   6151     void (STDMETHODCALLTYPE *RSSetViewports)(
   6152         ID3D12GraphicsCommandList2 *This,
   6153         UINT viewport_count,
   6154         const D3D12_VIEWPORT *viewports);
   6155 
   6156     void (STDMETHODCALLTYPE *RSSetScissorRects)(
   6157         ID3D12GraphicsCommandList2 *This,
   6158         UINT rect_count,
   6159         const D3D12_RECT *rects);
   6160 
   6161     void (STDMETHODCALLTYPE *OMSetBlendFactor)(
   6162         ID3D12GraphicsCommandList2 *This,
   6163         const FLOAT blend_factor[4]);
   6164 
   6165     void (STDMETHODCALLTYPE *OMSetStencilRef)(
   6166         ID3D12GraphicsCommandList2 *This,
   6167         UINT stencil_ref);
   6168 
   6169     void (STDMETHODCALLTYPE *SetPipelineState)(
   6170         ID3D12GraphicsCommandList2 *This,
   6171         ID3D12PipelineState *pipeline_state);
   6172 
   6173     void (STDMETHODCALLTYPE *ResourceBarrier)(
   6174         ID3D12GraphicsCommandList2 *This,
   6175         UINT barrier_count,
   6176         const D3D12_RESOURCE_BARRIER *barriers);
   6177 
   6178     void (STDMETHODCALLTYPE *ExecuteBundle)(
   6179         ID3D12GraphicsCommandList2 *This,
   6180         ID3D12GraphicsCommandList *command_list);
   6181 
   6182     void (STDMETHODCALLTYPE *SetDescriptorHeaps)(
   6183         ID3D12GraphicsCommandList2 *This,
   6184         UINT heap_count,
   6185         ID3D12DescriptorHeap *const *heaps);
   6186 
   6187     void (STDMETHODCALLTYPE *SetComputeRootSignature)(
   6188         ID3D12GraphicsCommandList2 *This,
   6189         ID3D12RootSignature *root_signature);
   6190 
   6191     void (STDMETHODCALLTYPE *SetGraphicsRootSignature)(
   6192         ID3D12GraphicsCommandList2 *This,
   6193         ID3D12RootSignature *root_signature);
   6194 
   6195     void (STDMETHODCALLTYPE *SetComputeRootDescriptorTable)(
   6196         ID3D12GraphicsCommandList2 *This,
   6197         UINT root_parameter_index,
   6198         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
   6199 
   6200     void (STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable)(
   6201         ID3D12GraphicsCommandList2 *This,
   6202         UINT root_parameter_index,
   6203         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
   6204 
   6205     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstant)(
   6206         ID3D12GraphicsCommandList2 *This,
   6207         UINT root_parameter_index,
   6208         UINT data,
   6209         UINT dst_offset);
   6210 
   6211     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant)(
   6212         ID3D12GraphicsCommandList2 *This,
   6213         UINT root_parameter_index,
   6214         UINT data,
   6215         UINT dst_offset);
   6216 
   6217     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstants)(
   6218         ID3D12GraphicsCommandList2 *This,
   6219         UINT root_parameter_index,
   6220         UINT constant_count,
   6221         const void *data,
   6222         UINT dst_offset);
   6223 
   6224     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants)(
   6225         ID3D12GraphicsCommandList2 *This,
   6226         UINT root_parameter_index,
   6227         UINT constant_count,
   6228         const void *data,
   6229         UINT dst_offset);
   6230 
   6231     void (STDMETHODCALLTYPE *SetComputeRootConstantBufferView)(
   6232         ID3D12GraphicsCommandList2 *This,
   6233         UINT root_parameter_index,
   6234         D3D12_GPU_VIRTUAL_ADDRESS address);
   6235 
   6236     void (STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView)(
   6237         ID3D12GraphicsCommandList2 *This,
   6238         UINT root_parameter_index,
   6239         D3D12_GPU_VIRTUAL_ADDRESS address);
   6240 
   6241     void (STDMETHODCALLTYPE *SetComputeRootShaderResourceView)(
   6242         ID3D12GraphicsCommandList2 *This,
   6243         UINT root_parameter_index,
   6244         D3D12_GPU_VIRTUAL_ADDRESS address);
   6245 
   6246     void (STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView)(
   6247         ID3D12GraphicsCommandList2 *This,
   6248         UINT root_parameter_index,
   6249         D3D12_GPU_VIRTUAL_ADDRESS address);
   6250 
   6251     void (STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView)(
   6252         ID3D12GraphicsCommandList2 *This,
   6253         UINT root_parameter_index,
   6254         D3D12_GPU_VIRTUAL_ADDRESS address);
   6255 
   6256     void (STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView)(
   6257         ID3D12GraphicsCommandList2 *This,
   6258         UINT root_parameter_index,
   6259         D3D12_GPU_VIRTUAL_ADDRESS address);
   6260 
   6261     void (STDMETHODCALLTYPE *IASetIndexBuffer)(
   6262         ID3D12GraphicsCommandList2 *This,
   6263         const D3D12_INDEX_BUFFER_VIEW *view);
   6264 
   6265     void (STDMETHODCALLTYPE *IASetVertexBuffers)(
   6266         ID3D12GraphicsCommandList2 *This,
   6267         UINT start_slot,
   6268         UINT view_count,
   6269         const D3D12_VERTEX_BUFFER_VIEW *views);
   6270 
   6271     void (STDMETHODCALLTYPE *SOSetTargets)(
   6272         ID3D12GraphicsCommandList2 *This,
   6273         UINT start_slot,
   6274         UINT view_count,
   6275         const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views);
   6276 
   6277     void (STDMETHODCALLTYPE *OMSetRenderTargets)(
   6278         ID3D12GraphicsCommandList2 *This,
   6279         UINT render_target_descriptor_count,
   6280         const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
   6281         WINBOOL single_descriptor_handle,
   6282         const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor);
   6283 
   6284     void (STDMETHODCALLTYPE *ClearDepthStencilView)(
   6285         ID3D12GraphicsCommandList2 *This,
   6286         D3D12_CPU_DESCRIPTOR_HANDLE dsv,
   6287         D3D12_CLEAR_FLAGS flags,
   6288         FLOAT depth,
   6289         UINT8 stencil,
   6290         UINT rect_count,
   6291         const D3D12_RECT *rects);
   6292 
   6293     void (STDMETHODCALLTYPE *ClearRenderTargetView)(
   6294         ID3D12GraphicsCommandList2 *This,
   6295         D3D12_CPU_DESCRIPTOR_HANDLE rtv,
   6296         const FLOAT color[4],
   6297         UINT rect_count,
   6298         const D3D12_RECT *rects);
   6299 
   6300     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewUint)(
   6301         ID3D12GraphicsCommandList2 *This,
   6302         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   6303         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   6304         ID3D12Resource *resource,
   6305         const UINT values[4],
   6306         UINT rect_count,
   6307         const D3D12_RECT *rects);
   6308 
   6309     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat)(
   6310         ID3D12GraphicsCommandList2 *This,
   6311         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   6312         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   6313         ID3D12Resource *resource,
   6314         const float values[4],
   6315         UINT rect_count,
   6316         const D3D12_RECT *rects);
   6317 
   6318     void (STDMETHODCALLTYPE *DiscardResource)(
   6319         ID3D12GraphicsCommandList2 *This,
   6320         ID3D12Resource *resource,
   6321         const D3D12_DISCARD_REGION *region);
   6322 
   6323     void (STDMETHODCALLTYPE *BeginQuery)(
   6324         ID3D12GraphicsCommandList2 *This,
   6325         ID3D12QueryHeap *heap,
   6326         D3D12_QUERY_TYPE type,
   6327         UINT index);
   6328 
   6329     void (STDMETHODCALLTYPE *EndQuery)(
   6330         ID3D12GraphicsCommandList2 *This,
   6331         ID3D12QueryHeap *heap,
   6332         D3D12_QUERY_TYPE type,
   6333         UINT index);
   6334 
   6335     void (STDMETHODCALLTYPE *ResolveQueryData)(
   6336         ID3D12GraphicsCommandList2 *This,
   6337         ID3D12QueryHeap *heap,
   6338         D3D12_QUERY_TYPE type,
   6339         UINT start_index,
   6340         UINT query_count,
   6341         ID3D12Resource *dst_buffer,
   6342         UINT64 aligned_dst_buffer_offset);
   6343 
   6344     void (STDMETHODCALLTYPE *SetPredication)(
   6345         ID3D12GraphicsCommandList2 *This,
   6346         ID3D12Resource *buffer,
   6347         UINT64 aligned_buffer_offset,
   6348         D3D12_PREDICATION_OP operation);
   6349 
   6350     void (STDMETHODCALLTYPE *SetMarker)(
   6351         ID3D12GraphicsCommandList2 *This,
   6352         UINT metadata,
   6353         const void *data,
   6354         UINT size);
   6355 
   6356     void (STDMETHODCALLTYPE *BeginEvent)(
   6357         ID3D12GraphicsCommandList2 *This,
   6358         UINT metadata,
   6359         const void *data,
   6360         UINT size);
   6361 
   6362     void (STDMETHODCALLTYPE *EndEvent)(
   6363         ID3D12GraphicsCommandList2 *This);
   6364 
   6365     void (STDMETHODCALLTYPE *ExecuteIndirect)(
   6366         ID3D12GraphicsCommandList2 *This,
   6367         ID3D12CommandSignature *command_signature,
   6368         UINT max_command_count,
   6369         ID3D12Resource *arg_buffer,
   6370         UINT64 arg_buffer_offset,
   6371         ID3D12Resource *count_buffer,
   6372         UINT64 count_buffer_offset);
   6373 
   6374     /*** ID3D12GraphicsCommandList1 methods ***/
   6375     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT)(
   6376         ID3D12GraphicsCommandList2 *This,
   6377         ID3D12Resource *dst_buffer,
   6378         UINT64 dst_offset,
   6379         ID3D12Resource *src_buffer,
   6380         UINT64 src_offset,
   6381         UINT dependent_resource_count,
   6382         ID3D12Resource *const *dependent_resources,
   6383         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
   6384 
   6385     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT64)(
   6386         ID3D12GraphicsCommandList2 *This,
   6387         ID3D12Resource *dst_buffer,
   6388         UINT64 dst_offset,
   6389         ID3D12Resource *src_buffer,
   6390         UINT64 src_offset,
   6391         UINT dependent_resource_count,
   6392         ID3D12Resource *const *dependent_resources,
   6393         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
   6394 
   6395     void (STDMETHODCALLTYPE *OMSetDepthBounds)(
   6396         ID3D12GraphicsCommandList2 *This,
   6397         FLOAT min,
   6398         FLOAT max);
   6399 
   6400     void (STDMETHODCALLTYPE *SetSamplePositions)(
   6401         ID3D12GraphicsCommandList2 *This,
   6402         UINT sample_count,
   6403         UINT pixel_count,
   6404         D3D12_SAMPLE_POSITION *sample_positions);
   6405 
   6406     void (STDMETHODCALLTYPE *ResolveSubresourceRegion)(
   6407         ID3D12GraphicsCommandList2 *This,
   6408         ID3D12Resource *dst_resource,
   6409         UINT dst_sub_resource_idx,
   6410         UINT dst_x,
   6411         UINT dst_y,
   6412         ID3D12Resource *src_resource,
   6413         UINT src_sub_resource_idx,
   6414         D3D12_RECT *src_rect,
   6415         DXGI_FORMAT format,
   6416         D3D12_RESOLVE_MODE mode);
   6417 
   6418     void (STDMETHODCALLTYPE *SetViewInstanceMask)(
   6419         ID3D12GraphicsCommandList2 *This,
   6420         UINT mask);
   6421 
   6422     /*** ID3D12GraphicsCommandList2 methods ***/
   6423     void (STDMETHODCALLTYPE *WriteBufferImmediate)(
   6424         ID3D12GraphicsCommandList2 *This,
   6425         UINT count,
   6426         const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,
   6427         const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
   6428 
   6429     END_INTERFACE
   6430 } ID3D12GraphicsCommandList2Vtbl;
   6431 
   6432 interface ID3D12GraphicsCommandList2 {
   6433     CONST_VTBL ID3D12GraphicsCommandList2Vtbl* lpVtbl;
   6434 };
   6435 
   6436 #ifdef COBJMACROS
   6437 #ifndef WIDL_C_INLINE_WRAPPERS
   6438 /*** IUnknown methods ***/
   6439 #define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6440 #define ID3D12GraphicsCommandList2_AddRef(This) (This)->lpVtbl->AddRef(This)
   6441 #define ID3D12GraphicsCommandList2_Release(This) (This)->lpVtbl->Release(This)
   6442 /*** ID3D12Object methods ***/
   6443 #define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   6444 #define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   6445 #define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   6446 #define ID3D12GraphicsCommandList2_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   6447 /*** ID3D12DeviceChild methods ***/
   6448 #define ID3D12GraphicsCommandList2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   6449 /*** ID3D12CommandList methods ***/
   6450 #define ID3D12GraphicsCommandList2_GetType(This) (This)->lpVtbl->GetType(This)
   6451 /*** ID3D12GraphicsCommandList methods ***/
   6452 #define ID3D12GraphicsCommandList2_Close(This) (This)->lpVtbl->Close(This)
   6453 #define ID3D12GraphicsCommandList2_Reset(This,allocator,initial_state) (This)->lpVtbl->Reset(This,allocator,initial_state)
   6454 #define ID3D12GraphicsCommandList2_ClearState(This,pipeline_state) (This)->lpVtbl->ClearState(This,pipeline_state)
   6455 #define ID3D12GraphicsCommandList2_DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location) (This)->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location)
   6456 #define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location) (This)->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location)
   6457 #define ID3D12GraphicsCommandList2_Dispatch(This,x,u,z) (This)->lpVtbl->Dispatch(This,x,u,z)
   6458 #define ID3D12GraphicsCommandList2_CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count) (This)->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count)
   6459 #define ID3D12GraphicsCommandList2_CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box) (This)->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box)
   6460 #define ID3D12GraphicsCommandList2_CopyResource(This,dst_resource,src_resource) (This)->lpVtbl->CopyResource(This,dst_resource,src_resource)
   6461 #define ID3D12GraphicsCommandList2_CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags) (This)->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags)
   6462 #define ID3D12GraphicsCommandList2_ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format) (This)->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format)
   6463 #define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,primitive_topology) (This)->lpVtbl->IASetPrimitiveTopology(This,primitive_topology)
   6464 #define ID3D12GraphicsCommandList2_RSSetViewports(This,viewport_count,viewports) (This)->lpVtbl->RSSetViewports(This,viewport_count,viewports)
   6465 #define ID3D12GraphicsCommandList2_RSSetScissorRects(This,rect_count,rects) (This)->lpVtbl->RSSetScissorRects(This,rect_count,rects)
   6466 #define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,blend_factor) (This)->lpVtbl->OMSetBlendFactor(This,blend_factor)
   6467 #define ID3D12GraphicsCommandList2_OMSetStencilRef(This,stencil_ref) (This)->lpVtbl->OMSetStencilRef(This,stencil_ref)
   6468 #define ID3D12GraphicsCommandList2_SetPipelineState(This,pipeline_state) (This)->lpVtbl->SetPipelineState(This,pipeline_state)
   6469 #define ID3D12GraphicsCommandList2_ResourceBarrier(This,barrier_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barrier_count,barriers)
   6470 #define ID3D12GraphicsCommandList2_ExecuteBundle(This,command_list) (This)->lpVtbl->ExecuteBundle(This,command_list)
   6471 #define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,heap_count,heaps) (This)->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps)
   6472 #define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,root_signature) (This)->lpVtbl->SetComputeRootSignature(This,root_signature)
   6473 #define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,root_signature) (This)->lpVtbl->SetGraphicsRootSignature(This,root_signature)
   6474 #define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor)
   6475 #define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor)
   6476 #define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset)
   6477 #define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset)
   6478 #define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
   6479 #define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
   6480 #define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address)
   6481 #define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address)
   6482 #define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address)
   6483 #define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address)
   6484 #define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address)
   6485 #define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address)
   6486 #define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,view) (This)->lpVtbl->IASetIndexBuffer(This,view)
   6487 #define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,start_slot,view_count,views) (This)->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views)
   6488 #define ID3D12GraphicsCommandList2_SOSetTargets(This,start_slot,view_count,views) (This)->lpVtbl->SOSetTargets(This,start_slot,view_count,views)
   6489 #define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor) (This)->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor)
   6490 #define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects) (This)->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects)
   6491 #define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,rtv,color,rect_count,rects) (This)->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects)
   6492 #define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
   6493 #define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
   6494 #define ID3D12GraphicsCommandList2_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
   6495 #define ID3D12GraphicsCommandList2_BeginQuery(This,heap,type,index) (This)->lpVtbl->BeginQuery(This,heap,type,index)
   6496 #define ID3D12GraphicsCommandList2_EndQuery(This,heap,type,index) (This)->lpVtbl->EndQuery(This,heap,type,index)
   6497 #define ID3D12GraphicsCommandList2_ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset)
   6498 #define ID3D12GraphicsCommandList2_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
   6499 #define ID3D12GraphicsCommandList2_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
   6500 #define ID3D12GraphicsCommandList2_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
   6501 #define ID3D12GraphicsCommandList2_EndEvent(This) (This)->lpVtbl->EndEvent(This)
   6502 #define ID3D12GraphicsCommandList2_ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset) (This)->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset)
   6503 /*** ID3D12GraphicsCommandList1 methods ***/
   6504 #define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
   6505 #define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
   6506 #define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,min,max) (This)->lpVtbl->OMSetDepthBounds(This,min,max)
   6507 #define ID3D12GraphicsCommandList2_SetSamplePositions(This,sample_count,pixel_count,sample_positions) (This)->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions)
   6508 #define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode) (This)->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode)
   6509 #define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,mask) (This)->lpVtbl->SetViewInstanceMask(This,mask)
   6510 /*** ID3D12GraphicsCommandList2 methods ***/
   6511 #define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,count,parameters,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,parameters,modes)
   6512 #else
   6513 /*** IUnknown methods ***/
   6514 static inline HRESULT ID3D12GraphicsCommandList2_QueryInterface(ID3D12GraphicsCommandList2* This,REFIID riid,void **ppvObject) {
   6515     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6516 }
   6517 static inline ULONG ID3D12GraphicsCommandList2_AddRef(ID3D12GraphicsCommandList2* This) {
   6518     return This->lpVtbl->AddRef(This);
   6519 }
   6520 static inline ULONG ID3D12GraphicsCommandList2_Release(ID3D12GraphicsCommandList2* This) {
   6521     return This->lpVtbl->Release(This);
   6522 }
   6523 /*** ID3D12Object methods ***/
   6524 static inline HRESULT ID3D12GraphicsCommandList2_GetPrivateData(ID3D12GraphicsCommandList2* This,REFGUID guid,UINT *data_size,void *data) {
   6525     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   6526 }
   6527 static inline HRESULT ID3D12GraphicsCommandList2_SetPrivateData(ID3D12GraphicsCommandList2* This,REFGUID guid,UINT data_size,const void *data) {
   6528     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   6529 }
   6530 static inline HRESULT ID3D12GraphicsCommandList2_SetPrivateDataInterface(ID3D12GraphicsCommandList2* This,REFGUID guid,const IUnknown *data) {
   6531     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   6532 }
   6533 static inline HRESULT ID3D12GraphicsCommandList2_SetName(ID3D12GraphicsCommandList2* This,const WCHAR *name) {
   6534     return This->lpVtbl->SetName(This,name);
   6535 }
   6536 /*** ID3D12DeviceChild methods ***/
   6537 static inline HRESULT ID3D12GraphicsCommandList2_GetDevice(ID3D12GraphicsCommandList2* This,REFIID riid,void **device) {
   6538     return This->lpVtbl->GetDevice(This,riid,device);
   6539 }
   6540 /*** ID3D12CommandList methods ***/
   6541 static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList2_GetType(ID3D12GraphicsCommandList2* This) {
   6542     return This->lpVtbl->GetType(This);
   6543 }
   6544 /*** ID3D12GraphicsCommandList methods ***/
   6545 static inline HRESULT ID3D12GraphicsCommandList2_Close(ID3D12GraphicsCommandList2* This) {
   6546     return This->lpVtbl->Close(This);
   6547 }
   6548 static inline HRESULT ID3D12GraphicsCommandList2_Reset(ID3D12GraphicsCommandList2* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
   6549     return This->lpVtbl->Reset(This,allocator,initial_state);
   6550 }
   6551 static inline void ID3D12GraphicsCommandList2_ClearState(ID3D12GraphicsCommandList2* This,ID3D12PipelineState *pipeline_state) {
   6552     This->lpVtbl->ClearState(This,pipeline_state);
   6553 }
   6554 static inline void ID3D12GraphicsCommandList2_DrawInstanced(ID3D12GraphicsCommandList2* This,UINT vertex_count_per_instance,UINT instance_count,UINT start_vertex_location,UINT start_instance_location) {
   6555     This->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location);
   6556 }
   6557 static inline void ID3D12GraphicsCommandList2_DrawIndexedInstanced(ID3D12GraphicsCommandList2* This,UINT index_count_per_instance,UINT instance_count,UINT start_vertex_location,INT base_vertex_location,UINT start_instance_location) {
   6558     This->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location);
   6559 }
   6560 static inline void ID3D12GraphicsCommandList2_Dispatch(ID3D12GraphicsCommandList2* This,UINT x,UINT u,UINT z) {
   6561     This->lpVtbl->Dispatch(This,x,u,z);
   6562 }
   6563 static inline void ID3D12GraphicsCommandList2_CopyBufferRegion(ID3D12GraphicsCommandList2* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT64 byte_count) {
   6564     This->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count);
   6565 }
   6566 static inline void ID3D12GraphicsCommandList2_CopyTextureRegion(ID3D12GraphicsCommandList2* This,const D3D12_TEXTURE_COPY_LOCATION *dst,UINT dst_x,UINT dst_y,UINT dst_z,const D3D12_TEXTURE_COPY_LOCATION *src,const D3D12_BOX *src_box) {
   6567     This->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box);
   6568 }
   6569 static inline void ID3D12GraphicsCommandList2_CopyResource(ID3D12GraphicsCommandList2* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
   6570     This->lpVtbl->CopyResource(This,dst_resource,src_resource);
   6571 }
   6572 static inline void ID3D12GraphicsCommandList2_CopyTiles(ID3D12GraphicsCommandList2* This,ID3D12Resource *tiled_resource,const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,const D3D12_TILE_REGION_SIZE *tile_region_size,ID3D12Resource *buffer,UINT64 buffer_offset,D3D12_TILE_COPY_FLAGS flags) {
   6573     This->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags);
   6574 }
   6575 static inline void ID3D12GraphicsCommandList2_ResolveSubresource(ID3D12GraphicsCommandList2* This,ID3D12Resource *dst_resource,UINT dst_sub_resource,ID3D12Resource *src_resource,UINT src_sub_resource,DXGI_FORMAT format) {
   6576     This->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format);
   6577 }
   6578 static inline void ID3D12GraphicsCommandList2_IASetPrimitiveTopology(ID3D12GraphicsCommandList2* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
   6579     This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
   6580 }
   6581 static inline void ID3D12GraphicsCommandList2_RSSetViewports(ID3D12GraphicsCommandList2* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
   6582     This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
   6583 }
   6584 static inline void ID3D12GraphicsCommandList2_RSSetScissorRects(ID3D12GraphicsCommandList2* This,UINT rect_count,const D3D12_RECT *rects) {
   6585     This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
   6586 }
   6587 static inline void ID3D12GraphicsCommandList2_OMSetBlendFactor(ID3D12GraphicsCommandList2* This,const FLOAT blend_factor[4]) {
   6588     This->lpVtbl->OMSetBlendFactor(This,blend_factor);
   6589 }
   6590 static inline void ID3D12GraphicsCommandList2_OMSetStencilRef(ID3D12GraphicsCommandList2* This,UINT stencil_ref) {
   6591     This->lpVtbl->OMSetStencilRef(This,stencil_ref);
   6592 }
   6593 static inline void ID3D12GraphicsCommandList2_SetPipelineState(ID3D12GraphicsCommandList2* This,ID3D12PipelineState *pipeline_state) {
   6594     This->lpVtbl->SetPipelineState(This,pipeline_state);
   6595 }
   6596 static inline void ID3D12GraphicsCommandList2_ResourceBarrier(ID3D12GraphicsCommandList2* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
   6597     This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
   6598 }
   6599 static inline void ID3D12GraphicsCommandList2_ExecuteBundle(ID3D12GraphicsCommandList2* This,ID3D12GraphicsCommandList *command_list) {
   6600     This->lpVtbl->ExecuteBundle(This,command_list);
   6601 }
   6602 static inline void ID3D12GraphicsCommandList2_SetDescriptorHeaps(ID3D12GraphicsCommandList2* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
   6603     This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
   6604 }
   6605 static inline void ID3D12GraphicsCommandList2_SetComputeRootSignature(ID3D12GraphicsCommandList2* This,ID3D12RootSignature *root_signature) {
   6606     This->lpVtbl->SetComputeRootSignature(This,root_signature);
   6607 }
   6608 static inline void ID3D12GraphicsCommandList2_SetGraphicsRootSignature(ID3D12GraphicsCommandList2* This,ID3D12RootSignature *root_signature) {
   6609     This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
   6610 }
   6611 static inline void ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
   6612     This->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor);
   6613 }
   6614 static inline void ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
   6615     This->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor);
   6616 }
   6617 static inline void ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
   6618     This->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset);
   6619 }
   6620 static inline void ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
   6621     This->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset);
   6622 }
   6623 static inline void ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
   6624     This->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
   6625 }
   6626 static inline void ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
   6627     This->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
   6628 }
   6629 static inline void ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   6630     This->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address);
   6631 }
   6632 static inline void ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   6633     This->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address);
   6634 }
   6635 static inline void ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   6636     This->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address);
   6637 }
   6638 static inline void ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   6639     This->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address);
   6640 }
   6641 static inline void ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   6642     This->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address);
   6643 }
   6644 static inline void ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(ID3D12GraphicsCommandList2* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   6645     This->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address);
   6646 }
   6647 static inline void ID3D12GraphicsCommandList2_IASetIndexBuffer(ID3D12GraphicsCommandList2* This,const D3D12_INDEX_BUFFER_VIEW *view) {
   6648     This->lpVtbl->IASetIndexBuffer(This,view);
   6649 }
   6650 static inline void ID3D12GraphicsCommandList2_IASetVertexBuffers(ID3D12GraphicsCommandList2* This,UINT start_slot,UINT view_count,const D3D12_VERTEX_BUFFER_VIEW *views) {
   6651     This->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views);
   6652 }
   6653 static inline void ID3D12GraphicsCommandList2_SOSetTargets(ID3D12GraphicsCommandList2* This,UINT start_slot,UINT view_count,const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views) {
   6654     This->lpVtbl->SOSetTargets(This,start_slot,view_count,views);
   6655 }
   6656 static inline void ID3D12GraphicsCommandList2_OMSetRenderTargets(ID3D12GraphicsCommandList2* This,UINT render_target_descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,WINBOOL single_descriptor_handle,const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor) {
   6657     This->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor);
   6658 }
   6659 static inline void ID3D12GraphicsCommandList2_ClearDepthStencilView(ID3D12GraphicsCommandList2* This,D3D12_CPU_DESCRIPTOR_HANDLE dsv,D3D12_CLEAR_FLAGS flags,FLOAT depth,UINT8 stencil,UINT rect_count,const D3D12_RECT *rects) {
   6660     This->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects);
   6661 }
   6662 static inline void ID3D12GraphicsCommandList2_ClearRenderTargetView(ID3D12GraphicsCommandList2* This,D3D12_CPU_DESCRIPTOR_HANDLE rtv,const FLOAT color[4],UINT rect_count,const D3D12_RECT *rects) {
   6663     This->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects);
   6664 }
   6665 static inline void ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(ID3D12GraphicsCommandList2* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const UINT values[4],UINT rect_count,const D3D12_RECT *rects) {
   6666     This->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
   6667 }
   6668 static inline void ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(ID3D12GraphicsCommandList2* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const float values[4],UINT rect_count,const D3D12_RECT *rects) {
   6669     This->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
   6670 }
   6671 static inline void ID3D12GraphicsCommandList2_DiscardResource(ID3D12GraphicsCommandList2* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
   6672     This->lpVtbl->DiscardResource(This,resource,region);
   6673 }
   6674 static inline void ID3D12GraphicsCommandList2_BeginQuery(ID3D12GraphicsCommandList2* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
   6675     This->lpVtbl->BeginQuery(This,heap,type,index);
   6676 }
   6677 static inline void ID3D12GraphicsCommandList2_EndQuery(ID3D12GraphicsCommandList2* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
   6678     This->lpVtbl->EndQuery(This,heap,type,index);
   6679 }
   6680 static inline void ID3D12GraphicsCommandList2_ResolveQueryData(ID3D12GraphicsCommandList2* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT start_index,UINT query_count,ID3D12Resource *dst_buffer,UINT64 aligned_dst_buffer_offset) {
   6681     This->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset);
   6682 }
   6683 static inline void ID3D12GraphicsCommandList2_SetPredication(ID3D12GraphicsCommandList2* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
   6684     This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
   6685 }
   6686 static inline void ID3D12GraphicsCommandList2_SetMarker(ID3D12GraphicsCommandList2* This,UINT metadata,const void *data,UINT size) {
   6687     This->lpVtbl->SetMarker(This,metadata,data,size);
   6688 }
   6689 static inline void ID3D12GraphicsCommandList2_BeginEvent(ID3D12GraphicsCommandList2* This,UINT metadata,const void *data,UINT size) {
   6690     This->lpVtbl->BeginEvent(This,metadata,data,size);
   6691 }
   6692 static inline void ID3D12GraphicsCommandList2_EndEvent(ID3D12GraphicsCommandList2* This) {
   6693     This->lpVtbl->EndEvent(This);
   6694 }
   6695 static inline void ID3D12GraphicsCommandList2_ExecuteIndirect(ID3D12GraphicsCommandList2* This,ID3D12CommandSignature *command_signature,UINT max_command_count,ID3D12Resource *arg_buffer,UINT64 arg_buffer_offset,ID3D12Resource *count_buffer,UINT64 count_buffer_offset) {
   6696     This->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset);
   6697 }
   6698 /*** ID3D12GraphicsCommandList1 methods ***/
   6699 static inline void ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(ID3D12GraphicsCommandList2* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
   6700     This->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
   6701 }
   6702 static inline void ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(ID3D12GraphicsCommandList2* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
   6703     This->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
   6704 }
   6705 static inline void ID3D12GraphicsCommandList2_OMSetDepthBounds(ID3D12GraphicsCommandList2* This,FLOAT min,FLOAT max) {
   6706     This->lpVtbl->OMSetDepthBounds(This,min,max);
   6707 }
   6708 static inline void ID3D12GraphicsCommandList2_SetSamplePositions(ID3D12GraphicsCommandList2* This,UINT sample_count,UINT pixel_count,D3D12_SAMPLE_POSITION *sample_positions) {
   6709     This->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions);
   6710 }
   6711 static inline void ID3D12GraphicsCommandList2_ResolveSubresourceRegion(ID3D12GraphicsCommandList2* This,ID3D12Resource *dst_resource,UINT dst_sub_resource_idx,UINT dst_x,UINT dst_y,ID3D12Resource *src_resource,UINT src_sub_resource_idx,D3D12_RECT *src_rect,DXGI_FORMAT format,D3D12_RESOLVE_MODE mode) {
   6712     This->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode);
   6713 }
   6714 static inline void ID3D12GraphicsCommandList2_SetViewInstanceMask(ID3D12GraphicsCommandList2* This,UINT mask) {
   6715     This->lpVtbl->SetViewInstanceMask(This,mask);
   6716 }
   6717 /*** ID3D12GraphicsCommandList2 methods ***/
   6718 static inline void ID3D12GraphicsCommandList2_WriteBufferImmediate(ID3D12GraphicsCommandList2* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
   6719     This->lpVtbl->WriteBufferImmediate(This,count,parameters,modes);
   6720 }
   6721 #endif
   6722 #endif
   6723 
   6724 #endif
   6725 
   6726 
   6727 #endif  /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */
   6728 
   6729 /*****************************************************************************
   6730  * ID3D12ProtectedSession interface
   6731  */
   6732 #ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
   6733 #define __ID3D12ProtectedSession_INTERFACE_DEFINED__
   6734 
   6735 DEFINE_GUID(IID_ID3D12ProtectedSession, 0xa1533d18, 0x0ac1, 0x4084, 0x85,0xb9, 0x89,0xa9,0x61,0x16,0x80,0x6b);
   6736 #if defined(__cplusplus) && !defined(CINTERFACE)
   6737 MIDL_INTERFACE("a1533d18-0ac1-4084-85b9-89a96116806b")
   6738 ID3D12ProtectedSession : public ID3D12DeviceChild
   6739 {
   6740     virtual HRESULT STDMETHODCALLTYPE GetStatusFence(
   6741         REFIID riid,
   6742         void **fence) = 0;
   6743 
   6744     virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus(
   6745         ) = 0;
   6746 
   6747 };
   6748 #ifdef __CRT_UUID_DECL
   6749 __CRT_UUID_DECL(ID3D12ProtectedSession, 0xa1533d18, 0x0ac1, 0x4084, 0x85,0xb9, 0x89,0xa9,0x61,0x16,0x80,0x6b)
   6750 #endif
   6751 #else
   6752 typedef struct ID3D12ProtectedSessionVtbl {
   6753     BEGIN_INTERFACE
   6754 
   6755     /*** IUnknown methods ***/
   6756     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6757         ID3D12ProtectedSession *This,
   6758         REFIID riid,
   6759         void **ppvObject);
   6760 
   6761     ULONG (STDMETHODCALLTYPE *AddRef)(
   6762         ID3D12ProtectedSession *This);
   6763 
   6764     ULONG (STDMETHODCALLTYPE *Release)(
   6765         ID3D12ProtectedSession *This);
   6766 
   6767     /*** ID3D12Object methods ***/
   6768     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   6769         ID3D12ProtectedSession *This,
   6770         REFGUID guid,
   6771         UINT *data_size,
   6772         void *data);
   6773 
   6774     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   6775         ID3D12ProtectedSession *This,
   6776         REFGUID guid,
   6777         UINT data_size,
   6778         const void *data);
   6779 
   6780     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   6781         ID3D12ProtectedSession *This,
   6782         REFGUID guid,
   6783         const IUnknown *data);
   6784 
   6785     HRESULT (STDMETHODCALLTYPE *SetName)(
   6786         ID3D12ProtectedSession *This,
   6787         const WCHAR *name);
   6788 
   6789     /*** ID3D12DeviceChild methods ***/
   6790     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   6791         ID3D12ProtectedSession *This,
   6792         REFIID riid,
   6793         void **device);
   6794 
   6795     /*** ID3D12ProtectedSession methods ***/
   6796     HRESULT (STDMETHODCALLTYPE *GetStatusFence)(
   6797         ID3D12ProtectedSession *This,
   6798         REFIID riid,
   6799         void **fence);
   6800 
   6801     D3D12_PROTECTED_SESSION_STATUS (STDMETHODCALLTYPE *GetSessionStatus)(
   6802         ID3D12ProtectedSession *This);
   6803 
   6804     END_INTERFACE
   6805 } ID3D12ProtectedSessionVtbl;
   6806 
   6807 interface ID3D12ProtectedSession {
   6808     CONST_VTBL ID3D12ProtectedSessionVtbl* lpVtbl;
   6809 };
   6810 
   6811 #ifdef COBJMACROS
   6812 #ifndef WIDL_C_INLINE_WRAPPERS
   6813 /*** IUnknown methods ***/
   6814 #define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6815 #define ID3D12ProtectedSession_AddRef(This) (This)->lpVtbl->AddRef(This)
   6816 #define ID3D12ProtectedSession_Release(This) (This)->lpVtbl->Release(This)
   6817 /*** ID3D12Object methods ***/
   6818 #define ID3D12ProtectedSession_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   6819 #define ID3D12ProtectedSession_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   6820 #define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   6821 #define ID3D12ProtectedSession_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   6822 /*** ID3D12DeviceChild methods ***/
   6823 #define ID3D12ProtectedSession_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   6824 /*** ID3D12ProtectedSession methods ***/
   6825 #define ID3D12ProtectedSession_GetStatusFence(This,riid,fence) (This)->lpVtbl->GetStatusFence(This,riid,fence)
   6826 #define ID3D12ProtectedSession_GetSessionStatus(This) (This)->lpVtbl->GetSessionStatus(This)
   6827 #else
   6828 /*** IUnknown methods ***/
   6829 static inline HRESULT ID3D12ProtectedSession_QueryInterface(ID3D12ProtectedSession* This,REFIID riid,void **ppvObject) {
   6830     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6831 }
   6832 static inline ULONG ID3D12ProtectedSession_AddRef(ID3D12ProtectedSession* This) {
   6833     return This->lpVtbl->AddRef(This);
   6834 }
   6835 static inline ULONG ID3D12ProtectedSession_Release(ID3D12ProtectedSession* This) {
   6836     return This->lpVtbl->Release(This);
   6837 }
   6838 /*** ID3D12Object methods ***/
   6839 static inline HRESULT ID3D12ProtectedSession_GetPrivateData(ID3D12ProtectedSession* This,REFGUID guid,UINT *data_size,void *data) {
   6840     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   6841 }
   6842 static inline HRESULT ID3D12ProtectedSession_SetPrivateData(ID3D12ProtectedSession* This,REFGUID guid,UINT data_size,const void *data) {
   6843     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   6844 }
   6845 static inline HRESULT ID3D12ProtectedSession_SetPrivateDataInterface(ID3D12ProtectedSession* This,REFGUID guid,const IUnknown *data) {
   6846     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   6847 }
   6848 static inline HRESULT ID3D12ProtectedSession_SetName(ID3D12ProtectedSession* This,const WCHAR *name) {
   6849     return This->lpVtbl->SetName(This,name);
   6850 }
   6851 /*** ID3D12DeviceChild methods ***/
   6852 static inline HRESULT ID3D12ProtectedSession_GetDevice(ID3D12ProtectedSession* This,REFIID riid,void **device) {
   6853     return This->lpVtbl->GetDevice(This,riid,device);
   6854 }
   6855 /*** ID3D12ProtectedSession methods ***/
   6856 static inline HRESULT ID3D12ProtectedSession_GetStatusFence(ID3D12ProtectedSession* This,REFIID riid,void **fence) {
   6857     return This->lpVtbl->GetStatusFence(This,riid,fence);
   6858 }
   6859 static inline D3D12_PROTECTED_SESSION_STATUS ID3D12ProtectedSession_GetSessionStatus(ID3D12ProtectedSession* This) {
   6860     return This->lpVtbl->GetSessionStatus(This);
   6861 }
   6862 #endif
   6863 #endif
   6864 
   6865 #endif
   6866 
   6867 
   6868 #endif  /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
   6869 
   6870 typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS {
   6871     D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
   6872     D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
   6873 } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
   6874 DEFINE_ENUM_FLAG_OPERATORS(D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS);
   6875 typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT {
   6876     UINT NodeIndex;
   6877     D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support;
   6878 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
   6879 /*****************************************************************************
   6880  * ID3D12ProtectedResourceSession interface
   6881  */
   6882 #ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
   6883 #define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
   6884 
   6885 DEFINE_GUID(IID_ID3D12ProtectedResourceSession, 0x6cd696f4, 0xf289, 0x40cc, 0x80,0x91, 0x5a,0x6c,0x0a,0x09,0x9c,0x3d);
   6886 #if defined(__cplusplus) && !defined(CINTERFACE)
   6887 MIDL_INTERFACE("6cd696f4-f289-40cc-8091-5a6c0a099c3d")
   6888 ID3D12ProtectedResourceSession : public ID3D12ProtectedSession
   6889 {
   6890 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   6891     virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC* STDMETHODCALLTYPE GetDesc(
   6892         D3D12_PROTECTED_RESOURCE_SESSION_DESC *__ret) = 0;
   6893     D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc(
   6894         )
   6895     {
   6896         D3D12_PROTECTED_RESOURCE_SESSION_DESC __ret;
   6897         return *GetDesc(&__ret);
   6898     }
   6899 #else
   6900     virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc(
   6901         ) = 0;
   6902 #endif
   6903 
   6904 };
   6905 #ifdef __CRT_UUID_DECL
   6906 __CRT_UUID_DECL(ID3D12ProtectedResourceSession, 0x6cd696f4, 0xf289, 0x40cc, 0x80,0x91, 0x5a,0x6c,0x0a,0x09,0x9c,0x3d)
   6907 #endif
   6908 #else
   6909 typedef struct ID3D12ProtectedResourceSessionVtbl {
   6910     BEGIN_INTERFACE
   6911 
   6912     /*** IUnknown methods ***/
   6913     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6914         ID3D12ProtectedResourceSession *This,
   6915         REFIID riid,
   6916         void **ppvObject);
   6917 
   6918     ULONG (STDMETHODCALLTYPE *AddRef)(
   6919         ID3D12ProtectedResourceSession *This);
   6920 
   6921     ULONG (STDMETHODCALLTYPE *Release)(
   6922         ID3D12ProtectedResourceSession *This);
   6923 
   6924     /*** ID3D12Object methods ***/
   6925     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   6926         ID3D12ProtectedResourceSession *This,
   6927         REFGUID guid,
   6928         UINT *data_size,
   6929         void *data);
   6930 
   6931     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   6932         ID3D12ProtectedResourceSession *This,
   6933         REFGUID guid,
   6934         UINT data_size,
   6935         const void *data);
   6936 
   6937     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   6938         ID3D12ProtectedResourceSession *This,
   6939         REFGUID guid,
   6940         const IUnknown *data);
   6941 
   6942     HRESULT (STDMETHODCALLTYPE *SetName)(
   6943         ID3D12ProtectedResourceSession *This,
   6944         const WCHAR *name);
   6945 
   6946     /*** ID3D12DeviceChild methods ***/
   6947     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   6948         ID3D12ProtectedResourceSession *This,
   6949         REFIID riid,
   6950         void **device);
   6951 
   6952     /*** ID3D12ProtectedSession methods ***/
   6953     HRESULT (STDMETHODCALLTYPE *GetStatusFence)(
   6954         ID3D12ProtectedResourceSession *This,
   6955         REFIID riid,
   6956         void **fence);
   6957 
   6958     D3D12_PROTECTED_SESSION_STATUS (STDMETHODCALLTYPE *GetSessionStatus)(
   6959         ID3D12ProtectedResourceSession *This);
   6960 
   6961     /*** ID3D12ProtectedResourceSession methods ***/
   6962     D3D12_PROTECTED_RESOURCE_SESSION_DESC * (STDMETHODCALLTYPE *GetDesc)(
   6963         ID3D12ProtectedResourceSession *This,
   6964         D3D12_PROTECTED_RESOURCE_SESSION_DESC *__ret);
   6965 
   6966     END_INTERFACE
   6967 } ID3D12ProtectedResourceSessionVtbl;
   6968 
   6969 interface ID3D12ProtectedResourceSession {
   6970     CONST_VTBL ID3D12ProtectedResourceSessionVtbl* lpVtbl;
   6971 };
   6972 
   6973 #ifdef COBJMACROS
   6974 #ifndef WIDL_C_INLINE_WRAPPERS
   6975 /*** IUnknown methods ***/
   6976 #define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6977 #define ID3D12ProtectedResourceSession_AddRef(This) (This)->lpVtbl->AddRef(This)
   6978 #define ID3D12ProtectedResourceSession_Release(This) (This)->lpVtbl->Release(This)
   6979 /*** ID3D12Object methods ***/
   6980 #define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   6981 #define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   6982 #define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   6983 #define ID3D12ProtectedResourceSession_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   6984 /*** ID3D12DeviceChild methods ***/
   6985 #define ID3D12ProtectedResourceSession_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   6986 /*** ID3D12ProtectedSession methods ***/
   6987 #define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,fence) (This)->lpVtbl->GetStatusFence(This,riid,fence)
   6988 #define ID3D12ProtectedResourceSession_GetSessionStatus(This) (This)->lpVtbl->GetSessionStatus(This)
   6989 /*** ID3D12ProtectedResourceSession methods ***/
   6990 #define ID3D12ProtectedResourceSession_GetDesc(This) ID3D12ProtectedResourceSession_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   6991 #else
   6992 /*** IUnknown methods ***/
   6993 static inline HRESULT ID3D12ProtectedResourceSession_QueryInterface(ID3D12ProtectedResourceSession* This,REFIID riid,void **ppvObject) {
   6994     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6995 }
   6996 static inline ULONG ID3D12ProtectedResourceSession_AddRef(ID3D12ProtectedResourceSession* This) {
   6997     return This->lpVtbl->AddRef(This);
   6998 }
   6999 static inline ULONG ID3D12ProtectedResourceSession_Release(ID3D12ProtectedResourceSession* This) {
   7000     return This->lpVtbl->Release(This);
   7001 }
   7002 /*** ID3D12Object methods ***/
   7003 static inline HRESULT ID3D12ProtectedResourceSession_GetPrivateData(ID3D12ProtectedResourceSession* This,REFGUID guid,UINT *data_size,void *data) {
   7004     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   7005 }
   7006 static inline HRESULT ID3D12ProtectedResourceSession_SetPrivateData(ID3D12ProtectedResourceSession* This,REFGUID guid,UINT data_size,const void *data) {
   7007     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   7008 }
   7009 static inline HRESULT ID3D12ProtectedResourceSession_SetPrivateDataInterface(ID3D12ProtectedResourceSession* This,REFGUID guid,const IUnknown *data) {
   7010     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   7011 }
   7012 static inline HRESULT ID3D12ProtectedResourceSession_SetName(ID3D12ProtectedResourceSession* This,const WCHAR *name) {
   7013     return This->lpVtbl->SetName(This,name);
   7014 }
   7015 /*** ID3D12DeviceChild methods ***/
   7016 static inline HRESULT ID3D12ProtectedResourceSession_GetDevice(ID3D12ProtectedResourceSession* This,REFIID riid,void **device) {
   7017     return This->lpVtbl->GetDevice(This,riid,device);
   7018 }
   7019 /*** ID3D12ProtectedSession methods ***/
   7020 static inline HRESULT ID3D12ProtectedResourceSession_GetStatusFence(ID3D12ProtectedResourceSession* This,REFIID riid,void **fence) {
   7021     return This->lpVtbl->GetStatusFence(This,riid,fence);
   7022 }
   7023 static inline D3D12_PROTECTED_SESSION_STATUS ID3D12ProtectedResourceSession_GetSessionStatus(ID3D12ProtectedResourceSession* This) {
   7024     return This->lpVtbl->GetSessionStatus(This);
   7025 }
   7026 /*** ID3D12ProtectedResourceSession methods ***/
   7027 static inline D3D12_PROTECTED_RESOURCE_SESSION_DESC ID3D12ProtectedResourceSession_GetDesc(ID3D12ProtectedResourceSession* This) {
   7028     D3D12_PROTECTED_RESOURCE_SESSION_DESC __ret;
   7029     return *This->lpVtbl->GetDesc(This,&__ret);
   7030 }
   7031 #endif
   7032 #endif
   7033 
   7034 #endif
   7035 
   7036 
   7037 #endif  /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */
   7038 
   7039 /*****************************************************************************
   7040  * ID3D12GraphicsCommandList3 interface
   7041  */
   7042 #ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
   7043 #define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
   7044 
   7045 DEFINE_GUID(IID_ID3D12GraphicsCommandList3, 0x6fda83a7, 0xb84c, 0x4e38, 0x9a,0xc8, 0xc7,0xbd,0x22,0x01,0x6b,0x3d);
   7046 #if defined(__cplusplus) && !defined(CINTERFACE)
   7047 MIDL_INTERFACE("6fda83a7-b84c-4e38-9ac8-c7bd22016b3d")
   7048 ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2
   7049 {
   7050     virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
   7051         ID3D12ProtectedResourceSession *protected_resource_session) = 0;
   7052 
   7053 };
   7054 #ifdef __CRT_UUID_DECL
   7055 __CRT_UUID_DECL(ID3D12GraphicsCommandList3, 0x6fda83a7, 0xb84c, 0x4e38, 0x9a,0xc8, 0xc7,0xbd,0x22,0x01,0x6b,0x3d)
   7056 #endif
   7057 #else
   7058 typedef struct ID3D12GraphicsCommandList3Vtbl {
   7059     BEGIN_INTERFACE
   7060 
   7061     /*** IUnknown methods ***/
   7062     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   7063         ID3D12GraphicsCommandList3 *This,
   7064         REFIID riid,
   7065         void **ppvObject);
   7066 
   7067     ULONG (STDMETHODCALLTYPE *AddRef)(
   7068         ID3D12GraphicsCommandList3 *This);
   7069 
   7070     ULONG (STDMETHODCALLTYPE *Release)(
   7071         ID3D12GraphicsCommandList3 *This);
   7072 
   7073     /*** ID3D12Object methods ***/
   7074     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   7075         ID3D12GraphicsCommandList3 *This,
   7076         REFGUID guid,
   7077         UINT *data_size,
   7078         void *data);
   7079 
   7080     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   7081         ID3D12GraphicsCommandList3 *This,
   7082         REFGUID guid,
   7083         UINT data_size,
   7084         const void *data);
   7085 
   7086     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   7087         ID3D12GraphicsCommandList3 *This,
   7088         REFGUID guid,
   7089         const IUnknown *data);
   7090 
   7091     HRESULT (STDMETHODCALLTYPE *SetName)(
   7092         ID3D12GraphicsCommandList3 *This,
   7093         const WCHAR *name);
   7094 
   7095     /*** ID3D12DeviceChild methods ***/
   7096     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   7097         ID3D12GraphicsCommandList3 *This,
   7098         REFIID riid,
   7099         void **device);
   7100 
   7101     /*** ID3D12CommandList methods ***/
   7102     D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
   7103         ID3D12GraphicsCommandList3 *This);
   7104 
   7105     /*** ID3D12GraphicsCommandList methods ***/
   7106     HRESULT (STDMETHODCALLTYPE *Close)(
   7107         ID3D12GraphicsCommandList3 *This);
   7108 
   7109     HRESULT (STDMETHODCALLTYPE *Reset)(
   7110         ID3D12GraphicsCommandList3 *This,
   7111         ID3D12CommandAllocator *allocator,
   7112         ID3D12PipelineState *initial_state);
   7113 
   7114     void (STDMETHODCALLTYPE *ClearState)(
   7115         ID3D12GraphicsCommandList3 *This,
   7116         ID3D12PipelineState *pipeline_state);
   7117 
   7118     void (STDMETHODCALLTYPE *DrawInstanced)(
   7119         ID3D12GraphicsCommandList3 *This,
   7120         UINT vertex_count_per_instance,
   7121         UINT instance_count,
   7122         UINT start_vertex_location,
   7123         UINT start_instance_location);
   7124 
   7125     void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
   7126         ID3D12GraphicsCommandList3 *This,
   7127         UINT index_count_per_instance,
   7128         UINT instance_count,
   7129         UINT start_vertex_location,
   7130         INT base_vertex_location,
   7131         UINT start_instance_location);
   7132 
   7133     void (STDMETHODCALLTYPE *Dispatch)(
   7134         ID3D12GraphicsCommandList3 *This,
   7135         UINT x,
   7136         UINT u,
   7137         UINT z);
   7138 
   7139     void (STDMETHODCALLTYPE *CopyBufferRegion)(
   7140         ID3D12GraphicsCommandList3 *This,
   7141         ID3D12Resource *dst_buffer,
   7142         UINT64 dst_offset,
   7143         ID3D12Resource *src_buffer,
   7144         UINT64 src_offset,
   7145         UINT64 byte_count);
   7146 
   7147     void (STDMETHODCALLTYPE *CopyTextureRegion)(
   7148         ID3D12GraphicsCommandList3 *This,
   7149         const D3D12_TEXTURE_COPY_LOCATION *dst,
   7150         UINT dst_x,
   7151         UINT dst_y,
   7152         UINT dst_z,
   7153         const D3D12_TEXTURE_COPY_LOCATION *src,
   7154         const D3D12_BOX *src_box);
   7155 
   7156     void (STDMETHODCALLTYPE *CopyResource)(
   7157         ID3D12GraphicsCommandList3 *This,
   7158         ID3D12Resource *dst_resource,
   7159         ID3D12Resource *src_resource);
   7160 
   7161     void (STDMETHODCALLTYPE *CopyTiles)(
   7162         ID3D12GraphicsCommandList3 *This,
   7163         ID3D12Resource *tiled_resource,
   7164         const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
   7165         const D3D12_TILE_REGION_SIZE *tile_region_size,
   7166         ID3D12Resource *buffer,
   7167         UINT64 buffer_offset,
   7168         D3D12_TILE_COPY_FLAGS flags);
   7169 
   7170     void (STDMETHODCALLTYPE *ResolveSubresource)(
   7171         ID3D12GraphicsCommandList3 *This,
   7172         ID3D12Resource *dst_resource,
   7173         UINT dst_sub_resource,
   7174         ID3D12Resource *src_resource,
   7175         UINT src_sub_resource,
   7176         DXGI_FORMAT format);
   7177 
   7178     void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
   7179         ID3D12GraphicsCommandList3 *This,
   7180         D3D12_PRIMITIVE_TOPOLOGY primitive_topology);
   7181 
   7182     void (STDMETHODCALLTYPE *RSSetViewports)(
   7183         ID3D12GraphicsCommandList3 *This,
   7184         UINT viewport_count,
   7185         const D3D12_VIEWPORT *viewports);
   7186 
   7187     void (STDMETHODCALLTYPE *RSSetScissorRects)(
   7188         ID3D12GraphicsCommandList3 *This,
   7189         UINT rect_count,
   7190         const D3D12_RECT *rects);
   7191 
   7192     void (STDMETHODCALLTYPE *OMSetBlendFactor)(
   7193         ID3D12GraphicsCommandList3 *This,
   7194         const FLOAT blend_factor[4]);
   7195 
   7196     void (STDMETHODCALLTYPE *OMSetStencilRef)(
   7197         ID3D12GraphicsCommandList3 *This,
   7198         UINT stencil_ref);
   7199 
   7200     void (STDMETHODCALLTYPE *SetPipelineState)(
   7201         ID3D12GraphicsCommandList3 *This,
   7202         ID3D12PipelineState *pipeline_state);
   7203 
   7204     void (STDMETHODCALLTYPE *ResourceBarrier)(
   7205         ID3D12GraphicsCommandList3 *This,
   7206         UINT barrier_count,
   7207         const D3D12_RESOURCE_BARRIER *barriers);
   7208 
   7209     void (STDMETHODCALLTYPE *ExecuteBundle)(
   7210         ID3D12GraphicsCommandList3 *This,
   7211         ID3D12GraphicsCommandList *command_list);
   7212 
   7213     void (STDMETHODCALLTYPE *SetDescriptorHeaps)(
   7214         ID3D12GraphicsCommandList3 *This,
   7215         UINT heap_count,
   7216         ID3D12DescriptorHeap *const *heaps);
   7217 
   7218     void (STDMETHODCALLTYPE *SetComputeRootSignature)(
   7219         ID3D12GraphicsCommandList3 *This,
   7220         ID3D12RootSignature *root_signature);
   7221 
   7222     void (STDMETHODCALLTYPE *SetGraphicsRootSignature)(
   7223         ID3D12GraphicsCommandList3 *This,
   7224         ID3D12RootSignature *root_signature);
   7225 
   7226     void (STDMETHODCALLTYPE *SetComputeRootDescriptorTable)(
   7227         ID3D12GraphicsCommandList3 *This,
   7228         UINT root_parameter_index,
   7229         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
   7230 
   7231     void (STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable)(
   7232         ID3D12GraphicsCommandList3 *This,
   7233         UINT root_parameter_index,
   7234         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
   7235 
   7236     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstant)(
   7237         ID3D12GraphicsCommandList3 *This,
   7238         UINT root_parameter_index,
   7239         UINT data,
   7240         UINT dst_offset);
   7241 
   7242     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant)(
   7243         ID3D12GraphicsCommandList3 *This,
   7244         UINT root_parameter_index,
   7245         UINT data,
   7246         UINT dst_offset);
   7247 
   7248     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstants)(
   7249         ID3D12GraphicsCommandList3 *This,
   7250         UINT root_parameter_index,
   7251         UINT constant_count,
   7252         const void *data,
   7253         UINT dst_offset);
   7254 
   7255     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants)(
   7256         ID3D12GraphicsCommandList3 *This,
   7257         UINT root_parameter_index,
   7258         UINT constant_count,
   7259         const void *data,
   7260         UINT dst_offset);
   7261 
   7262     void (STDMETHODCALLTYPE *SetComputeRootConstantBufferView)(
   7263         ID3D12GraphicsCommandList3 *This,
   7264         UINT root_parameter_index,
   7265         D3D12_GPU_VIRTUAL_ADDRESS address);
   7266 
   7267     void (STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView)(
   7268         ID3D12GraphicsCommandList3 *This,
   7269         UINT root_parameter_index,
   7270         D3D12_GPU_VIRTUAL_ADDRESS address);
   7271 
   7272     void (STDMETHODCALLTYPE *SetComputeRootShaderResourceView)(
   7273         ID3D12GraphicsCommandList3 *This,
   7274         UINT root_parameter_index,
   7275         D3D12_GPU_VIRTUAL_ADDRESS address);
   7276 
   7277     void (STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView)(
   7278         ID3D12GraphicsCommandList3 *This,
   7279         UINT root_parameter_index,
   7280         D3D12_GPU_VIRTUAL_ADDRESS address);
   7281 
   7282     void (STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView)(
   7283         ID3D12GraphicsCommandList3 *This,
   7284         UINT root_parameter_index,
   7285         D3D12_GPU_VIRTUAL_ADDRESS address);
   7286 
   7287     void (STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView)(
   7288         ID3D12GraphicsCommandList3 *This,
   7289         UINT root_parameter_index,
   7290         D3D12_GPU_VIRTUAL_ADDRESS address);
   7291 
   7292     void (STDMETHODCALLTYPE *IASetIndexBuffer)(
   7293         ID3D12GraphicsCommandList3 *This,
   7294         const D3D12_INDEX_BUFFER_VIEW *view);
   7295 
   7296     void (STDMETHODCALLTYPE *IASetVertexBuffers)(
   7297         ID3D12GraphicsCommandList3 *This,
   7298         UINT start_slot,
   7299         UINT view_count,
   7300         const D3D12_VERTEX_BUFFER_VIEW *views);
   7301 
   7302     void (STDMETHODCALLTYPE *SOSetTargets)(
   7303         ID3D12GraphicsCommandList3 *This,
   7304         UINT start_slot,
   7305         UINT view_count,
   7306         const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views);
   7307 
   7308     void (STDMETHODCALLTYPE *OMSetRenderTargets)(
   7309         ID3D12GraphicsCommandList3 *This,
   7310         UINT render_target_descriptor_count,
   7311         const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
   7312         WINBOOL single_descriptor_handle,
   7313         const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor);
   7314 
   7315     void (STDMETHODCALLTYPE *ClearDepthStencilView)(
   7316         ID3D12GraphicsCommandList3 *This,
   7317         D3D12_CPU_DESCRIPTOR_HANDLE dsv,
   7318         D3D12_CLEAR_FLAGS flags,
   7319         FLOAT depth,
   7320         UINT8 stencil,
   7321         UINT rect_count,
   7322         const D3D12_RECT *rects);
   7323 
   7324     void (STDMETHODCALLTYPE *ClearRenderTargetView)(
   7325         ID3D12GraphicsCommandList3 *This,
   7326         D3D12_CPU_DESCRIPTOR_HANDLE rtv,
   7327         const FLOAT color[4],
   7328         UINT rect_count,
   7329         const D3D12_RECT *rects);
   7330 
   7331     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewUint)(
   7332         ID3D12GraphicsCommandList3 *This,
   7333         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   7334         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   7335         ID3D12Resource *resource,
   7336         const UINT values[4],
   7337         UINT rect_count,
   7338         const D3D12_RECT *rects);
   7339 
   7340     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat)(
   7341         ID3D12GraphicsCommandList3 *This,
   7342         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
   7343         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
   7344         ID3D12Resource *resource,
   7345         const float values[4],
   7346         UINT rect_count,
   7347         const D3D12_RECT *rects);
   7348 
   7349     void (STDMETHODCALLTYPE *DiscardResource)(
   7350         ID3D12GraphicsCommandList3 *This,
   7351         ID3D12Resource *resource,
   7352         const D3D12_DISCARD_REGION *region);
   7353 
   7354     void (STDMETHODCALLTYPE *BeginQuery)(
   7355         ID3D12GraphicsCommandList3 *This,
   7356         ID3D12QueryHeap *heap,
   7357         D3D12_QUERY_TYPE type,
   7358         UINT index);
   7359 
   7360     void (STDMETHODCALLTYPE *EndQuery)(
   7361         ID3D12GraphicsCommandList3 *This,
   7362         ID3D12QueryHeap *heap,
   7363         D3D12_QUERY_TYPE type,
   7364         UINT index);
   7365 
   7366     void (STDMETHODCALLTYPE *ResolveQueryData)(
   7367         ID3D12GraphicsCommandList3 *This,
   7368         ID3D12QueryHeap *heap,
   7369         D3D12_QUERY_TYPE type,
   7370         UINT start_index,
   7371         UINT query_count,
   7372         ID3D12Resource *dst_buffer,
   7373         UINT64 aligned_dst_buffer_offset);
   7374 
   7375     void (STDMETHODCALLTYPE *SetPredication)(
   7376         ID3D12GraphicsCommandList3 *This,
   7377         ID3D12Resource *buffer,
   7378         UINT64 aligned_buffer_offset,
   7379         D3D12_PREDICATION_OP operation);
   7380 
   7381     void (STDMETHODCALLTYPE *SetMarker)(
   7382         ID3D12GraphicsCommandList3 *This,
   7383         UINT metadata,
   7384         const void *data,
   7385         UINT size);
   7386 
   7387     void (STDMETHODCALLTYPE *BeginEvent)(
   7388         ID3D12GraphicsCommandList3 *This,
   7389         UINT metadata,
   7390         const void *data,
   7391         UINT size);
   7392 
   7393     void (STDMETHODCALLTYPE *EndEvent)(
   7394         ID3D12GraphicsCommandList3 *This);
   7395 
   7396     void (STDMETHODCALLTYPE *ExecuteIndirect)(
   7397         ID3D12GraphicsCommandList3 *This,
   7398         ID3D12CommandSignature *command_signature,
   7399         UINT max_command_count,
   7400         ID3D12Resource *arg_buffer,
   7401         UINT64 arg_buffer_offset,
   7402         ID3D12Resource *count_buffer,
   7403         UINT64 count_buffer_offset);
   7404 
   7405     /*** ID3D12GraphicsCommandList1 methods ***/
   7406     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT)(
   7407         ID3D12GraphicsCommandList3 *This,
   7408         ID3D12Resource *dst_buffer,
   7409         UINT64 dst_offset,
   7410         ID3D12Resource *src_buffer,
   7411         UINT64 src_offset,
   7412         UINT dependent_resource_count,
   7413         ID3D12Resource *const *dependent_resources,
   7414         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
   7415 
   7416     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT64)(
   7417         ID3D12GraphicsCommandList3 *This,
   7418         ID3D12Resource *dst_buffer,
   7419         UINT64 dst_offset,
   7420         ID3D12Resource *src_buffer,
   7421         UINT64 src_offset,
   7422         UINT dependent_resource_count,
   7423         ID3D12Resource *const *dependent_resources,
   7424         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
   7425 
   7426     void (STDMETHODCALLTYPE *OMSetDepthBounds)(
   7427         ID3D12GraphicsCommandList3 *This,
   7428         FLOAT min,
   7429         FLOAT max);
   7430 
   7431     void (STDMETHODCALLTYPE *SetSamplePositions)(
   7432         ID3D12GraphicsCommandList3 *This,
   7433         UINT sample_count,
   7434         UINT pixel_count,
   7435         D3D12_SAMPLE_POSITION *sample_positions);
   7436 
   7437     void (STDMETHODCALLTYPE *ResolveSubresourceRegion)(
   7438         ID3D12GraphicsCommandList3 *This,
   7439         ID3D12Resource *dst_resource,
   7440         UINT dst_sub_resource_idx,
   7441         UINT dst_x,
   7442         UINT dst_y,
   7443         ID3D12Resource *src_resource,
   7444         UINT src_sub_resource_idx,
   7445         D3D12_RECT *src_rect,
   7446         DXGI_FORMAT format,
   7447         D3D12_RESOLVE_MODE mode);
   7448 
   7449     void (STDMETHODCALLTYPE *SetViewInstanceMask)(
   7450         ID3D12GraphicsCommandList3 *This,
   7451         UINT mask);
   7452 
   7453     /*** ID3D12GraphicsCommandList2 methods ***/
   7454     void (STDMETHODCALLTYPE *WriteBufferImmediate)(
   7455         ID3D12GraphicsCommandList3 *This,
   7456         UINT count,
   7457         const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,
   7458         const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
   7459 
   7460     /*** ID3D12GraphicsCommandList3 methods ***/
   7461     void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
   7462         ID3D12GraphicsCommandList3 *This,
   7463         ID3D12ProtectedResourceSession *protected_resource_session);
   7464 
   7465     END_INTERFACE
   7466 } ID3D12GraphicsCommandList3Vtbl;
   7467 
   7468 interface ID3D12GraphicsCommandList3 {
   7469     CONST_VTBL ID3D12GraphicsCommandList3Vtbl* lpVtbl;
   7470 };
   7471 
   7472 #ifdef COBJMACROS
   7473 #ifndef WIDL_C_INLINE_WRAPPERS
   7474 /*** IUnknown methods ***/
   7475 #define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   7476 #define ID3D12GraphicsCommandList3_AddRef(This) (This)->lpVtbl->AddRef(This)
   7477 #define ID3D12GraphicsCommandList3_Release(This) (This)->lpVtbl->Release(This)
   7478 /*** ID3D12Object methods ***/
   7479 #define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   7480 #define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   7481 #define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   7482 #define ID3D12GraphicsCommandList3_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   7483 /*** ID3D12DeviceChild methods ***/
   7484 #define ID3D12GraphicsCommandList3_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   7485 /*** ID3D12CommandList methods ***/
   7486 #define ID3D12GraphicsCommandList3_GetType(This) (This)->lpVtbl->GetType(This)
   7487 /*** ID3D12GraphicsCommandList methods ***/
   7488 #define ID3D12GraphicsCommandList3_Close(This) (This)->lpVtbl->Close(This)
   7489 #define ID3D12GraphicsCommandList3_Reset(This,allocator,initial_state) (This)->lpVtbl->Reset(This,allocator,initial_state)
   7490 #define ID3D12GraphicsCommandList3_ClearState(This,pipeline_state) (This)->lpVtbl->ClearState(This,pipeline_state)
   7491 #define ID3D12GraphicsCommandList3_DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location) (This)->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location)
   7492 #define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location) (This)->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location)
   7493 #define ID3D12GraphicsCommandList3_Dispatch(This,x,u,z) (This)->lpVtbl->Dispatch(This,x,u,z)
   7494 #define ID3D12GraphicsCommandList3_CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count) (This)->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count)
   7495 #define ID3D12GraphicsCommandList3_CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box) (This)->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box)
   7496 #define ID3D12GraphicsCommandList3_CopyResource(This,dst_resource,src_resource) (This)->lpVtbl->CopyResource(This,dst_resource,src_resource)
   7497 #define ID3D12GraphicsCommandList3_CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags) (This)->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags)
   7498 #define ID3D12GraphicsCommandList3_ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format) (This)->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format)
   7499 #define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,primitive_topology) (This)->lpVtbl->IASetPrimitiveTopology(This,primitive_topology)
   7500 #define ID3D12GraphicsCommandList3_RSSetViewports(This,viewport_count,viewports) (This)->lpVtbl->RSSetViewports(This,viewport_count,viewports)
   7501 #define ID3D12GraphicsCommandList3_RSSetScissorRects(This,rect_count,rects) (This)->lpVtbl->RSSetScissorRects(This,rect_count,rects)
   7502 #define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,blend_factor) (This)->lpVtbl->OMSetBlendFactor(This,blend_factor)
   7503 #define ID3D12GraphicsCommandList3_OMSetStencilRef(This,stencil_ref) (This)->lpVtbl->OMSetStencilRef(This,stencil_ref)
   7504 #define ID3D12GraphicsCommandList3_SetPipelineState(This,pipeline_state) (This)->lpVtbl->SetPipelineState(This,pipeline_state)
   7505 #define ID3D12GraphicsCommandList3_ResourceBarrier(This,barrier_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barrier_count,barriers)
   7506 #define ID3D12GraphicsCommandList3_ExecuteBundle(This,command_list) (This)->lpVtbl->ExecuteBundle(This,command_list)
   7507 #define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,heap_count,heaps) (This)->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps)
   7508 #define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,root_signature) (This)->lpVtbl->SetComputeRootSignature(This,root_signature)
   7509 #define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,root_signature) (This)->lpVtbl->SetGraphicsRootSignature(This,root_signature)
   7510 #define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor)
   7511 #define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor)
   7512 #define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset)
   7513 #define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset)
   7514 #define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
   7515 #define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
   7516 #define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address)
   7517 #define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address)
   7518 #define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address)
   7519 #define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address)
   7520 #define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address)
   7521 #define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address)
   7522 #define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,view) (This)->lpVtbl->IASetIndexBuffer(This,view)
   7523 #define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,start_slot,view_count,views) (This)->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views)
   7524 #define ID3D12GraphicsCommandList3_SOSetTargets(This,start_slot,view_count,views) (This)->lpVtbl->SOSetTargets(This,start_slot,view_count,views)
   7525 #define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor) (This)->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor)
   7526 #define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects) (This)->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects)
   7527 #define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,rtv,color,rect_count,rects) (This)->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects)
   7528 #define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
   7529 #define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
   7530 #define ID3D12GraphicsCommandList3_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
   7531 #define ID3D12GraphicsCommandList3_BeginQuery(This,heap,type,index) (This)->lpVtbl->BeginQuery(This,heap,type,index)
   7532 #define ID3D12GraphicsCommandList3_EndQuery(This,heap,type,index) (This)->lpVtbl->EndQuery(This,heap,type,index)
   7533 #define ID3D12GraphicsCommandList3_ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset)
   7534 #define ID3D12GraphicsCommandList3_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
   7535 #define ID3D12GraphicsCommandList3_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
   7536 #define ID3D12GraphicsCommandList3_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
   7537 #define ID3D12GraphicsCommandList3_EndEvent(This) (This)->lpVtbl->EndEvent(This)
   7538 #define ID3D12GraphicsCommandList3_ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset) (This)->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset)
   7539 /*** ID3D12GraphicsCommandList1 methods ***/
   7540 #define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
   7541 #define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
   7542 #define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,min,max) (This)->lpVtbl->OMSetDepthBounds(This,min,max)
   7543 #define ID3D12GraphicsCommandList3_SetSamplePositions(This,sample_count,pixel_count,sample_positions) (This)->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions)
   7544 #define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode) (This)->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode)
   7545 #define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,mask) (This)->lpVtbl->SetViewInstanceMask(This,mask)
   7546 /*** ID3D12GraphicsCommandList2 methods ***/
   7547 #define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,count,parameters,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,parameters,modes)
   7548 /*** ID3D12GraphicsCommandList3 methods ***/
   7549 #define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
   7550 #else
   7551 /*** IUnknown methods ***/
   7552 static inline HRESULT ID3D12GraphicsCommandList3_QueryInterface(ID3D12GraphicsCommandList3* This,REFIID riid,void **ppvObject) {
   7553     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   7554 }
   7555 static inline ULONG ID3D12GraphicsCommandList3_AddRef(ID3D12GraphicsCommandList3* This) {
   7556     return This->lpVtbl->AddRef(This);
   7557 }
   7558 static inline ULONG ID3D12GraphicsCommandList3_Release(ID3D12GraphicsCommandList3* This) {
   7559     return This->lpVtbl->Release(This);
   7560 }
   7561 /*** ID3D12Object methods ***/
   7562 static inline HRESULT ID3D12GraphicsCommandList3_GetPrivateData(ID3D12GraphicsCommandList3* This,REFGUID guid,UINT *data_size,void *data) {
   7563     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   7564 }
   7565 static inline HRESULT ID3D12GraphicsCommandList3_SetPrivateData(ID3D12GraphicsCommandList3* This,REFGUID guid,UINT data_size,const void *data) {
   7566     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   7567 }
   7568 static inline HRESULT ID3D12GraphicsCommandList3_SetPrivateDataInterface(ID3D12GraphicsCommandList3* This,REFGUID guid,const IUnknown *data) {
   7569     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   7570 }
   7571 static inline HRESULT ID3D12GraphicsCommandList3_SetName(ID3D12GraphicsCommandList3* This,const WCHAR *name) {
   7572     return This->lpVtbl->SetName(This,name);
   7573 }
   7574 /*** ID3D12DeviceChild methods ***/
   7575 static inline HRESULT ID3D12GraphicsCommandList3_GetDevice(ID3D12GraphicsCommandList3* This,REFIID riid,void **device) {
   7576     return This->lpVtbl->GetDevice(This,riid,device);
   7577 }
   7578 /*** ID3D12CommandList methods ***/
   7579 static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList3_GetType(ID3D12GraphicsCommandList3* This) {
   7580     return This->lpVtbl->GetType(This);
   7581 }
   7582 /*** ID3D12GraphicsCommandList methods ***/
   7583 static inline HRESULT ID3D12GraphicsCommandList3_Close(ID3D12GraphicsCommandList3* This) {
   7584     return This->lpVtbl->Close(This);
   7585 }
   7586 static inline HRESULT ID3D12GraphicsCommandList3_Reset(ID3D12GraphicsCommandList3* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
   7587     return This->lpVtbl->Reset(This,allocator,initial_state);
   7588 }
   7589 static inline void ID3D12GraphicsCommandList3_ClearState(ID3D12GraphicsCommandList3* This,ID3D12PipelineState *pipeline_state) {
   7590     This->lpVtbl->ClearState(This,pipeline_state);
   7591 }
   7592 static inline void ID3D12GraphicsCommandList3_DrawInstanced(ID3D12GraphicsCommandList3* This,UINT vertex_count_per_instance,UINT instance_count,UINT start_vertex_location,UINT start_instance_location) {
   7593     This->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location);
   7594 }
   7595 static inline void ID3D12GraphicsCommandList3_DrawIndexedInstanced(ID3D12GraphicsCommandList3* This,UINT index_count_per_instance,UINT instance_count,UINT start_vertex_location,INT base_vertex_location,UINT start_instance_location) {
   7596     This->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location);
   7597 }
   7598 static inline void ID3D12GraphicsCommandList3_Dispatch(ID3D12GraphicsCommandList3* This,UINT x,UINT u,UINT z) {
   7599     This->lpVtbl->Dispatch(This,x,u,z);
   7600 }
   7601 static inline void ID3D12GraphicsCommandList3_CopyBufferRegion(ID3D12GraphicsCommandList3* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT64 byte_count) {
   7602     This->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count);
   7603 }
   7604 static inline void ID3D12GraphicsCommandList3_CopyTextureRegion(ID3D12GraphicsCommandList3* This,const D3D12_TEXTURE_COPY_LOCATION *dst,UINT dst_x,UINT dst_y,UINT dst_z,const D3D12_TEXTURE_COPY_LOCATION *src,const D3D12_BOX *src_box) {
   7605     This->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box);
   7606 }
   7607 static inline void ID3D12GraphicsCommandList3_CopyResource(ID3D12GraphicsCommandList3* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
   7608     This->lpVtbl->CopyResource(This,dst_resource,src_resource);
   7609 }
   7610 static inline void ID3D12GraphicsCommandList3_CopyTiles(ID3D12GraphicsCommandList3* This,ID3D12Resource *tiled_resource,const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,const D3D12_TILE_REGION_SIZE *tile_region_size,ID3D12Resource *buffer,UINT64 buffer_offset,D3D12_TILE_COPY_FLAGS flags) {
   7611     This->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags);
   7612 }
   7613 static inline void ID3D12GraphicsCommandList3_ResolveSubresource(ID3D12GraphicsCommandList3* This,ID3D12Resource *dst_resource,UINT dst_sub_resource,ID3D12Resource *src_resource,UINT src_sub_resource,DXGI_FORMAT format) {
   7614     This->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format);
   7615 }
   7616 static inline void ID3D12GraphicsCommandList3_IASetPrimitiveTopology(ID3D12GraphicsCommandList3* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
   7617     This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
   7618 }
   7619 static inline void ID3D12GraphicsCommandList3_RSSetViewports(ID3D12GraphicsCommandList3* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
   7620     This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
   7621 }
   7622 static inline void ID3D12GraphicsCommandList3_RSSetScissorRects(ID3D12GraphicsCommandList3* This,UINT rect_count,const D3D12_RECT *rects) {
   7623     This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
   7624 }
   7625 static inline void ID3D12GraphicsCommandList3_OMSetBlendFactor(ID3D12GraphicsCommandList3* This,const FLOAT blend_factor[4]) {
   7626     This->lpVtbl->OMSetBlendFactor(This,blend_factor);
   7627 }
   7628 static inline void ID3D12GraphicsCommandList3_OMSetStencilRef(ID3D12GraphicsCommandList3* This,UINT stencil_ref) {
   7629     This->lpVtbl->OMSetStencilRef(This,stencil_ref);
   7630 }
   7631 static inline void ID3D12GraphicsCommandList3_SetPipelineState(ID3D12GraphicsCommandList3* This,ID3D12PipelineState *pipeline_state) {
   7632     This->lpVtbl->SetPipelineState(This,pipeline_state);
   7633 }
   7634 static inline void ID3D12GraphicsCommandList3_ResourceBarrier(ID3D12GraphicsCommandList3* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
   7635     This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
   7636 }
   7637 static inline void ID3D12GraphicsCommandList3_ExecuteBundle(ID3D12GraphicsCommandList3* This,ID3D12GraphicsCommandList *command_list) {
   7638     This->lpVtbl->ExecuteBundle(This,command_list);
   7639 }
   7640 static inline void ID3D12GraphicsCommandList3_SetDescriptorHeaps(ID3D12GraphicsCommandList3* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
   7641     This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
   7642 }
   7643 static inline void ID3D12GraphicsCommandList3_SetComputeRootSignature(ID3D12GraphicsCommandList3* This,ID3D12RootSignature *root_signature) {
   7644     This->lpVtbl->SetComputeRootSignature(This,root_signature);
   7645 }
   7646 static inline void ID3D12GraphicsCommandList3_SetGraphicsRootSignature(ID3D12GraphicsCommandList3* This,ID3D12RootSignature *root_signature) {
   7647     This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
   7648 }
   7649 static inline void ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
   7650     This->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor);
   7651 }
   7652 static inline void ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
   7653     This->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor);
   7654 }
   7655 static inline void ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
   7656     This->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset);
   7657 }
   7658 static inline void ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
   7659     This->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset);
   7660 }
   7661 static inline void ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
   7662     This->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
   7663 }
   7664 static inline void ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
   7665     This->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
   7666 }
   7667 static inline void ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   7668     This->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address);
   7669 }
   7670 static inline void ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   7671     This->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address);
   7672 }
   7673 static inline void ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   7674     This->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address);
   7675 }
   7676 static inline void ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   7677     This->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address);
   7678 }
   7679 static inline void ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   7680     This->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address);
   7681 }
   7682 static inline void ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(ID3D12GraphicsCommandList3* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
   7683     This->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address);
   7684 }
   7685 static inline void ID3D12GraphicsCommandList3_IASetIndexBuffer(ID3D12GraphicsCommandList3* This,const D3D12_INDEX_BUFFER_VIEW *view) {
   7686     This->lpVtbl->IASetIndexBuffer(This,view);
   7687 }
   7688 static inline void ID3D12GraphicsCommandList3_IASetVertexBuffers(ID3D12GraphicsCommandList3* This,UINT start_slot,UINT view_count,const D3D12_VERTEX_BUFFER_VIEW *views) {
   7689     This->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views);
   7690 }
   7691 static inline void ID3D12GraphicsCommandList3_SOSetTargets(ID3D12GraphicsCommandList3* This,UINT start_slot,UINT view_count,const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views) {
   7692     This->lpVtbl->SOSetTargets(This,start_slot,view_count,views);
   7693 }
   7694 static inline void ID3D12GraphicsCommandList3_OMSetRenderTargets(ID3D12GraphicsCommandList3* This,UINT render_target_descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,WINBOOL single_descriptor_handle,const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor) {
   7695     This->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor);
   7696 }
   7697 static inline void ID3D12GraphicsCommandList3_ClearDepthStencilView(ID3D12GraphicsCommandList3* This,D3D12_CPU_DESCRIPTOR_HANDLE dsv,D3D12_CLEAR_FLAGS flags,FLOAT depth,UINT8 stencil,UINT rect_count,const D3D12_RECT *rects) {
   7698     This->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects);
   7699 }
   7700 static inline void ID3D12GraphicsCommandList3_ClearRenderTargetView(ID3D12GraphicsCommandList3* This,D3D12_CPU_DESCRIPTOR_HANDLE rtv,const FLOAT color[4],UINT rect_count,const D3D12_RECT *rects) {
   7701     This->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects);
   7702 }
   7703 static inline void ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(ID3D12GraphicsCommandList3* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const UINT values[4],UINT rect_count,const D3D12_RECT *rects) {
   7704     This->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
   7705 }
   7706 static inline void ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(ID3D12GraphicsCommandList3* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const float values[4],UINT rect_count,const D3D12_RECT *rects) {
   7707     This->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
   7708 }
   7709 static inline void ID3D12GraphicsCommandList3_DiscardResource(ID3D12GraphicsCommandList3* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
   7710     This->lpVtbl->DiscardResource(This,resource,region);
   7711 }
   7712 static inline void ID3D12GraphicsCommandList3_BeginQuery(ID3D12GraphicsCommandList3* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
   7713     This->lpVtbl->BeginQuery(This,heap,type,index);
   7714 }
   7715 static inline void ID3D12GraphicsCommandList3_EndQuery(ID3D12GraphicsCommandList3* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
   7716     This->lpVtbl->EndQuery(This,heap,type,index);
   7717 }
   7718 static inline void ID3D12GraphicsCommandList3_ResolveQueryData(ID3D12GraphicsCommandList3* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT start_index,UINT query_count,ID3D12Resource *dst_buffer,UINT64 aligned_dst_buffer_offset) {
   7719     This->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset);
   7720 }
   7721 static inline void ID3D12GraphicsCommandList3_SetPredication(ID3D12GraphicsCommandList3* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
   7722     This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
   7723 }
   7724 static inline void ID3D12GraphicsCommandList3_SetMarker(ID3D12GraphicsCommandList3* This,UINT metadata,const void *data,UINT size) {
   7725     This->lpVtbl->SetMarker(This,metadata,data,size);
   7726 }
   7727 static inline void ID3D12GraphicsCommandList3_BeginEvent(ID3D12GraphicsCommandList3* This,UINT metadata,const void *data,UINT size) {
   7728     This->lpVtbl->BeginEvent(This,metadata,data,size);
   7729 }
   7730 static inline void ID3D12GraphicsCommandList3_EndEvent(ID3D12GraphicsCommandList3* This) {
   7731     This->lpVtbl->EndEvent(This);
   7732 }
   7733 static inline void ID3D12GraphicsCommandList3_ExecuteIndirect(ID3D12GraphicsCommandList3* This,ID3D12CommandSignature *command_signature,UINT max_command_count,ID3D12Resource *arg_buffer,UINT64 arg_buffer_offset,ID3D12Resource *count_buffer,UINT64 count_buffer_offset) {
   7734     This->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset);
   7735 }
   7736 /*** ID3D12GraphicsCommandList1 methods ***/
   7737 static inline void ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(ID3D12GraphicsCommandList3* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
   7738     This->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
   7739 }
   7740 static inline void ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(ID3D12GraphicsCommandList3* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
   7741     This->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
   7742 }
   7743 static inline void ID3D12GraphicsCommandList3_OMSetDepthBounds(ID3D12GraphicsCommandList3* This,FLOAT min,FLOAT max) {
   7744     This->lpVtbl->OMSetDepthBounds(This,min,max);
   7745 }
   7746 static inline void ID3D12GraphicsCommandList3_SetSamplePositions(ID3D12GraphicsCommandList3* This,UINT sample_count,UINT pixel_count,D3D12_SAMPLE_POSITION *sample_positions) {
   7747     This->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions);
   7748 }
   7749 static inline void ID3D12GraphicsCommandList3_ResolveSubresourceRegion(ID3D12GraphicsCommandList3* This,ID3D12Resource *dst_resource,UINT dst_sub_resource_idx,UINT dst_x,UINT dst_y,ID3D12Resource *src_resource,UINT src_sub_resource_idx,D3D12_RECT *src_rect,DXGI_FORMAT format,D3D12_RESOLVE_MODE mode) {
   7750     This->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode);
   7751 }
   7752 static inline void ID3D12GraphicsCommandList3_SetViewInstanceMask(ID3D12GraphicsCommandList3* This,UINT mask) {
   7753     This->lpVtbl->SetViewInstanceMask(This,mask);
   7754 }
   7755 /*** ID3D12GraphicsCommandList2 methods ***/
   7756 static inline void ID3D12GraphicsCommandList3_WriteBufferImmediate(ID3D12GraphicsCommandList3* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
   7757     This->lpVtbl->WriteBufferImmediate(This,count,parameters,modes);
   7758 }
   7759 /*** ID3D12GraphicsCommandList3 methods ***/
   7760 static inline void ID3D12GraphicsCommandList3_SetProtectedResourceSession(ID3D12GraphicsCommandList3* This,ID3D12ProtectedResourceSession *protected_resource_session) {
   7761     This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
   7762 }
   7763 #endif
   7764 #endif
   7765 
   7766 #endif
   7767 
   7768 
   7769 #endif  /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
   7770 
   7771 typedef enum D3D12_TILE_RANGE_FLAGS {
   7772     D3D12_TILE_RANGE_FLAG_NONE = 0x0,
   7773     D3D12_TILE_RANGE_FLAG_NULL = 0x1,
   7774     D3D12_TILE_RANGE_FLAG_SKIP = 0x2,
   7775     D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 0x4
   7776 } D3D12_TILE_RANGE_FLAGS;
   7777 typedef enum D3D12_TILE_MAPPING_FLAGS {
   7778     D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
   7779     D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
   7780 } D3D12_TILE_MAPPING_FLAGS;
   7781 DEFINE_ENUM_FLAG_OPERATORS(D3D12_TILE_MAPPING_FLAGS);
   7782 /*****************************************************************************
   7783  * ID3D12CommandQueue interface
   7784  */
   7785 #ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
   7786 #define __ID3D12CommandQueue_INTERFACE_DEFINED__
   7787 
   7788 DEFINE_GUID(IID_ID3D12CommandQueue, 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c,0xfc, 0x5b,0xaa,0xe0,0x76,0x16,0xed);
   7789 #if defined(__cplusplus) && !defined(CINTERFACE)
   7790 MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
   7791 ID3D12CommandQueue : public ID3D12Pageable
   7792 {
   7793     virtual void STDMETHODCALLTYPE UpdateTileMappings(
   7794         ID3D12Resource *resource,
   7795         UINT region_count,
   7796         const D3D12_TILED_RESOURCE_COORDINATE *region_start_coordinates,
   7797         const D3D12_TILE_REGION_SIZE *region_sizes,
   7798         ID3D12Heap *heap,
   7799         UINT range_count,
   7800         const D3D12_TILE_RANGE_FLAGS *range_flags,
   7801         const UINT *heap_range_offsets,
   7802         const UINT *range_tile_counts,
   7803         D3D12_TILE_MAPPING_FLAGS flags) = 0;
   7804 
   7805     virtual void STDMETHODCALLTYPE CopyTileMappings(
   7806         ID3D12Resource *dst_resource,
   7807         const D3D12_TILED_RESOURCE_COORDINATE *dst_region_start_coordinate,
   7808         ID3D12Resource *src_resource,
   7809         const D3D12_TILED_RESOURCE_COORDINATE *src_region_start_coordinate,
   7810         const D3D12_TILE_REGION_SIZE *region_size,
   7811         D3D12_TILE_MAPPING_FLAGS flags) = 0;
   7812 
   7813     virtual void STDMETHODCALLTYPE ExecuteCommandLists(
   7814         UINT command_list_count,
   7815         ID3D12CommandList *const *command_lists) = 0;
   7816 
   7817     virtual void STDMETHODCALLTYPE SetMarker(
   7818         UINT metadata,
   7819         const void *data,
   7820         UINT size) = 0;
   7821 
   7822     virtual void STDMETHODCALLTYPE BeginEvent(
   7823         UINT metadata,
   7824         const void *data,
   7825         UINT size) = 0;
   7826 
   7827     virtual void STDMETHODCALLTYPE EndEvent(
   7828         ) = 0;
   7829 
   7830     virtual HRESULT STDMETHODCALLTYPE Signal(
   7831         ID3D12Fence *fence,
   7832         UINT64 value) = 0;
   7833 
   7834     virtual HRESULT STDMETHODCALLTYPE Wait(
   7835         ID3D12Fence *fence,
   7836         UINT64 value) = 0;
   7837 
   7838     virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
   7839         UINT64 *frequency) = 0;
   7840 
   7841     virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
   7842         UINT64 *gpu_timestamp,
   7843         UINT64 *cpu_timestamp) = 0;
   7844 
   7845 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   7846     virtual D3D12_COMMAND_QUEUE_DESC* STDMETHODCALLTYPE GetDesc(
   7847         D3D12_COMMAND_QUEUE_DESC *__ret) = 0;
   7848     D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc(
   7849         )
   7850     {
   7851         D3D12_COMMAND_QUEUE_DESC __ret;
   7852         return *GetDesc(&__ret);
   7853     }
   7854 #else
   7855     virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc(
   7856         ) = 0;
   7857 #endif
   7858 
   7859 };
   7860 #ifdef __CRT_UUID_DECL
   7861 __CRT_UUID_DECL(ID3D12CommandQueue, 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c,0xfc, 0x5b,0xaa,0xe0,0x76,0x16,0xed)
   7862 #endif
   7863 #else
   7864 typedef struct ID3D12CommandQueueVtbl {
   7865     BEGIN_INTERFACE
   7866 
   7867     /*** IUnknown methods ***/
   7868     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   7869         ID3D12CommandQueue *This,
   7870         REFIID riid,
   7871         void **ppvObject);
   7872 
   7873     ULONG (STDMETHODCALLTYPE *AddRef)(
   7874         ID3D12CommandQueue *This);
   7875 
   7876     ULONG (STDMETHODCALLTYPE *Release)(
   7877         ID3D12CommandQueue *This);
   7878 
   7879     /*** ID3D12Object methods ***/
   7880     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   7881         ID3D12CommandQueue *This,
   7882         REFGUID guid,
   7883         UINT *data_size,
   7884         void *data);
   7885 
   7886     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   7887         ID3D12CommandQueue *This,
   7888         REFGUID guid,
   7889         UINT data_size,
   7890         const void *data);
   7891 
   7892     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   7893         ID3D12CommandQueue *This,
   7894         REFGUID guid,
   7895         const IUnknown *data);
   7896 
   7897     HRESULT (STDMETHODCALLTYPE *SetName)(
   7898         ID3D12CommandQueue *This,
   7899         const WCHAR *name);
   7900 
   7901     /*** ID3D12DeviceChild methods ***/
   7902     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   7903         ID3D12CommandQueue *This,
   7904         REFIID riid,
   7905         void **device);
   7906 
   7907     /*** ID3D12CommandQueue methods ***/
   7908     void (STDMETHODCALLTYPE *UpdateTileMappings)(
   7909         ID3D12CommandQueue *This,
   7910         ID3D12Resource *resource,
   7911         UINT region_count,
   7912         const D3D12_TILED_RESOURCE_COORDINATE *region_start_coordinates,
   7913         const D3D12_TILE_REGION_SIZE *region_sizes,
   7914         ID3D12Heap *heap,
   7915         UINT range_count,
   7916         const D3D12_TILE_RANGE_FLAGS *range_flags,
   7917         const UINT *heap_range_offsets,
   7918         const UINT *range_tile_counts,
   7919         D3D12_TILE_MAPPING_FLAGS flags);
   7920 
   7921     void (STDMETHODCALLTYPE *CopyTileMappings)(
   7922         ID3D12CommandQueue *This,
   7923         ID3D12Resource *dst_resource,
   7924         const D3D12_TILED_RESOURCE_COORDINATE *dst_region_start_coordinate,
   7925         ID3D12Resource *src_resource,
   7926         const D3D12_TILED_RESOURCE_COORDINATE *src_region_start_coordinate,
   7927         const D3D12_TILE_REGION_SIZE *region_size,
   7928         D3D12_TILE_MAPPING_FLAGS flags);
   7929 
   7930     void (STDMETHODCALLTYPE *ExecuteCommandLists)(
   7931         ID3D12CommandQueue *This,
   7932         UINT command_list_count,
   7933         ID3D12CommandList *const *command_lists);
   7934 
   7935     void (STDMETHODCALLTYPE *SetMarker)(
   7936         ID3D12CommandQueue *This,
   7937         UINT metadata,
   7938         const void *data,
   7939         UINT size);
   7940 
   7941     void (STDMETHODCALLTYPE *BeginEvent)(
   7942         ID3D12CommandQueue *This,
   7943         UINT metadata,
   7944         const void *data,
   7945         UINT size);
   7946 
   7947     void (STDMETHODCALLTYPE *EndEvent)(
   7948         ID3D12CommandQueue *This);
   7949 
   7950     HRESULT (STDMETHODCALLTYPE *Signal)(
   7951         ID3D12CommandQueue *This,
   7952         ID3D12Fence *fence,
   7953         UINT64 value);
   7954 
   7955     HRESULT (STDMETHODCALLTYPE *Wait)(
   7956         ID3D12CommandQueue *This,
   7957         ID3D12Fence *fence,
   7958         UINT64 value);
   7959 
   7960     HRESULT (STDMETHODCALLTYPE *GetTimestampFrequency)(
   7961         ID3D12CommandQueue *This,
   7962         UINT64 *frequency);
   7963 
   7964     HRESULT (STDMETHODCALLTYPE *GetClockCalibration)(
   7965         ID3D12CommandQueue *This,
   7966         UINT64 *gpu_timestamp,
   7967         UINT64 *cpu_timestamp);
   7968 
   7969     D3D12_COMMAND_QUEUE_DESC * (STDMETHODCALLTYPE *GetDesc)(
   7970         ID3D12CommandQueue *This,
   7971         D3D12_COMMAND_QUEUE_DESC *__ret);
   7972 
   7973     END_INTERFACE
   7974 } ID3D12CommandQueueVtbl;
   7975 
   7976 interface ID3D12CommandQueue {
   7977     CONST_VTBL ID3D12CommandQueueVtbl* lpVtbl;
   7978 };
   7979 
   7980 #ifdef COBJMACROS
   7981 #ifndef WIDL_C_INLINE_WRAPPERS
   7982 /*** IUnknown methods ***/
   7983 #define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   7984 #define ID3D12CommandQueue_AddRef(This) (This)->lpVtbl->AddRef(This)
   7985 #define ID3D12CommandQueue_Release(This) (This)->lpVtbl->Release(This)
   7986 /*** ID3D12Object methods ***/
   7987 #define ID3D12CommandQueue_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   7988 #define ID3D12CommandQueue_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   7989 #define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   7990 #define ID3D12CommandQueue_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   7991 /*** ID3D12DeviceChild methods ***/
   7992 #define ID3D12CommandQueue_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   7993 /*** ID3D12CommandQueue methods ***/
   7994 #define ID3D12CommandQueue_UpdateTileMappings(This,resource,region_count,region_start_coordinates,region_sizes,heap,range_count,range_flags,heap_range_offsets,range_tile_counts,flags) (This)->lpVtbl->UpdateTileMappings(This,resource,region_count,region_start_coordinates,region_sizes,heap,range_count,range_flags,heap_range_offsets,range_tile_counts,flags)
   7995 #define ID3D12CommandQueue_CopyTileMappings(This,dst_resource,dst_region_start_coordinate,src_resource,src_region_start_coordinate,region_size,flags) (This)->lpVtbl->CopyTileMappings(This,dst_resource,dst_region_start_coordinate,src_resource,src_region_start_coordinate,region_size,flags)
   7996 #define ID3D12CommandQueue_ExecuteCommandLists(This,command_list_count,command_lists) (This)->lpVtbl->ExecuteCommandLists(This,command_list_count,command_lists)
   7997 #define ID3D12CommandQueue_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
   7998 #define ID3D12CommandQueue_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
   7999 #define ID3D12CommandQueue_EndEvent(This) (This)->lpVtbl->EndEvent(This)
   8000 #define ID3D12CommandQueue_Signal(This,fence,value) (This)->lpVtbl->Signal(This,fence,value)
   8001 #define ID3D12CommandQueue_Wait(This,fence,value) (This)->lpVtbl->Wait(This,fence,value)
   8002 #define ID3D12CommandQueue_GetTimestampFrequency(This,frequency) (This)->lpVtbl->GetTimestampFrequency(This,frequency)
   8003 #define ID3D12CommandQueue_GetClockCalibration(This,gpu_timestamp,cpu_timestamp) (This)->lpVtbl->GetClockCalibration(This,gpu_timestamp,cpu_timestamp)
   8004 #define ID3D12CommandQueue_GetDesc(This) ID3D12CommandQueue_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   8005 #else
   8006 /*** IUnknown methods ***/
   8007 static inline HRESULT ID3D12CommandQueue_QueryInterface(ID3D12CommandQueue* This,REFIID riid,void **ppvObject) {
   8008     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   8009 }
   8010 static inline ULONG ID3D12CommandQueue_AddRef(ID3D12CommandQueue* This) {
   8011     return This->lpVtbl->AddRef(This);
   8012 }
   8013 static inline ULONG ID3D12CommandQueue_Release(ID3D12CommandQueue* This) {
   8014     return This->lpVtbl->Release(This);
   8015 }
   8016 /*** ID3D12Object methods ***/
   8017 static inline HRESULT ID3D12CommandQueue_GetPrivateData(ID3D12CommandQueue* This,REFGUID guid,UINT *data_size,void *data) {
   8018     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   8019 }
   8020 static inline HRESULT ID3D12CommandQueue_SetPrivateData(ID3D12CommandQueue* This,REFGUID guid,UINT data_size,const void *data) {
   8021     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   8022 }
   8023 static inline HRESULT ID3D12CommandQueue_SetPrivateDataInterface(ID3D12CommandQueue* This,REFGUID guid,const IUnknown *data) {
   8024     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   8025 }
   8026 static inline HRESULT ID3D12CommandQueue_SetName(ID3D12CommandQueue* This,const WCHAR *name) {
   8027     return This->lpVtbl->SetName(This,name);
   8028 }
   8029 /*** ID3D12DeviceChild methods ***/
   8030 static inline HRESULT ID3D12CommandQueue_GetDevice(ID3D12CommandQueue* This,REFIID riid,void **device) {
   8031     return This->lpVtbl->GetDevice(This,riid,device);
   8032 }
   8033 /*** ID3D12CommandQueue methods ***/
   8034 static inline void ID3D12CommandQueue_UpdateTileMappings(ID3D12CommandQueue* This,ID3D12Resource *resource,UINT region_count,const D3D12_TILED_RESOURCE_COORDINATE *region_start_coordinates,const D3D12_TILE_REGION_SIZE *region_sizes,ID3D12Heap *heap,UINT range_count,const D3D12_TILE_RANGE_FLAGS *range_flags,const UINT *heap_range_offsets,const UINT *range_tile_counts,D3D12_TILE_MAPPING_FLAGS flags) {
   8035     This->lpVtbl->UpdateTileMappings(This,resource,region_count,region_start_coordinates,region_sizes,heap,range_count,range_flags,heap_range_offsets,range_tile_counts,flags);
   8036 }
   8037 static inline void ID3D12CommandQueue_CopyTileMappings(ID3D12CommandQueue* This,ID3D12Resource *dst_resource,const D3D12_TILED_RESOURCE_COORDINATE *dst_region_start_coordinate,ID3D12Resource *src_resource,const D3D12_TILED_RESOURCE_COORDINATE *src_region_start_coordinate,const D3D12_TILE_REGION_SIZE *region_size,D3D12_TILE_MAPPING_FLAGS flags) {
   8038     This->lpVtbl->CopyTileMappings(This,dst_resource,dst_region_start_coordinate,src_resource,src_region_start_coordinate,region_size,flags);
   8039 }
   8040 static inline void ID3D12CommandQueue_ExecuteCommandLists(ID3D12CommandQueue* This,UINT command_list_count,ID3D12CommandList *const *command_lists) {
   8041     This->lpVtbl->ExecuteCommandLists(This,command_list_count,command_lists);
   8042 }
   8043 static inline void ID3D12CommandQueue_SetMarker(ID3D12CommandQueue* This,UINT metadata,const void *data,UINT size) {
   8044     This->lpVtbl->SetMarker(This,metadata,data,size);
   8045 }
   8046 static inline void ID3D12CommandQueue_BeginEvent(ID3D12CommandQueue* This,UINT metadata,const void *data,UINT size) {
   8047     This->lpVtbl->BeginEvent(This,metadata,data,size);
   8048 }
   8049 static inline void ID3D12CommandQueue_EndEvent(ID3D12CommandQueue* This) {
   8050     This->lpVtbl->EndEvent(This);
   8051 }
   8052 static inline HRESULT ID3D12CommandQueue_Signal(ID3D12CommandQueue* This,ID3D12Fence *fence,UINT64 value) {
   8053     return This->lpVtbl->Signal(This,fence,value);
   8054 }
   8055 static inline HRESULT ID3D12CommandQueue_Wait(ID3D12CommandQueue* This,ID3D12Fence *fence,UINT64 value) {
   8056     return This->lpVtbl->Wait(This,fence,value);
   8057 }
   8058 static inline HRESULT ID3D12CommandQueue_GetTimestampFrequency(ID3D12CommandQueue* This,UINT64 *frequency) {
   8059     return This->lpVtbl->GetTimestampFrequency(This,frequency);
   8060 }
   8061 static inline HRESULT ID3D12CommandQueue_GetClockCalibration(ID3D12CommandQueue* This,UINT64 *gpu_timestamp,UINT64 *cpu_timestamp) {
   8062     return This->lpVtbl->GetClockCalibration(This,gpu_timestamp,cpu_timestamp);
   8063 }
   8064 static inline D3D12_COMMAND_QUEUE_DESC ID3D12CommandQueue_GetDesc(ID3D12CommandQueue* This) {
   8065     D3D12_COMMAND_QUEUE_DESC __ret;
   8066     return *This->lpVtbl->GetDesc(This,&__ret);
   8067 }
   8068 #endif
   8069 #endif
   8070 
   8071 #endif
   8072 
   8073 
   8074 #endif  /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
   8075 
   8076 typedef enum D3D12_FENCE_FLAGS {
   8077     D3D12_FENCE_FLAG_NONE = 0x0,
   8078     D3D12_FENCE_FLAG_SHARED = 0x1,
   8079     D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
   8080     D3D12_FENCE_FLAG_NON_MONITORED = 0x4
   8081 } D3D12_FENCE_FLAGS;
   8082 DEFINE_ENUM_FLAG_OPERATORS(D3D12_FENCE_FLAGS);
   8083 typedef enum D3D12_QUERY_HEAP_TYPE {
   8084     D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
   8085     D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
   8086     D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
   8087     D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
   8088     D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
   8089     D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
   8090     D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7
   8091 } D3D12_QUERY_HEAP_TYPE;
   8092 typedef struct D3D12_QUERY_HEAP_DESC {
   8093     D3D12_QUERY_HEAP_TYPE Type;
   8094     UINT Count;
   8095     UINT NodeMask;
   8096 } D3D12_QUERY_HEAP_DESC;
   8097 typedef enum D3D12_INDIRECT_ARGUMENT_TYPE {
   8098     D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
   8099     D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = 1,
   8100     D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = 2,
   8101     D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = 3,
   8102     D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = 4,
   8103     D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = 5,
   8104     D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = 6,
   8105     D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = 7,
   8106     D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = 8,
   8107     D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = 9,
   8108     D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = 10
   8109 } D3D12_INDIRECT_ARGUMENT_TYPE;
   8110 typedef struct D3D12_INDIRECT_ARGUMENT_DESC {
   8111     D3D12_INDIRECT_ARGUMENT_TYPE Type;
   8112     __C89_NAMELESS union {
   8113         struct {
   8114             UINT Slot;
   8115         } VertexBuffer;
   8116         struct {
   8117             UINT RootParameterIndex;
   8118             UINT DestOffsetIn32BitValues;
   8119             UINT Num32BitValuesToSet;
   8120         } Constant;
   8121         struct {
   8122             UINT RootParameterIndex;
   8123         } ConstantBufferView;
   8124         struct {
   8125             UINT RootParameterIndex;
   8126         } ShaderResourceView;
   8127         struct {
   8128             UINT RootParameterIndex;
   8129         } UnorderedAccessView;
   8130     } __C89_NAMELESSUNIONNAME;
   8131 } D3D12_INDIRECT_ARGUMENT_DESC;
   8132 typedef struct D3D12_COMMAND_SIGNATURE_DESC {
   8133     UINT ByteStride;
   8134     UINT NumArgumentDescs;
   8135     const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
   8136     UINT NodeMask;
   8137 } D3D12_COMMAND_SIGNATURE_DESC;
   8138 /*****************************************************************************
   8139  * ID3D12RootSignature interface
   8140  */
   8141 #ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
   8142 #define __ID3D12RootSignature_INTERFACE_DEFINED__
   8143 
   8144 DEFINE_GUID(IID_ID3D12RootSignature, 0xc54a6b66, 0x72df, 0x4ee8, 0x8b,0xe5, 0xa9,0x46,0xa1,0x42,0x92,0x14);
   8145 #if defined(__cplusplus) && !defined(CINTERFACE)
   8146 MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
   8147 ID3D12RootSignature : public ID3D12DeviceChild
   8148 {
   8149 };
   8150 #ifdef __CRT_UUID_DECL
   8151 __CRT_UUID_DECL(ID3D12RootSignature, 0xc54a6b66, 0x72df, 0x4ee8, 0x8b,0xe5, 0xa9,0x46,0xa1,0x42,0x92,0x14)
   8152 #endif
   8153 #else
   8154 typedef struct ID3D12RootSignatureVtbl {
   8155     BEGIN_INTERFACE
   8156 
   8157     /*** IUnknown methods ***/
   8158     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   8159         ID3D12RootSignature *This,
   8160         REFIID riid,
   8161         void **ppvObject);
   8162 
   8163     ULONG (STDMETHODCALLTYPE *AddRef)(
   8164         ID3D12RootSignature *This);
   8165 
   8166     ULONG (STDMETHODCALLTYPE *Release)(
   8167         ID3D12RootSignature *This);
   8168 
   8169     /*** ID3D12Object methods ***/
   8170     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   8171         ID3D12RootSignature *This,
   8172         REFGUID guid,
   8173         UINT *data_size,
   8174         void *data);
   8175 
   8176     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   8177         ID3D12RootSignature *This,
   8178         REFGUID guid,
   8179         UINT data_size,
   8180         const void *data);
   8181 
   8182     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   8183         ID3D12RootSignature *This,
   8184         REFGUID guid,
   8185         const IUnknown *data);
   8186 
   8187     HRESULT (STDMETHODCALLTYPE *SetName)(
   8188         ID3D12RootSignature *This,
   8189         const WCHAR *name);
   8190 
   8191     /*** ID3D12DeviceChild methods ***/
   8192     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   8193         ID3D12RootSignature *This,
   8194         REFIID riid,
   8195         void **device);
   8196 
   8197     END_INTERFACE
   8198 } ID3D12RootSignatureVtbl;
   8199 
   8200 interface ID3D12RootSignature {
   8201     CONST_VTBL ID3D12RootSignatureVtbl* lpVtbl;
   8202 };
   8203 
   8204 #ifdef COBJMACROS
   8205 #ifndef WIDL_C_INLINE_WRAPPERS
   8206 /*** IUnknown methods ***/
   8207 #define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   8208 #define ID3D12RootSignature_AddRef(This) (This)->lpVtbl->AddRef(This)
   8209 #define ID3D12RootSignature_Release(This) (This)->lpVtbl->Release(This)
   8210 /*** ID3D12Object methods ***/
   8211 #define ID3D12RootSignature_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   8212 #define ID3D12RootSignature_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   8213 #define ID3D12RootSignature_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   8214 #define ID3D12RootSignature_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   8215 /*** ID3D12DeviceChild methods ***/
   8216 #define ID3D12RootSignature_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   8217 #else
   8218 /*** IUnknown methods ***/
   8219 static inline HRESULT ID3D12RootSignature_QueryInterface(ID3D12RootSignature* This,REFIID riid,void **ppvObject) {
   8220     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   8221 }
   8222 static inline ULONG ID3D12RootSignature_AddRef(ID3D12RootSignature* This) {
   8223     return This->lpVtbl->AddRef(This);
   8224 }
   8225 static inline ULONG ID3D12RootSignature_Release(ID3D12RootSignature* This) {
   8226     return This->lpVtbl->Release(This);
   8227 }
   8228 /*** ID3D12Object methods ***/
   8229 static inline HRESULT ID3D12RootSignature_GetPrivateData(ID3D12RootSignature* This,REFGUID guid,UINT *data_size,void *data) {
   8230     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   8231 }
   8232 static inline HRESULT ID3D12RootSignature_SetPrivateData(ID3D12RootSignature* This,REFGUID guid,UINT data_size,const void *data) {
   8233     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   8234 }
   8235 static inline HRESULT ID3D12RootSignature_SetPrivateDataInterface(ID3D12RootSignature* This,REFGUID guid,const IUnknown *data) {
   8236     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   8237 }
   8238 static inline HRESULT ID3D12RootSignature_SetName(ID3D12RootSignature* This,const WCHAR *name) {
   8239     return This->lpVtbl->SetName(This,name);
   8240 }
   8241 /*** ID3D12DeviceChild methods ***/
   8242 static inline HRESULT ID3D12RootSignature_GetDevice(ID3D12RootSignature* This,REFIID riid,void **device) {
   8243     return This->lpVtbl->GetDevice(This,riid,device);
   8244 }
   8245 #endif
   8246 #endif
   8247 
   8248 #endif
   8249 
   8250 
   8251 #endif  /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
   8252 
   8253 /*****************************************************************************
   8254  * ID3D12PipelineState interface
   8255  */
   8256 #ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
   8257 #define __ID3D12PipelineState_INTERFACE_DEFINED__
   8258 
   8259 DEFINE_GUID(IID_ID3D12PipelineState, 0x765a30f3, 0xf624, 0x4c6f, 0xa8,0x28, 0xac,0xe9,0x48,0x62,0x24,0x45);
   8260 #if defined(__cplusplus) && !defined(CINTERFACE)
   8261 MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
   8262 ID3D12PipelineState : public ID3D12Pageable
   8263 {
   8264     virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
   8265         ID3DBlob **blob) = 0;
   8266 
   8267 };
   8268 #ifdef __CRT_UUID_DECL
   8269 __CRT_UUID_DECL(ID3D12PipelineState, 0x765a30f3, 0xf624, 0x4c6f, 0xa8,0x28, 0xac,0xe9,0x48,0x62,0x24,0x45)
   8270 #endif
   8271 #else
   8272 typedef struct ID3D12PipelineStateVtbl {
   8273     BEGIN_INTERFACE
   8274 
   8275     /*** IUnknown methods ***/
   8276     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   8277         ID3D12PipelineState *This,
   8278         REFIID riid,
   8279         void **ppvObject);
   8280 
   8281     ULONG (STDMETHODCALLTYPE *AddRef)(
   8282         ID3D12PipelineState *This);
   8283 
   8284     ULONG (STDMETHODCALLTYPE *Release)(
   8285         ID3D12PipelineState *This);
   8286 
   8287     /*** ID3D12Object methods ***/
   8288     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   8289         ID3D12PipelineState *This,
   8290         REFGUID guid,
   8291         UINT *data_size,
   8292         void *data);
   8293 
   8294     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   8295         ID3D12PipelineState *This,
   8296         REFGUID guid,
   8297         UINT data_size,
   8298         const void *data);
   8299 
   8300     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   8301         ID3D12PipelineState *This,
   8302         REFGUID guid,
   8303         const IUnknown *data);
   8304 
   8305     HRESULT (STDMETHODCALLTYPE *SetName)(
   8306         ID3D12PipelineState *This,
   8307         const WCHAR *name);
   8308 
   8309     /*** ID3D12DeviceChild methods ***/
   8310     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   8311         ID3D12PipelineState *This,
   8312         REFIID riid,
   8313         void **device);
   8314 
   8315     /*** ID3D12PipelineState methods ***/
   8316     HRESULT (STDMETHODCALLTYPE *GetCachedBlob)(
   8317         ID3D12PipelineState *This,
   8318         ID3DBlob **blob);
   8319 
   8320     END_INTERFACE
   8321 } ID3D12PipelineStateVtbl;
   8322 
   8323 interface ID3D12PipelineState {
   8324     CONST_VTBL ID3D12PipelineStateVtbl* lpVtbl;
   8325 };
   8326 
   8327 #ifdef COBJMACROS
   8328 #ifndef WIDL_C_INLINE_WRAPPERS
   8329 /*** IUnknown methods ***/
   8330 #define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   8331 #define ID3D12PipelineState_AddRef(This) (This)->lpVtbl->AddRef(This)
   8332 #define ID3D12PipelineState_Release(This) (This)->lpVtbl->Release(This)
   8333 /*** ID3D12Object methods ***/
   8334 #define ID3D12PipelineState_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   8335 #define ID3D12PipelineState_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   8336 #define ID3D12PipelineState_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   8337 #define ID3D12PipelineState_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   8338 /*** ID3D12DeviceChild methods ***/
   8339 #define ID3D12PipelineState_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   8340 /*** ID3D12PipelineState methods ***/
   8341 #define ID3D12PipelineState_GetCachedBlob(This,blob) (This)->lpVtbl->GetCachedBlob(This,blob)
   8342 #else
   8343 /*** IUnknown methods ***/
   8344 static inline HRESULT ID3D12PipelineState_QueryInterface(ID3D12PipelineState* This,REFIID riid,void **ppvObject) {
   8345     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   8346 }
   8347 static inline ULONG ID3D12PipelineState_AddRef(ID3D12PipelineState* This) {
   8348     return This->lpVtbl->AddRef(This);
   8349 }
   8350 static inline ULONG ID3D12PipelineState_Release(ID3D12PipelineState* This) {
   8351     return This->lpVtbl->Release(This);
   8352 }
   8353 /*** ID3D12Object methods ***/
   8354 static inline HRESULT ID3D12PipelineState_GetPrivateData(ID3D12PipelineState* This,REFGUID guid,UINT *data_size,void *data) {
   8355     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   8356 }
   8357 static inline HRESULT ID3D12PipelineState_SetPrivateData(ID3D12PipelineState* This,REFGUID guid,UINT data_size,const void *data) {
   8358     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   8359 }
   8360 static inline HRESULT ID3D12PipelineState_SetPrivateDataInterface(ID3D12PipelineState* This,REFGUID guid,const IUnknown *data) {
   8361     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   8362 }
   8363 static inline HRESULT ID3D12PipelineState_SetName(ID3D12PipelineState* This,const WCHAR *name) {
   8364     return This->lpVtbl->SetName(This,name);
   8365 }
   8366 /*** ID3D12DeviceChild methods ***/
   8367 static inline HRESULT ID3D12PipelineState_GetDevice(ID3D12PipelineState* This,REFIID riid,void **device) {
   8368     return This->lpVtbl->GetDevice(This,riid,device);
   8369 }
   8370 /*** ID3D12PipelineState methods ***/
   8371 static inline HRESULT ID3D12PipelineState_GetCachedBlob(ID3D12PipelineState* This,ID3DBlob **blob) {
   8372     return This->lpVtbl->GetCachedBlob(This,blob);
   8373 }
   8374 #endif
   8375 #endif
   8376 
   8377 #endif
   8378 
   8379 
   8380 #endif  /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
   8381 
   8382 /*****************************************************************************
   8383  * ID3D12Fence interface
   8384  */
   8385 #ifndef __ID3D12Fence_INTERFACE_DEFINED__
   8386 #define __ID3D12Fence_INTERFACE_DEFINED__
   8387 
   8388 DEFINE_GUID(IID_ID3D12Fence, 0x0a753dcf, 0xc4d8, 0x4b91, 0xad,0xf6, 0xbe,0x5a,0x60,0xd9,0x5a,0x76);
   8389 #if defined(__cplusplus) && !defined(CINTERFACE)
   8390 MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
   8391 ID3D12Fence : public ID3D12Pageable
   8392 {
   8393     virtual UINT64 STDMETHODCALLTYPE GetCompletedValue(
   8394         ) = 0;
   8395 
   8396     virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
   8397         UINT64 value,
   8398         HANDLE event) = 0;
   8399 
   8400     virtual HRESULT STDMETHODCALLTYPE Signal(
   8401         UINT64 value) = 0;
   8402 
   8403 };
   8404 #ifdef __CRT_UUID_DECL
   8405 __CRT_UUID_DECL(ID3D12Fence, 0x0a753dcf, 0xc4d8, 0x4b91, 0xad,0xf6, 0xbe,0x5a,0x60,0xd9,0x5a,0x76)
   8406 #endif
   8407 #else
   8408 typedef struct ID3D12FenceVtbl {
   8409     BEGIN_INTERFACE
   8410 
   8411     /*** IUnknown methods ***/
   8412     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   8413         ID3D12Fence *This,
   8414         REFIID riid,
   8415         void **ppvObject);
   8416 
   8417     ULONG (STDMETHODCALLTYPE *AddRef)(
   8418         ID3D12Fence *This);
   8419 
   8420     ULONG (STDMETHODCALLTYPE *Release)(
   8421         ID3D12Fence *This);
   8422 
   8423     /*** ID3D12Object methods ***/
   8424     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   8425         ID3D12Fence *This,
   8426         REFGUID guid,
   8427         UINT *data_size,
   8428         void *data);
   8429 
   8430     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   8431         ID3D12Fence *This,
   8432         REFGUID guid,
   8433         UINT data_size,
   8434         const void *data);
   8435 
   8436     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   8437         ID3D12Fence *This,
   8438         REFGUID guid,
   8439         const IUnknown *data);
   8440 
   8441     HRESULT (STDMETHODCALLTYPE *SetName)(
   8442         ID3D12Fence *This,
   8443         const WCHAR *name);
   8444 
   8445     /*** ID3D12DeviceChild methods ***/
   8446     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   8447         ID3D12Fence *This,
   8448         REFIID riid,
   8449         void **device);
   8450 
   8451     /*** ID3D12Fence methods ***/
   8452     UINT64 (STDMETHODCALLTYPE *GetCompletedValue)(
   8453         ID3D12Fence *This);
   8454 
   8455     HRESULT (STDMETHODCALLTYPE *SetEventOnCompletion)(
   8456         ID3D12Fence *This,
   8457         UINT64 value,
   8458         HANDLE event);
   8459 
   8460     HRESULT (STDMETHODCALLTYPE *Signal)(
   8461         ID3D12Fence *This,
   8462         UINT64 value);
   8463 
   8464     END_INTERFACE
   8465 } ID3D12FenceVtbl;
   8466 
   8467 interface ID3D12Fence {
   8468     CONST_VTBL ID3D12FenceVtbl* lpVtbl;
   8469 };
   8470 
   8471 #ifdef COBJMACROS
   8472 #ifndef WIDL_C_INLINE_WRAPPERS
   8473 /*** IUnknown methods ***/
   8474 #define ID3D12Fence_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   8475 #define ID3D12Fence_AddRef(This) (This)->lpVtbl->AddRef(This)
   8476 #define ID3D12Fence_Release(This) (This)->lpVtbl->Release(This)
   8477 /*** ID3D12Object methods ***/
   8478 #define ID3D12Fence_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   8479 #define ID3D12Fence_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   8480 #define ID3D12Fence_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   8481 #define ID3D12Fence_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   8482 /*** ID3D12DeviceChild methods ***/
   8483 #define ID3D12Fence_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   8484 /*** ID3D12Fence methods ***/
   8485 #define ID3D12Fence_GetCompletedValue(This) (This)->lpVtbl->GetCompletedValue(This)
   8486 #define ID3D12Fence_SetEventOnCompletion(This,value,event) (This)->lpVtbl->SetEventOnCompletion(This,value,event)
   8487 #define ID3D12Fence_Signal(This,value) (This)->lpVtbl->Signal(This,value)
   8488 #else
   8489 /*** IUnknown methods ***/
   8490 static inline HRESULT ID3D12Fence_QueryInterface(ID3D12Fence* This,REFIID riid,void **ppvObject) {
   8491     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   8492 }
   8493 static inline ULONG ID3D12Fence_AddRef(ID3D12Fence* This) {
   8494     return This->lpVtbl->AddRef(This);
   8495 }
   8496 static inline ULONG ID3D12Fence_Release(ID3D12Fence* This) {
   8497     return This->lpVtbl->Release(This);
   8498 }
   8499 /*** ID3D12Object methods ***/
   8500 static inline HRESULT ID3D12Fence_GetPrivateData(ID3D12Fence* This,REFGUID guid,UINT *data_size,void *data) {
   8501     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   8502 }
   8503 static inline HRESULT ID3D12Fence_SetPrivateData(ID3D12Fence* This,REFGUID guid,UINT data_size,const void *data) {
   8504     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   8505 }
   8506 static inline HRESULT ID3D12Fence_SetPrivateDataInterface(ID3D12Fence* This,REFGUID guid,const IUnknown *data) {
   8507     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   8508 }
   8509 static inline HRESULT ID3D12Fence_SetName(ID3D12Fence* This,const WCHAR *name) {
   8510     return This->lpVtbl->SetName(This,name);
   8511 }
   8512 /*** ID3D12DeviceChild methods ***/
   8513 static inline HRESULT ID3D12Fence_GetDevice(ID3D12Fence* This,REFIID riid,void **device) {
   8514     return This->lpVtbl->GetDevice(This,riid,device);
   8515 }
   8516 /*** ID3D12Fence methods ***/
   8517 static inline UINT64 ID3D12Fence_GetCompletedValue(ID3D12Fence* This) {
   8518     return This->lpVtbl->GetCompletedValue(This);
   8519 }
   8520 static inline HRESULT ID3D12Fence_SetEventOnCompletion(ID3D12Fence* This,UINT64 value,HANDLE event) {
   8521     return This->lpVtbl->SetEventOnCompletion(This,value,event);
   8522 }
   8523 static inline HRESULT ID3D12Fence_Signal(ID3D12Fence* This,UINT64 value) {
   8524     return This->lpVtbl->Signal(This,value);
   8525 }
   8526 #endif
   8527 #endif
   8528 
   8529 #endif
   8530 
   8531 
   8532 #endif  /* __ID3D12Fence_INTERFACE_DEFINED__ */
   8533 
   8534 /*****************************************************************************
   8535  * ID3D12Fence1 interface
   8536  */
   8537 #ifndef __ID3D12Fence1_INTERFACE_DEFINED__
   8538 #define __ID3D12Fence1_INTERFACE_DEFINED__
   8539 
   8540 DEFINE_GUID(IID_ID3D12Fence1, 0x433685fe, 0xe22b, 0x4ca0, 0xa8,0xdb, 0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
   8541 #if defined(__cplusplus) && !defined(CINTERFACE)
   8542 MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
   8543 ID3D12Fence1 : public ID3D12Fence
   8544 {
   8545     virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags(
   8546         ) = 0;
   8547 
   8548 };
   8549 #ifdef __CRT_UUID_DECL
   8550 __CRT_UUID_DECL(ID3D12Fence1, 0x433685fe, 0xe22b, 0x4ca0, 0xa8,0xdb, 0xb5,0xb4,0xf4,0xdd,0x0e,0x4a)
   8551 #endif
   8552 #else
   8553 typedef struct ID3D12Fence1Vtbl {
   8554     BEGIN_INTERFACE
   8555 
   8556     /*** IUnknown methods ***/
   8557     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   8558         ID3D12Fence1 *This,
   8559         REFIID riid,
   8560         void **ppvObject);
   8561 
   8562     ULONG (STDMETHODCALLTYPE *AddRef)(
   8563         ID3D12Fence1 *This);
   8564 
   8565     ULONG (STDMETHODCALLTYPE *Release)(
   8566         ID3D12Fence1 *This);
   8567 
   8568     /*** ID3D12Object methods ***/
   8569     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   8570         ID3D12Fence1 *This,
   8571         REFGUID guid,
   8572         UINT *data_size,
   8573         void *data);
   8574 
   8575     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   8576         ID3D12Fence1 *This,
   8577         REFGUID guid,
   8578         UINT data_size,
   8579         const void *data);
   8580 
   8581     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   8582         ID3D12Fence1 *This,
   8583         REFGUID guid,
   8584         const IUnknown *data);
   8585 
   8586     HRESULT (STDMETHODCALLTYPE *SetName)(
   8587         ID3D12Fence1 *This,
   8588         const WCHAR *name);
   8589 
   8590     /*** ID3D12DeviceChild methods ***/
   8591     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   8592         ID3D12Fence1 *This,
   8593         REFIID riid,
   8594         void **device);
   8595 
   8596     /*** ID3D12Fence methods ***/
   8597     UINT64 (STDMETHODCALLTYPE *GetCompletedValue)(
   8598         ID3D12Fence1 *This);
   8599 
   8600     HRESULT (STDMETHODCALLTYPE *SetEventOnCompletion)(
   8601         ID3D12Fence1 *This,
   8602         UINT64 value,
   8603         HANDLE event);
   8604 
   8605     HRESULT (STDMETHODCALLTYPE *Signal)(
   8606         ID3D12Fence1 *This,
   8607         UINT64 value);
   8608 
   8609     /*** ID3D12Fence1 methods ***/
   8610     D3D12_FENCE_FLAGS (STDMETHODCALLTYPE *GetCreationFlags)(
   8611         ID3D12Fence1 *This);
   8612 
   8613     END_INTERFACE
   8614 } ID3D12Fence1Vtbl;
   8615 
   8616 interface ID3D12Fence1 {
   8617     CONST_VTBL ID3D12Fence1Vtbl* lpVtbl;
   8618 };
   8619 
   8620 #ifdef COBJMACROS
   8621 #ifndef WIDL_C_INLINE_WRAPPERS
   8622 /*** IUnknown methods ***/
   8623 #define ID3D12Fence1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   8624 #define ID3D12Fence1_AddRef(This) (This)->lpVtbl->AddRef(This)
   8625 #define ID3D12Fence1_Release(This) (This)->lpVtbl->Release(This)
   8626 /*** ID3D12Object methods ***/
   8627 #define ID3D12Fence1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   8628 #define ID3D12Fence1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   8629 #define ID3D12Fence1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   8630 #define ID3D12Fence1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   8631 /*** ID3D12DeviceChild methods ***/
   8632 #define ID3D12Fence1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   8633 /*** ID3D12Fence methods ***/
   8634 #define ID3D12Fence1_GetCompletedValue(This) (This)->lpVtbl->GetCompletedValue(This)
   8635 #define ID3D12Fence1_SetEventOnCompletion(This,value,event) (This)->lpVtbl->SetEventOnCompletion(This,value,event)
   8636 #define ID3D12Fence1_Signal(This,value) (This)->lpVtbl->Signal(This,value)
   8637 /*** ID3D12Fence1 methods ***/
   8638 #define ID3D12Fence1_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
   8639 #else
   8640 /*** IUnknown methods ***/
   8641 static inline HRESULT ID3D12Fence1_QueryInterface(ID3D12Fence1* This,REFIID riid,void **ppvObject) {
   8642     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   8643 }
   8644 static inline ULONG ID3D12Fence1_AddRef(ID3D12Fence1* This) {
   8645     return This->lpVtbl->AddRef(This);
   8646 }
   8647 static inline ULONG ID3D12Fence1_Release(ID3D12Fence1* This) {
   8648     return This->lpVtbl->Release(This);
   8649 }
   8650 /*** ID3D12Object methods ***/
   8651 static inline HRESULT ID3D12Fence1_GetPrivateData(ID3D12Fence1* This,REFGUID guid,UINT *data_size,void *data) {
   8652     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   8653 }
   8654 static inline HRESULT ID3D12Fence1_SetPrivateData(ID3D12Fence1* This,REFGUID guid,UINT data_size,const void *data) {
   8655     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   8656 }
   8657 static inline HRESULT ID3D12Fence1_SetPrivateDataInterface(ID3D12Fence1* This,REFGUID guid,const IUnknown *data) {
   8658     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   8659 }
   8660 static inline HRESULT ID3D12Fence1_SetName(ID3D12Fence1* This,const WCHAR *name) {
   8661     return This->lpVtbl->SetName(This,name);
   8662 }
   8663 /*** ID3D12DeviceChild methods ***/
   8664 static inline HRESULT ID3D12Fence1_GetDevice(ID3D12Fence1* This,REFIID riid,void **device) {
   8665     return This->lpVtbl->GetDevice(This,riid,device);
   8666 }
   8667 /*** ID3D12Fence methods ***/
   8668 static inline UINT64 ID3D12Fence1_GetCompletedValue(ID3D12Fence1* This) {
   8669     return This->lpVtbl->GetCompletedValue(This);
   8670 }
   8671 static inline HRESULT ID3D12Fence1_SetEventOnCompletion(ID3D12Fence1* This,UINT64 value,HANDLE event) {
   8672     return This->lpVtbl->SetEventOnCompletion(This,value,event);
   8673 }
   8674 static inline HRESULT ID3D12Fence1_Signal(ID3D12Fence1* This,UINT64 value) {
   8675     return This->lpVtbl->Signal(This,value);
   8676 }
   8677 /*** ID3D12Fence1 methods ***/
   8678 static inline D3D12_FENCE_FLAGS ID3D12Fence1_GetCreationFlags(ID3D12Fence1* This) {
   8679     return This->lpVtbl->GetCreationFlags(This);
   8680 }
   8681 #endif
   8682 #endif
   8683 
   8684 #endif
   8685 
   8686 
   8687 #endif  /* __ID3D12Fence1_INTERFACE_DEFINED__ */
   8688 
   8689 /*****************************************************************************
   8690  * ID3D12CommandAllocator interface
   8691  */
   8692 #ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
   8693 #define __ID3D12CommandAllocator_INTERFACE_DEFINED__
   8694 
   8695 DEFINE_GUID(IID_ID3D12CommandAllocator, 0x6102dee4, 0xaf59, 0x4b09, 0xb9,0x99, 0xb4,0x4d,0x73,0xf0,0x9b,0x24);
   8696 #if defined(__cplusplus) && !defined(CINTERFACE)
   8697 MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
   8698 ID3D12CommandAllocator : public ID3D12Pageable
   8699 {
   8700     virtual HRESULT STDMETHODCALLTYPE Reset(
   8701         ) = 0;
   8702 
   8703 };
   8704 #ifdef __CRT_UUID_DECL
   8705 __CRT_UUID_DECL(ID3D12CommandAllocator, 0x6102dee4, 0xaf59, 0x4b09, 0xb9,0x99, 0xb4,0x4d,0x73,0xf0,0x9b,0x24)
   8706 #endif
   8707 #else
   8708 typedef struct ID3D12CommandAllocatorVtbl {
   8709     BEGIN_INTERFACE
   8710 
   8711     /*** IUnknown methods ***/
   8712     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   8713         ID3D12CommandAllocator *This,
   8714         REFIID riid,
   8715         void **ppvObject);
   8716 
   8717     ULONG (STDMETHODCALLTYPE *AddRef)(
   8718         ID3D12CommandAllocator *This);
   8719 
   8720     ULONG (STDMETHODCALLTYPE *Release)(
   8721         ID3D12CommandAllocator *This);
   8722 
   8723     /*** ID3D12Object methods ***/
   8724     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   8725         ID3D12CommandAllocator *This,
   8726         REFGUID guid,
   8727         UINT *data_size,
   8728         void *data);
   8729 
   8730     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   8731         ID3D12CommandAllocator *This,
   8732         REFGUID guid,
   8733         UINT data_size,
   8734         const void *data);
   8735 
   8736     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   8737         ID3D12CommandAllocator *This,
   8738         REFGUID guid,
   8739         const IUnknown *data);
   8740 
   8741     HRESULT (STDMETHODCALLTYPE *SetName)(
   8742         ID3D12CommandAllocator *This,
   8743         const WCHAR *name);
   8744 
   8745     /*** ID3D12DeviceChild methods ***/
   8746     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   8747         ID3D12CommandAllocator *This,
   8748         REFIID riid,
   8749         void **device);
   8750 
   8751     /*** ID3D12CommandAllocator methods ***/
   8752     HRESULT (STDMETHODCALLTYPE *Reset)(
   8753         ID3D12CommandAllocator *This);
   8754 
   8755     END_INTERFACE
   8756 } ID3D12CommandAllocatorVtbl;
   8757 
   8758 interface ID3D12CommandAllocator {
   8759     CONST_VTBL ID3D12CommandAllocatorVtbl* lpVtbl;
   8760 };
   8761 
   8762 #ifdef COBJMACROS
   8763 #ifndef WIDL_C_INLINE_WRAPPERS
   8764 /*** IUnknown methods ***/
   8765 #define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   8766 #define ID3D12CommandAllocator_AddRef(This) (This)->lpVtbl->AddRef(This)
   8767 #define ID3D12CommandAllocator_Release(This) (This)->lpVtbl->Release(This)
   8768 /*** ID3D12Object methods ***/
   8769 #define ID3D12CommandAllocator_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   8770 #define ID3D12CommandAllocator_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   8771 #define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   8772 #define ID3D12CommandAllocator_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   8773 /*** ID3D12DeviceChild methods ***/
   8774 #define ID3D12CommandAllocator_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   8775 /*** ID3D12CommandAllocator methods ***/
   8776 #define ID3D12CommandAllocator_Reset(This) (This)->lpVtbl->Reset(This)
   8777 #else
   8778 /*** IUnknown methods ***/
   8779 static inline HRESULT ID3D12CommandAllocator_QueryInterface(ID3D12CommandAllocator* This,REFIID riid,void **ppvObject) {
   8780     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   8781 }
   8782 static inline ULONG ID3D12CommandAllocator_AddRef(ID3D12CommandAllocator* This) {
   8783     return This->lpVtbl->AddRef(This);
   8784 }
   8785 static inline ULONG ID3D12CommandAllocator_Release(ID3D12CommandAllocator* This) {
   8786     return This->lpVtbl->Release(This);
   8787 }
   8788 /*** ID3D12Object methods ***/
   8789 static inline HRESULT ID3D12CommandAllocator_GetPrivateData(ID3D12CommandAllocator* This,REFGUID guid,UINT *data_size,void *data) {
   8790     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   8791 }
   8792 static inline HRESULT ID3D12CommandAllocator_SetPrivateData(ID3D12CommandAllocator* This,REFGUID guid,UINT data_size,const void *data) {
   8793     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   8794 }
   8795 static inline HRESULT ID3D12CommandAllocator_SetPrivateDataInterface(ID3D12CommandAllocator* This,REFGUID guid,const IUnknown *data) {
   8796     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   8797 }
   8798 static inline HRESULT ID3D12CommandAllocator_SetName(ID3D12CommandAllocator* This,const WCHAR *name) {
   8799     return This->lpVtbl->SetName(This,name);
   8800 }
   8801 /*** ID3D12DeviceChild methods ***/
   8802 static inline HRESULT ID3D12CommandAllocator_GetDevice(ID3D12CommandAllocator* This,REFIID riid,void **device) {
   8803     return This->lpVtbl->GetDevice(This,riid,device);
   8804 }
   8805 /*** ID3D12CommandAllocator methods ***/
   8806 static inline HRESULT ID3D12CommandAllocator_Reset(ID3D12CommandAllocator* This) {
   8807     return This->lpVtbl->Reset(This);
   8808 }
   8809 #endif
   8810 #endif
   8811 
   8812 #endif
   8813 
   8814 
   8815 #endif  /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
   8816 
   8817 /*****************************************************************************
   8818  * ID3D12Device interface
   8819  */
   8820 #ifndef __ID3D12Device_INTERFACE_DEFINED__
   8821 #define __ID3D12Device_INTERFACE_DEFINED__
   8822 
   8823 DEFINE_GUID(IID_ID3D12Device, 0x189819f1, 0x1db6, 0x4b57, 0xbe,0x54, 0x18,0x21,0x33,0x9b,0x85,0xf7);
   8824 #if defined(__cplusplus) && !defined(CINTERFACE)
   8825 MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
   8826 ID3D12Device : public ID3D12Object
   8827 {
   8828     virtual UINT STDMETHODCALLTYPE GetNodeCount(
   8829         ) = 0;
   8830 
   8831     virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
   8832         const D3D12_COMMAND_QUEUE_DESC *desc,
   8833         REFIID riid,
   8834         void **command_queue) = 0;
   8835 
   8836     virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
   8837         D3D12_COMMAND_LIST_TYPE type,
   8838         REFIID riid,
   8839         void **command_allocator) = 0;
   8840 
   8841     virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
   8842         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
   8843         REFIID riid,
   8844         void **pipeline_state) = 0;
   8845 
   8846     virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
   8847         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
   8848         REFIID riid,
   8849         void **pipeline_state) = 0;
   8850 
   8851     virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
   8852         UINT node_mask,
   8853         D3D12_COMMAND_LIST_TYPE type,
   8854         ID3D12CommandAllocator *command_allocator,
   8855         ID3D12PipelineState *initial_pipeline_state,
   8856         REFIID riid,
   8857         void **command_list) = 0;
   8858 
   8859     virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
   8860         D3D12_FEATURE feature,
   8861         void *feature_data,
   8862         UINT feature_data_size) = 0;
   8863 
   8864     virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
   8865         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
   8866         REFIID riid,
   8867         void **descriptor_heap) = 0;
   8868 
   8869     virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
   8870         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) = 0;
   8871 
   8872     virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
   8873         UINT node_mask,
   8874         const void *bytecode,
   8875         SIZE_T bytecode_length,
   8876         REFIID riid,
   8877         void **root_signature) = 0;
   8878 
   8879     virtual void STDMETHODCALLTYPE CreateConstantBufferView(
   8880         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
   8881         D3D12_CPU_DESCRIPTOR_HANDLE descriptor) = 0;
   8882 
   8883     virtual void STDMETHODCALLTYPE CreateShaderResourceView(
   8884         ID3D12Resource *resource,
   8885         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
   8886         D3D12_CPU_DESCRIPTOR_HANDLE descriptor) = 0;
   8887 
   8888     virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
   8889         ID3D12Resource *resource,
   8890         ID3D12Resource *counter_resource,
   8891         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
   8892         D3D12_CPU_DESCRIPTOR_HANDLE descriptor) = 0;
   8893 
   8894     virtual void STDMETHODCALLTYPE CreateRenderTargetView(
   8895         ID3D12Resource *resource,
   8896         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
   8897         D3D12_CPU_DESCRIPTOR_HANDLE descriptor) = 0;
   8898 
   8899     virtual void STDMETHODCALLTYPE CreateDepthStencilView(
   8900         ID3D12Resource *resource,
   8901         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
   8902         D3D12_CPU_DESCRIPTOR_HANDLE descriptor) = 0;
   8903 
   8904     virtual void STDMETHODCALLTYPE CreateSampler(
   8905         const D3D12_SAMPLER_DESC *desc,
   8906         D3D12_CPU_DESCRIPTOR_HANDLE descriptor) = 0;
   8907 
   8908     virtual void STDMETHODCALLTYPE CopyDescriptors(
   8909         UINT dst_descriptor_range_count,
   8910         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
   8911         const UINT *dst_descriptor_range_sizes,
   8912         UINT src_descriptor_range_count,
   8913         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
   8914         const UINT *src_descriptor_range_sizes,
   8915         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) = 0;
   8916 
   8917     virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
   8918         UINT descriptor_count,
   8919         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
   8920         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
   8921         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) = 0;
   8922 
   8923 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   8924     virtual D3D12_RESOURCE_ALLOCATION_INFO* STDMETHODCALLTYPE GetResourceAllocationInfo(
   8925         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
   8926         UINT visible_mask,
   8927         UINT reource_desc_count,
   8928         const D3D12_RESOURCE_DESC *resource_descs) = 0;
   8929     D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
   8930         UINT visible_mask,
   8931         UINT reource_desc_count,
   8932         const D3D12_RESOURCE_DESC *resource_descs)
   8933     {
   8934         D3D12_RESOURCE_ALLOCATION_INFO __ret;
   8935         return *GetResourceAllocationInfo(&__ret, visible_mask, reource_desc_count, resource_descs);
   8936     }
   8937 #else
   8938     virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
   8939         UINT visible_mask,
   8940         UINT reource_desc_count,
   8941         const D3D12_RESOURCE_DESC *resource_descs) = 0;
   8942 #endif
   8943 
   8944 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   8945     virtual D3D12_HEAP_PROPERTIES* STDMETHODCALLTYPE GetCustomHeapProperties(
   8946         D3D12_HEAP_PROPERTIES *__ret,
   8947         UINT node_mask,
   8948         D3D12_HEAP_TYPE heap_type) = 0;
   8949     D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
   8950         UINT node_mask,
   8951         D3D12_HEAP_TYPE heap_type)
   8952     {
   8953         D3D12_HEAP_PROPERTIES __ret;
   8954         return *GetCustomHeapProperties(&__ret, node_mask, heap_type);
   8955     }
   8956 #else
   8957     virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
   8958         UINT node_mask,
   8959         D3D12_HEAP_TYPE heap_type) = 0;
   8960 #endif
   8961 
   8962     virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
   8963         const D3D12_HEAP_PROPERTIES *heap_properties,
   8964         D3D12_HEAP_FLAGS heap_flags,
   8965         const D3D12_RESOURCE_DESC *desc,
   8966         D3D12_RESOURCE_STATES initial_state,
   8967         const D3D12_CLEAR_VALUE *optimized_clear_value,
   8968         REFIID riid,
   8969         void **resource) = 0;
   8970 
   8971     virtual HRESULT STDMETHODCALLTYPE CreateHeap(
   8972         const D3D12_HEAP_DESC *desc,
   8973         REFIID riid,
   8974         void **heap) = 0;
   8975 
   8976     virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
   8977         ID3D12Heap *heap,
   8978         UINT64 heap_offset,
   8979         const D3D12_RESOURCE_DESC *desc,
   8980         D3D12_RESOURCE_STATES initial_state,
   8981         const D3D12_CLEAR_VALUE *optimized_clear_value,
   8982         REFIID riid,
   8983         void **resource) = 0;
   8984 
   8985     virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
   8986         const D3D12_RESOURCE_DESC *desc,
   8987         D3D12_RESOURCE_STATES initial_state,
   8988         const D3D12_CLEAR_VALUE *optimized_clear_value,
   8989         REFIID riid,
   8990         void **resource) = 0;
   8991 
   8992     virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
   8993         ID3D12DeviceChild *object,
   8994         const SECURITY_ATTRIBUTES *attributes,
   8995         DWORD access,
   8996         const WCHAR *name,
   8997         HANDLE *handle) = 0;
   8998 
   8999     virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
   9000         HANDLE handle,
   9001         REFIID riid,
   9002         void **object) = 0;
   9003 
   9004     virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
   9005         const WCHAR *name,
   9006         DWORD access,
   9007         HANDLE *handle) = 0;
   9008 
   9009     virtual HRESULT STDMETHODCALLTYPE MakeResident(
   9010         UINT object_count,
   9011         ID3D12Pageable *const *objects) = 0;
   9012 
   9013     virtual HRESULT STDMETHODCALLTYPE Evict(
   9014         UINT object_count,
   9015         ID3D12Pageable *const *objects) = 0;
   9016 
   9017     virtual HRESULT STDMETHODCALLTYPE CreateFence(
   9018         UINT64 initial_value,
   9019         D3D12_FENCE_FLAGS flags,
   9020         REFIID riid,
   9021         void **fence) = 0;
   9022 
   9023     virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason(
   9024         ) = 0;
   9025 
   9026     virtual void STDMETHODCALLTYPE GetCopyableFootprints(
   9027         const D3D12_RESOURCE_DESC *desc,
   9028         UINT first_sub_resource,
   9029         UINT sub_resource_count,
   9030         UINT64 base_offset,
   9031         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
   9032         UINT *row_count,
   9033         UINT64 *row_size,
   9034         UINT64 *total_bytes) = 0;
   9035 
   9036     virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
   9037         const D3D12_QUERY_HEAP_DESC *desc,
   9038         REFIID riid,
   9039         void **heap) = 0;
   9040 
   9041     virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
   9042         WINBOOL enable) = 0;
   9043 
   9044     virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
   9045         const D3D12_COMMAND_SIGNATURE_DESC *desc,
   9046         ID3D12RootSignature *root_signature,
   9047         REFIID riid,
   9048         void **command_signature) = 0;
   9049 
   9050     virtual void STDMETHODCALLTYPE GetResourceTiling(
   9051         ID3D12Resource *resource,
   9052         UINT *total_tile_count,
   9053         D3D12_PACKED_MIP_INFO *packed_mip_info,
   9054         D3D12_TILE_SHAPE *standard_tile_shape,
   9055         UINT *sub_resource_tiling_count,
   9056         UINT first_sub_resource_tiling,
   9057         D3D12_SUBRESOURCE_TILING *sub_resource_tilings) = 0;
   9058 
   9059 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
   9060     virtual LUID* STDMETHODCALLTYPE GetAdapterLuid(
   9061         LUID *__ret) = 0;
   9062     LUID STDMETHODCALLTYPE GetAdapterLuid(
   9063         )
   9064     {
   9065         LUID __ret;
   9066         return *GetAdapterLuid(&__ret);
   9067     }
   9068 #else
   9069     virtual LUID STDMETHODCALLTYPE GetAdapterLuid(
   9070         ) = 0;
   9071 #endif
   9072 
   9073 };
   9074 #ifdef __CRT_UUID_DECL
   9075 __CRT_UUID_DECL(ID3D12Device, 0x189819f1, 0x1db6, 0x4b57, 0xbe,0x54, 0x18,0x21,0x33,0x9b,0x85,0xf7)
   9076 #endif
   9077 #else
   9078 typedef struct ID3D12DeviceVtbl {
   9079     BEGIN_INTERFACE
   9080 
   9081     /*** IUnknown methods ***/
   9082     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   9083         ID3D12Device *This,
   9084         REFIID riid,
   9085         void **ppvObject);
   9086 
   9087     ULONG (STDMETHODCALLTYPE *AddRef)(
   9088         ID3D12Device *This);
   9089 
   9090     ULONG (STDMETHODCALLTYPE *Release)(
   9091         ID3D12Device *This);
   9092 
   9093     /*** ID3D12Object methods ***/
   9094     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   9095         ID3D12Device *This,
   9096         REFGUID guid,
   9097         UINT *data_size,
   9098         void *data);
   9099 
   9100     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   9101         ID3D12Device *This,
   9102         REFGUID guid,
   9103         UINT data_size,
   9104         const void *data);
   9105 
   9106     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   9107         ID3D12Device *This,
   9108         REFGUID guid,
   9109         const IUnknown *data);
   9110 
   9111     HRESULT (STDMETHODCALLTYPE *SetName)(
   9112         ID3D12Device *This,
   9113         const WCHAR *name);
   9114 
   9115     /*** ID3D12Device methods ***/
   9116     UINT (STDMETHODCALLTYPE *GetNodeCount)(
   9117         ID3D12Device *This);
   9118 
   9119     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
   9120         ID3D12Device *This,
   9121         const D3D12_COMMAND_QUEUE_DESC *desc,
   9122         REFIID riid,
   9123         void **command_queue);
   9124 
   9125     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
   9126         ID3D12Device *This,
   9127         D3D12_COMMAND_LIST_TYPE type,
   9128         REFIID riid,
   9129         void **command_allocator);
   9130 
   9131     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
   9132         ID3D12Device *This,
   9133         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
   9134         REFIID riid,
   9135         void **pipeline_state);
   9136 
   9137     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
   9138         ID3D12Device *This,
   9139         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
   9140         REFIID riid,
   9141         void **pipeline_state);
   9142 
   9143     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
   9144         ID3D12Device *This,
   9145         UINT node_mask,
   9146         D3D12_COMMAND_LIST_TYPE type,
   9147         ID3D12CommandAllocator *command_allocator,
   9148         ID3D12PipelineState *initial_pipeline_state,
   9149         REFIID riid,
   9150         void **command_list);
   9151 
   9152     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
   9153         ID3D12Device *This,
   9154         D3D12_FEATURE feature,
   9155         void *feature_data,
   9156         UINT feature_data_size);
   9157 
   9158     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
   9159         ID3D12Device *This,
   9160         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
   9161         REFIID riid,
   9162         void **descriptor_heap);
   9163 
   9164     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
   9165         ID3D12Device *This,
   9166         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
   9167 
   9168     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
   9169         ID3D12Device *This,
   9170         UINT node_mask,
   9171         const void *bytecode,
   9172         SIZE_T bytecode_length,
   9173         REFIID riid,
   9174         void **root_signature);
   9175 
   9176     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
   9177         ID3D12Device *This,
   9178         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
   9179         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
   9180 
   9181     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
   9182         ID3D12Device *This,
   9183         ID3D12Resource *resource,
   9184         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
   9185         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
   9186 
   9187     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
   9188         ID3D12Device *This,
   9189         ID3D12Resource *resource,
   9190         ID3D12Resource *counter_resource,
   9191         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
   9192         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
   9193 
   9194     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
   9195         ID3D12Device *This,
   9196         ID3D12Resource *resource,
   9197         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
   9198         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
   9199 
   9200     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
   9201         ID3D12Device *This,
   9202         ID3D12Resource *resource,
   9203         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
   9204         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
   9205 
   9206     void (STDMETHODCALLTYPE *CreateSampler)(
   9207         ID3D12Device *This,
   9208         const D3D12_SAMPLER_DESC *desc,
   9209         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
   9210 
   9211     void (STDMETHODCALLTYPE *CopyDescriptors)(
   9212         ID3D12Device *This,
   9213         UINT dst_descriptor_range_count,
   9214         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
   9215         const UINT *dst_descriptor_range_sizes,
   9216         UINT src_descriptor_range_count,
   9217         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
   9218         const UINT *src_descriptor_range_sizes,
   9219         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
   9220 
   9221     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
   9222         ID3D12Device *This,
   9223         UINT descriptor_count,
   9224         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
   9225         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
   9226         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
   9227 
   9228     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
   9229         ID3D12Device *This,
   9230         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
   9231         UINT visible_mask,
   9232         UINT reource_desc_count,
   9233         const D3D12_RESOURCE_DESC *resource_descs);
   9234 
   9235     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
   9236         ID3D12Device *This,
   9237         D3D12_HEAP_PROPERTIES *__ret,
   9238         UINT node_mask,
   9239         D3D12_HEAP_TYPE heap_type);
   9240 
   9241     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
   9242         ID3D12Device *This,
   9243         const D3D12_HEAP_PROPERTIES *heap_properties,
   9244         D3D12_HEAP_FLAGS heap_flags,
   9245         const D3D12_RESOURCE_DESC *desc,
   9246         D3D12_RESOURCE_STATES initial_state,
   9247         const D3D12_CLEAR_VALUE *optimized_clear_value,
   9248         REFIID riid,
   9249         void **resource);
   9250 
   9251     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
   9252         ID3D12Device *This,
   9253         const D3D12_HEAP_DESC *desc,
   9254         REFIID riid,
   9255         void **heap);
   9256 
   9257     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
   9258         ID3D12Device *This,
   9259         ID3D12Heap *heap,
   9260         UINT64 heap_offset,
   9261         const D3D12_RESOURCE_DESC *desc,
   9262         D3D12_RESOURCE_STATES initial_state,
   9263         const D3D12_CLEAR_VALUE *optimized_clear_value,
   9264         REFIID riid,
   9265         void **resource);
   9266 
   9267     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
   9268         ID3D12Device *This,
   9269         const D3D12_RESOURCE_DESC *desc,
   9270         D3D12_RESOURCE_STATES initial_state,
   9271         const D3D12_CLEAR_VALUE *optimized_clear_value,
   9272         REFIID riid,
   9273         void **resource);
   9274 
   9275     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
   9276         ID3D12Device *This,
   9277         ID3D12DeviceChild *object,
   9278         const SECURITY_ATTRIBUTES *attributes,
   9279         DWORD access,
   9280         const WCHAR *name,
   9281         HANDLE *handle);
   9282 
   9283     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
   9284         ID3D12Device *This,
   9285         HANDLE handle,
   9286         REFIID riid,
   9287         void **object);
   9288 
   9289     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
   9290         ID3D12Device *This,
   9291         const WCHAR *name,
   9292         DWORD access,
   9293         HANDLE *handle);
   9294 
   9295     HRESULT (STDMETHODCALLTYPE *MakeResident)(
   9296         ID3D12Device *This,
   9297         UINT object_count,
   9298         ID3D12Pageable *const *objects);
   9299 
   9300     HRESULT (STDMETHODCALLTYPE *Evict)(
   9301         ID3D12Device *This,
   9302         UINT object_count,
   9303         ID3D12Pageable *const *objects);
   9304 
   9305     HRESULT (STDMETHODCALLTYPE *CreateFence)(
   9306         ID3D12Device *This,
   9307         UINT64 initial_value,
   9308         D3D12_FENCE_FLAGS flags,
   9309         REFIID riid,
   9310         void **fence);
   9311 
   9312     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
   9313         ID3D12Device *This);
   9314 
   9315     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
   9316         ID3D12Device *This,
   9317         const D3D12_RESOURCE_DESC *desc,
   9318         UINT first_sub_resource,
   9319         UINT sub_resource_count,
   9320         UINT64 base_offset,
   9321         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
   9322         UINT *row_count,
   9323         UINT64 *row_size,
   9324         UINT64 *total_bytes);
   9325 
   9326     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
   9327         ID3D12Device *This,
   9328         const D3D12_QUERY_HEAP_DESC *desc,
   9329         REFIID riid,
   9330         void **heap);
   9331 
   9332     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
   9333         ID3D12Device *This,
   9334         WINBOOL enable);
   9335 
   9336     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
   9337         ID3D12Device *This,
   9338         const D3D12_COMMAND_SIGNATURE_DESC *desc,
   9339         ID3D12RootSignature *root_signature,
   9340         REFIID riid,
   9341         void **command_signature);
   9342 
   9343     void (STDMETHODCALLTYPE *GetResourceTiling)(
   9344         ID3D12Device *This,
   9345         ID3D12Resource *resource,
   9346         UINT *total_tile_count,
   9347         D3D12_PACKED_MIP_INFO *packed_mip_info,
   9348         D3D12_TILE_SHAPE *standard_tile_shape,
   9349         UINT *sub_resource_tiling_count,
   9350         UINT first_sub_resource_tiling,
   9351         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
   9352 
   9353     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
   9354         ID3D12Device *This,
   9355         LUID *__ret);
   9356 
   9357     END_INTERFACE
   9358 } ID3D12DeviceVtbl;
   9359 
   9360 interface ID3D12Device {
   9361     CONST_VTBL ID3D12DeviceVtbl* lpVtbl;
   9362 };
   9363 
   9364 #ifdef COBJMACROS
   9365 #ifndef WIDL_C_INLINE_WRAPPERS
   9366 /*** IUnknown methods ***/
   9367 #define ID3D12Device_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   9368 #define ID3D12Device_AddRef(This) (This)->lpVtbl->AddRef(This)
   9369 #define ID3D12Device_Release(This) (This)->lpVtbl->Release(This)
   9370 /*** ID3D12Object methods ***/
   9371 #define ID3D12Device_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   9372 #define ID3D12Device_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   9373 #define ID3D12Device_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   9374 #define ID3D12Device_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   9375 /*** ID3D12Device methods ***/
   9376 #define ID3D12Device_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
   9377 #define ID3D12Device_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
   9378 #define ID3D12Device_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
   9379 #define ID3D12Device_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
   9380 #define ID3D12Device_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
   9381 #define ID3D12Device_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
   9382 #define ID3D12Device_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
   9383 #define ID3D12Device_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
   9384 #define ID3D12Device_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
   9385 #define ID3D12Device_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
   9386 #define ID3D12Device_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
   9387 #define ID3D12Device_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
   9388 #define ID3D12Device_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
   9389 #define ID3D12Device_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
   9390 #define ID3D12Device_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
   9391 #define ID3D12Device_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
   9392 #define ID3D12Device_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
   9393 #define ID3D12Device_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
   9394 #define ID3D12Device_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   9395 #define ID3D12Device_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   9396 #define ID3D12Device_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
   9397 #define ID3D12Device_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
   9398 #define ID3D12Device_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
   9399 #define ID3D12Device_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
   9400 #define ID3D12Device_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
   9401 #define ID3D12Device_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
   9402 #define ID3D12Device_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
   9403 #define ID3D12Device_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
   9404 #define ID3D12Device_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
   9405 #define ID3D12Device_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
   9406 #define ID3D12Device_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
   9407 #define ID3D12Device_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
   9408 #define ID3D12Device_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
   9409 #define ID3D12Device_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
   9410 #define ID3D12Device_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
   9411 #define ID3D12Device_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
   9412 #define ID3D12Device_GetAdapterLuid(This) ID3D12Device_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
   9413 #else
   9414 /*** IUnknown methods ***/
   9415 static inline HRESULT ID3D12Device_QueryInterface(ID3D12Device* This,REFIID riid,void **ppvObject) {
   9416     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   9417 }
   9418 static inline ULONG ID3D12Device_AddRef(ID3D12Device* This) {
   9419     return This->lpVtbl->AddRef(This);
   9420 }
   9421 static inline ULONG ID3D12Device_Release(ID3D12Device* This) {
   9422     return This->lpVtbl->Release(This);
   9423 }
   9424 /*** ID3D12Object methods ***/
   9425 static inline HRESULT ID3D12Device_GetPrivateData(ID3D12Device* This,REFGUID guid,UINT *data_size,void *data) {
   9426     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   9427 }
   9428 static inline HRESULT ID3D12Device_SetPrivateData(ID3D12Device* This,REFGUID guid,UINT data_size,const void *data) {
   9429     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   9430 }
   9431 static inline HRESULT ID3D12Device_SetPrivateDataInterface(ID3D12Device* This,REFGUID guid,const IUnknown *data) {
   9432     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   9433 }
   9434 static inline HRESULT ID3D12Device_SetName(ID3D12Device* This,const WCHAR *name) {
   9435     return This->lpVtbl->SetName(This,name);
   9436 }
   9437 /*** ID3D12Device methods ***/
   9438 static inline UINT ID3D12Device_GetNodeCount(ID3D12Device* This) {
   9439     return This->lpVtbl->GetNodeCount(This);
   9440 }
   9441 static inline HRESULT ID3D12Device_CreateCommandQueue(ID3D12Device* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
   9442     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
   9443 }
   9444 static inline HRESULT ID3D12Device_CreateCommandAllocator(ID3D12Device* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
   9445     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
   9446 }
   9447 static inline HRESULT ID3D12Device_CreateGraphicsPipelineState(ID3D12Device* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
   9448     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
   9449 }
   9450 static inline HRESULT ID3D12Device_CreateComputePipelineState(ID3D12Device* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
   9451     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
   9452 }
   9453 static inline HRESULT ID3D12Device_CreateCommandList(ID3D12Device* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
   9454     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
   9455 }
   9456 static inline HRESULT ID3D12Device_CheckFeatureSupport(ID3D12Device* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
   9457     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
   9458 }
   9459 static inline HRESULT ID3D12Device_CreateDescriptorHeap(ID3D12Device* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
   9460     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
   9461 }
   9462 static inline UINT ID3D12Device_GetDescriptorHandleIncrementSize(ID3D12Device* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
   9463     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
   9464 }
   9465 static inline HRESULT ID3D12Device_CreateRootSignature(ID3D12Device* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
   9466     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
   9467 }
   9468 static inline void ID3D12Device_CreateConstantBufferView(ID3D12Device* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
   9469     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
   9470 }
   9471 static inline void ID3D12Device_CreateShaderResourceView(ID3D12Device* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
   9472     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
   9473 }
   9474 static inline void ID3D12Device_CreateUnorderedAccessView(ID3D12Device* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
   9475     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
   9476 }
   9477 static inline void ID3D12Device_CreateRenderTargetView(ID3D12Device* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
   9478     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
   9479 }
   9480 static inline void ID3D12Device_CreateDepthStencilView(ID3D12Device* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
   9481     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
   9482 }
   9483 static inline void ID3D12Device_CreateSampler(ID3D12Device* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
   9484     This->lpVtbl->CreateSampler(This,desc,descriptor);
   9485 }
   9486 static inline void ID3D12Device_CopyDescriptors(ID3D12Device* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
   9487     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
   9488 }
   9489 static inline void ID3D12Device_CopyDescriptorsSimple(ID3D12Device* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
   9490     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
   9491 }
   9492 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device_GetResourceAllocationInfo(ID3D12Device* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
   9493     D3D12_RESOURCE_ALLOCATION_INFO __ret;
   9494     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
   9495 }
   9496 static inline D3D12_HEAP_PROPERTIES ID3D12Device_GetCustomHeapProperties(ID3D12Device* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
   9497     D3D12_HEAP_PROPERTIES __ret;
   9498     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
   9499 }
   9500 static inline HRESULT ID3D12Device_CreateCommittedResource(ID3D12Device* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
   9501     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
   9502 }
   9503 static inline HRESULT ID3D12Device_CreateHeap(ID3D12Device* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
   9504     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
   9505 }
   9506 static inline HRESULT ID3D12Device_CreatePlacedResource(ID3D12Device* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
   9507     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
   9508 }
   9509 static inline HRESULT ID3D12Device_CreateReservedResource(ID3D12Device* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
   9510     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
   9511 }
   9512 static inline HRESULT ID3D12Device_CreateSharedHandle(ID3D12Device* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
   9513     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
   9514 }
   9515 static inline HRESULT ID3D12Device_OpenSharedHandle(ID3D12Device* This,HANDLE handle,REFIID riid,void **object) {
   9516     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
   9517 }
   9518 static inline HRESULT ID3D12Device_OpenSharedHandleByName(ID3D12Device* This,const WCHAR *name,DWORD access,HANDLE *handle) {
   9519     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
   9520 }
   9521 static inline HRESULT ID3D12Device_MakeResident(ID3D12Device* This,UINT object_count,ID3D12Pageable *const *objects) {
   9522     return This->lpVtbl->MakeResident(This,object_count,objects);
   9523 }
   9524 static inline HRESULT ID3D12Device_Evict(ID3D12Device* This,UINT object_count,ID3D12Pageable *const *objects) {
   9525     return This->lpVtbl->Evict(This,object_count,objects);
   9526 }
   9527 static inline HRESULT ID3D12Device_CreateFence(ID3D12Device* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
   9528     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
   9529 }
   9530 static inline HRESULT ID3D12Device_GetDeviceRemovedReason(ID3D12Device* This) {
   9531     return This->lpVtbl->GetDeviceRemovedReason(This);
   9532 }
   9533 static inline void ID3D12Device_GetCopyableFootprints(ID3D12Device* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
   9534     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
   9535 }
   9536 static inline HRESULT ID3D12Device_CreateQueryHeap(ID3D12Device* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
   9537     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
   9538 }
   9539 static inline HRESULT ID3D12Device_SetStablePowerState(ID3D12Device* This,WINBOOL enable) {
   9540     return This->lpVtbl->SetStablePowerState(This,enable);
   9541 }
   9542 static inline HRESULT ID3D12Device_CreateCommandSignature(ID3D12Device* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
   9543     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
   9544 }
   9545 static inline void ID3D12Device_GetResourceTiling(ID3D12Device* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
   9546     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
   9547 }
   9548 static inline LUID ID3D12Device_GetAdapterLuid(ID3D12Device* This) {
   9549     LUID __ret;
   9550     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
   9551 }
   9552 #endif
   9553 #endif
   9554 
   9555 #endif
   9556 
   9557 
   9558 #endif  /* __ID3D12Device_INTERFACE_DEFINED__ */
   9559 
   9560 /*****************************************************************************
   9561  * ID3D12PipelineLibrary interface
   9562  */
   9563 #ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
   9564 #define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
   9565 
   9566 DEFINE_GUID(IID_ID3D12PipelineLibrary, 0xc64226a8, 0x9201, 0x46af, 0xb4,0xcc, 0x53,0xfb,0x9f,0xf7,0x41,0x4f);
   9567 #if defined(__cplusplus) && !defined(CINTERFACE)
   9568 MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
   9569 ID3D12PipelineLibrary : public ID3D12DeviceChild
   9570 {
   9571     virtual HRESULT STDMETHODCALLTYPE StorePipeline(
   9572         const WCHAR *name,
   9573         ID3D12PipelineState *pipeline) = 0;
   9574 
   9575     virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
   9576         const WCHAR *name,
   9577         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
   9578         REFIID riid,
   9579         void **pipeline_state) = 0;
   9580 
   9581     virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
   9582         const WCHAR *name,
   9583         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
   9584         REFIID riid,
   9585         void **pipeline_state) = 0;
   9586 
   9587     virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize(
   9588         ) = 0;
   9589 
   9590     virtual HRESULT STDMETHODCALLTYPE Serialize(
   9591         void *data,
   9592         SIZE_T data_size_in_bytes) = 0;
   9593 
   9594 };
   9595 #ifdef __CRT_UUID_DECL
   9596 __CRT_UUID_DECL(ID3D12PipelineLibrary, 0xc64226a8, 0x9201, 0x46af, 0xb4,0xcc, 0x53,0xfb,0x9f,0xf7,0x41,0x4f)
   9597 #endif
   9598 #else
   9599 typedef struct ID3D12PipelineLibraryVtbl {
   9600     BEGIN_INTERFACE
   9601 
   9602     /*** IUnknown methods ***/
   9603     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   9604         ID3D12PipelineLibrary *This,
   9605         REFIID riid,
   9606         void **ppvObject);
   9607 
   9608     ULONG (STDMETHODCALLTYPE *AddRef)(
   9609         ID3D12PipelineLibrary *This);
   9610 
   9611     ULONG (STDMETHODCALLTYPE *Release)(
   9612         ID3D12PipelineLibrary *This);
   9613 
   9614     /*** ID3D12Object methods ***/
   9615     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   9616         ID3D12PipelineLibrary *This,
   9617         REFGUID guid,
   9618         UINT *data_size,
   9619         void *data);
   9620 
   9621     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   9622         ID3D12PipelineLibrary *This,
   9623         REFGUID guid,
   9624         UINT data_size,
   9625         const void *data);
   9626 
   9627     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   9628         ID3D12PipelineLibrary *This,
   9629         REFGUID guid,
   9630         const IUnknown *data);
   9631 
   9632     HRESULT (STDMETHODCALLTYPE *SetName)(
   9633         ID3D12PipelineLibrary *This,
   9634         const WCHAR *name);
   9635 
   9636     /*** ID3D12DeviceChild methods ***/
   9637     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   9638         ID3D12PipelineLibrary *This,
   9639         REFIID riid,
   9640         void **device);
   9641 
   9642     /*** ID3D12PipelineLibrary methods ***/
   9643     HRESULT (STDMETHODCALLTYPE *StorePipeline)(
   9644         ID3D12PipelineLibrary *This,
   9645         const WCHAR *name,
   9646         ID3D12PipelineState *pipeline);
   9647 
   9648     HRESULT (STDMETHODCALLTYPE *LoadGraphicsPipeline)(
   9649         ID3D12PipelineLibrary *This,
   9650         const WCHAR *name,
   9651         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
   9652         REFIID riid,
   9653         void **pipeline_state);
   9654 
   9655     HRESULT (STDMETHODCALLTYPE *LoadComputePipeline)(
   9656         ID3D12PipelineLibrary *This,
   9657         const WCHAR *name,
   9658         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
   9659         REFIID riid,
   9660         void **pipeline_state);
   9661 
   9662     SIZE_T (STDMETHODCALLTYPE *GetSerializedSize)(
   9663         ID3D12PipelineLibrary *This);
   9664 
   9665     HRESULT (STDMETHODCALLTYPE *Serialize)(
   9666         ID3D12PipelineLibrary *This,
   9667         void *data,
   9668         SIZE_T data_size_in_bytes);
   9669 
   9670     END_INTERFACE
   9671 } ID3D12PipelineLibraryVtbl;
   9672 
   9673 interface ID3D12PipelineLibrary {
   9674     CONST_VTBL ID3D12PipelineLibraryVtbl* lpVtbl;
   9675 };
   9676 
   9677 #ifdef COBJMACROS
   9678 #ifndef WIDL_C_INLINE_WRAPPERS
   9679 /*** IUnknown methods ***/
   9680 #define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   9681 #define ID3D12PipelineLibrary_AddRef(This) (This)->lpVtbl->AddRef(This)
   9682 #define ID3D12PipelineLibrary_Release(This) (This)->lpVtbl->Release(This)
   9683 /*** ID3D12Object methods ***/
   9684 #define ID3D12PipelineLibrary_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   9685 #define ID3D12PipelineLibrary_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   9686 #define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   9687 #define ID3D12PipelineLibrary_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   9688 /*** ID3D12DeviceChild methods ***/
   9689 #define ID3D12PipelineLibrary_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   9690 /*** ID3D12PipelineLibrary methods ***/
   9691 #define ID3D12PipelineLibrary_StorePipeline(This,name,pipeline) (This)->lpVtbl->StorePipeline(This,name,pipeline)
   9692 #define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,name,desc,riid,pipeline_state) (This)->lpVtbl->LoadGraphicsPipeline(This,name,desc,riid,pipeline_state)
   9693 #define ID3D12PipelineLibrary_LoadComputePipeline(This,name,desc,riid,pipeline_state) (This)->lpVtbl->LoadComputePipeline(This,name,desc,riid,pipeline_state)
   9694 #define ID3D12PipelineLibrary_GetSerializedSize(This) (This)->lpVtbl->GetSerializedSize(This)
   9695 #define ID3D12PipelineLibrary_Serialize(This,data,data_size_in_bytes) (This)->lpVtbl->Serialize(This,data,data_size_in_bytes)
   9696 #else
   9697 /*** IUnknown methods ***/
   9698 static inline HRESULT ID3D12PipelineLibrary_QueryInterface(ID3D12PipelineLibrary* This,REFIID riid,void **ppvObject) {
   9699     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   9700 }
   9701 static inline ULONG ID3D12PipelineLibrary_AddRef(ID3D12PipelineLibrary* This) {
   9702     return This->lpVtbl->AddRef(This);
   9703 }
   9704 static inline ULONG ID3D12PipelineLibrary_Release(ID3D12PipelineLibrary* This) {
   9705     return This->lpVtbl->Release(This);
   9706 }
   9707 /*** ID3D12Object methods ***/
   9708 static inline HRESULT ID3D12PipelineLibrary_GetPrivateData(ID3D12PipelineLibrary* This,REFGUID guid,UINT *data_size,void *data) {
   9709     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   9710 }
   9711 static inline HRESULT ID3D12PipelineLibrary_SetPrivateData(ID3D12PipelineLibrary* This,REFGUID guid,UINT data_size,const void *data) {
   9712     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   9713 }
   9714 static inline HRESULT ID3D12PipelineLibrary_SetPrivateDataInterface(ID3D12PipelineLibrary* This,REFGUID guid,const IUnknown *data) {
   9715     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   9716 }
   9717 static inline HRESULT ID3D12PipelineLibrary_SetName(ID3D12PipelineLibrary* This,const WCHAR *name) {
   9718     return This->lpVtbl->SetName(This,name);
   9719 }
   9720 /*** ID3D12DeviceChild methods ***/
   9721 static inline HRESULT ID3D12PipelineLibrary_GetDevice(ID3D12PipelineLibrary* This,REFIID riid,void **device) {
   9722     return This->lpVtbl->GetDevice(This,riid,device);
   9723 }
   9724 /*** ID3D12PipelineLibrary methods ***/
   9725 static inline HRESULT ID3D12PipelineLibrary_StorePipeline(ID3D12PipelineLibrary* This,const WCHAR *name,ID3D12PipelineState *pipeline) {
   9726     return This->lpVtbl->StorePipeline(This,name,pipeline);
   9727 }
   9728 static inline HRESULT ID3D12PipelineLibrary_LoadGraphicsPipeline(ID3D12PipelineLibrary* This,const WCHAR *name,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
   9729     return This->lpVtbl->LoadGraphicsPipeline(This,name,desc,riid,pipeline_state);
   9730 }
   9731 static inline HRESULT ID3D12PipelineLibrary_LoadComputePipeline(ID3D12PipelineLibrary* This,const WCHAR *name,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
   9732     return This->lpVtbl->LoadComputePipeline(This,name,desc,riid,pipeline_state);
   9733 }
   9734 static inline SIZE_T ID3D12PipelineLibrary_GetSerializedSize(ID3D12PipelineLibrary* This) {
   9735     return This->lpVtbl->GetSerializedSize(This);
   9736 }
   9737 static inline HRESULT ID3D12PipelineLibrary_Serialize(ID3D12PipelineLibrary* This,void *data,SIZE_T data_size_in_bytes) {
   9738     return This->lpVtbl->Serialize(This,data,data_size_in_bytes);
   9739 }
   9740 #endif
   9741 #endif
   9742 
   9743 #endif
   9744 
   9745 
   9746 #endif  /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
   9747 
   9748 /*****************************************************************************
   9749  * ID3D12PipelineLibrary1 interface
   9750  */
   9751 #ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
   9752 #define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
   9753 
   9754 DEFINE_GUID(IID_ID3D12PipelineLibrary1, 0x80eabf42, 0x2568, 0x4e5e, 0xbd,0x82, 0xc3,0x7f,0x86,0x96,0x1d,0xc3);
   9755 #if defined(__cplusplus) && !defined(CINTERFACE)
   9756 MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
   9757 ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
   9758 {
   9759     virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
   9760         const WCHAR *name,
   9761         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
   9762         REFIID riid,
   9763         void **pipeline_state) = 0;
   9764 
   9765 };
   9766 #ifdef __CRT_UUID_DECL
   9767 __CRT_UUID_DECL(ID3D12PipelineLibrary1, 0x80eabf42, 0x2568, 0x4e5e, 0xbd,0x82, 0xc3,0x7f,0x86,0x96,0x1d,0xc3)
   9768 #endif
   9769 #else
   9770 typedef struct ID3D12PipelineLibrary1Vtbl {
   9771     BEGIN_INTERFACE
   9772 
   9773     /*** IUnknown methods ***/
   9774     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   9775         ID3D12PipelineLibrary1 *This,
   9776         REFIID riid,
   9777         void **ppvObject);
   9778 
   9779     ULONG (STDMETHODCALLTYPE *AddRef)(
   9780         ID3D12PipelineLibrary1 *This);
   9781 
   9782     ULONG (STDMETHODCALLTYPE *Release)(
   9783         ID3D12PipelineLibrary1 *This);
   9784 
   9785     /*** ID3D12Object methods ***/
   9786     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   9787         ID3D12PipelineLibrary1 *This,
   9788         REFGUID guid,
   9789         UINT *data_size,
   9790         void *data);
   9791 
   9792     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   9793         ID3D12PipelineLibrary1 *This,
   9794         REFGUID guid,
   9795         UINT data_size,
   9796         const void *data);
   9797 
   9798     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   9799         ID3D12PipelineLibrary1 *This,
   9800         REFGUID guid,
   9801         const IUnknown *data);
   9802 
   9803     HRESULT (STDMETHODCALLTYPE *SetName)(
   9804         ID3D12PipelineLibrary1 *This,
   9805         const WCHAR *name);
   9806 
   9807     /*** ID3D12DeviceChild methods ***/
   9808     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   9809         ID3D12PipelineLibrary1 *This,
   9810         REFIID riid,
   9811         void **device);
   9812 
   9813     /*** ID3D12PipelineLibrary methods ***/
   9814     HRESULT (STDMETHODCALLTYPE *StorePipeline)(
   9815         ID3D12PipelineLibrary1 *This,
   9816         const WCHAR *name,
   9817         ID3D12PipelineState *pipeline);
   9818 
   9819     HRESULT (STDMETHODCALLTYPE *LoadGraphicsPipeline)(
   9820         ID3D12PipelineLibrary1 *This,
   9821         const WCHAR *name,
   9822         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
   9823         REFIID riid,
   9824         void **pipeline_state);
   9825 
   9826     HRESULT (STDMETHODCALLTYPE *LoadComputePipeline)(
   9827         ID3D12PipelineLibrary1 *This,
   9828         const WCHAR *name,
   9829         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
   9830         REFIID riid,
   9831         void **pipeline_state);
   9832 
   9833     SIZE_T (STDMETHODCALLTYPE *GetSerializedSize)(
   9834         ID3D12PipelineLibrary1 *This);
   9835 
   9836     HRESULT (STDMETHODCALLTYPE *Serialize)(
   9837         ID3D12PipelineLibrary1 *This,
   9838         void *data,
   9839         SIZE_T data_size_in_bytes);
   9840 
   9841     /*** ID3D12PipelineLibrary1 methods ***/
   9842     HRESULT (STDMETHODCALLTYPE *LoadPipeline)(
   9843         ID3D12PipelineLibrary1 *This,
   9844         const WCHAR *name,
   9845         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
   9846         REFIID riid,
   9847         void **pipeline_state);
   9848 
   9849     END_INTERFACE
   9850 } ID3D12PipelineLibrary1Vtbl;
   9851 
   9852 interface ID3D12PipelineLibrary1 {
   9853     CONST_VTBL ID3D12PipelineLibrary1Vtbl* lpVtbl;
   9854 };
   9855 
   9856 #ifdef COBJMACROS
   9857 #ifndef WIDL_C_INLINE_WRAPPERS
   9858 /*** IUnknown methods ***/
   9859 #define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   9860 #define ID3D12PipelineLibrary1_AddRef(This) (This)->lpVtbl->AddRef(This)
   9861 #define ID3D12PipelineLibrary1_Release(This) (This)->lpVtbl->Release(This)
   9862 /*** ID3D12Object methods ***/
   9863 #define ID3D12PipelineLibrary1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   9864 #define ID3D12PipelineLibrary1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   9865 #define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
   9866 #define ID3D12PipelineLibrary1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
   9867 /*** ID3D12DeviceChild methods ***/
   9868 #define ID3D12PipelineLibrary1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   9869 /*** ID3D12PipelineLibrary methods ***/
   9870 #define ID3D12PipelineLibrary1_StorePipeline(This,name,pipeline) (This)->lpVtbl->StorePipeline(This,name,pipeline)
   9871 #define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,name,desc,riid,pipeline_state) (This)->lpVtbl->LoadGraphicsPipeline(This,name,desc,riid,pipeline_state)
   9872 #define ID3D12PipelineLibrary1_LoadComputePipeline(This,name,desc,riid,pipeline_state) (This)->lpVtbl->LoadComputePipeline(This,name,desc,riid,pipeline_state)
   9873 #define ID3D12PipelineLibrary1_GetSerializedSize(This) (This)->lpVtbl->GetSerializedSize(This)
   9874 #define ID3D12PipelineLibrary1_Serialize(This,data,data_size_in_bytes) (This)->lpVtbl->Serialize(This,data,data_size_in_bytes)
   9875 /*** ID3D12PipelineLibrary1 methods ***/
   9876 #define ID3D12PipelineLibrary1_LoadPipeline(This,name,desc,riid,pipeline_state) (This)->lpVtbl->LoadPipeline(This,name,desc,riid,pipeline_state)
   9877 #else
   9878 /*** IUnknown methods ***/
   9879 static inline HRESULT ID3D12PipelineLibrary1_QueryInterface(ID3D12PipelineLibrary1* This,REFIID riid,void **ppvObject) {
   9880     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   9881 }
   9882 static inline ULONG ID3D12PipelineLibrary1_AddRef(ID3D12PipelineLibrary1* This) {
   9883     return This->lpVtbl->AddRef(This);
   9884 }
   9885 static inline ULONG ID3D12PipelineLibrary1_Release(ID3D12PipelineLibrary1* This) {
   9886     return This->lpVtbl->Release(This);
   9887 }
   9888 /*** ID3D12Object methods ***/
   9889 static inline HRESULT ID3D12PipelineLibrary1_GetPrivateData(ID3D12PipelineLibrary1* This,REFGUID guid,UINT *data_size,void *data) {
   9890     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   9891 }
   9892 static inline HRESULT ID3D12PipelineLibrary1_SetPrivateData(ID3D12PipelineLibrary1* This,REFGUID guid,UINT data_size,const void *data) {
   9893     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   9894 }
   9895 static inline HRESULT ID3D12PipelineLibrary1_SetPrivateDataInterface(ID3D12PipelineLibrary1* This,REFGUID guid,const IUnknown *data) {
   9896     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
   9897 }
   9898 static inline HRESULT ID3D12PipelineLibrary1_SetName(ID3D12PipelineLibrary1* This,const WCHAR *name) {
   9899     return This->lpVtbl->SetName(This,name);
   9900 }
   9901 /*** ID3D12DeviceChild methods ***/
   9902 static inline HRESULT ID3D12PipelineLibrary1_GetDevice(ID3D12PipelineLibrary1* This,REFIID riid,void **device) {
   9903     return This->lpVtbl->GetDevice(This,riid,device);
   9904 }
   9905 /*** ID3D12PipelineLibrary methods ***/
   9906 static inline HRESULT ID3D12PipelineLibrary1_StorePipeline(ID3D12PipelineLibrary1* This,const WCHAR *name,ID3D12PipelineState *pipeline) {
   9907     return This->lpVtbl->StorePipeline(This,name,pipeline);
   9908 }
   9909 static inline HRESULT ID3D12PipelineLibrary1_LoadGraphicsPipeline(ID3D12PipelineLibrary1* This,const WCHAR *name,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
   9910     return This->lpVtbl->LoadGraphicsPipeline(This,name,desc,riid,pipeline_state);
   9911 }
   9912 static inline HRESULT ID3D12PipelineLibrary1_LoadComputePipeline(ID3D12PipelineLibrary1* This,const WCHAR *name,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
   9913     return This->lpVtbl->LoadComputePipeline(This,name,desc,riid,pipeline_state);
   9914 }
   9915 static inline SIZE_T ID3D12PipelineLibrary1_GetSerializedSize(ID3D12PipelineLibrary1* This) {
   9916     return This->lpVtbl->GetSerializedSize(This);
   9917 }
   9918 static inline HRESULT ID3D12PipelineLibrary1_Serialize(ID3D12PipelineLibrary1* This,void *data,SIZE_T data_size_in_bytes) {
   9919     return This->lpVtbl->Serialize(This,data,data_size_in_bytes);
   9920 }
   9921 /*** ID3D12PipelineLibrary1 methods ***/
   9922 static inline HRESULT ID3D12PipelineLibrary1_LoadPipeline(ID3D12PipelineLibrary1* This,const WCHAR *name,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
   9923     return This->lpVtbl->LoadPipeline(This,name,desc,riid,pipeline_state);
   9924 }
   9925 #endif
   9926 #endif
   9927 
   9928 #endif
   9929 
   9930 
   9931 #endif  /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
   9932 
   9933 /*****************************************************************************
   9934  * ID3D12Device1 interface
   9935  */
   9936 #ifndef __ID3D12Device1_INTERFACE_DEFINED__
   9937 #define __ID3D12Device1_INTERFACE_DEFINED__
   9938 
   9939 DEFINE_GUID(IID_ID3D12Device1, 0x77acce80, 0x638e, 0x4e65, 0x88,0x95, 0xc1,0xf2,0x33,0x86,0x86,0x3e);
   9940 #if defined(__cplusplus) && !defined(CINTERFACE)
   9941 MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
   9942 ID3D12Device1 : public ID3D12Device
   9943 {
   9944     virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
   9945         const void *blob,
   9946         SIZE_T blob_size,
   9947         REFIID iid,
   9948         void **lib) = 0;
   9949 
   9950     virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
   9951         ID3D12Fence *const *fences,
   9952         const UINT64 *values,
   9953         UINT fence_count,
   9954         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
   9955         HANDLE event) = 0;
   9956 
   9957     virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
   9958         UINT object_count,
   9959         ID3D12Pageable *const *objects,
   9960         const D3D12_RESIDENCY_PRIORITY *priorities) = 0;
   9961 
   9962 };
   9963 #ifdef __CRT_UUID_DECL
   9964 __CRT_UUID_DECL(ID3D12Device1, 0x77acce80, 0x638e, 0x4e65, 0x88,0x95, 0xc1,0xf2,0x33,0x86,0x86,0x3e)
   9965 #endif
   9966 #else
   9967 typedef struct ID3D12Device1Vtbl {
   9968     BEGIN_INTERFACE
   9969 
   9970     /*** IUnknown methods ***/
   9971     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   9972         ID3D12Device1 *This,
   9973         REFIID riid,
   9974         void **ppvObject);
   9975 
   9976     ULONG (STDMETHODCALLTYPE *AddRef)(
   9977         ID3D12Device1 *This);
   9978 
   9979     ULONG (STDMETHODCALLTYPE *Release)(
   9980         ID3D12Device1 *This);
   9981 
   9982     /*** ID3D12Object methods ***/
   9983     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   9984         ID3D12Device1 *This,
   9985         REFGUID guid,
   9986         UINT *data_size,
   9987         void *data);
   9988 
   9989     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   9990         ID3D12Device1 *This,
   9991         REFGUID guid,
   9992         UINT data_size,
   9993         const void *data);
   9994 
   9995     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   9996         ID3D12Device1 *This,
   9997         REFGUID guid,
   9998         const IUnknown *data);
   9999 
  10000     HRESULT (STDMETHODCALLTYPE *SetName)(
  10001         ID3D12Device1 *This,
  10002         const WCHAR *name);
  10003 
  10004     /*** ID3D12Device methods ***/
  10005     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  10006         ID3D12Device1 *This);
  10007 
  10008     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  10009         ID3D12Device1 *This,
  10010         const D3D12_COMMAND_QUEUE_DESC *desc,
  10011         REFIID riid,
  10012         void **command_queue);
  10013 
  10014     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  10015         ID3D12Device1 *This,
  10016         D3D12_COMMAND_LIST_TYPE type,
  10017         REFIID riid,
  10018         void **command_allocator);
  10019 
  10020     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  10021         ID3D12Device1 *This,
  10022         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  10023         REFIID riid,
  10024         void **pipeline_state);
  10025 
  10026     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  10027         ID3D12Device1 *This,
  10028         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  10029         REFIID riid,
  10030         void **pipeline_state);
  10031 
  10032     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  10033         ID3D12Device1 *This,
  10034         UINT node_mask,
  10035         D3D12_COMMAND_LIST_TYPE type,
  10036         ID3D12CommandAllocator *command_allocator,
  10037         ID3D12PipelineState *initial_pipeline_state,
  10038         REFIID riid,
  10039         void **command_list);
  10040 
  10041     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  10042         ID3D12Device1 *This,
  10043         D3D12_FEATURE feature,
  10044         void *feature_data,
  10045         UINT feature_data_size);
  10046 
  10047     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  10048         ID3D12Device1 *This,
  10049         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  10050         REFIID riid,
  10051         void **descriptor_heap);
  10052 
  10053     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  10054         ID3D12Device1 *This,
  10055         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  10056 
  10057     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  10058         ID3D12Device1 *This,
  10059         UINT node_mask,
  10060         const void *bytecode,
  10061         SIZE_T bytecode_length,
  10062         REFIID riid,
  10063         void **root_signature);
  10064 
  10065     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  10066         ID3D12Device1 *This,
  10067         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  10068         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10069 
  10070     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  10071         ID3D12Device1 *This,
  10072         ID3D12Resource *resource,
  10073         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  10074         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10075 
  10076     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  10077         ID3D12Device1 *This,
  10078         ID3D12Resource *resource,
  10079         ID3D12Resource *counter_resource,
  10080         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  10081         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10082 
  10083     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  10084         ID3D12Device1 *This,
  10085         ID3D12Resource *resource,
  10086         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  10087         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10088 
  10089     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  10090         ID3D12Device1 *This,
  10091         ID3D12Resource *resource,
  10092         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  10093         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10094 
  10095     void (STDMETHODCALLTYPE *CreateSampler)(
  10096         ID3D12Device1 *This,
  10097         const D3D12_SAMPLER_DESC *desc,
  10098         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10099 
  10100     void (STDMETHODCALLTYPE *CopyDescriptors)(
  10101         ID3D12Device1 *This,
  10102         UINT dst_descriptor_range_count,
  10103         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  10104         const UINT *dst_descriptor_range_sizes,
  10105         UINT src_descriptor_range_count,
  10106         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  10107         const UINT *src_descriptor_range_sizes,
  10108         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  10109 
  10110     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  10111         ID3D12Device1 *This,
  10112         UINT descriptor_count,
  10113         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  10114         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  10115         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  10116 
  10117     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  10118         ID3D12Device1 *This,
  10119         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  10120         UINT visible_mask,
  10121         UINT reource_desc_count,
  10122         const D3D12_RESOURCE_DESC *resource_descs);
  10123 
  10124     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  10125         ID3D12Device1 *This,
  10126         D3D12_HEAP_PROPERTIES *__ret,
  10127         UINT node_mask,
  10128         D3D12_HEAP_TYPE heap_type);
  10129 
  10130     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  10131         ID3D12Device1 *This,
  10132         const D3D12_HEAP_PROPERTIES *heap_properties,
  10133         D3D12_HEAP_FLAGS heap_flags,
  10134         const D3D12_RESOURCE_DESC *desc,
  10135         D3D12_RESOURCE_STATES initial_state,
  10136         const D3D12_CLEAR_VALUE *optimized_clear_value,
  10137         REFIID riid,
  10138         void **resource);
  10139 
  10140     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  10141         ID3D12Device1 *This,
  10142         const D3D12_HEAP_DESC *desc,
  10143         REFIID riid,
  10144         void **heap);
  10145 
  10146     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  10147         ID3D12Device1 *This,
  10148         ID3D12Heap *heap,
  10149         UINT64 heap_offset,
  10150         const D3D12_RESOURCE_DESC *desc,
  10151         D3D12_RESOURCE_STATES initial_state,
  10152         const D3D12_CLEAR_VALUE *optimized_clear_value,
  10153         REFIID riid,
  10154         void **resource);
  10155 
  10156     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  10157         ID3D12Device1 *This,
  10158         const D3D12_RESOURCE_DESC *desc,
  10159         D3D12_RESOURCE_STATES initial_state,
  10160         const D3D12_CLEAR_VALUE *optimized_clear_value,
  10161         REFIID riid,
  10162         void **resource);
  10163 
  10164     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  10165         ID3D12Device1 *This,
  10166         ID3D12DeviceChild *object,
  10167         const SECURITY_ATTRIBUTES *attributes,
  10168         DWORD access,
  10169         const WCHAR *name,
  10170         HANDLE *handle);
  10171 
  10172     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  10173         ID3D12Device1 *This,
  10174         HANDLE handle,
  10175         REFIID riid,
  10176         void **object);
  10177 
  10178     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  10179         ID3D12Device1 *This,
  10180         const WCHAR *name,
  10181         DWORD access,
  10182         HANDLE *handle);
  10183 
  10184     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  10185         ID3D12Device1 *This,
  10186         UINT object_count,
  10187         ID3D12Pageable *const *objects);
  10188 
  10189     HRESULT (STDMETHODCALLTYPE *Evict)(
  10190         ID3D12Device1 *This,
  10191         UINT object_count,
  10192         ID3D12Pageable *const *objects);
  10193 
  10194     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  10195         ID3D12Device1 *This,
  10196         UINT64 initial_value,
  10197         D3D12_FENCE_FLAGS flags,
  10198         REFIID riid,
  10199         void **fence);
  10200 
  10201     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  10202         ID3D12Device1 *This);
  10203 
  10204     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  10205         ID3D12Device1 *This,
  10206         const D3D12_RESOURCE_DESC *desc,
  10207         UINT first_sub_resource,
  10208         UINT sub_resource_count,
  10209         UINT64 base_offset,
  10210         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  10211         UINT *row_count,
  10212         UINT64 *row_size,
  10213         UINT64 *total_bytes);
  10214 
  10215     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  10216         ID3D12Device1 *This,
  10217         const D3D12_QUERY_HEAP_DESC *desc,
  10218         REFIID riid,
  10219         void **heap);
  10220 
  10221     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  10222         ID3D12Device1 *This,
  10223         WINBOOL enable);
  10224 
  10225     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  10226         ID3D12Device1 *This,
  10227         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  10228         ID3D12RootSignature *root_signature,
  10229         REFIID riid,
  10230         void **command_signature);
  10231 
  10232     void (STDMETHODCALLTYPE *GetResourceTiling)(
  10233         ID3D12Device1 *This,
  10234         ID3D12Resource *resource,
  10235         UINT *total_tile_count,
  10236         D3D12_PACKED_MIP_INFO *packed_mip_info,
  10237         D3D12_TILE_SHAPE *standard_tile_shape,
  10238         UINT *sub_resource_tiling_count,
  10239         UINT first_sub_resource_tiling,
  10240         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  10241 
  10242     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  10243         ID3D12Device1 *This,
  10244         LUID *__ret);
  10245 
  10246     /*** ID3D12Device1 methods ***/
  10247     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  10248         ID3D12Device1 *This,
  10249         const void *blob,
  10250         SIZE_T blob_size,
  10251         REFIID iid,
  10252         void **lib);
  10253 
  10254     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  10255         ID3D12Device1 *This,
  10256         ID3D12Fence *const *fences,
  10257         const UINT64 *values,
  10258         UINT fence_count,
  10259         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  10260         HANDLE event);
  10261 
  10262     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  10263         ID3D12Device1 *This,
  10264         UINT object_count,
  10265         ID3D12Pageable *const *objects,
  10266         const D3D12_RESIDENCY_PRIORITY *priorities);
  10267 
  10268     END_INTERFACE
  10269 } ID3D12Device1Vtbl;
  10270 
  10271 interface ID3D12Device1 {
  10272     CONST_VTBL ID3D12Device1Vtbl* lpVtbl;
  10273 };
  10274 
  10275 #ifdef COBJMACROS
  10276 #ifndef WIDL_C_INLINE_WRAPPERS
  10277 /*** IUnknown methods ***/
  10278 #define ID3D12Device1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  10279 #define ID3D12Device1_AddRef(This) (This)->lpVtbl->AddRef(This)
  10280 #define ID3D12Device1_Release(This) (This)->lpVtbl->Release(This)
  10281 /*** ID3D12Object methods ***/
  10282 #define ID3D12Device1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  10283 #define ID3D12Device1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  10284 #define ID3D12Device1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  10285 #define ID3D12Device1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  10286 /*** ID3D12Device methods ***/
  10287 #define ID3D12Device1_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  10288 #define ID3D12Device1_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  10289 #define ID3D12Device1_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  10290 #define ID3D12Device1_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  10291 #define ID3D12Device1_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  10292 #define ID3D12Device1_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  10293 #define ID3D12Device1_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  10294 #define ID3D12Device1_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  10295 #define ID3D12Device1_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  10296 #define ID3D12Device1_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  10297 #define ID3D12Device1_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  10298 #define ID3D12Device1_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  10299 #define ID3D12Device1_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  10300 #define ID3D12Device1_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  10301 #define ID3D12Device1_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  10302 #define ID3D12Device1_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  10303 #define ID3D12Device1_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  10304 #define ID3D12Device1_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  10305 #define ID3D12Device1_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device1_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  10306 #define ID3D12Device1_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device1_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  10307 #define ID3D12Device1_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  10308 #define ID3D12Device1_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  10309 #define ID3D12Device1_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  10310 #define ID3D12Device1_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  10311 #define ID3D12Device1_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  10312 #define ID3D12Device1_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  10313 #define ID3D12Device1_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  10314 #define ID3D12Device1_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  10315 #define ID3D12Device1_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  10316 #define ID3D12Device1_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  10317 #define ID3D12Device1_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  10318 #define ID3D12Device1_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  10319 #define ID3D12Device1_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  10320 #define ID3D12Device1_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  10321 #define ID3D12Device1_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  10322 #define ID3D12Device1_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  10323 #define ID3D12Device1_GetAdapterLuid(This) ID3D12Device1_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  10324 /*** ID3D12Device1 methods ***/
  10325 #define ID3D12Device1_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  10326 #define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  10327 #define ID3D12Device1_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  10328 #else
  10329 /*** IUnknown methods ***/
  10330 static inline HRESULT ID3D12Device1_QueryInterface(ID3D12Device1* This,REFIID riid,void **ppvObject) {
  10331     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  10332 }
  10333 static inline ULONG ID3D12Device1_AddRef(ID3D12Device1* This) {
  10334     return This->lpVtbl->AddRef(This);
  10335 }
  10336 static inline ULONG ID3D12Device1_Release(ID3D12Device1* This) {
  10337     return This->lpVtbl->Release(This);
  10338 }
  10339 /*** ID3D12Object methods ***/
  10340 static inline HRESULT ID3D12Device1_GetPrivateData(ID3D12Device1* This,REFGUID guid,UINT *data_size,void *data) {
  10341     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  10342 }
  10343 static inline HRESULT ID3D12Device1_SetPrivateData(ID3D12Device1* This,REFGUID guid,UINT data_size,const void *data) {
  10344     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  10345 }
  10346 static inline HRESULT ID3D12Device1_SetPrivateDataInterface(ID3D12Device1* This,REFGUID guid,const IUnknown *data) {
  10347     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  10348 }
  10349 static inline HRESULT ID3D12Device1_SetName(ID3D12Device1* This,const WCHAR *name) {
  10350     return This->lpVtbl->SetName(This,name);
  10351 }
  10352 /*** ID3D12Device methods ***/
  10353 static inline UINT ID3D12Device1_GetNodeCount(ID3D12Device1* This) {
  10354     return This->lpVtbl->GetNodeCount(This);
  10355 }
  10356 static inline HRESULT ID3D12Device1_CreateCommandQueue(ID3D12Device1* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  10357     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  10358 }
  10359 static inline HRESULT ID3D12Device1_CreateCommandAllocator(ID3D12Device1* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  10360     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  10361 }
  10362 static inline HRESULT ID3D12Device1_CreateGraphicsPipelineState(ID3D12Device1* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  10363     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  10364 }
  10365 static inline HRESULT ID3D12Device1_CreateComputePipelineState(ID3D12Device1* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  10366     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  10367 }
  10368 static inline HRESULT ID3D12Device1_CreateCommandList(ID3D12Device1* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  10369     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  10370 }
  10371 static inline HRESULT ID3D12Device1_CheckFeatureSupport(ID3D12Device1* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  10372     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  10373 }
  10374 static inline HRESULT ID3D12Device1_CreateDescriptorHeap(ID3D12Device1* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  10375     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  10376 }
  10377 static inline UINT ID3D12Device1_GetDescriptorHandleIncrementSize(ID3D12Device1* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  10378     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  10379 }
  10380 static inline HRESULT ID3D12Device1_CreateRootSignature(ID3D12Device1* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  10381     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  10382 }
  10383 static inline void ID3D12Device1_CreateConstantBufferView(ID3D12Device1* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10384     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  10385 }
  10386 static inline void ID3D12Device1_CreateShaderResourceView(ID3D12Device1* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10387     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  10388 }
  10389 static inline void ID3D12Device1_CreateUnorderedAccessView(ID3D12Device1* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10390     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  10391 }
  10392 static inline void ID3D12Device1_CreateRenderTargetView(ID3D12Device1* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10393     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  10394 }
  10395 static inline void ID3D12Device1_CreateDepthStencilView(ID3D12Device1* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10396     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  10397 }
  10398 static inline void ID3D12Device1_CreateSampler(ID3D12Device1* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10399     This->lpVtbl->CreateSampler(This,desc,descriptor);
  10400 }
  10401 static inline void ID3D12Device1_CopyDescriptors(ID3D12Device1* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  10402     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  10403 }
  10404 static inline void ID3D12Device1_CopyDescriptorsSimple(ID3D12Device1* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  10405     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  10406 }
  10407 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device1_GetResourceAllocationInfo(ID3D12Device1* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  10408     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  10409     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  10410 }
  10411 static inline D3D12_HEAP_PROPERTIES ID3D12Device1_GetCustomHeapProperties(ID3D12Device1* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  10412     D3D12_HEAP_PROPERTIES __ret;
  10413     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  10414 }
  10415 static inline HRESULT ID3D12Device1_CreateCommittedResource(ID3D12Device1* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  10416     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  10417 }
  10418 static inline HRESULT ID3D12Device1_CreateHeap(ID3D12Device1* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  10419     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  10420 }
  10421 static inline HRESULT ID3D12Device1_CreatePlacedResource(ID3D12Device1* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  10422     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  10423 }
  10424 static inline HRESULT ID3D12Device1_CreateReservedResource(ID3D12Device1* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  10425     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  10426 }
  10427 static inline HRESULT ID3D12Device1_CreateSharedHandle(ID3D12Device1* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  10428     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  10429 }
  10430 static inline HRESULT ID3D12Device1_OpenSharedHandle(ID3D12Device1* This,HANDLE handle,REFIID riid,void **object) {
  10431     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  10432 }
  10433 static inline HRESULT ID3D12Device1_OpenSharedHandleByName(ID3D12Device1* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  10434     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  10435 }
  10436 static inline HRESULT ID3D12Device1_MakeResident(ID3D12Device1* This,UINT object_count,ID3D12Pageable *const *objects) {
  10437     return This->lpVtbl->MakeResident(This,object_count,objects);
  10438 }
  10439 static inline HRESULT ID3D12Device1_Evict(ID3D12Device1* This,UINT object_count,ID3D12Pageable *const *objects) {
  10440     return This->lpVtbl->Evict(This,object_count,objects);
  10441 }
  10442 static inline HRESULT ID3D12Device1_CreateFence(ID3D12Device1* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  10443     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  10444 }
  10445 static inline HRESULT ID3D12Device1_GetDeviceRemovedReason(ID3D12Device1* This) {
  10446     return This->lpVtbl->GetDeviceRemovedReason(This);
  10447 }
  10448 static inline void ID3D12Device1_GetCopyableFootprints(ID3D12Device1* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  10449     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  10450 }
  10451 static inline HRESULT ID3D12Device1_CreateQueryHeap(ID3D12Device1* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  10452     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  10453 }
  10454 static inline HRESULT ID3D12Device1_SetStablePowerState(ID3D12Device1* This,WINBOOL enable) {
  10455     return This->lpVtbl->SetStablePowerState(This,enable);
  10456 }
  10457 static inline HRESULT ID3D12Device1_CreateCommandSignature(ID3D12Device1* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  10458     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  10459 }
  10460 static inline void ID3D12Device1_GetResourceTiling(ID3D12Device1* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  10461     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  10462 }
  10463 static inline LUID ID3D12Device1_GetAdapterLuid(ID3D12Device1* This) {
  10464     LUID __ret;
  10465     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  10466 }
  10467 /*** ID3D12Device1 methods ***/
  10468 static inline HRESULT ID3D12Device1_CreatePipelineLibrary(ID3D12Device1* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  10469     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  10470 }
  10471 static inline HRESULT ID3D12Device1_SetEventOnMultipleFenceCompletion(ID3D12Device1* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  10472     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  10473 }
  10474 static inline HRESULT ID3D12Device1_SetResidencyPriority(ID3D12Device1* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  10475     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  10476 }
  10477 #endif
  10478 #endif
  10479 
  10480 #endif
  10481 
  10482 
  10483 #endif  /* __ID3D12Device1_INTERFACE_DEFINED__ */
  10484 
  10485 /*****************************************************************************
  10486  * ID3D12Device2 interface
  10487  */
  10488 #ifndef __ID3D12Device2_INTERFACE_DEFINED__
  10489 #define __ID3D12Device2_INTERFACE_DEFINED__
  10490 
  10491 DEFINE_GUID(IID_ID3D12Device2, 0x30baa41e, 0xb15b, 0x475c, 0xa0,0xbb, 0x1a,0xf5,0xc5,0xb6,0x43,0x28);
  10492 #if defined(__cplusplus) && !defined(CINTERFACE)
  10493 MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
  10494 ID3D12Device2 : public ID3D12Device1
  10495 {
  10496     virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
  10497         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  10498         REFIID riid,
  10499         void **pipeline_state) = 0;
  10500 
  10501 };
  10502 #ifdef __CRT_UUID_DECL
  10503 __CRT_UUID_DECL(ID3D12Device2, 0x30baa41e, 0xb15b, 0x475c, 0xa0,0xbb, 0x1a,0xf5,0xc5,0xb6,0x43,0x28)
  10504 #endif
  10505 #else
  10506 typedef struct ID3D12Device2Vtbl {
  10507     BEGIN_INTERFACE
  10508 
  10509     /*** IUnknown methods ***/
  10510     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  10511         ID3D12Device2 *This,
  10512         REFIID riid,
  10513         void **ppvObject);
  10514 
  10515     ULONG (STDMETHODCALLTYPE *AddRef)(
  10516         ID3D12Device2 *This);
  10517 
  10518     ULONG (STDMETHODCALLTYPE *Release)(
  10519         ID3D12Device2 *This);
  10520 
  10521     /*** ID3D12Object methods ***/
  10522     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  10523         ID3D12Device2 *This,
  10524         REFGUID guid,
  10525         UINT *data_size,
  10526         void *data);
  10527 
  10528     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  10529         ID3D12Device2 *This,
  10530         REFGUID guid,
  10531         UINT data_size,
  10532         const void *data);
  10533 
  10534     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  10535         ID3D12Device2 *This,
  10536         REFGUID guid,
  10537         const IUnknown *data);
  10538 
  10539     HRESULT (STDMETHODCALLTYPE *SetName)(
  10540         ID3D12Device2 *This,
  10541         const WCHAR *name);
  10542 
  10543     /*** ID3D12Device methods ***/
  10544     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  10545         ID3D12Device2 *This);
  10546 
  10547     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  10548         ID3D12Device2 *This,
  10549         const D3D12_COMMAND_QUEUE_DESC *desc,
  10550         REFIID riid,
  10551         void **command_queue);
  10552 
  10553     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  10554         ID3D12Device2 *This,
  10555         D3D12_COMMAND_LIST_TYPE type,
  10556         REFIID riid,
  10557         void **command_allocator);
  10558 
  10559     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  10560         ID3D12Device2 *This,
  10561         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  10562         REFIID riid,
  10563         void **pipeline_state);
  10564 
  10565     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  10566         ID3D12Device2 *This,
  10567         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  10568         REFIID riid,
  10569         void **pipeline_state);
  10570 
  10571     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  10572         ID3D12Device2 *This,
  10573         UINT node_mask,
  10574         D3D12_COMMAND_LIST_TYPE type,
  10575         ID3D12CommandAllocator *command_allocator,
  10576         ID3D12PipelineState *initial_pipeline_state,
  10577         REFIID riid,
  10578         void **command_list);
  10579 
  10580     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  10581         ID3D12Device2 *This,
  10582         D3D12_FEATURE feature,
  10583         void *feature_data,
  10584         UINT feature_data_size);
  10585 
  10586     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  10587         ID3D12Device2 *This,
  10588         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  10589         REFIID riid,
  10590         void **descriptor_heap);
  10591 
  10592     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  10593         ID3D12Device2 *This,
  10594         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  10595 
  10596     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  10597         ID3D12Device2 *This,
  10598         UINT node_mask,
  10599         const void *bytecode,
  10600         SIZE_T bytecode_length,
  10601         REFIID riid,
  10602         void **root_signature);
  10603 
  10604     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  10605         ID3D12Device2 *This,
  10606         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  10607         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10608 
  10609     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  10610         ID3D12Device2 *This,
  10611         ID3D12Resource *resource,
  10612         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  10613         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10614 
  10615     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  10616         ID3D12Device2 *This,
  10617         ID3D12Resource *resource,
  10618         ID3D12Resource *counter_resource,
  10619         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  10620         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10621 
  10622     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  10623         ID3D12Device2 *This,
  10624         ID3D12Resource *resource,
  10625         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  10626         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10627 
  10628     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  10629         ID3D12Device2 *This,
  10630         ID3D12Resource *resource,
  10631         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  10632         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10633 
  10634     void (STDMETHODCALLTYPE *CreateSampler)(
  10635         ID3D12Device2 *This,
  10636         const D3D12_SAMPLER_DESC *desc,
  10637         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  10638 
  10639     void (STDMETHODCALLTYPE *CopyDescriptors)(
  10640         ID3D12Device2 *This,
  10641         UINT dst_descriptor_range_count,
  10642         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  10643         const UINT *dst_descriptor_range_sizes,
  10644         UINT src_descriptor_range_count,
  10645         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  10646         const UINT *src_descriptor_range_sizes,
  10647         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  10648 
  10649     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  10650         ID3D12Device2 *This,
  10651         UINT descriptor_count,
  10652         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  10653         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  10654         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  10655 
  10656     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  10657         ID3D12Device2 *This,
  10658         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  10659         UINT visible_mask,
  10660         UINT reource_desc_count,
  10661         const D3D12_RESOURCE_DESC *resource_descs);
  10662 
  10663     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  10664         ID3D12Device2 *This,
  10665         D3D12_HEAP_PROPERTIES *__ret,
  10666         UINT node_mask,
  10667         D3D12_HEAP_TYPE heap_type);
  10668 
  10669     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  10670         ID3D12Device2 *This,
  10671         const D3D12_HEAP_PROPERTIES *heap_properties,
  10672         D3D12_HEAP_FLAGS heap_flags,
  10673         const D3D12_RESOURCE_DESC *desc,
  10674         D3D12_RESOURCE_STATES initial_state,
  10675         const D3D12_CLEAR_VALUE *optimized_clear_value,
  10676         REFIID riid,
  10677         void **resource);
  10678 
  10679     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  10680         ID3D12Device2 *This,
  10681         const D3D12_HEAP_DESC *desc,
  10682         REFIID riid,
  10683         void **heap);
  10684 
  10685     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  10686         ID3D12Device2 *This,
  10687         ID3D12Heap *heap,
  10688         UINT64 heap_offset,
  10689         const D3D12_RESOURCE_DESC *desc,
  10690         D3D12_RESOURCE_STATES initial_state,
  10691         const D3D12_CLEAR_VALUE *optimized_clear_value,
  10692         REFIID riid,
  10693         void **resource);
  10694 
  10695     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  10696         ID3D12Device2 *This,
  10697         const D3D12_RESOURCE_DESC *desc,
  10698         D3D12_RESOURCE_STATES initial_state,
  10699         const D3D12_CLEAR_VALUE *optimized_clear_value,
  10700         REFIID riid,
  10701         void **resource);
  10702 
  10703     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  10704         ID3D12Device2 *This,
  10705         ID3D12DeviceChild *object,
  10706         const SECURITY_ATTRIBUTES *attributes,
  10707         DWORD access,
  10708         const WCHAR *name,
  10709         HANDLE *handle);
  10710 
  10711     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  10712         ID3D12Device2 *This,
  10713         HANDLE handle,
  10714         REFIID riid,
  10715         void **object);
  10716 
  10717     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  10718         ID3D12Device2 *This,
  10719         const WCHAR *name,
  10720         DWORD access,
  10721         HANDLE *handle);
  10722 
  10723     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  10724         ID3D12Device2 *This,
  10725         UINT object_count,
  10726         ID3D12Pageable *const *objects);
  10727 
  10728     HRESULT (STDMETHODCALLTYPE *Evict)(
  10729         ID3D12Device2 *This,
  10730         UINT object_count,
  10731         ID3D12Pageable *const *objects);
  10732 
  10733     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  10734         ID3D12Device2 *This,
  10735         UINT64 initial_value,
  10736         D3D12_FENCE_FLAGS flags,
  10737         REFIID riid,
  10738         void **fence);
  10739 
  10740     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  10741         ID3D12Device2 *This);
  10742 
  10743     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  10744         ID3D12Device2 *This,
  10745         const D3D12_RESOURCE_DESC *desc,
  10746         UINT first_sub_resource,
  10747         UINT sub_resource_count,
  10748         UINT64 base_offset,
  10749         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  10750         UINT *row_count,
  10751         UINT64 *row_size,
  10752         UINT64 *total_bytes);
  10753 
  10754     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  10755         ID3D12Device2 *This,
  10756         const D3D12_QUERY_HEAP_DESC *desc,
  10757         REFIID riid,
  10758         void **heap);
  10759 
  10760     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  10761         ID3D12Device2 *This,
  10762         WINBOOL enable);
  10763 
  10764     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  10765         ID3D12Device2 *This,
  10766         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  10767         ID3D12RootSignature *root_signature,
  10768         REFIID riid,
  10769         void **command_signature);
  10770 
  10771     void (STDMETHODCALLTYPE *GetResourceTiling)(
  10772         ID3D12Device2 *This,
  10773         ID3D12Resource *resource,
  10774         UINT *total_tile_count,
  10775         D3D12_PACKED_MIP_INFO *packed_mip_info,
  10776         D3D12_TILE_SHAPE *standard_tile_shape,
  10777         UINT *sub_resource_tiling_count,
  10778         UINT first_sub_resource_tiling,
  10779         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  10780 
  10781     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  10782         ID3D12Device2 *This,
  10783         LUID *__ret);
  10784 
  10785     /*** ID3D12Device1 methods ***/
  10786     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  10787         ID3D12Device2 *This,
  10788         const void *blob,
  10789         SIZE_T blob_size,
  10790         REFIID iid,
  10791         void **lib);
  10792 
  10793     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  10794         ID3D12Device2 *This,
  10795         ID3D12Fence *const *fences,
  10796         const UINT64 *values,
  10797         UINT fence_count,
  10798         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  10799         HANDLE event);
  10800 
  10801     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  10802         ID3D12Device2 *This,
  10803         UINT object_count,
  10804         ID3D12Pageable *const *objects,
  10805         const D3D12_RESIDENCY_PRIORITY *priorities);
  10806 
  10807     /*** ID3D12Device2 methods ***/
  10808     HRESULT (STDMETHODCALLTYPE *CreatePipelineState)(
  10809         ID3D12Device2 *This,
  10810         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  10811         REFIID riid,
  10812         void **pipeline_state);
  10813 
  10814     END_INTERFACE
  10815 } ID3D12Device2Vtbl;
  10816 
  10817 interface ID3D12Device2 {
  10818     CONST_VTBL ID3D12Device2Vtbl* lpVtbl;
  10819 };
  10820 
  10821 #ifdef COBJMACROS
  10822 #ifndef WIDL_C_INLINE_WRAPPERS
  10823 /*** IUnknown methods ***/
  10824 #define ID3D12Device2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  10825 #define ID3D12Device2_AddRef(This) (This)->lpVtbl->AddRef(This)
  10826 #define ID3D12Device2_Release(This) (This)->lpVtbl->Release(This)
  10827 /*** ID3D12Object methods ***/
  10828 #define ID3D12Device2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  10829 #define ID3D12Device2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  10830 #define ID3D12Device2_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  10831 #define ID3D12Device2_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  10832 /*** ID3D12Device methods ***/
  10833 #define ID3D12Device2_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  10834 #define ID3D12Device2_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  10835 #define ID3D12Device2_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  10836 #define ID3D12Device2_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  10837 #define ID3D12Device2_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  10838 #define ID3D12Device2_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  10839 #define ID3D12Device2_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  10840 #define ID3D12Device2_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  10841 #define ID3D12Device2_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  10842 #define ID3D12Device2_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  10843 #define ID3D12Device2_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  10844 #define ID3D12Device2_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  10845 #define ID3D12Device2_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  10846 #define ID3D12Device2_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  10847 #define ID3D12Device2_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  10848 #define ID3D12Device2_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  10849 #define ID3D12Device2_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  10850 #define ID3D12Device2_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  10851 #define ID3D12Device2_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device2_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  10852 #define ID3D12Device2_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device2_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  10853 #define ID3D12Device2_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  10854 #define ID3D12Device2_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  10855 #define ID3D12Device2_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  10856 #define ID3D12Device2_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  10857 #define ID3D12Device2_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  10858 #define ID3D12Device2_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  10859 #define ID3D12Device2_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  10860 #define ID3D12Device2_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  10861 #define ID3D12Device2_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  10862 #define ID3D12Device2_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  10863 #define ID3D12Device2_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  10864 #define ID3D12Device2_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  10865 #define ID3D12Device2_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  10866 #define ID3D12Device2_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  10867 #define ID3D12Device2_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  10868 #define ID3D12Device2_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  10869 #define ID3D12Device2_GetAdapterLuid(This) ID3D12Device2_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  10870 /*** ID3D12Device1 methods ***/
  10871 #define ID3D12Device2_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  10872 #define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  10873 #define ID3D12Device2_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  10874 /*** ID3D12Device2 methods ***/
  10875 #define ID3D12Device2_CreatePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state)
  10876 #else
  10877 /*** IUnknown methods ***/
  10878 static inline HRESULT ID3D12Device2_QueryInterface(ID3D12Device2* This,REFIID riid,void **ppvObject) {
  10879     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  10880 }
  10881 static inline ULONG ID3D12Device2_AddRef(ID3D12Device2* This) {
  10882     return This->lpVtbl->AddRef(This);
  10883 }
  10884 static inline ULONG ID3D12Device2_Release(ID3D12Device2* This) {
  10885     return This->lpVtbl->Release(This);
  10886 }
  10887 /*** ID3D12Object methods ***/
  10888 static inline HRESULT ID3D12Device2_GetPrivateData(ID3D12Device2* This,REFGUID guid,UINT *data_size,void *data) {
  10889     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  10890 }
  10891 static inline HRESULT ID3D12Device2_SetPrivateData(ID3D12Device2* This,REFGUID guid,UINT data_size,const void *data) {
  10892     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  10893 }
  10894 static inline HRESULT ID3D12Device2_SetPrivateDataInterface(ID3D12Device2* This,REFGUID guid,const IUnknown *data) {
  10895     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  10896 }
  10897 static inline HRESULT ID3D12Device2_SetName(ID3D12Device2* This,const WCHAR *name) {
  10898     return This->lpVtbl->SetName(This,name);
  10899 }
  10900 /*** ID3D12Device methods ***/
  10901 static inline UINT ID3D12Device2_GetNodeCount(ID3D12Device2* This) {
  10902     return This->lpVtbl->GetNodeCount(This);
  10903 }
  10904 static inline HRESULT ID3D12Device2_CreateCommandQueue(ID3D12Device2* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  10905     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  10906 }
  10907 static inline HRESULT ID3D12Device2_CreateCommandAllocator(ID3D12Device2* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  10908     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  10909 }
  10910 static inline HRESULT ID3D12Device2_CreateGraphicsPipelineState(ID3D12Device2* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  10911     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  10912 }
  10913 static inline HRESULT ID3D12Device2_CreateComputePipelineState(ID3D12Device2* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  10914     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  10915 }
  10916 static inline HRESULT ID3D12Device2_CreateCommandList(ID3D12Device2* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  10917     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  10918 }
  10919 static inline HRESULT ID3D12Device2_CheckFeatureSupport(ID3D12Device2* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  10920     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  10921 }
  10922 static inline HRESULT ID3D12Device2_CreateDescriptorHeap(ID3D12Device2* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  10923     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  10924 }
  10925 static inline UINT ID3D12Device2_GetDescriptorHandleIncrementSize(ID3D12Device2* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  10926     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  10927 }
  10928 static inline HRESULT ID3D12Device2_CreateRootSignature(ID3D12Device2* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  10929     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  10930 }
  10931 static inline void ID3D12Device2_CreateConstantBufferView(ID3D12Device2* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10932     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  10933 }
  10934 static inline void ID3D12Device2_CreateShaderResourceView(ID3D12Device2* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10935     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  10936 }
  10937 static inline void ID3D12Device2_CreateUnorderedAccessView(ID3D12Device2* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10938     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  10939 }
  10940 static inline void ID3D12Device2_CreateRenderTargetView(ID3D12Device2* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10941     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  10942 }
  10943 static inline void ID3D12Device2_CreateDepthStencilView(ID3D12Device2* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10944     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  10945 }
  10946 static inline void ID3D12Device2_CreateSampler(ID3D12Device2* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  10947     This->lpVtbl->CreateSampler(This,desc,descriptor);
  10948 }
  10949 static inline void ID3D12Device2_CopyDescriptors(ID3D12Device2* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  10950     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  10951 }
  10952 static inline void ID3D12Device2_CopyDescriptorsSimple(ID3D12Device2* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  10953     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  10954 }
  10955 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device2_GetResourceAllocationInfo(ID3D12Device2* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  10956     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  10957     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  10958 }
  10959 static inline D3D12_HEAP_PROPERTIES ID3D12Device2_GetCustomHeapProperties(ID3D12Device2* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  10960     D3D12_HEAP_PROPERTIES __ret;
  10961     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  10962 }
  10963 static inline HRESULT ID3D12Device2_CreateCommittedResource(ID3D12Device2* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  10964     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  10965 }
  10966 static inline HRESULT ID3D12Device2_CreateHeap(ID3D12Device2* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  10967     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  10968 }
  10969 static inline HRESULT ID3D12Device2_CreatePlacedResource(ID3D12Device2* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  10970     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  10971 }
  10972 static inline HRESULT ID3D12Device2_CreateReservedResource(ID3D12Device2* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  10973     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  10974 }
  10975 static inline HRESULT ID3D12Device2_CreateSharedHandle(ID3D12Device2* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  10976     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  10977 }
  10978 static inline HRESULT ID3D12Device2_OpenSharedHandle(ID3D12Device2* This,HANDLE handle,REFIID riid,void **object) {
  10979     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  10980 }
  10981 static inline HRESULT ID3D12Device2_OpenSharedHandleByName(ID3D12Device2* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  10982     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  10983 }
  10984 static inline HRESULT ID3D12Device2_MakeResident(ID3D12Device2* This,UINT object_count,ID3D12Pageable *const *objects) {
  10985     return This->lpVtbl->MakeResident(This,object_count,objects);
  10986 }
  10987 static inline HRESULT ID3D12Device2_Evict(ID3D12Device2* This,UINT object_count,ID3D12Pageable *const *objects) {
  10988     return This->lpVtbl->Evict(This,object_count,objects);
  10989 }
  10990 static inline HRESULT ID3D12Device2_CreateFence(ID3D12Device2* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  10991     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  10992 }
  10993 static inline HRESULT ID3D12Device2_GetDeviceRemovedReason(ID3D12Device2* This) {
  10994     return This->lpVtbl->GetDeviceRemovedReason(This);
  10995 }
  10996 static inline void ID3D12Device2_GetCopyableFootprints(ID3D12Device2* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  10997     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  10998 }
  10999 static inline HRESULT ID3D12Device2_CreateQueryHeap(ID3D12Device2* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  11000     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  11001 }
  11002 static inline HRESULT ID3D12Device2_SetStablePowerState(ID3D12Device2* This,WINBOOL enable) {
  11003     return This->lpVtbl->SetStablePowerState(This,enable);
  11004 }
  11005 static inline HRESULT ID3D12Device2_CreateCommandSignature(ID3D12Device2* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  11006     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  11007 }
  11008 static inline void ID3D12Device2_GetResourceTiling(ID3D12Device2* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  11009     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  11010 }
  11011 static inline LUID ID3D12Device2_GetAdapterLuid(ID3D12Device2* This) {
  11012     LUID __ret;
  11013     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  11014 }
  11015 /*** ID3D12Device1 methods ***/
  11016 static inline HRESULT ID3D12Device2_CreatePipelineLibrary(ID3D12Device2* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  11017     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  11018 }
  11019 static inline HRESULT ID3D12Device2_SetEventOnMultipleFenceCompletion(ID3D12Device2* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  11020     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  11021 }
  11022 static inline HRESULT ID3D12Device2_SetResidencyPriority(ID3D12Device2* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  11023     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  11024 }
  11025 /*** ID3D12Device2 methods ***/
  11026 static inline HRESULT ID3D12Device2_CreatePipelineState(ID3D12Device2* This,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
  11027     return This->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state);
  11028 }
  11029 #endif
  11030 #endif
  11031 
  11032 #endif
  11033 
  11034 
  11035 #endif  /* __ID3D12Device2_INTERFACE_DEFINED__ */
  11036 
  11037 /*****************************************************************************
  11038  * ID3D12Device3 interface
  11039  */
  11040 #ifndef __ID3D12Device3_INTERFACE_DEFINED__
  11041 #define __ID3D12Device3_INTERFACE_DEFINED__
  11042 
  11043 DEFINE_GUID(IID_ID3D12Device3, 0x81dadc15, 0x2bad, 0x4392, 0x93,0xc5, 0x10,0x13,0x45,0xc4,0xaa,0x98);
  11044 #if defined(__cplusplus) && !defined(CINTERFACE)
  11045 MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
  11046 ID3D12Device3 : public ID3D12Device2
  11047 {
  11048     virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress(
  11049         const void *address,
  11050         REFIID riid,
  11051         void **heap) = 0;
  11052 
  11053     virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping(
  11054         HANDLE file_mapping,
  11055         REFIID riid,
  11056         void **heap) = 0;
  11057 
  11058     virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident(
  11059         D3D12_RESIDENCY_FLAGS flags,
  11060         UINT num_objects,
  11061         ID3D12Pageable *const *objects,
  11062         ID3D12Fence *fence,
  11063         UINT64 fence_value) = 0;
  11064 
  11065 };
  11066 #ifdef __CRT_UUID_DECL
  11067 __CRT_UUID_DECL(ID3D12Device3, 0x81dadc15, 0x2bad, 0x4392, 0x93,0xc5, 0x10,0x13,0x45,0xc4,0xaa,0x98)
  11068 #endif
  11069 #else
  11070 typedef struct ID3D12Device3Vtbl {
  11071     BEGIN_INTERFACE
  11072 
  11073     /*** IUnknown methods ***/
  11074     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  11075         ID3D12Device3 *This,
  11076         REFIID riid,
  11077         void **ppvObject);
  11078 
  11079     ULONG (STDMETHODCALLTYPE *AddRef)(
  11080         ID3D12Device3 *This);
  11081 
  11082     ULONG (STDMETHODCALLTYPE *Release)(
  11083         ID3D12Device3 *This);
  11084 
  11085     /*** ID3D12Object methods ***/
  11086     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  11087         ID3D12Device3 *This,
  11088         REFGUID guid,
  11089         UINT *data_size,
  11090         void *data);
  11091 
  11092     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  11093         ID3D12Device3 *This,
  11094         REFGUID guid,
  11095         UINT data_size,
  11096         const void *data);
  11097 
  11098     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  11099         ID3D12Device3 *This,
  11100         REFGUID guid,
  11101         const IUnknown *data);
  11102 
  11103     HRESULT (STDMETHODCALLTYPE *SetName)(
  11104         ID3D12Device3 *This,
  11105         const WCHAR *name);
  11106 
  11107     /*** ID3D12Device methods ***/
  11108     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  11109         ID3D12Device3 *This);
  11110 
  11111     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  11112         ID3D12Device3 *This,
  11113         const D3D12_COMMAND_QUEUE_DESC *desc,
  11114         REFIID riid,
  11115         void **command_queue);
  11116 
  11117     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  11118         ID3D12Device3 *This,
  11119         D3D12_COMMAND_LIST_TYPE type,
  11120         REFIID riid,
  11121         void **command_allocator);
  11122 
  11123     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  11124         ID3D12Device3 *This,
  11125         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  11126         REFIID riid,
  11127         void **pipeline_state);
  11128 
  11129     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  11130         ID3D12Device3 *This,
  11131         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  11132         REFIID riid,
  11133         void **pipeline_state);
  11134 
  11135     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  11136         ID3D12Device3 *This,
  11137         UINT node_mask,
  11138         D3D12_COMMAND_LIST_TYPE type,
  11139         ID3D12CommandAllocator *command_allocator,
  11140         ID3D12PipelineState *initial_pipeline_state,
  11141         REFIID riid,
  11142         void **command_list);
  11143 
  11144     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  11145         ID3D12Device3 *This,
  11146         D3D12_FEATURE feature,
  11147         void *feature_data,
  11148         UINT feature_data_size);
  11149 
  11150     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  11151         ID3D12Device3 *This,
  11152         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  11153         REFIID riid,
  11154         void **descriptor_heap);
  11155 
  11156     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  11157         ID3D12Device3 *This,
  11158         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  11159 
  11160     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  11161         ID3D12Device3 *This,
  11162         UINT node_mask,
  11163         const void *bytecode,
  11164         SIZE_T bytecode_length,
  11165         REFIID riid,
  11166         void **root_signature);
  11167 
  11168     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  11169         ID3D12Device3 *This,
  11170         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  11171         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  11172 
  11173     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  11174         ID3D12Device3 *This,
  11175         ID3D12Resource *resource,
  11176         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  11177         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  11178 
  11179     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  11180         ID3D12Device3 *This,
  11181         ID3D12Resource *resource,
  11182         ID3D12Resource *counter_resource,
  11183         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  11184         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  11185 
  11186     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  11187         ID3D12Device3 *This,
  11188         ID3D12Resource *resource,
  11189         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  11190         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  11191 
  11192     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  11193         ID3D12Device3 *This,
  11194         ID3D12Resource *resource,
  11195         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  11196         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  11197 
  11198     void (STDMETHODCALLTYPE *CreateSampler)(
  11199         ID3D12Device3 *This,
  11200         const D3D12_SAMPLER_DESC *desc,
  11201         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  11202 
  11203     void (STDMETHODCALLTYPE *CopyDescriptors)(
  11204         ID3D12Device3 *This,
  11205         UINT dst_descriptor_range_count,
  11206         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  11207         const UINT *dst_descriptor_range_sizes,
  11208         UINT src_descriptor_range_count,
  11209         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  11210         const UINT *src_descriptor_range_sizes,
  11211         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  11212 
  11213     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  11214         ID3D12Device3 *This,
  11215         UINT descriptor_count,
  11216         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  11217         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  11218         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  11219 
  11220     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  11221         ID3D12Device3 *This,
  11222         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  11223         UINT visible_mask,
  11224         UINT reource_desc_count,
  11225         const D3D12_RESOURCE_DESC *resource_descs);
  11226 
  11227     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  11228         ID3D12Device3 *This,
  11229         D3D12_HEAP_PROPERTIES *__ret,
  11230         UINT node_mask,
  11231         D3D12_HEAP_TYPE heap_type);
  11232 
  11233     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  11234         ID3D12Device3 *This,
  11235         const D3D12_HEAP_PROPERTIES *heap_properties,
  11236         D3D12_HEAP_FLAGS heap_flags,
  11237         const D3D12_RESOURCE_DESC *desc,
  11238         D3D12_RESOURCE_STATES initial_state,
  11239         const D3D12_CLEAR_VALUE *optimized_clear_value,
  11240         REFIID riid,
  11241         void **resource);
  11242 
  11243     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  11244         ID3D12Device3 *This,
  11245         const D3D12_HEAP_DESC *desc,
  11246         REFIID riid,
  11247         void **heap);
  11248 
  11249     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  11250         ID3D12Device3 *This,
  11251         ID3D12Heap *heap,
  11252         UINT64 heap_offset,
  11253         const D3D12_RESOURCE_DESC *desc,
  11254         D3D12_RESOURCE_STATES initial_state,
  11255         const D3D12_CLEAR_VALUE *optimized_clear_value,
  11256         REFIID riid,
  11257         void **resource);
  11258 
  11259     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  11260         ID3D12Device3 *This,
  11261         const D3D12_RESOURCE_DESC *desc,
  11262         D3D12_RESOURCE_STATES initial_state,
  11263         const D3D12_CLEAR_VALUE *optimized_clear_value,
  11264         REFIID riid,
  11265         void **resource);
  11266 
  11267     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  11268         ID3D12Device3 *This,
  11269         ID3D12DeviceChild *object,
  11270         const SECURITY_ATTRIBUTES *attributes,
  11271         DWORD access,
  11272         const WCHAR *name,
  11273         HANDLE *handle);
  11274 
  11275     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  11276         ID3D12Device3 *This,
  11277         HANDLE handle,
  11278         REFIID riid,
  11279         void **object);
  11280 
  11281     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  11282         ID3D12Device3 *This,
  11283         const WCHAR *name,
  11284         DWORD access,
  11285         HANDLE *handle);
  11286 
  11287     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  11288         ID3D12Device3 *This,
  11289         UINT object_count,
  11290         ID3D12Pageable *const *objects);
  11291 
  11292     HRESULT (STDMETHODCALLTYPE *Evict)(
  11293         ID3D12Device3 *This,
  11294         UINT object_count,
  11295         ID3D12Pageable *const *objects);
  11296 
  11297     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  11298         ID3D12Device3 *This,
  11299         UINT64 initial_value,
  11300         D3D12_FENCE_FLAGS flags,
  11301         REFIID riid,
  11302         void **fence);
  11303 
  11304     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  11305         ID3D12Device3 *This);
  11306 
  11307     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  11308         ID3D12Device3 *This,
  11309         const D3D12_RESOURCE_DESC *desc,
  11310         UINT first_sub_resource,
  11311         UINT sub_resource_count,
  11312         UINT64 base_offset,
  11313         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  11314         UINT *row_count,
  11315         UINT64 *row_size,
  11316         UINT64 *total_bytes);
  11317 
  11318     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  11319         ID3D12Device3 *This,
  11320         const D3D12_QUERY_HEAP_DESC *desc,
  11321         REFIID riid,
  11322         void **heap);
  11323 
  11324     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  11325         ID3D12Device3 *This,
  11326         WINBOOL enable);
  11327 
  11328     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  11329         ID3D12Device3 *This,
  11330         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  11331         ID3D12RootSignature *root_signature,
  11332         REFIID riid,
  11333         void **command_signature);
  11334 
  11335     void (STDMETHODCALLTYPE *GetResourceTiling)(
  11336         ID3D12Device3 *This,
  11337         ID3D12Resource *resource,
  11338         UINT *total_tile_count,
  11339         D3D12_PACKED_MIP_INFO *packed_mip_info,
  11340         D3D12_TILE_SHAPE *standard_tile_shape,
  11341         UINT *sub_resource_tiling_count,
  11342         UINT first_sub_resource_tiling,
  11343         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  11344 
  11345     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  11346         ID3D12Device3 *This,
  11347         LUID *__ret);
  11348 
  11349     /*** ID3D12Device1 methods ***/
  11350     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  11351         ID3D12Device3 *This,
  11352         const void *blob,
  11353         SIZE_T blob_size,
  11354         REFIID iid,
  11355         void **lib);
  11356 
  11357     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  11358         ID3D12Device3 *This,
  11359         ID3D12Fence *const *fences,
  11360         const UINT64 *values,
  11361         UINT fence_count,
  11362         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  11363         HANDLE event);
  11364 
  11365     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  11366         ID3D12Device3 *This,
  11367         UINT object_count,
  11368         ID3D12Pageable *const *objects,
  11369         const D3D12_RESIDENCY_PRIORITY *priorities);
  11370 
  11371     /*** ID3D12Device2 methods ***/
  11372     HRESULT (STDMETHODCALLTYPE *CreatePipelineState)(
  11373         ID3D12Device3 *This,
  11374         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  11375         REFIID riid,
  11376         void **pipeline_state);
  11377 
  11378     /*** ID3D12Device3 methods ***/
  11379     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromAddress)(
  11380         ID3D12Device3 *This,
  11381         const void *address,
  11382         REFIID riid,
  11383         void **heap);
  11384 
  11385     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping)(
  11386         ID3D12Device3 *This,
  11387         HANDLE file_mapping,
  11388         REFIID riid,
  11389         void **heap);
  11390 
  11391     HRESULT (STDMETHODCALLTYPE *EnqueueMakeResident)(
  11392         ID3D12Device3 *This,
  11393         D3D12_RESIDENCY_FLAGS flags,
  11394         UINT num_objects,
  11395         ID3D12Pageable *const *objects,
  11396         ID3D12Fence *fence,
  11397         UINT64 fence_value);
  11398 
  11399     END_INTERFACE
  11400 } ID3D12Device3Vtbl;
  11401 
  11402 interface ID3D12Device3 {
  11403     CONST_VTBL ID3D12Device3Vtbl* lpVtbl;
  11404 };
  11405 
  11406 #ifdef COBJMACROS
  11407 #ifndef WIDL_C_INLINE_WRAPPERS
  11408 /*** IUnknown methods ***/
  11409 #define ID3D12Device3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  11410 #define ID3D12Device3_AddRef(This) (This)->lpVtbl->AddRef(This)
  11411 #define ID3D12Device3_Release(This) (This)->lpVtbl->Release(This)
  11412 /*** ID3D12Object methods ***/
  11413 #define ID3D12Device3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  11414 #define ID3D12Device3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  11415 #define ID3D12Device3_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  11416 #define ID3D12Device3_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  11417 /*** ID3D12Device methods ***/
  11418 #define ID3D12Device3_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  11419 #define ID3D12Device3_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  11420 #define ID3D12Device3_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  11421 #define ID3D12Device3_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  11422 #define ID3D12Device3_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  11423 #define ID3D12Device3_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  11424 #define ID3D12Device3_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  11425 #define ID3D12Device3_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  11426 #define ID3D12Device3_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  11427 #define ID3D12Device3_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  11428 #define ID3D12Device3_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  11429 #define ID3D12Device3_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  11430 #define ID3D12Device3_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  11431 #define ID3D12Device3_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  11432 #define ID3D12Device3_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  11433 #define ID3D12Device3_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  11434 #define ID3D12Device3_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  11435 #define ID3D12Device3_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  11436 #define ID3D12Device3_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device3_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  11437 #define ID3D12Device3_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device3_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  11438 #define ID3D12Device3_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  11439 #define ID3D12Device3_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  11440 #define ID3D12Device3_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  11441 #define ID3D12Device3_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  11442 #define ID3D12Device3_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  11443 #define ID3D12Device3_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  11444 #define ID3D12Device3_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  11445 #define ID3D12Device3_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  11446 #define ID3D12Device3_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  11447 #define ID3D12Device3_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  11448 #define ID3D12Device3_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  11449 #define ID3D12Device3_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  11450 #define ID3D12Device3_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  11451 #define ID3D12Device3_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  11452 #define ID3D12Device3_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  11453 #define ID3D12Device3_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  11454 #define ID3D12Device3_GetAdapterLuid(This) ID3D12Device3_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  11455 /*** ID3D12Device1 methods ***/
  11456 #define ID3D12Device3_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  11457 #define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  11458 #define ID3D12Device3_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  11459 /*** ID3D12Device2 methods ***/
  11460 #define ID3D12Device3_CreatePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state)
  11461 /*** ID3D12Device3 methods ***/
  11462 #define ID3D12Device3_OpenExistingHeapFromAddress(This,address,riid,heap) (This)->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap)
  11463 #define ID3D12Device3_OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap) (This)->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap)
  11464 #define ID3D12Device3_EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value) (This)->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value)
  11465 #else
  11466 /*** IUnknown methods ***/
  11467 static inline HRESULT ID3D12Device3_QueryInterface(ID3D12Device3* This,REFIID riid,void **ppvObject) {
  11468     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  11469 }
  11470 static inline ULONG ID3D12Device3_AddRef(ID3D12Device3* This) {
  11471     return This->lpVtbl->AddRef(This);
  11472 }
  11473 static inline ULONG ID3D12Device3_Release(ID3D12Device3* This) {
  11474     return This->lpVtbl->Release(This);
  11475 }
  11476 /*** ID3D12Object methods ***/
  11477 static inline HRESULT ID3D12Device3_GetPrivateData(ID3D12Device3* This,REFGUID guid,UINT *data_size,void *data) {
  11478     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  11479 }
  11480 static inline HRESULT ID3D12Device3_SetPrivateData(ID3D12Device3* This,REFGUID guid,UINT data_size,const void *data) {
  11481     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  11482 }
  11483 static inline HRESULT ID3D12Device3_SetPrivateDataInterface(ID3D12Device3* This,REFGUID guid,const IUnknown *data) {
  11484     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  11485 }
  11486 static inline HRESULT ID3D12Device3_SetName(ID3D12Device3* This,const WCHAR *name) {
  11487     return This->lpVtbl->SetName(This,name);
  11488 }
  11489 /*** ID3D12Device methods ***/
  11490 static inline UINT ID3D12Device3_GetNodeCount(ID3D12Device3* This) {
  11491     return This->lpVtbl->GetNodeCount(This);
  11492 }
  11493 static inline HRESULT ID3D12Device3_CreateCommandQueue(ID3D12Device3* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  11494     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  11495 }
  11496 static inline HRESULT ID3D12Device3_CreateCommandAllocator(ID3D12Device3* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  11497     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  11498 }
  11499 static inline HRESULT ID3D12Device3_CreateGraphicsPipelineState(ID3D12Device3* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  11500     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  11501 }
  11502 static inline HRESULT ID3D12Device3_CreateComputePipelineState(ID3D12Device3* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  11503     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  11504 }
  11505 static inline HRESULT ID3D12Device3_CreateCommandList(ID3D12Device3* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  11506     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  11507 }
  11508 static inline HRESULT ID3D12Device3_CheckFeatureSupport(ID3D12Device3* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  11509     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  11510 }
  11511 static inline HRESULT ID3D12Device3_CreateDescriptorHeap(ID3D12Device3* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  11512     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  11513 }
  11514 static inline UINT ID3D12Device3_GetDescriptorHandleIncrementSize(ID3D12Device3* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  11515     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  11516 }
  11517 static inline HRESULT ID3D12Device3_CreateRootSignature(ID3D12Device3* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  11518     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  11519 }
  11520 static inline void ID3D12Device3_CreateConstantBufferView(ID3D12Device3* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  11521     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  11522 }
  11523 static inline void ID3D12Device3_CreateShaderResourceView(ID3D12Device3* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  11524     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  11525 }
  11526 static inline void ID3D12Device3_CreateUnorderedAccessView(ID3D12Device3* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  11527     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  11528 }
  11529 static inline void ID3D12Device3_CreateRenderTargetView(ID3D12Device3* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  11530     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  11531 }
  11532 static inline void ID3D12Device3_CreateDepthStencilView(ID3D12Device3* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  11533     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  11534 }
  11535 static inline void ID3D12Device3_CreateSampler(ID3D12Device3* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  11536     This->lpVtbl->CreateSampler(This,desc,descriptor);
  11537 }
  11538 static inline void ID3D12Device3_CopyDescriptors(ID3D12Device3* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  11539     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  11540 }
  11541 static inline void ID3D12Device3_CopyDescriptorsSimple(ID3D12Device3* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  11542     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  11543 }
  11544 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device3_GetResourceAllocationInfo(ID3D12Device3* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  11545     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  11546     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  11547 }
  11548 static inline D3D12_HEAP_PROPERTIES ID3D12Device3_GetCustomHeapProperties(ID3D12Device3* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  11549     D3D12_HEAP_PROPERTIES __ret;
  11550     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  11551 }
  11552 static inline HRESULT ID3D12Device3_CreateCommittedResource(ID3D12Device3* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  11553     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  11554 }
  11555 static inline HRESULT ID3D12Device3_CreateHeap(ID3D12Device3* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  11556     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  11557 }
  11558 static inline HRESULT ID3D12Device3_CreatePlacedResource(ID3D12Device3* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  11559     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  11560 }
  11561 static inline HRESULT ID3D12Device3_CreateReservedResource(ID3D12Device3* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  11562     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  11563 }
  11564 static inline HRESULT ID3D12Device3_CreateSharedHandle(ID3D12Device3* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  11565     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  11566 }
  11567 static inline HRESULT ID3D12Device3_OpenSharedHandle(ID3D12Device3* This,HANDLE handle,REFIID riid,void **object) {
  11568     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  11569 }
  11570 static inline HRESULT ID3D12Device3_OpenSharedHandleByName(ID3D12Device3* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  11571     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  11572 }
  11573 static inline HRESULT ID3D12Device3_MakeResident(ID3D12Device3* This,UINT object_count,ID3D12Pageable *const *objects) {
  11574     return This->lpVtbl->MakeResident(This,object_count,objects);
  11575 }
  11576 static inline HRESULT ID3D12Device3_Evict(ID3D12Device3* This,UINT object_count,ID3D12Pageable *const *objects) {
  11577     return This->lpVtbl->Evict(This,object_count,objects);
  11578 }
  11579 static inline HRESULT ID3D12Device3_CreateFence(ID3D12Device3* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  11580     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  11581 }
  11582 static inline HRESULT ID3D12Device3_GetDeviceRemovedReason(ID3D12Device3* This) {
  11583     return This->lpVtbl->GetDeviceRemovedReason(This);
  11584 }
  11585 static inline void ID3D12Device3_GetCopyableFootprints(ID3D12Device3* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  11586     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  11587 }
  11588 static inline HRESULT ID3D12Device3_CreateQueryHeap(ID3D12Device3* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  11589     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  11590 }
  11591 static inline HRESULT ID3D12Device3_SetStablePowerState(ID3D12Device3* This,WINBOOL enable) {
  11592     return This->lpVtbl->SetStablePowerState(This,enable);
  11593 }
  11594 static inline HRESULT ID3D12Device3_CreateCommandSignature(ID3D12Device3* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  11595     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  11596 }
  11597 static inline void ID3D12Device3_GetResourceTiling(ID3D12Device3* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  11598     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  11599 }
  11600 static inline LUID ID3D12Device3_GetAdapterLuid(ID3D12Device3* This) {
  11601     LUID __ret;
  11602     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  11603 }
  11604 /*** ID3D12Device1 methods ***/
  11605 static inline HRESULT ID3D12Device3_CreatePipelineLibrary(ID3D12Device3* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  11606     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  11607 }
  11608 static inline HRESULT ID3D12Device3_SetEventOnMultipleFenceCompletion(ID3D12Device3* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  11609     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  11610 }
  11611 static inline HRESULT ID3D12Device3_SetResidencyPriority(ID3D12Device3* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  11612     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  11613 }
  11614 /*** ID3D12Device2 methods ***/
  11615 static inline HRESULT ID3D12Device3_CreatePipelineState(ID3D12Device3* This,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
  11616     return This->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state);
  11617 }
  11618 /*** ID3D12Device3 methods ***/
  11619 static inline HRESULT ID3D12Device3_OpenExistingHeapFromAddress(ID3D12Device3* This,const void *address,REFIID riid,void **heap) {
  11620     return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
  11621 }
  11622 static inline HRESULT ID3D12Device3_OpenExistingHeapFromFileMapping(ID3D12Device3* This,HANDLE file_mapping,REFIID riid,void **heap) {
  11623     return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
  11624 }
  11625 static inline HRESULT ID3D12Device3_EnqueueMakeResident(ID3D12Device3* This,D3D12_RESIDENCY_FLAGS flags,UINT num_objects,ID3D12Pageable *const *objects,ID3D12Fence *fence,UINT64 fence_value) {
  11626     return This->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value);
  11627 }
  11628 #endif
  11629 #endif
  11630 
  11631 #endif
  11632 
  11633 
  11634 #endif  /* __ID3D12Device3_INTERFACE_DEFINED__ */
  11635 
  11636 /*****************************************************************************
  11637  * ID3D12RootSignatureDeserializer interface
  11638  */
  11639 #ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
  11640 #define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
  11641 
  11642 DEFINE_GUID(IID_ID3D12RootSignatureDeserializer, 0x34ab647b, 0x3cc8, 0x46ac, 0x84,0x1b, 0xc0,0x96,0x56,0x45,0xc0,0x46);
  11643 #if defined(__cplusplus) && !defined(CINTERFACE)
  11644 MIDL_INTERFACE("34ab647b-3cc8-46ac-841b-c0965645c046")
  11645 ID3D12RootSignatureDeserializer : public IUnknown
  11646 {
  11647     virtual const D3D12_ROOT_SIGNATURE_DESC * STDMETHODCALLTYPE GetRootSignatureDesc(
  11648         ) = 0;
  11649 
  11650 };
  11651 #ifdef __CRT_UUID_DECL
  11652 __CRT_UUID_DECL(ID3D12RootSignatureDeserializer, 0x34ab647b, 0x3cc8, 0x46ac, 0x84,0x1b, 0xc0,0x96,0x56,0x45,0xc0,0x46)
  11653 #endif
  11654 #else
  11655 typedef struct ID3D12RootSignatureDeserializerVtbl {
  11656     BEGIN_INTERFACE
  11657 
  11658     /*** IUnknown methods ***/
  11659     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  11660         ID3D12RootSignatureDeserializer *This,
  11661         REFIID riid,
  11662         void **ppvObject);
  11663 
  11664     ULONG (STDMETHODCALLTYPE *AddRef)(
  11665         ID3D12RootSignatureDeserializer *This);
  11666 
  11667     ULONG (STDMETHODCALLTYPE *Release)(
  11668         ID3D12RootSignatureDeserializer *This);
  11669 
  11670     /*** ID3D12RootSignatureDeserializer methods ***/
  11671     const D3D12_ROOT_SIGNATURE_DESC * (STDMETHODCALLTYPE *GetRootSignatureDesc)(
  11672         ID3D12RootSignatureDeserializer *This);
  11673 
  11674     END_INTERFACE
  11675 } ID3D12RootSignatureDeserializerVtbl;
  11676 
  11677 interface ID3D12RootSignatureDeserializer {
  11678     CONST_VTBL ID3D12RootSignatureDeserializerVtbl* lpVtbl;
  11679 };
  11680 
  11681 #ifdef COBJMACROS
  11682 #ifndef WIDL_C_INLINE_WRAPPERS
  11683 /*** IUnknown methods ***/
  11684 #define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  11685 #define ID3D12RootSignatureDeserializer_AddRef(This) (This)->lpVtbl->AddRef(This)
  11686 #define ID3D12RootSignatureDeserializer_Release(This) (This)->lpVtbl->Release(This)
  11687 /*** ID3D12RootSignatureDeserializer methods ***/
  11688 #define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) (This)->lpVtbl->GetRootSignatureDesc(This)
  11689 #else
  11690 /*** IUnknown methods ***/
  11691 static inline HRESULT ID3D12RootSignatureDeserializer_QueryInterface(ID3D12RootSignatureDeserializer* This,REFIID riid,void **ppvObject) {
  11692     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  11693 }
  11694 static inline ULONG ID3D12RootSignatureDeserializer_AddRef(ID3D12RootSignatureDeserializer* This) {
  11695     return This->lpVtbl->AddRef(This);
  11696 }
  11697 static inline ULONG ID3D12RootSignatureDeserializer_Release(ID3D12RootSignatureDeserializer* This) {
  11698     return This->lpVtbl->Release(This);
  11699 }
  11700 /*** ID3D12RootSignatureDeserializer methods ***/
  11701 static inline const D3D12_ROOT_SIGNATURE_DESC * ID3D12RootSignatureDeserializer_GetRootSignatureDesc(ID3D12RootSignatureDeserializer* This) {
  11702     return This->lpVtbl->GetRootSignatureDesc(This);
  11703 }
  11704 #endif
  11705 #endif
  11706 
  11707 #endif
  11708 
  11709 
  11710 #endif  /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
  11711 
  11712 /*****************************************************************************
  11713  * ID3D12VersionedRootSignatureDeserializer interface
  11714  */
  11715 #ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
  11716 #define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
  11717 
  11718 DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer, 0x7f91ce67, 0x090c, 0x4bb7, 0xb7,0x8e, 0xed,0x8f,0xf2,0xe3,0x1d,0xa0);
  11719 #if defined(__cplusplus) && !defined(CINTERFACE)
  11720 MIDL_INTERFACE("7f91ce67-090c-4bb7-b78e-ed8ff2e31da0")
  11721 ID3D12VersionedRootSignatureDeserializer : public IUnknown
  11722 {
  11723     virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
  11724         D3D_ROOT_SIGNATURE_VERSION version,
  11725         const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **desc) = 0;
  11726 
  11727     virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC * STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc(
  11728         ) = 0;
  11729 
  11730 };
  11731 #ifdef __CRT_UUID_DECL
  11732 __CRT_UUID_DECL(ID3D12VersionedRootSignatureDeserializer, 0x7f91ce67, 0x090c, 0x4bb7, 0xb7,0x8e, 0xed,0x8f,0xf2,0xe3,0x1d,0xa0)
  11733 #endif
  11734 #else
  11735 typedef struct ID3D12VersionedRootSignatureDeserializerVtbl {
  11736     BEGIN_INTERFACE
  11737 
  11738     /*** IUnknown methods ***/
  11739     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  11740         ID3D12VersionedRootSignatureDeserializer *This,
  11741         REFIID riid,
  11742         void **ppvObject);
  11743 
  11744     ULONG (STDMETHODCALLTYPE *AddRef)(
  11745         ID3D12VersionedRootSignatureDeserializer *This);
  11746 
  11747     ULONG (STDMETHODCALLTYPE *Release)(
  11748         ID3D12VersionedRootSignatureDeserializer *This);
  11749 
  11750     /*** ID3D12VersionedRootSignatureDeserializer methods ***/
  11751     HRESULT (STDMETHODCALLTYPE *GetRootSignatureDescAtVersion)(
  11752         ID3D12VersionedRootSignatureDeserializer *This,
  11753         D3D_ROOT_SIGNATURE_VERSION version,
  11754         const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **desc);
  11755 
  11756     const D3D12_VERSIONED_ROOT_SIGNATURE_DESC * (STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc)(
  11757         ID3D12VersionedRootSignatureDeserializer *This);
  11758 
  11759     END_INTERFACE
  11760 } ID3D12VersionedRootSignatureDeserializerVtbl;
  11761 
  11762 interface ID3D12VersionedRootSignatureDeserializer {
  11763     CONST_VTBL ID3D12VersionedRootSignatureDeserializerVtbl* lpVtbl;
  11764 };
  11765 
  11766 #ifdef COBJMACROS
  11767 #ifndef WIDL_C_INLINE_WRAPPERS
  11768 /*** IUnknown methods ***/
  11769 #define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  11770 #define ID3D12VersionedRootSignatureDeserializer_AddRef(This) (This)->lpVtbl->AddRef(This)
  11771 #define ID3D12VersionedRootSignatureDeserializer_Release(This) (This)->lpVtbl->Release(This)
  11772 /*** ID3D12VersionedRootSignatureDeserializer methods ***/
  11773 #define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,version,desc) (This)->lpVtbl->GetRootSignatureDescAtVersion(This,version,desc)
  11774 #define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) (This)->lpVtbl->GetUnconvertedRootSignatureDesc(This)
  11775 #else
  11776 /*** IUnknown methods ***/
  11777 static inline HRESULT ID3D12VersionedRootSignatureDeserializer_QueryInterface(ID3D12VersionedRootSignatureDeserializer* This,REFIID riid,void **ppvObject) {
  11778     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  11779 }
  11780 static inline ULONG ID3D12VersionedRootSignatureDeserializer_AddRef(ID3D12VersionedRootSignatureDeserializer* This) {
  11781     return This->lpVtbl->AddRef(This);
  11782 }
  11783 static inline ULONG ID3D12VersionedRootSignatureDeserializer_Release(ID3D12VersionedRootSignatureDeserializer* This) {
  11784     return This->lpVtbl->Release(This);
  11785 }
  11786 /*** ID3D12VersionedRootSignatureDeserializer methods ***/
  11787 static inline HRESULT ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(ID3D12VersionedRootSignatureDeserializer* This,D3D_ROOT_SIGNATURE_VERSION version,const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **desc) {
  11788     return This->lpVtbl->GetRootSignatureDescAtVersion(This,version,desc);
  11789 }
  11790 static inline const D3D12_VERSIONED_ROOT_SIGNATURE_DESC * ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(ID3D12VersionedRootSignatureDeserializer* This) {
  11791     return This->lpVtbl->GetUnconvertedRootSignatureDesc(This);
  11792 }
  11793 #endif
  11794 #endif
  11795 
  11796 #endif
  11797 
  11798 
  11799 #endif  /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
  11800 
  11801 typedef enum D3D12_COMMAND_LIST_FLAGS {
  11802     D3D12_COMMAND_LIST_FLAG_NONE = 0x0
  11803 } D3D12_COMMAND_LIST_FLAGS;
  11804 DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_LIST_FLAGS);
  11805 typedef enum D3D12_COMMAND_POOL_FLAGS {
  11806     D3D12_COMMAND_POOL_FLAG_NONE = 0x0
  11807 } D3D12_COMMAND_POOL_FLAGS;
  11808 DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_POOL_FLAGS);
  11809 typedef enum D3D12_COMMAND_RECORDER_FLAGS {
  11810     D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0
  11811 } D3D12_COMMAND_RECORDER_FLAGS;
  11812 DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_RECORDER_FLAGS);
  11813 /*****************************************************************************
  11814  * ID3D12Device4 interface
  11815  */
  11816 #ifndef __ID3D12Device4_INTERFACE_DEFINED__
  11817 #define __ID3D12Device4_INTERFACE_DEFINED__
  11818 
  11819 DEFINE_GUID(IID_ID3D12Device4, 0xe865df17, 0xa9ee, 0x46f9, 0xa4,0x63, 0x30,0x98,0x31,0x5a,0xa2,0xe5);
  11820 #if defined(__cplusplus) && !defined(CINTERFACE)
  11821 MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
  11822 ID3D12Device4 : public ID3D12Device3
  11823 {
  11824     virtual HRESULT STDMETHODCALLTYPE CreateCommandList1(
  11825         UINT node_mask,
  11826         D3D12_COMMAND_LIST_TYPE type,
  11827         D3D12_COMMAND_LIST_FLAGS flags,
  11828         REFIID riid,
  11829         void **command_list) = 0;
  11830 
  11831     virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession(
  11832         const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,
  11833         REFIID riid,
  11834         void **session) = 0;
  11835 
  11836     virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1(
  11837         const D3D12_HEAP_PROPERTIES *heap_properties,
  11838         D3D12_HEAP_FLAGS heap_flags,
  11839         const D3D12_RESOURCE_DESC *desc,
  11840         D3D12_RESOURCE_STATES initial_resource_state,
  11841         const D3D12_CLEAR_VALUE *optimized_clear_value,
  11842         ID3D12ProtectedResourceSession *protected_session,
  11843         REFIID riid_resource,
  11844         void **resource) = 0;
  11845 
  11846     virtual HRESULT STDMETHODCALLTYPE CreateHeap1(
  11847         const D3D12_HEAP_DESC *desc,
  11848         ID3D12ProtectedResourceSession *protected_session,
  11849         REFIID riid,
  11850         void **heap) = 0;
  11851 
  11852     virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1(
  11853         const D3D12_RESOURCE_DESC *desc,
  11854         D3D12_RESOURCE_STATES initial_state,
  11855         const D3D12_CLEAR_VALUE *optimized_clear_value,
  11856         ID3D12ProtectedResourceSession *protected_session,
  11857         REFIID riid,
  11858         void **resource) = 0;
  11859 
  11860 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
  11861     virtual D3D12_RESOURCE_ALLOCATION_INFO* STDMETHODCALLTYPE GetResourceAllocationInfo1(
  11862         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  11863         UINT visible_mask,
  11864         UINT resource_descs_count,
  11865         const D3D12_RESOURCE_DESC *resource_descs,
  11866         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) = 0;
  11867     D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
  11868         UINT visible_mask,
  11869         UINT resource_descs_count,
  11870         const D3D12_RESOURCE_DESC *resource_descs,
  11871         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1)
  11872     {
  11873         D3D12_RESOURCE_ALLOCATION_INFO __ret;
  11874         return *GetResourceAllocationInfo1(&__ret, visible_mask, resource_descs_count, resource_descs, resource_allocation_info1);
  11875     }
  11876 #else
  11877     virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
  11878         UINT visible_mask,
  11879         UINT resource_descs_count,
  11880         const D3D12_RESOURCE_DESC *resource_descs,
  11881         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) = 0;
  11882 #endif
  11883 
  11884 };
  11885 #ifdef __CRT_UUID_DECL
  11886 __CRT_UUID_DECL(ID3D12Device4, 0xe865df17, 0xa9ee, 0x46f9, 0xa4,0x63, 0x30,0x98,0x31,0x5a,0xa2,0xe5)
  11887 #endif
  11888 #else
  11889 typedef struct ID3D12Device4Vtbl {
  11890     BEGIN_INTERFACE
  11891 
  11892     /*** IUnknown methods ***/
  11893     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  11894         ID3D12Device4 *This,
  11895         REFIID riid,
  11896         void **ppvObject);
  11897 
  11898     ULONG (STDMETHODCALLTYPE *AddRef)(
  11899         ID3D12Device4 *This);
  11900 
  11901     ULONG (STDMETHODCALLTYPE *Release)(
  11902         ID3D12Device4 *This);
  11903 
  11904     /*** ID3D12Object methods ***/
  11905     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  11906         ID3D12Device4 *This,
  11907         REFGUID guid,
  11908         UINT *data_size,
  11909         void *data);
  11910 
  11911     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  11912         ID3D12Device4 *This,
  11913         REFGUID guid,
  11914         UINT data_size,
  11915         const void *data);
  11916 
  11917     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  11918         ID3D12Device4 *This,
  11919         REFGUID guid,
  11920         const IUnknown *data);
  11921 
  11922     HRESULT (STDMETHODCALLTYPE *SetName)(
  11923         ID3D12Device4 *This,
  11924         const WCHAR *name);
  11925 
  11926     /*** ID3D12Device methods ***/
  11927     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  11928         ID3D12Device4 *This);
  11929 
  11930     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  11931         ID3D12Device4 *This,
  11932         const D3D12_COMMAND_QUEUE_DESC *desc,
  11933         REFIID riid,
  11934         void **command_queue);
  11935 
  11936     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  11937         ID3D12Device4 *This,
  11938         D3D12_COMMAND_LIST_TYPE type,
  11939         REFIID riid,
  11940         void **command_allocator);
  11941 
  11942     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  11943         ID3D12Device4 *This,
  11944         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  11945         REFIID riid,
  11946         void **pipeline_state);
  11947 
  11948     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  11949         ID3D12Device4 *This,
  11950         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  11951         REFIID riid,
  11952         void **pipeline_state);
  11953 
  11954     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  11955         ID3D12Device4 *This,
  11956         UINT node_mask,
  11957         D3D12_COMMAND_LIST_TYPE type,
  11958         ID3D12CommandAllocator *command_allocator,
  11959         ID3D12PipelineState *initial_pipeline_state,
  11960         REFIID riid,
  11961         void **command_list);
  11962 
  11963     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  11964         ID3D12Device4 *This,
  11965         D3D12_FEATURE feature,
  11966         void *feature_data,
  11967         UINT feature_data_size);
  11968 
  11969     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  11970         ID3D12Device4 *This,
  11971         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  11972         REFIID riid,
  11973         void **descriptor_heap);
  11974 
  11975     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  11976         ID3D12Device4 *This,
  11977         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  11978 
  11979     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  11980         ID3D12Device4 *This,
  11981         UINT node_mask,
  11982         const void *bytecode,
  11983         SIZE_T bytecode_length,
  11984         REFIID riid,
  11985         void **root_signature);
  11986 
  11987     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  11988         ID3D12Device4 *This,
  11989         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  11990         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  11991 
  11992     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  11993         ID3D12Device4 *This,
  11994         ID3D12Resource *resource,
  11995         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  11996         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  11997 
  11998     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  11999         ID3D12Device4 *This,
  12000         ID3D12Resource *resource,
  12001         ID3D12Resource *counter_resource,
  12002         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  12003         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  12004 
  12005     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  12006         ID3D12Device4 *This,
  12007         ID3D12Resource *resource,
  12008         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  12009         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  12010 
  12011     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  12012         ID3D12Device4 *This,
  12013         ID3D12Resource *resource,
  12014         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  12015         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  12016 
  12017     void (STDMETHODCALLTYPE *CreateSampler)(
  12018         ID3D12Device4 *This,
  12019         const D3D12_SAMPLER_DESC *desc,
  12020         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  12021 
  12022     void (STDMETHODCALLTYPE *CopyDescriptors)(
  12023         ID3D12Device4 *This,
  12024         UINT dst_descriptor_range_count,
  12025         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  12026         const UINT *dst_descriptor_range_sizes,
  12027         UINT src_descriptor_range_count,
  12028         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  12029         const UINT *src_descriptor_range_sizes,
  12030         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  12031 
  12032     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  12033         ID3D12Device4 *This,
  12034         UINT descriptor_count,
  12035         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  12036         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  12037         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  12038 
  12039     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  12040         ID3D12Device4 *This,
  12041         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  12042         UINT visible_mask,
  12043         UINT reource_desc_count,
  12044         const D3D12_RESOURCE_DESC *resource_descs);
  12045 
  12046     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  12047         ID3D12Device4 *This,
  12048         D3D12_HEAP_PROPERTIES *__ret,
  12049         UINT node_mask,
  12050         D3D12_HEAP_TYPE heap_type);
  12051 
  12052     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  12053         ID3D12Device4 *This,
  12054         const D3D12_HEAP_PROPERTIES *heap_properties,
  12055         D3D12_HEAP_FLAGS heap_flags,
  12056         const D3D12_RESOURCE_DESC *desc,
  12057         D3D12_RESOURCE_STATES initial_state,
  12058         const D3D12_CLEAR_VALUE *optimized_clear_value,
  12059         REFIID riid,
  12060         void **resource);
  12061 
  12062     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  12063         ID3D12Device4 *This,
  12064         const D3D12_HEAP_DESC *desc,
  12065         REFIID riid,
  12066         void **heap);
  12067 
  12068     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  12069         ID3D12Device4 *This,
  12070         ID3D12Heap *heap,
  12071         UINT64 heap_offset,
  12072         const D3D12_RESOURCE_DESC *desc,
  12073         D3D12_RESOURCE_STATES initial_state,
  12074         const D3D12_CLEAR_VALUE *optimized_clear_value,
  12075         REFIID riid,
  12076         void **resource);
  12077 
  12078     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  12079         ID3D12Device4 *This,
  12080         const D3D12_RESOURCE_DESC *desc,
  12081         D3D12_RESOURCE_STATES initial_state,
  12082         const D3D12_CLEAR_VALUE *optimized_clear_value,
  12083         REFIID riid,
  12084         void **resource);
  12085 
  12086     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  12087         ID3D12Device4 *This,
  12088         ID3D12DeviceChild *object,
  12089         const SECURITY_ATTRIBUTES *attributes,
  12090         DWORD access,
  12091         const WCHAR *name,
  12092         HANDLE *handle);
  12093 
  12094     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  12095         ID3D12Device4 *This,
  12096         HANDLE handle,
  12097         REFIID riid,
  12098         void **object);
  12099 
  12100     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  12101         ID3D12Device4 *This,
  12102         const WCHAR *name,
  12103         DWORD access,
  12104         HANDLE *handle);
  12105 
  12106     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  12107         ID3D12Device4 *This,
  12108         UINT object_count,
  12109         ID3D12Pageable *const *objects);
  12110 
  12111     HRESULT (STDMETHODCALLTYPE *Evict)(
  12112         ID3D12Device4 *This,
  12113         UINT object_count,
  12114         ID3D12Pageable *const *objects);
  12115 
  12116     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  12117         ID3D12Device4 *This,
  12118         UINT64 initial_value,
  12119         D3D12_FENCE_FLAGS flags,
  12120         REFIID riid,
  12121         void **fence);
  12122 
  12123     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  12124         ID3D12Device4 *This);
  12125 
  12126     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  12127         ID3D12Device4 *This,
  12128         const D3D12_RESOURCE_DESC *desc,
  12129         UINT first_sub_resource,
  12130         UINT sub_resource_count,
  12131         UINT64 base_offset,
  12132         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  12133         UINT *row_count,
  12134         UINT64 *row_size,
  12135         UINT64 *total_bytes);
  12136 
  12137     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  12138         ID3D12Device4 *This,
  12139         const D3D12_QUERY_HEAP_DESC *desc,
  12140         REFIID riid,
  12141         void **heap);
  12142 
  12143     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  12144         ID3D12Device4 *This,
  12145         WINBOOL enable);
  12146 
  12147     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  12148         ID3D12Device4 *This,
  12149         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  12150         ID3D12RootSignature *root_signature,
  12151         REFIID riid,
  12152         void **command_signature);
  12153 
  12154     void (STDMETHODCALLTYPE *GetResourceTiling)(
  12155         ID3D12Device4 *This,
  12156         ID3D12Resource *resource,
  12157         UINT *total_tile_count,
  12158         D3D12_PACKED_MIP_INFO *packed_mip_info,
  12159         D3D12_TILE_SHAPE *standard_tile_shape,
  12160         UINT *sub_resource_tiling_count,
  12161         UINT first_sub_resource_tiling,
  12162         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  12163 
  12164     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  12165         ID3D12Device4 *This,
  12166         LUID *__ret);
  12167 
  12168     /*** ID3D12Device1 methods ***/
  12169     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  12170         ID3D12Device4 *This,
  12171         const void *blob,
  12172         SIZE_T blob_size,
  12173         REFIID iid,
  12174         void **lib);
  12175 
  12176     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  12177         ID3D12Device4 *This,
  12178         ID3D12Fence *const *fences,
  12179         const UINT64 *values,
  12180         UINT fence_count,
  12181         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  12182         HANDLE event);
  12183 
  12184     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  12185         ID3D12Device4 *This,
  12186         UINT object_count,
  12187         ID3D12Pageable *const *objects,
  12188         const D3D12_RESIDENCY_PRIORITY *priorities);
  12189 
  12190     /*** ID3D12Device2 methods ***/
  12191     HRESULT (STDMETHODCALLTYPE *CreatePipelineState)(
  12192         ID3D12Device4 *This,
  12193         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  12194         REFIID riid,
  12195         void **pipeline_state);
  12196 
  12197     /*** ID3D12Device3 methods ***/
  12198     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromAddress)(
  12199         ID3D12Device4 *This,
  12200         const void *address,
  12201         REFIID riid,
  12202         void **heap);
  12203 
  12204     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping)(
  12205         ID3D12Device4 *This,
  12206         HANDLE file_mapping,
  12207         REFIID riid,
  12208         void **heap);
  12209 
  12210     HRESULT (STDMETHODCALLTYPE *EnqueueMakeResident)(
  12211         ID3D12Device4 *This,
  12212         D3D12_RESIDENCY_FLAGS flags,
  12213         UINT num_objects,
  12214         ID3D12Pageable *const *objects,
  12215         ID3D12Fence *fence,
  12216         UINT64 fence_value);
  12217 
  12218     /*** ID3D12Device4 methods ***/
  12219     HRESULT (STDMETHODCALLTYPE *CreateCommandList1)(
  12220         ID3D12Device4 *This,
  12221         UINT node_mask,
  12222         D3D12_COMMAND_LIST_TYPE type,
  12223         D3D12_COMMAND_LIST_FLAGS flags,
  12224         REFIID riid,
  12225         void **command_list);
  12226 
  12227     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession)(
  12228         ID3D12Device4 *This,
  12229         const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,
  12230         REFIID riid,
  12231         void **session);
  12232 
  12233     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource1)(
  12234         ID3D12Device4 *This,
  12235         const D3D12_HEAP_PROPERTIES *heap_properties,
  12236         D3D12_HEAP_FLAGS heap_flags,
  12237         const D3D12_RESOURCE_DESC *desc,
  12238         D3D12_RESOURCE_STATES initial_resource_state,
  12239         const D3D12_CLEAR_VALUE *optimized_clear_value,
  12240         ID3D12ProtectedResourceSession *protected_session,
  12241         REFIID riid_resource,
  12242         void **resource);
  12243 
  12244     HRESULT (STDMETHODCALLTYPE *CreateHeap1)(
  12245         ID3D12Device4 *This,
  12246         const D3D12_HEAP_DESC *desc,
  12247         ID3D12ProtectedResourceSession *protected_session,
  12248         REFIID riid,
  12249         void **heap);
  12250 
  12251     HRESULT (STDMETHODCALLTYPE *CreateReservedResource1)(
  12252         ID3D12Device4 *This,
  12253         const D3D12_RESOURCE_DESC *desc,
  12254         D3D12_RESOURCE_STATES initial_state,
  12255         const D3D12_CLEAR_VALUE *optimized_clear_value,
  12256         ID3D12ProtectedResourceSession *protected_session,
  12257         REFIID riid,
  12258         void **resource);
  12259 
  12260     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo1)(
  12261         ID3D12Device4 *This,
  12262         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  12263         UINT visible_mask,
  12264         UINT resource_descs_count,
  12265         const D3D12_RESOURCE_DESC *resource_descs,
  12266         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  12267 
  12268     END_INTERFACE
  12269 } ID3D12Device4Vtbl;
  12270 
  12271 interface ID3D12Device4 {
  12272     CONST_VTBL ID3D12Device4Vtbl* lpVtbl;
  12273 };
  12274 
  12275 #ifdef COBJMACROS
  12276 #ifndef WIDL_C_INLINE_WRAPPERS
  12277 /*** IUnknown methods ***/
  12278 #define ID3D12Device4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  12279 #define ID3D12Device4_AddRef(This) (This)->lpVtbl->AddRef(This)
  12280 #define ID3D12Device4_Release(This) (This)->lpVtbl->Release(This)
  12281 /*** ID3D12Object methods ***/
  12282 #define ID3D12Device4_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  12283 #define ID3D12Device4_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  12284 #define ID3D12Device4_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  12285 #define ID3D12Device4_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  12286 /*** ID3D12Device methods ***/
  12287 #define ID3D12Device4_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  12288 #define ID3D12Device4_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  12289 #define ID3D12Device4_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  12290 #define ID3D12Device4_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  12291 #define ID3D12Device4_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  12292 #define ID3D12Device4_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  12293 #define ID3D12Device4_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  12294 #define ID3D12Device4_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  12295 #define ID3D12Device4_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  12296 #define ID3D12Device4_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  12297 #define ID3D12Device4_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  12298 #define ID3D12Device4_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  12299 #define ID3D12Device4_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  12300 #define ID3D12Device4_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  12301 #define ID3D12Device4_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  12302 #define ID3D12Device4_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  12303 #define ID3D12Device4_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  12304 #define ID3D12Device4_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  12305 #define ID3D12Device4_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device4_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  12306 #define ID3D12Device4_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device4_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  12307 #define ID3D12Device4_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  12308 #define ID3D12Device4_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  12309 #define ID3D12Device4_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  12310 #define ID3D12Device4_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  12311 #define ID3D12Device4_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  12312 #define ID3D12Device4_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  12313 #define ID3D12Device4_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  12314 #define ID3D12Device4_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  12315 #define ID3D12Device4_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  12316 #define ID3D12Device4_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  12317 #define ID3D12Device4_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  12318 #define ID3D12Device4_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  12319 #define ID3D12Device4_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  12320 #define ID3D12Device4_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  12321 #define ID3D12Device4_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  12322 #define ID3D12Device4_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  12323 #define ID3D12Device4_GetAdapterLuid(This) ID3D12Device4_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  12324 /*** ID3D12Device1 methods ***/
  12325 #define ID3D12Device4_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  12326 #define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  12327 #define ID3D12Device4_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  12328 /*** ID3D12Device2 methods ***/
  12329 #define ID3D12Device4_CreatePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state)
  12330 /*** ID3D12Device3 methods ***/
  12331 #define ID3D12Device4_OpenExistingHeapFromAddress(This,address,riid,heap) (This)->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap)
  12332 #define ID3D12Device4_OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap) (This)->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap)
  12333 #define ID3D12Device4_EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value) (This)->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value)
  12334 /*** ID3D12Device4 methods ***/
  12335 #define ID3D12Device4_CreateCommandList1(This,node_mask,type,flags,riid,command_list) (This)->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list)
  12336 #define ID3D12Device4_CreateProtectedResourceSession(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session)
  12337 #define ID3D12Device4_CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  12338 #define ID3D12Device4_CreateHeap1(This,desc,protected_session,riid,heap) (This)->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap)
  12339 #define ID3D12Device4_CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource) (This)->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource)
  12340 #define ID3D12Device4_GetResourceAllocationInfo1(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device4_GetResourceAllocationInfo1_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  12341 #else
  12342 /*** IUnknown methods ***/
  12343 static inline HRESULT ID3D12Device4_QueryInterface(ID3D12Device4* This,REFIID riid,void **ppvObject) {
  12344     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  12345 }
  12346 static inline ULONG ID3D12Device4_AddRef(ID3D12Device4* This) {
  12347     return This->lpVtbl->AddRef(This);
  12348 }
  12349 static inline ULONG ID3D12Device4_Release(ID3D12Device4* This) {
  12350     return This->lpVtbl->Release(This);
  12351 }
  12352 /*** ID3D12Object methods ***/
  12353 static inline HRESULT ID3D12Device4_GetPrivateData(ID3D12Device4* This,REFGUID guid,UINT *data_size,void *data) {
  12354     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  12355 }
  12356 static inline HRESULT ID3D12Device4_SetPrivateData(ID3D12Device4* This,REFGUID guid,UINT data_size,const void *data) {
  12357     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  12358 }
  12359 static inline HRESULT ID3D12Device4_SetPrivateDataInterface(ID3D12Device4* This,REFGUID guid,const IUnknown *data) {
  12360     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  12361 }
  12362 static inline HRESULT ID3D12Device4_SetName(ID3D12Device4* This,const WCHAR *name) {
  12363     return This->lpVtbl->SetName(This,name);
  12364 }
  12365 /*** ID3D12Device methods ***/
  12366 static inline UINT ID3D12Device4_GetNodeCount(ID3D12Device4* This) {
  12367     return This->lpVtbl->GetNodeCount(This);
  12368 }
  12369 static inline HRESULT ID3D12Device4_CreateCommandQueue(ID3D12Device4* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  12370     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  12371 }
  12372 static inline HRESULT ID3D12Device4_CreateCommandAllocator(ID3D12Device4* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  12373     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  12374 }
  12375 static inline HRESULT ID3D12Device4_CreateGraphicsPipelineState(ID3D12Device4* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  12376     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  12377 }
  12378 static inline HRESULT ID3D12Device4_CreateComputePipelineState(ID3D12Device4* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  12379     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  12380 }
  12381 static inline HRESULT ID3D12Device4_CreateCommandList(ID3D12Device4* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  12382     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  12383 }
  12384 static inline HRESULT ID3D12Device4_CheckFeatureSupport(ID3D12Device4* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  12385     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  12386 }
  12387 static inline HRESULT ID3D12Device4_CreateDescriptorHeap(ID3D12Device4* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  12388     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  12389 }
  12390 static inline UINT ID3D12Device4_GetDescriptorHandleIncrementSize(ID3D12Device4* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  12391     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  12392 }
  12393 static inline HRESULT ID3D12Device4_CreateRootSignature(ID3D12Device4* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  12394     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  12395 }
  12396 static inline void ID3D12Device4_CreateConstantBufferView(ID3D12Device4* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  12397     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  12398 }
  12399 static inline void ID3D12Device4_CreateShaderResourceView(ID3D12Device4* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  12400     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  12401 }
  12402 static inline void ID3D12Device4_CreateUnorderedAccessView(ID3D12Device4* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  12403     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  12404 }
  12405 static inline void ID3D12Device4_CreateRenderTargetView(ID3D12Device4* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  12406     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  12407 }
  12408 static inline void ID3D12Device4_CreateDepthStencilView(ID3D12Device4* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  12409     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  12410 }
  12411 static inline void ID3D12Device4_CreateSampler(ID3D12Device4* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  12412     This->lpVtbl->CreateSampler(This,desc,descriptor);
  12413 }
  12414 static inline void ID3D12Device4_CopyDescriptors(ID3D12Device4* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  12415     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  12416 }
  12417 static inline void ID3D12Device4_CopyDescriptorsSimple(ID3D12Device4* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  12418     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  12419 }
  12420 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device4_GetResourceAllocationInfo(ID3D12Device4* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  12421     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  12422     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  12423 }
  12424 static inline D3D12_HEAP_PROPERTIES ID3D12Device4_GetCustomHeapProperties(ID3D12Device4* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  12425     D3D12_HEAP_PROPERTIES __ret;
  12426     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  12427 }
  12428 static inline HRESULT ID3D12Device4_CreateCommittedResource(ID3D12Device4* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  12429     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  12430 }
  12431 static inline HRESULT ID3D12Device4_CreateHeap(ID3D12Device4* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  12432     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  12433 }
  12434 static inline HRESULT ID3D12Device4_CreatePlacedResource(ID3D12Device4* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  12435     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  12436 }
  12437 static inline HRESULT ID3D12Device4_CreateReservedResource(ID3D12Device4* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  12438     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  12439 }
  12440 static inline HRESULT ID3D12Device4_CreateSharedHandle(ID3D12Device4* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  12441     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  12442 }
  12443 static inline HRESULT ID3D12Device4_OpenSharedHandle(ID3D12Device4* This,HANDLE handle,REFIID riid,void **object) {
  12444     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  12445 }
  12446 static inline HRESULT ID3D12Device4_OpenSharedHandleByName(ID3D12Device4* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  12447     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  12448 }
  12449 static inline HRESULT ID3D12Device4_MakeResident(ID3D12Device4* This,UINT object_count,ID3D12Pageable *const *objects) {
  12450     return This->lpVtbl->MakeResident(This,object_count,objects);
  12451 }
  12452 static inline HRESULT ID3D12Device4_Evict(ID3D12Device4* This,UINT object_count,ID3D12Pageable *const *objects) {
  12453     return This->lpVtbl->Evict(This,object_count,objects);
  12454 }
  12455 static inline HRESULT ID3D12Device4_CreateFence(ID3D12Device4* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  12456     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  12457 }
  12458 static inline HRESULT ID3D12Device4_GetDeviceRemovedReason(ID3D12Device4* This) {
  12459     return This->lpVtbl->GetDeviceRemovedReason(This);
  12460 }
  12461 static inline void ID3D12Device4_GetCopyableFootprints(ID3D12Device4* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  12462     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  12463 }
  12464 static inline HRESULT ID3D12Device4_CreateQueryHeap(ID3D12Device4* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  12465     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  12466 }
  12467 static inline HRESULT ID3D12Device4_SetStablePowerState(ID3D12Device4* This,WINBOOL enable) {
  12468     return This->lpVtbl->SetStablePowerState(This,enable);
  12469 }
  12470 static inline HRESULT ID3D12Device4_CreateCommandSignature(ID3D12Device4* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  12471     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  12472 }
  12473 static inline void ID3D12Device4_GetResourceTiling(ID3D12Device4* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  12474     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  12475 }
  12476 static inline LUID ID3D12Device4_GetAdapterLuid(ID3D12Device4* This) {
  12477     LUID __ret;
  12478     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  12479 }
  12480 /*** ID3D12Device1 methods ***/
  12481 static inline HRESULT ID3D12Device4_CreatePipelineLibrary(ID3D12Device4* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  12482     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  12483 }
  12484 static inline HRESULT ID3D12Device4_SetEventOnMultipleFenceCompletion(ID3D12Device4* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  12485     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  12486 }
  12487 static inline HRESULT ID3D12Device4_SetResidencyPriority(ID3D12Device4* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  12488     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  12489 }
  12490 /*** ID3D12Device2 methods ***/
  12491 static inline HRESULT ID3D12Device4_CreatePipelineState(ID3D12Device4* This,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
  12492     return This->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state);
  12493 }
  12494 /*** ID3D12Device3 methods ***/
  12495 static inline HRESULT ID3D12Device4_OpenExistingHeapFromAddress(ID3D12Device4* This,const void *address,REFIID riid,void **heap) {
  12496     return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
  12497 }
  12498 static inline HRESULT ID3D12Device4_OpenExistingHeapFromFileMapping(ID3D12Device4* This,HANDLE file_mapping,REFIID riid,void **heap) {
  12499     return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
  12500 }
  12501 static inline HRESULT ID3D12Device4_EnqueueMakeResident(ID3D12Device4* This,D3D12_RESIDENCY_FLAGS flags,UINT num_objects,ID3D12Pageable *const *objects,ID3D12Fence *fence,UINT64 fence_value) {
  12502     return This->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value);
  12503 }
  12504 /*** ID3D12Device4 methods ***/
  12505 static inline HRESULT ID3D12Device4_CreateCommandList1(ID3D12Device4* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,D3D12_COMMAND_LIST_FLAGS flags,REFIID riid,void **command_list) {
  12506     return This->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list);
  12507 }
  12508 static inline HRESULT ID3D12Device4_CreateProtectedResourceSession(ID3D12Device4* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,REFIID riid,void **session) {
  12509     return This->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session);
  12510 }
  12511 static inline HRESULT ID3D12Device4_CreateCommittedResource1(ID3D12Device4* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  12512     return This->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  12513 }
  12514 static inline HRESULT ID3D12Device4_CreateHeap1(ID3D12Device4* This,const D3D12_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **heap) {
  12515     return This->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap);
  12516 }
  12517 static inline HRESULT ID3D12Device4_CreateReservedResource1(ID3D12Device4* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **resource) {
  12518     return This->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource);
  12519 }
  12520 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device4_GetResourceAllocationInfo1(ID3D12Device4* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  12521     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  12522     return *This->lpVtbl->GetResourceAllocationInfo1(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  12523 }
  12524 #endif
  12525 #endif
  12526 
  12527 #endif
  12528 
  12529 
  12530 #endif  /* __ID3D12Device4_INTERFACE_DEFINED__ */
  12531 
  12532 typedef enum D3D12_LIFETIME_STATE {
  12533     D3D12_LIFETIME_STATE_IN_USE = 0x0,
  12534     D3D12_LIFETIME_STATE_NOT_IN_USE = 0x1
  12535 } D3D12_LIFETIME_STATE;
  12536 /*****************************************************************************
  12537  * ID3D12LifetimeOwner interface
  12538  */
  12539 #ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
  12540 #define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
  12541 
  12542 DEFINE_GUID(IID_ID3D12LifetimeOwner, 0xe667af9f, 0xcd56, 0x4f46, 0x83,0xce, 0x03,0x2e,0x59,0x5d,0x70,0xa8);
  12543 #if defined(__cplusplus) && !defined(CINTERFACE)
  12544 MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
  12545 ID3D12LifetimeOwner : public IUnknown
  12546 {
  12547     virtual void STDMETHODCALLTYPE LifetimeStateUpdated(
  12548         D3D12_LIFETIME_STATE NewState) = 0;
  12549 
  12550 };
  12551 #ifdef __CRT_UUID_DECL
  12552 __CRT_UUID_DECL(ID3D12LifetimeOwner, 0xe667af9f, 0xcd56, 0x4f46, 0x83,0xce, 0x03,0x2e,0x59,0x5d,0x70,0xa8)
  12553 #endif
  12554 #else
  12555 typedef struct ID3D12LifetimeOwnerVtbl {
  12556     BEGIN_INTERFACE
  12557 
  12558     /*** IUnknown methods ***/
  12559     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  12560         ID3D12LifetimeOwner *This,
  12561         REFIID riid,
  12562         void **ppvObject);
  12563 
  12564     ULONG (STDMETHODCALLTYPE *AddRef)(
  12565         ID3D12LifetimeOwner *This);
  12566 
  12567     ULONG (STDMETHODCALLTYPE *Release)(
  12568         ID3D12LifetimeOwner *This);
  12569 
  12570     /*** ID3D12LifetimeOwner methods ***/
  12571     void (STDMETHODCALLTYPE *LifetimeStateUpdated)(
  12572         ID3D12LifetimeOwner *This,
  12573         D3D12_LIFETIME_STATE NewState);
  12574 
  12575     END_INTERFACE
  12576 } ID3D12LifetimeOwnerVtbl;
  12577 
  12578 interface ID3D12LifetimeOwner {
  12579     CONST_VTBL ID3D12LifetimeOwnerVtbl* lpVtbl;
  12580 };
  12581 
  12582 #ifdef COBJMACROS
  12583 #ifndef WIDL_C_INLINE_WRAPPERS
  12584 /*** IUnknown methods ***/
  12585 #define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  12586 #define ID3D12LifetimeOwner_AddRef(This) (This)->lpVtbl->AddRef(This)
  12587 #define ID3D12LifetimeOwner_Release(This) (This)->lpVtbl->Release(This)
  12588 /*** ID3D12LifetimeOwner methods ***/
  12589 #define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) (This)->lpVtbl->LifetimeStateUpdated(This,NewState)
  12590 #else
  12591 /*** IUnknown methods ***/
  12592 static inline HRESULT ID3D12LifetimeOwner_QueryInterface(ID3D12LifetimeOwner* This,REFIID riid,void **ppvObject) {
  12593     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  12594 }
  12595 static inline ULONG ID3D12LifetimeOwner_AddRef(ID3D12LifetimeOwner* This) {
  12596     return This->lpVtbl->AddRef(This);
  12597 }
  12598 static inline ULONG ID3D12LifetimeOwner_Release(ID3D12LifetimeOwner* This) {
  12599     return This->lpVtbl->Release(This);
  12600 }
  12601 /*** ID3D12LifetimeOwner methods ***/
  12602 static inline void ID3D12LifetimeOwner_LifetimeStateUpdated(ID3D12LifetimeOwner* This,D3D12_LIFETIME_STATE NewState) {
  12603     This->lpVtbl->LifetimeStateUpdated(This,NewState);
  12604 }
  12605 #endif
  12606 #endif
  12607 
  12608 #endif
  12609 
  12610 
  12611 #endif  /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */
  12612 
  12613 /*****************************************************************************
  12614  * ID3D12SwapChainAssistant interface
  12615  */
  12616 #ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
  12617 #define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
  12618 
  12619 DEFINE_GUID(IID_ID3D12SwapChainAssistant, 0xf1df64b6, 0x57fd, 0x49cd, 0x88,0x07, 0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
  12620 #if defined(__cplusplus) && !defined(CINTERFACE)
  12621 MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
  12622 ID3D12SwapChainAssistant : public IUnknown
  12623 {
  12624 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
  12625     virtual LUID* STDMETHODCALLTYPE GetLUID(
  12626         LUID *__ret) = 0;
  12627     LUID STDMETHODCALLTYPE GetLUID(
  12628         )
  12629     {
  12630         LUID __ret;
  12631         return *GetLUID(&__ret);
  12632     }
  12633 #else
  12634     virtual LUID STDMETHODCALLTYPE GetLUID(
  12635         ) = 0;
  12636 #endif
  12637 
  12638     virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject(
  12639         REFIID riid,
  12640         void **ppv) = 0;
  12641 
  12642     virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue(
  12643         REFIID riid_resource,
  12644         void **resource,
  12645         REFIID riid_queue,
  12646         void **queue) = 0;
  12647 
  12648     virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync(
  12649         ) = 0;
  12650 
  12651 };
  12652 #ifdef __CRT_UUID_DECL
  12653 __CRT_UUID_DECL(ID3D12SwapChainAssistant, 0xf1df64b6, 0x57fd, 0x49cd, 0x88,0x07, 0xc0,0xeb,0x88,0xb4,0x5c,0x8f)
  12654 #endif
  12655 #else
  12656 typedef struct ID3D12SwapChainAssistantVtbl {
  12657     BEGIN_INTERFACE
  12658 
  12659     /*** IUnknown methods ***/
  12660     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  12661         ID3D12SwapChainAssistant *This,
  12662         REFIID riid,
  12663         void **ppvObject);
  12664 
  12665     ULONG (STDMETHODCALLTYPE *AddRef)(
  12666         ID3D12SwapChainAssistant *This);
  12667 
  12668     ULONG (STDMETHODCALLTYPE *Release)(
  12669         ID3D12SwapChainAssistant *This);
  12670 
  12671     /*** ID3D12SwapChainAssistant methods ***/
  12672     LUID * (STDMETHODCALLTYPE *GetLUID)(
  12673         ID3D12SwapChainAssistant *This,
  12674         LUID *__ret);
  12675 
  12676     HRESULT (STDMETHODCALLTYPE *GetSwapChainObject)(
  12677         ID3D12SwapChainAssistant *This,
  12678         REFIID riid,
  12679         void **ppv);
  12680 
  12681     HRESULT (STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue)(
  12682         ID3D12SwapChainAssistant *This,
  12683         REFIID riid_resource,
  12684         void **resource,
  12685         REFIID riid_queue,
  12686         void **queue);
  12687 
  12688     HRESULT (STDMETHODCALLTYPE *InsertImplicitSync)(
  12689         ID3D12SwapChainAssistant *This);
  12690 
  12691     END_INTERFACE
  12692 } ID3D12SwapChainAssistantVtbl;
  12693 
  12694 interface ID3D12SwapChainAssistant {
  12695     CONST_VTBL ID3D12SwapChainAssistantVtbl* lpVtbl;
  12696 };
  12697 
  12698 #ifdef COBJMACROS
  12699 #ifndef WIDL_C_INLINE_WRAPPERS
  12700 /*** IUnknown methods ***/
  12701 #define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  12702 #define ID3D12SwapChainAssistant_AddRef(This) (This)->lpVtbl->AddRef(This)
  12703 #define ID3D12SwapChainAssistant_Release(This) (This)->lpVtbl->Release(This)
  12704 /*** ID3D12SwapChainAssistant methods ***/
  12705 #define ID3D12SwapChainAssistant_GetLUID(This) ID3D12SwapChainAssistant_GetLUID_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  12706 #define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) (This)->lpVtbl->GetSwapChainObject(This,riid,ppv)
  12707 #define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riid_resource,resource,riid_queue,queue) (This)->lpVtbl->GetCurrentResourceAndCommandQueue(This,riid_resource,resource,riid_queue,queue)
  12708 #define ID3D12SwapChainAssistant_InsertImplicitSync(This) (This)->lpVtbl->InsertImplicitSync(This)
  12709 #else
  12710 /*** IUnknown methods ***/
  12711 static inline HRESULT ID3D12SwapChainAssistant_QueryInterface(ID3D12SwapChainAssistant* This,REFIID riid,void **ppvObject) {
  12712     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  12713 }
  12714 static inline ULONG ID3D12SwapChainAssistant_AddRef(ID3D12SwapChainAssistant* This) {
  12715     return This->lpVtbl->AddRef(This);
  12716 }
  12717 static inline ULONG ID3D12SwapChainAssistant_Release(ID3D12SwapChainAssistant* This) {
  12718     return This->lpVtbl->Release(This);
  12719 }
  12720 /*** ID3D12SwapChainAssistant methods ***/
  12721 static inline LUID ID3D12SwapChainAssistant_GetLUID(ID3D12SwapChainAssistant* This) {
  12722     LUID __ret;
  12723     return *This->lpVtbl->GetLUID(This,&__ret);
  12724 }
  12725 static inline HRESULT ID3D12SwapChainAssistant_GetSwapChainObject(ID3D12SwapChainAssistant* This,REFIID riid,void **ppv) {
  12726     return This->lpVtbl->GetSwapChainObject(This,riid,ppv);
  12727 }
  12728 static inline HRESULT ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(ID3D12SwapChainAssistant* This,REFIID riid_resource,void **resource,REFIID riid_queue,void **queue) {
  12729     return This->lpVtbl->GetCurrentResourceAndCommandQueue(This,riid_resource,resource,riid_queue,queue);
  12730 }
  12731 static inline HRESULT ID3D12SwapChainAssistant_InsertImplicitSync(ID3D12SwapChainAssistant* This) {
  12732     return This->lpVtbl->InsertImplicitSync(This);
  12733 }
  12734 #endif
  12735 #endif
  12736 
  12737 #endif
  12738 
  12739 
  12740 #endif  /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */
  12741 
  12742 /*****************************************************************************
  12743  * ID3D12LifetimeTracker interface
  12744  */
  12745 #ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
  12746 #define __ID3D12LifetimeTracker_INTERFACE_DEFINED__
  12747 
  12748 DEFINE_GUID(IID_ID3D12LifetimeTracker, 0x3fd03d36, 0x4eb1, 0x424a, 0xa5,0x82, 0x49,0x4e,0xcb,0x8b,0xa8,0x13);
  12749 #if defined(__cplusplus) && !defined(CINTERFACE)
  12750 MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
  12751 ID3D12LifetimeTracker : public ID3D12DeviceChild
  12752 {
  12753     virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject(
  12754         ID3D12DeviceChild *object) = 0;
  12755 
  12756 };
  12757 #ifdef __CRT_UUID_DECL
  12758 __CRT_UUID_DECL(ID3D12LifetimeTracker, 0x3fd03d36, 0x4eb1, 0x424a, 0xa5,0x82, 0x49,0x4e,0xcb,0x8b,0xa8,0x13)
  12759 #endif
  12760 #else
  12761 typedef struct ID3D12LifetimeTrackerVtbl {
  12762     BEGIN_INTERFACE
  12763 
  12764     /*** IUnknown methods ***/
  12765     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  12766         ID3D12LifetimeTracker *This,
  12767         REFIID riid,
  12768         void **ppvObject);
  12769 
  12770     ULONG (STDMETHODCALLTYPE *AddRef)(
  12771         ID3D12LifetimeTracker *This);
  12772 
  12773     ULONG (STDMETHODCALLTYPE *Release)(
  12774         ID3D12LifetimeTracker *This);
  12775 
  12776     /*** ID3D12Object methods ***/
  12777     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  12778         ID3D12LifetimeTracker *This,
  12779         REFGUID guid,
  12780         UINT *data_size,
  12781         void *data);
  12782 
  12783     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  12784         ID3D12LifetimeTracker *This,
  12785         REFGUID guid,
  12786         UINT data_size,
  12787         const void *data);
  12788 
  12789     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  12790         ID3D12LifetimeTracker *This,
  12791         REFGUID guid,
  12792         const IUnknown *data);
  12793 
  12794     HRESULT (STDMETHODCALLTYPE *SetName)(
  12795         ID3D12LifetimeTracker *This,
  12796         const WCHAR *name);
  12797 
  12798     /*** ID3D12DeviceChild methods ***/
  12799     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  12800         ID3D12LifetimeTracker *This,
  12801         REFIID riid,
  12802         void **device);
  12803 
  12804     /*** ID3D12LifetimeTracker methods ***/
  12805     HRESULT (STDMETHODCALLTYPE *DestroyOwnedObject)(
  12806         ID3D12LifetimeTracker *This,
  12807         ID3D12DeviceChild *object);
  12808 
  12809     END_INTERFACE
  12810 } ID3D12LifetimeTrackerVtbl;
  12811 
  12812 interface ID3D12LifetimeTracker {
  12813     CONST_VTBL ID3D12LifetimeTrackerVtbl* lpVtbl;
  12814 };
  12815 
  12816 #ifdef COBJMACROS
  12817 #ifndef WIDL_C_INLINE_WRAPPERS
  12818 /*** IUnknown methods ***/
  12819 #define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  12820 #define ID3D12LifetimeTracker_AddRef(This) (This)->lpVtbl->AddRef(This)
  12821 #define ID3D12LifetimeTracker_Release(This) (This)->lpVtbl->Release(This)
  12822 /*** ID3D12Object methods ***/
  12823 #define ID3D12LifetimeTracker_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  12824 #define ID3D12LifetimeTracker_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  12825 #define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  12826 #define ID3D12LifetimeTracker_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  12827 /*** ID3D12DeviceChild methods ***/
  12828 #define ID3D12LifetimeTracker_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  12829 /*** ID3D12LifetimeTracker methods ***/
  12830 #define ID3D12LifetimeTracker_DestroyOwnedObject(This,object) (This)->lpVtbl->DestroyOwnedObject(This,object)
  12831 #else
  12832 /*** IUnknown methods ***/
  12833 static inline HRESULT ID3D12LifetimeTracker_QueryInterface(ID3D12LifetimeTracker* This,REFIID riid,void **ppvObject) {
  12834     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  12835 }
  12836 static inline ULONG ID3D12LifetimeTracker_AddRef(ID3D12LifetimeTracker* This) {
  12837     return This->lpVtbl->AddRef(This);
  12838 }
  12839 static inline ULONG ID3D12LifetimeTracker_Release(ID3D12LifetimeTracker* This) {
  12840     return This->lpVtbl->Release(This);
  12841 }
  12842 /*** ID3D12Object methods ***/
  12843 static inline HRESULT ID3D12LifetimeTracker_GetPrivateData(ID3D12LifetimeTracker* This,REFGUID guid,UINT *data_size,void *data) {
  12844     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  12845 }
  12846 static inline HRESULT ID3D12LifetimeTracker_SetPrivateData(ID3D12LifetimeTracker* This,REFGUID guid,UINT data_size,const void *data) {
  12847     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  12848 }
  12849 static inline HRESULT ID3D12LifetimeTracker_SetPrivateDataInterface(ID3D12LifetimeTracker* This,REFGUID guid,const IUnknown *data) {
  12850     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  12851 }
  12852 static inline HRESULT ID3D12LifetimeTracker_SetName(ID3D12LifetimeTracker* This,const WCHAR *name) {
  12853     return This->lpVtbl->SetName(This,name);
  12854 }
  12855 /*** ID3D12DeviceChild methods ***/
  12856 static inline HRESULT ID3D12LifetimeTracker_GetDevice(ID3D12LifetimeTracker* This,REFIID riid,void **device) {
  12857     return This->lpVtbl->GetDevice(This,riid,device);
  12858 }
  12859 /*** ID3D12LifetimeTracker methods ***/
  12860 static inline HRESULT ID3D12LifetimeTracker_DestroyOwnedObject(ID3D12LifetimeTracker* This,ID3D12DeviceChild *object) {
  12861     return This->lpVtbl->DestroyOwnedObject(This,object);
  12862 }
  12863 #endif
  12864 #endif
  12865 
  12866 #endif
  12867 
  12868 
  12869 #endif  /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
  12870 
  12871 typedef enum D3D12_META_COMMAND_PARAMETER_TYPE {
  12872     D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0x0,
  12873     D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 0x1,
  12874     D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 0x2,
  12875     D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 0x3,
  12876     D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 0x4
  12877 } D3D12_META_COMMAND_PARAMETER_TYPE;
  12878 typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS {
  12879     D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
  12880     D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
  12881 } D3D12_META_COMMAND_PARAMETER_FLAGS;
  12882 DEFINE_ENUM_FLAG_OPERATORS(D3D12_META_COMMAND_PARAMETER_FLAGS);
  12883 typedef enum D3D12_META_COMMAND_PARAMETER_STAGE {
  12884     D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0x0,
  12885     D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 0x1,
  12886     D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 0x2
  12887 } D3D12_META_COMMAND_PARAMETER_STAGE;
  12888 typedef struct D3D12_META_COMMAND_PARAMETER_DESC {
  12889     const WCHAR *Name;
  12890     D3D12_META_COMMAND_PARAMETER_TYPE Type;
  12891     D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
  12892     D3D12_RESOURCE_STATES RequiredResourceState;
  12893     UINT StructureOffset;
  12894 } D3D12_META_COMMAND_PARAMETER_DESC;
  12895 typedef enum D3D12_GRAPHICS_STATES {
  12896     D3D12_GRAPHICS_STATE_NONE = 0x0,
  12897     D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = 0x1,
  12898     D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = 0x2,
  12899     D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = 0x4,
  12900     D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = 0x8,
  12901     D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = 0x10,
  12902     D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = 0x20,
  12903     D3D12_GRAPHICS_STATE_RS_VIEWPORTS = 0x40,
  12904     D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = 0x80,
  12905     D3D12_GRAPHICS_STATE_PREDICATION = 0x100,
  12906     D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = 0x200,
  12907     D3D12_GRAPHICS_STATE_OM_STENCIL_REF = 0x400,
  12908     D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = 0x800,
  12909     D3D12_GRAPHICS_STATE_PIPELINE_STATE = 0x1000,
  12910     D3D12_GRAPHICS_STATE_SO_TARGETS = 0x2000,
  12911     D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = 0x4000,
  12912     D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = 0x8000,
  12913     D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = 0x10000
  12914 } D3D12_GRAPHICS_STATES;
  12915 DEFINE_ENUM_FLAG_OPERATORS(D3D12_GRAPHICS_STATES);
  12916 typedef struct D3D12_META_COMMAND_DESC {
  12917     GUID Id;
  12918     const WCHAR *Name;
  12919     D3D12_GRAPHICS_STATES InitializationDirtyState;
  12920     D3D12_GRAPHICS_STATES ExecutionDirtyState;
  12921 } D3D12_META_COMMAND_DESC;
  12922 /*****************************************************************************
  12923  * ID3D12StateObject interface
  12924  */
  12925 #ifndef __ID3D12StateObject_INTERFACE_DEFINED__
  12926 #define __ID3D12StateObject_INTERFACE_DEFINED__
  12927 
  12928 DEFINE_GUID(IID_ID3D12StateObject, 0x47016943, 0xfca8, 0x4594, 0x93,0xea, 0xaf,0x25,0x8b,0x55,0x34,0x6d);
  12929 #if defined(__cplusplus) && !defined(CINTERFACE)
  12930 MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
  12931 ID3D12StateObject : public ID3D12Pageable
  12932 {
  12933 };
  12934 #ifdef __CRT_UUID_DECL
  12935 __CRT_UUID_DECL(ID3D12StateObject, 0x47016943, 0xfca8, 0x4594, 0x93,0xea, 0xaf,0x25,0x8b,0x55,0x34,0x6d)
  12936 #endif
  12937 #else
  12938 typedef struct ID3D12StateObjectVtbl {
  12939     BEGIN_INTERFACE
  12940 
  12941     /*** IUnknown methods ***/
  12942     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  12943         ID3D12StateObject *This,
  12944         REFIID riid,
  12945         void **ppvObject);
  12946 
  12947     ULONG (STDMETHODCALLTYPE *AddRef)(
  12948         ID3D12StateObject *This);
  12949 
  12950     ULONG (STDMETHODCALLTYPE *Release)(
  12951         ID3D12StateObject *This);
  12952 
  12953     /*** ID3D12Object methods ***/
  12954     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  12955         ID3D12StateObject *This,
  12956         REFGUID guid,
  12957         UINT *data_size,
  12958         void *data);
  12959 
  12960     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  12961         ID3D12StateObject *This,
  12962         REFGUID guid,
  12963         UINT data_size,
  12964         const void *data);
  12965 
  12966     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  12967         ID3D12StateObject *This,
  12968         REFGUID guid,
  12969         const IUnknown *data);
  12970 
  12971     HRESULT (STDMETHODCALLTYPE *SetName)(
  12972         ID3D12StateObject *This,
  12973         const WCHAR *name);
  12974 
  12975     /*** ID3D12DeviceChild methods ***/
  12976     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  12977         ID3D12StateObject *This,
  12978         REFIID riid,
  12979         void **device);
  12980 
  12981     END_INTERFACE
  12982 } ID3D12StateObjectVtbl;
  12983 
  12984 interface ID3D12StateObject {
  12985     CONST_VTBL ID3D12StateObjectVtbl* lpVtbl;
  12986 };
  12987 
  12988 #ifdef COBJMACROS
  12989 #ifndef WIDL_C_INLINE_WRAPPERS
  12990 /*** IUnknown methods ***/
  12991 #define ID3D12StateObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  12992 #define ID3D12StateObject_AddRef(This) (This)->lpVtbl->AddRef(This)
  12993 #define ID3D12StateObject_Release(This) (This)->lpVtbl->Release(This)
  12994 /*** ID3D12Object methods ***/
  12995 #define ID3D12StateObject_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  12996 #define ID3D12StateObject_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  12997 #define ID3D12StateObject_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  12998 #define ID3D12StateObject_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  12999 /*** ID3D12DeviceChild methods ***/
  13000 #define ID3D12StateObject_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  13001 #else
  13002 /*** IUnknown methods ***/
  13003 static inline HRESULT ID3D12StateObject_QueryInterface(ID3D12StateObject* This,REFIID riid,void **ppvObject) {
  13004     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  13005 }
  13006 static inline ULONG ID3D12StateObject_AddRef(ID3D12StateObject* This) {
  13007     return This->lpVtbl->AddRef(This);
  13008 }
  13009 static inline ULONG ID3D12StateObject_Release(ID3D12StateObject* This) {
  13010     return This->lpVtbl->Release(This);
  13011 }
  13012 /*** ID3D12Object methods ***/
  13013 static inline HRESULT ID3D12StateObject_GetPrivateData(ID3D12StateObject* This,REFGUID guid,UINT *data_size,void *data) {
  13014     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  13015 }
  13016 static inline HRESULT ID3D12StateObject_SetPrivateData(ID3D12StateObject* This,REFGUID guid,UINT data_size,const void *data) {
  13017     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  13018 }
  13019 static inline HRESULT ID3D12StateObject_SetPrivateDataInterface(ID3D12StateObject* This,REFGUID guid,const IUnknown *data) {
  13020     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  13021 }
  13022 static inline HRESULT ID3D12StateObject_SetName(ID3D12StateObject* This,const WCHAR *name) {
  13023     return This->lpVtbl->SetName(This,name);
  13024 }
  13025 /*** ID3D12DeviceChild methods ***/
  13026 static inline HRESULT ID3D12StateObject_GetDevice(ID3D12StateObject* This,REFIID riid,void **device) {
  13027     return This->lpVtbl->GetDevice(This,riid,device);
  13028 }
  13029 #endif
  13030 #endif
  13031 
  13032 #endif
  13033 
  13034 
  13035 #endif  /* __ID3D12StateObject_INTERFACE_DEFINED__ */
  13036 
  13037 /*****************************************************************************
  13038  * ID3D12StateObjectProperties interface
  13039  */
  13040 #ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
  13041 #define __ID3D12StateObjectProperties_INTERFACE_DEFINED__
  13042 
  13043 DEFINE_GUID(IID_ID3D12StateObjectProperties, 0xde5fa827, 0x9bf9, 0x4f26, 0x89,0xff, 0xd7,0xf5,0x6f,0xde,0x38,0x60);
  13044 #if defined(__cplusplus) && !defined(CINTERFACE)
  13045 MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
  13046 ID3D12StateObjectProperties : public IUnknown
  13047 {
  13048     virtual void * STDMETHODCALLTYPE GetShaderIdentifier(
  13049         const WCHAR *export_name) = 0;
  13050 
  13051     virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize(
  13052         const WCHAR *export_name) = 0;
  13053 
  13054     virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize(
  13055         ) = 0;
  13056 
  13057     virtual void STDMETHODCALLTYPE SetPipelineStackSize(
  13058         UINT64 pipeline_stack_size_in_bytes) = 0;
  13059 
  13060 };
  13061 #ifdef __CRT_UUID_DECL
  13062 __CRT_UUID_DECL(ID3D12StateObjectProperties, 0xde5fa827, 0x9bf9, 0x4f26, 0x89,0xff, 0xd7,0xf5,0x6f,0xde,0x38,0x60)
  13063 #endif
  13064 #else
  13065 typedef struct ID3D12StateObjectPropertiesVtbl {
  13066     BEGIN_INTERFACE
  13067 
  13068     /*** IUnknown methods ***/
  13069     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  13070         ID3D12StateObjectProperties *This,
  13071         REFIID riid,
  13072         void **ppvObject);
  13073 
  13074     ULONG (STDMETHODCALLTYPE *AddRef)(
  13075         ID3D12StateObjectProperties *This);
  13076 
  13077     ULONG (STDMETHODCALLTYPE *Release)(
  13078         ID3D12StateObjectProperties *This);
  13079 
  13080     /*** ID3D12StateObjectProperties methods ***/
  13081     void * (STDMETHODCALLTYPE *GetShaderIdentifier)(
  13082         ID3D12StateObjectProperties *This,
  13083         const WCHAR *export_name);
  13084 
  13085     UINT64 (STDMETHODCALLTYPE *GetShaderStackSize)(
  13086         ID3D12StateObjectProperties *This,
  13087         const WCHAR *export_name);
  13088 
  13089     UINT64 (STDMETHODCALLTYPE *GetPipelineStackSize)(
  13090         ID3D12StateObjectProperties *This);
  13091 
  13092     void (STDMETHODCALLTYPE *SetPipelineStackSize)(
  13093         ID3D12StateObjectProperties *This,
  13094         UINT64 pipeline_stack_size_in_bytes);
  13095 
  13096     END_INTERFACE
  13097 } ID3D12StateObjectPropertiesVtbl;
  13098 
  13099 interface ID3D12StateObjectProperties {
  13100     CONST_VTBL ID3D12StateObjectPropertiesVtbl* lpVtbl;
  13101 };
  13102 
  13103 #ifdef COBJMACROS
  13104 #ifndef WIDL_C_INLINE_WRAPPERS
  13105 /*** IUnknown methods ***/
  13106 #define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  13107 #define ID3D12StateObjectProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
  13108 #define ID3D12StateObjectProperties_Release(This) (This)->lpVtbl->Release(This)
  13109 /*** ID3D12StateObjectProperties methods ***/
  13110 #define ID3D12StateObjectProperties_GetShaderIdentifier(This,export_name) (This)->lpVtbl->GetShaderIdentifier(This,export_name)
  13111 #define ID3D12StateObjectProperties_GetShaderStackSize(This,export_name) (This)->lpVtbl->GetShaderStackSize(This,export_name)
  13112 #define ID3D12StateObjectProperties_GetPipelineStackSize(This) (This)->lpVtbl->GetPipelineStackSize(This)
  13113 #define ID3D12StateObjectProperties_SetPipelineStackSize(This,pipeline_stack_size_in_bytes) (This)->lpVtbl->SetPipelineStackSize(This,pipeline_stack_size_in_bytes)
  13114 #else
  13115 /*** IUnknown methods ***/
  13116 static inline HRESULT ID3D12StateObjectProperties_QueryInterface(ID3D12StateObjectProperties* This,REFIID riid,void **ppvObject) {
  13117     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  13118 }
  13119 static inline ULONG ID3D12StateObjectProperties_AddRef(ID3D12StateObjectProperties* This) {
  13120     return This->lpVtbl->AddRef(This);
  13121 }
  13122 static inline ULONG ID3D12StateObjectProperties_Release(ID3D12StateObjectProperties* This) {
  13123     return This->lpVtbl->Release(This);
  13124 }
  13125 /*** ID3D12StateObjectProperties methods ***/
  13126 static inline void * ID3D12StateObjectProperties_GetShaderIdentifier(ID3D12StateObjectProperties* This,const WCHAR *export_name) {
  13127     return This->lpVtbl->GetShaderIdentifier(This,export_name);
  13128 }
  13129 static inline UINT64 ID3D12StateObjectProperties_GetShaderStackSize(ID3D12StateObjectProperties* This,const WCHAR *export_name) {
  13130     return This->lpVtbl->GetShaderStackSize(This,export_name);
  13131 }
  13132 static inline UINT64 ID3D12StateObjectProperties_GetPipelineStackSize(ID3D12StateObjectProperties* This) {
  13133     return This->lpVtbl->GetPipelineStackSize(This);
  13134 }
  13135 static inline void ID3D12StateObjectProperties_SetPipelineStackSize(ID3D12StateObjectProperties* This,UINT64 pipeline_stack_size_in_bytes) {
  13136     This->lpVtbl->SetPipelineStackSize(This,pipeline_stack_size_in_bytes);
  13137 }
  13138 #endif
  13139 #endif
  13140 
  13141 #endif
  13142 
  13143 
  13144 #endif  /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
  13145 
  13146 typedef enum D3D12_STATE_SUBOBJECT_TYPE {
  13147     D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0x0,
  13148     D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 0x1,
  13149     D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 0x2,
  13150     D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 0x3,
  13151     D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 0x5,
  13152     D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 0x6,
  13153     D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 0x7,
  13154     D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 0x8,
  13155     D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 0x9,
  13156     D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 0xa,
  13157     D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 0xb,
  13158     D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 0xc,
  13159     D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = 0xd
  13160 } D3D12_STATE_SUBOBJECT_TYPE;
  13161 typedef struct D3D12_STATE_SUBOBJECT {
  13162     D3D12_STATE_SUBOBJECT_TYPE Type;
  13163     const void *pDesc;
  13164 } D3D12_STATE_SUBOBJECT;
  13165 typedef enum D3D12_STATE_OBJECT_FLAGS {
  13166     D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
  13167     D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
  13168     D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
  13169     D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
  13170 } D3D12_STATE_OBJECT_FLAGS;
  13171 DEFINE_ENUM_FLAG_OPERATORS(D3D12_STATE_OBJECT_FLAGS);
  13172 typedef struct D3D12_STATE_OBJECT_CONFIG {
  13173     D3D12_STATE_OBJECT_FLAGS Flags;
  13174 } D3D12_STATE_OBJECT_CONFIG;
  13175 typedef struct D3D12_GLOBAL_ROOT_SIGNATURE {
  13176     ID3D12RootSignature *pGlobalRootSignature;
  13177 } D3D12_GLOBAL_ROOT_SIGNATURE;
  13178 typedef struct D3D12_LOCAL_ROOT_SIGNATURE {
  13179     ID3D12RootSignature *pLocalRootSignature;
  13180 } D3D12_LOCAL_ROOT_SIGNATURE;
  13181 typedef struct D3D12_NODE_MASK {
  13182     UINT NodeMask;
  13183 } D3D12_NODE_MASK;
  13184 typedef enum D3D12_EXPORT_FLAGS {
  13185     D3D12_EXPORT_FLAG_NONE = 0x0
  13186 } D3D12_EXPORT_FLAGS;
  13187 DEFINE_ENUM_FLAG_OPERATORS(D3D12_EXPORT_FLAGS);
  13188 typedef struct D3D12_EXPORT_DESC {
  13189     const WCHAR *Name;
  13190     const WCHAR *ExportToRename;
  13191     D3D12_EXPORT_FLAGS Flags;
  13192 } D3D12_EXPORT_DESC;
  13193 typedef struct D3D12_DXIL_LIBRARY_DESC {
  13194     D3D12_SHADER_BYTECODE DXILLibrary;
  13195     UINT NumExports;
  13196     D3D12_EXPORT_DESC *pExports;
  13197 } D3D12_DXIL_LIBRARY_DESC;
  13198 typedef struct D3D12_EXISTING_COLLECTION_DESC {
  13199     ID3D12StateObject *pExistingCollection;
  13200     UINT NumExports;
  13201     D3D12_EXPORT_DESC *pExports;
  13202 } D3D12_EXISTING_COLLECTION_DESC;
  13203 typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION {
  13204     const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
  13205     UINT NumExports;
  13206     const WCHAR **pExports;
  13207 } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
  13208 typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION {
  13209     const WCHAR *SubobjectToAssociate;
  13210     UINT NumExports;
  13211     const WCHAR **pExports;
  13212 } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
  13213 typedef enum D3D12_HIT_GROUP_TYPE {
  13214     D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
  13215     D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1
  13216 } D3D12_HIT_GROUP_TYPE;
  13217 typedef struct D3D12_HIT_GROUP_DESC {
  13218     const WCHAR *HitGroupExport;
  13219     D3D12_HIT_GROUP_TYPE Type;
  13220     const WCHAR *AnyHitShaderImport;
  13221     const WCHAR *ClosestHitShaderImport;
  13222     const WCHAR *IntersectionShaderImport;
  13223 } D3D12_HIT_GROUP_DESC;
  13224 typedef struct D3D12_RAYTRACING_SHADER_CONFIG {
  13225     UINT MaxPayloadSizeInBytes;
  13226     UINT MaxAttributeSizeInBytes;
  13227 } D3D12_RAYTRACING_SHADER_CONFIG;
  13228 typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG {
  13229     UINT MaxTraceRecursionDepth;
  13230 } D3D12_RAYTRACING_PIPELINE_CONFIG;
  13231 typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS {
  13232     D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
  13233     D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
  13234     D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
  13235 } D3D12_RAYTRACING_PIPELINE_FLAGS;
  13236 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_PIPELINE_FLAGS);
  13237 typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1 {
  13238     UINT MaxTraceRecursionDepth;
  13239     D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
  13240 } D3D12_RAYTRACING_PIPELINE_CONFIG1;
  13241 typedef enum D3D12_STATE_OBJECT_TYPE {
  13242     D3D12_STATE_OBJECT_TYPE_COLLECTION = 0x0,
  13243     D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 0x3
  13244 } D3D12_STATE_OBJECT_TYPE;
  13245 typedef struct D3D12_STATE_OBJECT_DESC {
  13246     D3D12_STATE_OBJECT_TYPE Type;
  13247     UINT NumSubobjects;
  13248     const D3D12_STATE_SUBOBJECT *pSubobjects;
  13249 } D3D12_STATE_OBJECT_DESC;
  13250 typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS {
  13251     D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
  13252     D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
  13253     D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
  13254 } D3D12_RAYTRACING_GEOMETRY_FLAGS;
  13255 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_GEOMETRY_FLAGS);
  13256 typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE {
  13257     D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0x0,
  13258     D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = 0x1
  13259 } D3D12_RAYTRACING_GEOMETRY_TYPE;
  13260 typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS {
  13261     D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
  13262     D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
  13263     D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
  13264     D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
  13265     D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
  13266 } D3D12_RAYTRACING_INSTANCE_FLAGS;
  13267 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_INSTANCE_FLAGS);
  13268 typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE {
  13269     D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
  13270     UINT64 StrideInBytes;
  13271 } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
  13272 typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE {
  13273     D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
  13274     UINT64 SizeInBytes;
  13275 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
  13276 typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE {
  13277     D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
  13278     UINT64 SizeInBytes;
  13279     UINT64 StrideInBytes;
  13280 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
  13281 typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC {
  13282     D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
  13283     DXGI_FORMAT IndexFormat;
  13284     DXGI_FORMAT VertexFormat;
  13285     UINT IndexCount;
  13286     UINT VertexCount;
  13287     D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
  13288     D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
  13289 } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
  13290 typedef struct D3D12_RAYTRACING_AABB {
  13291     FLOAT MinX;
  13292     FLOAT MinY;
  13293     FLOAT MinZ;
  13294     FLOAT MaxX;
  13295     FLOAT MaxY;
  13296     FLOAT MaxZ;
  13297 } D3D12_RAYTRACING_AABB;
  13298 typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC {
  13299     UINT64 AABBCount;
  13300     D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
  13301 } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
  13302 typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  13303     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x0,
  13304     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
  13305     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
  13306     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
  13307     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
  13308     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  13309     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
  13310 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
  13311 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS);
  13312 typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  13313     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
  13314     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
  13315     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
  13316     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
  13317     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
  13318 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
  13319 typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE {
  13320     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
  13321     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
  13322 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
  13323 typedef enum D3D12_ELEMENTS_LAYOUT {
  13324     D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
  13325     D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
  13326 } D3D12_ELEMENTS_LAYOUT;
  13327 typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE {
  13328     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
  13329     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
  13330     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
  13331     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
  13332 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
  13333 typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC {
  13334     D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
  13335     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
  13336 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
  13337 typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC {
  13338     UINT64 CompactedSizeInBytes;
  13339 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
  13340 typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC {
  13341     UINT64 DecodedSizeInBytes;
  13342 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
  13343 typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER {
  13344     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
  13345     UINT NumDescs;
  13346 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
  13347 typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC {
  13348     UINT64 SerializedSizeInBytes;
  13349     UINT64 NumBottomLevelAccelerationStructurePointers;
  13350 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
  13351 typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER {
  13352     GUID DriverOpaqueGUID;
  13353     BYTE DriverOpaqueVersioningData[16];
  13354 } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
  13355 typedef enum D3D12_SERIALIZED_DATA_TYPE {
  13356     D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0
  13357 } D3D12_SERIALIZED_DATA_TYPE;
  13358 typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS {
  13359     D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
  13360     D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
  13361     D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
  13362     D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
  13363     D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4
  13364 } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
  13365 typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER {
  13366     D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
  13367     UINT64 SerializedSizeInBytesIncludingHeader;
  13368     UINT64 DeserializedSizeInBytes;
  13369     UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
  13370 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
  13371 typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC {
  13372     UINT64 CurrentSizeInBytes;
  13373 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
  13374 typedef struct D3D12_RAYTRACING_INSTANCE_DESC {
  13375     FLOAT Transform[3][4];
  13376     UINT InstanceID : 24;
  13377     UINT InstanceMask : 8;
  13378     UINT InstanceContributionToHitGroupIndex : 24;
  13379     UINT Flags : 8;
  13380     D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
  13381 } D3D12_RAYTRACING_INSTANCE_DESC;
  13382 typedef struct D3D12_RAYTRACING_GEOMETRY_DESC {
  13383     D3D12_RAYTRACING_GEOMETRY_TYPE Type;
  13384     D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
  13385     __C89_NAMELESS union {
  13386         D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
  13387         D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
  13388     } __C89_NAMELESSUNIONNAME;
  13389 } D3D12_RAYTRACING_GEOMETRY_DESC;
  13390 typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS {
  13391     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
  13392     D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
  13393     UINT NumDescs;
  13394     D3D12_ELEMENTS_LAYOUT DescsLayout;
  13395     __C89_NAMELESS union {
  13396         D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
  13397         const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
  13398         const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
  13399     } __C89_NAMELESSUNIONNAME;
  13400 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
  13401 typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC {
  13402     D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
  13403     D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
  13404     D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
  13405     D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
  13406 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
  13407 typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO {
  13408     UINT64 ResultDataMaxSizeInBytes;
  13409     UINT64 ScratchDataSizeInBytes;
  13410     UINT64 UpdateScratchDataSizeInBytes;
  13411 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
  13412 typedef enum D3D12_RAY_FLAGS {
  13413     D3D12_RAY_FLAG_NONE = 0x0,
  13414     D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
  13415     D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
  13416     D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
  13417     D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
  13418     D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
  13419     D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
  13420     D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
  13421     D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
  13422     D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
  13423     D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
  13424 } D3D12_RAY_FLAGS;
  13425 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAY_FLAGS);
  13426 typedef enum D3D12_HIT_KIND {
  13427     D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
  13428     D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff
  13429 } D3D12_HIT_KIND;
  13430 /*****************************************************************************
  13431  * ID3D12Device5 interface
  13432  */
  13433 #ifndef __ID3D12Device5_INTERFACE_DEFINED__
  13434 #define __ID3D12Device5_INTERFACE_DEFINED__
  13435 
  13436 DEFINE_GUID(IID_ID3D12Device5, 0x8b4f173b, 0x2fea, 0x4b80, 0x8f,0x58, 0x43,0x07,0x19,0x1a,0xb9,0x5d);
  13437 #if defined(__cplusplus) && !defined(CINTERFACE)
  13438 MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
  13439 ID3D12Device5 : public ID3D12Device4
  13440 {
  13441     virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker(
  13442         ID3D12LifetimeOwner *owner,
  13443         REFIID riid,
  13444         void **tracker) = 0;
  13445 
  13446     virtual void STDMETHODCALLTYPE RemoveDevice(
  13447         ) = 0;
  13448 
  13449     virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands(
  13450         UINT *meta_commands_count,
  13451         D3D12_META_COMMAND_DESC *descs) = 0;
  13452 
  13453     virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters(
  13454         REFGUID command_id,
  13455         D3D12_META_COMMAND_PARAMETER_STAGE stage,
  13456         UINT *total_structure_size_in_bytes,
  13457         UINT *parameter_count,
  13458         D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs) = 0;
  13459 
  13460     virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand(
  13461         REFGUID command_id,
  13462         UINT node_mask,
  13463         const void *creation_parameters_data,
  13464         SIZE_T creation_parameters_data_size_in_bytes,
  13465         REFIID riid,
  13466         void **meta_command) = 0;
  13467 
  13468     virtual HRESULT STDMETHODCALLTYPE CreateStateObject(
  13469         const D3D12_STATE_OBJECT_DESC *desc,
  13470         REFIID riid,
  13471         void **state_object) = 0;
  13472 
  13473     virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo(
  13474         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,
  13475         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info) = 0;
  13476 
  13477     virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier(
  13478         D3D12_SERIALIZED_DATA_TYPE serialized_data_type,
  13479         const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check) = 0;
  13480 
  13481 };
  13482 #ifdef __CRT_UUID_DECL
  13483 __CRT_UUID_DECL(ID3D12Device5, 0x8b4f173b, 0x2fea, 0x4b80, 0x8f,0x58, 0x43,0x07,0x19,0x1a,0xb9,0x5d)
  13484 #endif
  13485 #else
  13486 typedef struct ID3D12Device5Vtbl {
  13487     BEGIN_INTERFACE
  13488 
  13489     /*** IUnknown methods ***/
  13490     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  13491         ID3D12Device5 *This,
  13492         REFIID riid,
  13493         void **ppvObject);
  13494 
  13495     ULONG (STDMETHODCALLTYPE *AddRef)(
  13496         ID3D12Device5 *This);
  13497 
  13498     ULONG (STDMETHODCALLTYPE *Release)(
  13499         ID3D12Device5 *This);
  13500 
  13501     /*** ID3D12Object methods ***/
  13502     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  13503         ID3D12Device5 *This,
  13504         REFGUID guid,
  13505         UINT *data_size,
  13506         void *data);
  13507 
  13508     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  13509         ID3D12Device5 *This,
  13510         REFGUID guid,
  13511         UINT data_size,
  13512         const void *data);
  13513 
  13514     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  13515         ID3D12Device5 *This,
  13516         REFGUID guid,
  13517         const IUnknown *data);
  13518 
  13519     HRESULT (STDMETHODCALLTYPE *SetName)(
  13520         ID3D12Device5 *This,
  13521         const WCHAR *name);
  13522 
  13523     /*** ID3D12Device methods ***/
  13524     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  13525         ID3D12Device5 *This);
  13526 
  13527     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  13528         ID3D12Device5 *This,
  13529         const D3D12_COMMAND_QUEUE_DESC *desc,
  13530         REFIID riid,
  13531         void **command_queue);
  13532 
  13533     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  13534         ID3D12Device5 *This,
  13535         D3D12_COMMAND_LIST_TYPE type,
  13536         REFIID riid,
  13537         void **command_allocator);
  13538 
  13539     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  13540         ID3D12Device5 *This,
  13541         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  13542         REFIID riid,
  13543         void **pipeline_state);
  13544 
  13545     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  13546         ID3D12Device5 *This,
  13547         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  13548         REFIID riid,
  13549         void **pipeline_state);
  13550 
  13551     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  13552         ID3D12Device5 *This,
  13553         UINT node_mask,
  13554         D3D12_COMMAND_LIST_TYPE type,
  13555         ID3D12CommandAllocator *command_allocator,
  13556         ID3D12PipelineState *initial_pipeline_state,
  13557         REFIID riid,
  13558         void **command_list);
  13559 
  13560     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  13561         ID3D12Device5 *This,
  13562         D3D12_FEATURE feature,
  13563         void *feature_data,
  13564         UINT feature_data_size);
  13565 
  13566     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  13567         ID3D12Device5 *This,
  13568         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  13569         REFIID riid,
  13570         void **descriptor_heap);
  13571 
  13572     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  13573         ID3D12Device5 *This,
  13574         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  13575 
  13576     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  13577         ID3D12Device5 *This,
  13578         UINT node_mask,
  13579         const void *bytecode,
  13580         SIZE_T bytecode_length,
  13581         REFIID riid,
  13582         void **root_signature);
  13583 
  13584     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  13585         ID3D12Device5 *This,
  13586         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  13587         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  13588 
  13589     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  13590         ID3D12Device5 *This,
  13591         ID3D12Resource *resource,
  13592         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  13593         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  13594 
  13595     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  13596         ID3D12Device5 *This,
  13597         ID3D12Resource *resource,
  13598         ID3D12Resource *counter_resource,
  13599         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  13600         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  13601 
  13602     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  13603         ID3D12Device5 *This,
  13604         ID3D12Resource *resource,
  13605         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  13606         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  13607 
  13608     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  13609         ID3D12Device5 *This,
  13610         ID3D12Resource *resource,
  13611         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  13612         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  13613 
  13614     void (STDMETHODCALLTYPE *CreateSampler)(
  13615         ID3D12Device5 *This,
  13616         const D3D12_SAMPLER_DESC *desc,
  13617         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  13618 
  13619     void (STDMETHODCALLTYPE *CopyDescriptors)(
  13620         ID3D12Device5 *This,
  13621         UINT dst_descriptor_range_count,
  13622         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  13623         const UINT *dst_descriptor_range_sizes,
  13624         UINT src_descriptor_range_count,
  13625         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  13626         const UINT *src_descriptor_range_sizes,
  13627         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  13628 
  13629     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  13630         ID3D12Device5 *This,
  13631         UINT descriptor_count,
  13632         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  13633         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  13634         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  13635 
  13636     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  13637         ID3D12Device5 *This,
  13638         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  13639         UINT visible_mask,
  13640         UINT reource_desc_count,
  13641         const D3D12_RESOURCE_DESC *resource_descs);
  13642 
  13643     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  13644         ID3D12Device5 *This,
  13645         D3D12_HEAP_PROPERTIES *__ret,
  13646         UINT node_mask,
  13647         D3D12_HEAP_TYPE heap_type);
  13648 
  13649     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  13650         ID3D12Device5 *This,
  13651         const D3D12_HEAP_PROPERTIES *heap_properties,
  13652         D3D12_HEAP_FLAGS heap_flags,
  13653         const D3D12_RESOURCE_DESC *desc,
  13654         D3D12_RESOURCE_STATES initial_state,
  13655         const D3D12_CLEAR_VALUE *optimized_clear_value,
  13656         REFIID riid,
  13657         void **resource);
  13658 
  13659     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  13660         ID3D12Device5 *This,
  13661         const D3D12_HEAP_DESC *desc,
  13662         REFIID riid,
  13663         void **heap);
  13664 
  13665     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  13666         ID3D12Device5 *This,
  13667         ID3D12Heap *heap,
  13668         UINT64 heap_offset,
  13669         const D3D12_RESOURCE_DESC *desc,
  13670         D3D12_RESOURCE_STATES initial_state,
  13671         const D3D12_CLEAR_VALUE *optimized_clear_value,
  13672         REFIID riid,
  13673         void **resource);
  13674 
  13675     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  13676         ID3D12Device5 *This,
  13677         const D3D12_RESOURCE_DESC *desc,
  13678         D3D12_RESOURCE_STATES initial_state,
  13679         const D3D12_CLEAR_VALUE *optimized_clear_value,
  13680         REFIID riid,
  13681         void **resource);
  13682 
  13683     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  13684         ID3D12Device5 *This,
  13685         ID3D12DeviceChild *object,
  13686         const SECURITY_ATTRIBUTES *attributes,
  13687         DWORD access,
  13688         const WCHAR *name,
  13689         HANDLE *handle);
  13690 
  13691     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  13692         ID3D12Device5 *This,
  13693         HANDLE handle,
  13694         REFIID riid,
  13695         void **object);
  13696 
  13697     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  13698         ID3D12Device5 *This,
  13699         const WCHAR *name,
  13700         DWORD access,
  13701         HANDLE *handle);
  13702 
  13703     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  13704         ID3D12Device5 *This,
  13705         UINT object_count,
  13706         ID3D12Pageable *const *objects);
  13707 
  13708     HRESULT (STDMETHODCALLTYPE *Evict)(
  13709         ID3D12Device5 *This,
  13710         UINT object_count,
  13711         ID3D12Pageable *const *objects);
  13712 
  13713     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  13714         ID3D12Device5 *This,
  13715         UINT64 initial_value,
  13716         D3D12_FENCE_FLAGS flags,
  13717         REFIID riid,
  13718         void **fence);
  13719 
  13720     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  13721         ID3D12Device5 *This);
  13722 
  13723     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  13724         ID3D12Device5 *This,
  13725         const D3D12_RESOURCE_DESC *desc,
  13726         UINT first_sub_resource,
  13727         UINT sub_resource_count,
  13728         UINT64 base_offset,
  13729         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  13730         UINT *row_count,
  13731         UINT64 *row_size,
  13732         UINT64 *total_bytes);
  13733 
  13734     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  13735         ID3D12Device5 *This,
  13736         const D3D12_QUERY_HEAP_DESC *desc,
  13737         REFIID riid,
  13738         void **heap);
  13739 
  13740     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  13741         ID3D12Device5 *This,
  13742         WINBOOL enable);
  13743 
  13744     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  13745         ID3D12Device5 *This,
  13746         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  13747         ID3D12RootSignature *root_signature,
  13748         REFIID riid,
  13749         void **command_signature);
  13750 
  13751     void (STDMETHODCALLTYPE *GetResourceTiling)(
  13752         ID3D12Device5 *This,
  13753         ID3D12Resource *resource,
  13754         UINT *total_tile_count,
  13755         D3D12_PACKED_MIP_INFO *packed_mip_info,
  13756         D3D12_TILE_SHAPE *standard_tile_shape,
  13757         UINT *sub_resource_tiling_count,
  13758         UINT first_sub_resource_tiling,
  13759         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  13760 
  13761     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  13762         ID3D12Device5 *This,
  13763         LUID *__ret);
  13764 
  13765     /*** ID3D12Device1 methods ***/
  13766     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  13767         ID3D12Device5 *This,
  13768         const void *blob,
  13769         SIZE_T blob_size,
  13770         REFIID iid,
  13771         void **lib);
  13772 
  13773     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  13774         ID3D12Device5 *This,
  13775         ID3D12Fence *const *fences,
  13776         const UINT64 *values,
  13777         UINT fence_count,
  13778         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  13779         HANDLE event);
  13780 
  13781     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  13782         ID3D12Device5 *This,
  13783         UINT object_count,
  13784         ID3D12Pageable *const *objects,
  13785         const D3D12_RESIDENCY_PRIORITY *priorities);
  13786 
  13787     /*** ID3D12Device2 methods ***/
  13788     HRESULT (STDMETHODCALLTYPE *CreatePipelineState)(
  13789         ID3D12Device5 *This,
  13790         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  13791         REFIID riid,
  13792         void **pipeline_state);
  13793 
  13794     /*** ID3D12Device3 methods ***/
  13795     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromAddress)(
  13796         ID3D12Device5 *This,
  13797         const void *address,
  13798         REFIID riid,
  13799         void **heap);
  13800 
  13801     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping)(
  13802         ID3D12Device5 *This,
  13803         HANDLE file_mapping,
  13804         REFIID riid,
  13805         void **heap);
  13806 
  13807     HRESULT (STDMETHODCALLTYPE *EnqueueMakeResident)(
  13808         ID3D12Device5 *This,
  13809         D3D12_RESIDENCY_FLAGS flags,
  13810         UINT num_objects,
  13811         ID3D12Pageable *const *objects,
  13812         ID3D12Fence *fence,
  13813         UINT64 fence_value);
  13814 
  13815     /*** ID3D12Device4 methods ***/
  13816     HRESULT (STDMETHODCALLTYPE *CreateCommandList1)(
  13817         ID3D12Device5 *This,
  13818         UINT node_mask,
  13819         D3D12_COMMAND_LIST_TYPE type,
  13820         D3D12_COMMAND_LIST_FLAGS flags,
  13821         REFIID riid,
  13822         void **command_list);
  13823 
  13824     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession)(
  13825         ID3D12Device5 *This,
  13826         const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,
  13827         REFIID riid,
  13828         void **session);
  13829 
  13830     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource1)(
  13831         ID3D12Device5 *This,
  13832         const D3D12_HEAP_PROPERTIES *heap_properties,
  13833         D3D12_HEAP_FLAGS heap_flags,
  13834         const D3D12_RESOURCE_DESC *desc,
  13835         D3D12_RESOURCE_STATES initial_resource_state,
  13836         const D3D12_CLEAR_VALUE *optimized_clear_value,
  13837         ID3D12ProtectedResourceSession *protected_session,
  13838         REFIID riid_resource,
  13839         void **resource);
  13840 
  13841     HRESULT (STDMETHODCALLTYPE *CreateHeap1)(
  13842         ID3D12Device5 *This,
  13843         const D3D12_HEAP_DESC *desc,
  13844         ID3D12ProtectedResourceSession *protected_session,
  13845         REFIID riid,
  13846         void **heap);
  13847 
  13848     HRESULT (STDMETHODCALLTYPE *CreateReservedResource1)(
  13849         ID3D12Device5 *This,
  13850         const D3D12_RESOURCE_DESC *desc,
  13851         D3D12_RESOURCE_STATES initial_state,
  13852         const D3D12_CLEAR_VALUE *optimized_clear_value,
  13853         ID3D12ProtectedResourceSession *protected_session,
  13854         REFIID riid,
  13855         void **resource);
  13856 
  13857     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo1)(
  13858         ID3D12Device5 *This,
  13859         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  13860         UINT visible_mask,
  13861         UINT resource_descs_count,
  13862         const D3D12_RESOURCE_DESC *resource_descs,
  13863         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  13864 
  13865     /*** ID3D12Device5 methods ***/
  13866     HRESULT (STDMETHODCALLTYPE *CreateLifetimeTracker)(
  13867         ID3D12Device5 *This,
  13868         ID3D12LifetimeOwner *owner,
  13869         REFIID riid,
  13870         void **tracker);
  13871 
  13872     void (STDMETHODCALLTYPE *RemoveDevice)(
  13873         ID3D12Device5 *This);
  13874 
  13875     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommands)(
  13876         ID3D12Device5 *This,
  13877         UINT *meta_commands_count,
  13878         D3D12_META_COMMAND_DESC *descs);
  13879 
  13880     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommandParameters)(
  13881         ID3D12Device5 *This,
  13882         REFGUID command_id,
  13883         D3D12_META_COMMAND_PARAMETER_STAGE stage,
  13884         UINT *total_structure_size_in_bytes,
  13885         UINT *parameter_count,
  13886         D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs);
  13887 
  13888     HRESULT (STDMETHODCALLTYPE *CreateMetaCommand)(
  13889         ID3D12Device5 *This,
  13890         REFGUID command_id,
  13891         UINT node_mask,
  13892         const void *creation_parameters_data,
  13893         SIZE_T creation_parameters_data_size_in_bytes,
  13894         REFIID riid,
  13895         void **meta_command);
  13896 
  13897     HRESULT (STDMETHODCALLTYPE *CreateStateObject)(
  13898         ID3D12Device5 *This,
  13899         const D3D12_STATE_OBJECT_DESC *desc,
  13900         REFIID riid,
  13901         void **state_object);
  13902 
  13903     void (STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo)(
  13904         ID3D12Device5 *This,
  13905         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,
  13906         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info);
  13907 
  13908     D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS (STDMETHODCALLTYPE *CheckDriverMatchingIdentifier)(
  13909         ID3D12Device5 *This,
  13910         D3D12_SERIALIZED_DATA_TYPE serialized_data_type,
  13911         const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check);
  13912 
  13913     END_INTERFACE
  13914 } ID3D12Device5Vtbl;
  13915 
  13916 interface ID3D12Device5 {
  13917     CONST_VTBL ID3D12Device5Vtbl* lpVtbl;
  13918 };
  13919 
  13920 #ifdef COBJMACROS
  13921 #ifndef WIDL_C_INLINE_WRAPPERS
  13922 /*** IUnknown methods ***/
  13923 #define ID3D12Device5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  13924 #define ID3D12Device5_AddRef(This) (This)->lpVtbl->AddRef(This)
  13925 #define ID3D12Device5_Release(This) (This)->lpVtbl->Release(This)
  13926 /*** ID3D12Object methods ***/
  13927 #define ID3D12Device5_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  13928 #define ID3D12Device5_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  13929 #define ID3D12Device5_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  13930 #define ID3D12Device5_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  13931 /*** ID3D12Device methods ***/
  13932 #define ID3D12Device5_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  13933 #define ID3D12Device5_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  13934 #define ID3D12Device5_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  13935 #define ID3D12Device5_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  13936 #define ID3D12Device5_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  13937 #define ID3D12Device5_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  13938 #define ID3D12Device5_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  13939 #define ID3D12Device5_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  13940 #define ID3D12Device5_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  13941 #define ID3D12Device5_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  13942 #define ID3D12Device5_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  13943 #define ID3D12Device5_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  13944 #define ID3D12Device5_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  13945 #define ID3D12Device5_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  13946 #define ID3D12Device5_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  13947 #define ID3D12Device5_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  13948 #define ID3D12Device5_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  13949 #define ID3D12Device5_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  13950 #define ID3D12Device5_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device5_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  13951 #define ID3D12Device5_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device5_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  13952 #define ID3D12Device5_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  13953 #define ID3D12Device5_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  13954 #define ID3D12Device5_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  13955 #define ID3D12Device5_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  13956 #define ID3D12Device5_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  13957 #define ID3D12Device5_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  13958 #define ID3D12Device5_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  13959 #define ID3D12Device5_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  13960 #define ID3D12Device5_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  13961 #define ID3D12Device5_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  13962 #define ID3D12Device5_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  13963 #define ID3D12Device5_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  13964 #define ID3D12Device5_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  13965 #define ID3D12Device5_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  13966 #define ID3D12Device5_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  13967 #define ID3D12Device5_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  13968 #define ID3D12Device5_GetAdapterLuid(This) ID3D12Device5_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  13969 /*** ID3D12Device1 methods ***/
  13970 #define ID3D12Device5_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  13971 #define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  13972 #define ID3D12Device5_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  13973 /*** ID3D12Device2 methods ***/
  13974 #define ID3D12Device5_CreatePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state)
  13975 /*** ID3D12Device3 methods ***/
  13976 #define ID3D12Device5_OpenExistingHeapFromAddress(This,address,riid,heap) (This)->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap)
  13977 #define ID3D12Device5_OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap) (This)->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap)
  13978 #define ID3D12Device5_EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value) (This)->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value)
  13979 /*** ID3D12Device4 methods ***/
  13980 #define ID3D12Device5_CreateCommandList1(This,node_mask,type,flags,riid,command_list) (This)->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list)
  13981 #define ID3D12Device5_CreateProtectedResourceSession(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session)
  13982 #define ID3D12Device5_CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  13983 #define ID3D12Device5_CreateHeap1(This,desc,protected_session,riid,heap) (This)->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap)
  13984 #define ID3D12Device5_CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource) (This)->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource)
  13985 #define ID3D12Device5_GetResourceAllocationInfo1(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device5_GetResourceAllocationInfo1_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  13986 /*** ID3D12Device5 methods ***/
  13987 #define ID3D12Device5_CreateLifetimeTracker(This,owner,riid,tracker) (This)->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker)
  13988 #define ID3D12Device5_RemoveDevice(This) (This)->lpVtbl->RemoveDevice(This)
  13989 #define ID3D12Device5_EnumerateMetaCommands(This,meta_commands_count,descs) (This)->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs)
  13990 #define ID3D12Device5_EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs) (This)->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs)
  13991 #define ID3D12Device5_CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command) (This)->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command)
  13992 #define ID3D12Device5_CreateStateObject(This,desc,riid,state_object) (This)->lpVtbl->CreateStateObject(This,desc,riid,state_object)
  13993 #define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info) (This)->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info)
  13994 #define ID3D12Device5_CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check) (This)->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check)
  13995 #else
  13996 /*** IUnknown methods ***/
  13997 static inline HRESULT ID3D12Device5_QueryInterface(ID3D12Device5* This,REFIID riid,void **ppvObject) {
  13998     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  13999 }
  14000 static inline ULONG ID3D12Device5_AddRef(ID3D12Device5* This) {
  14001     return This->lpVtbl->AddRef(This);
  14002 }
  14003 static inline ULONG ID3D12Device5_Release(ID3D12Device5* This) {
  14004     return This->lpVtbl->Release(This);
  14005 }
  14006 /*** ID3D12Object methods ***/
  14007 static inline HRESULT ID3D12Device5_GetPrivateData(ID3D12Device5* This,REFGUID guid,UINT *data_size,void *data) {
  14008     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  14009 }
  14010 static inline HRESULT ID3D12Device5_SetPrivateData(ID3D12Device5* This,REFGUID guid,UINT data_size,const void *data) {
  14011     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  14012 }
  14013 static inline HRESULT ID3D12Device5_SetPrivateDataInterface(ID3D12Device5* This,REFGUID guid,const IUnknown *data) {
  14014     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  14015 }
  14016 static inline HRESULT ID3D12Device5_SetName(ID3D12Device5* This,const WCHAR *name) {
  14017     return This->lpVtbl->SetName(This,name);
  14018 }
  14019 /*** ID3D12Device methods ***/
  14020 static inline UINT ID3D12Device5_GetNodeCount(ID3D12Device5* This) {
  14021     return This->lpVtbl->GetNodeCount(This);
  14022 }
  14023 static inline HRESULT ID3D12Device5_CreateCommandQueue(ID3D12Device5* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  14024     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  14025 }
  14026 static inline HRESULT ID3D12Device5_CreateCommandAllocator(ID3D12Device5* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  14027     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  14028 }
  14029 static inline HRESULT ID3D12Device5_CreateGraphicsPipelineState(ID3D12Device5* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  14030     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  14031 }
  14032 static inline HRESULT ID3D12Device5_CreateComputePipelineState(ID3D12Device5* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  14033     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  14034 }
  14035 static inline HRESULT ID3D12Device5_CreateCommandList(ID3D12Device5* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  14036     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  14037 }
  14038 static inline HRESULT ID3D12Device5_CheckFeatureSupport(ID3D12Device5* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  14039     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  14040 }
  14041 static inline HRESULT ID3D12Device5_CreateDescriptorHeap(ID3D12Device5* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  14042     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  14043 }
  14044 static inline UINT ID3D12Device5_GetDescriptorHandleIncrementSize(ID3D12Device5* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  14045     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  14046 }
  14047 static inline HRESULT ID3D12Device5_CreateRootSignature(ID3D12Device5* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  14048     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  14049 }
  14050 static inline void ID3D12Device5_CreateConstantBufferView(ID3D12Device5* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  14051     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  14052 }
  14053 static inline void ID3D12Device5_CreateShaderResourceView(ID3D12Device5* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  14054     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  14055 }
  14056 static inline void ID3D12Device5_CreateUnorderedAccessView(ID3D12Device5* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  14057     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  14058 }
  14059 static inline void ID3D12Device5_CreateRenderTargetView(ID3D12Device5* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  14060     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  14061 }
  14062 static inline void ID3D12Device5_CreateDepthStencilView(ID3D12Device5* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  14063     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  14064 }
  14065 static inline void ID3D12Device5_CreateSampler(ID3D12Device5* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  14066     This->lpVtbl->CreateSampler(This,desc,descriptor);
  14067 }
  14068 static inline void ID3D12Device5_CopyDescriptors(ID3D12Device5* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  14069     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  14070 }
  14071 static inline void ID3D12Device5_CopyDescriptorsSimple(ID3D12Device5* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  14072     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  14073 }
  14074 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device5_GetResourceAllocationInfo(ID3D12Device5* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  14075     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  14076     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  14077 }
  14078 static inline D3D12_HEAP_PROPERTIES ID3D12Device5_GetCustomHeapProperties(ID3D12Device5* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  14079     D3D12_HEAP_PROPERTIES __ret;
  14080     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  14081 }
  14082 static inline HRESULT ID3D12Device5_CreateCommittedResource(ID3D12Device5* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  14083     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  14084 }
  14085 static inline HRESULT ID3D12Device5_CreateHeap(ID3D12Device5* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  14086     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  14087 }
  14088 static inline HRESULT ID3D12Device5_CreatePlacedResource(ID3D12Device5* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  14089     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  14090 }
  14091 static inline HRESULT ID3D12Device5_CreateReservedResource(ID3D12Device5* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  14092     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  14093 }
  14094 static inline HRESULT ID3D12Device5_CreateSharedHandle(ID3D12Device5* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  14095     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  14096 }
  14097 static inline HRESULT ID3D12Device5_OpenSharedHandle(ID3D12Device5* This,HANDLE handle,REFIID riid,void **object) {
  14098     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  14099 }
  14100 static inline HRESULT ID3D12Device5_OpenSharedHandleByName(ID3D12Device5* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  14101     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  14102 }
  14103 static inline HRESULT ID3D12Device5_MakeResident(ID3D12Device5* This,UINT object_count,ID3D12Pageable *const *objects) {
  14104     return This->lpVtbl->MakeResident(This,object_count,objects);
  14105 }
  14106 static inline HRESULT ID3D12Device5_Evict(ID3D12Device5* This,UINT object_count,ID3D12Pageable *const *objects) {
  14107     return This->lpVtbl->Evict(This,object_count,objects);
  14108 }
  14109 static inline HRESULT ID3D12Device5_CreateFence(ID3D12Device5* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  14110     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  14111 }
  14112 static inline HRESULT ID3D12Device5_GetDeviceRemovedReason(ID3D12Device5* This) {
  14113     return This->lpVtbl->GetDeviceRemovedReason(This);
  14114 }
  14115 static inline void ID3D12Device5_GetCopyableFootprints(ID3D12Device5* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  14116     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  14117 }
  14118 static inline HRESULT ID3D12Device5_CreateQueryHeap(ID3D12Device5* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  14119     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  14120 }
  14121 static inline HRESULT ID3D12Device5_SetStablePowerState(ID3D12Device5* This,WINBOOL enable) {
  14122     return This->lpVtbl->SetStablePowerState(This,enable);
  14123 }
  14124 static inline HRESULT ID3D12Device5_CreateCommandSignature(ID3D12Device5* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  14125     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  14126 }
  14127 static inline void ID3D12Device5_GetResourceTiling(ID3D12Device5* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  14128     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  14129 }
  14130 static inline LUID ID3D12Device5_GetAdapterLuid(ID3D12Device5* This) {
  14131     LUID __ret;
  14132     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  14133 }
  14134 /*** ID3D12Device1 methods ***/
  14135 static inline HRESULT ID3D12Device5_CreatePipelineLibrary(ID3D12Device5* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  14136     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  14137 }
  14138 static inline HRESULT ID3D12Device5_SetEventOnMultipleFenceCompletion(ID3D12Device5* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  14139     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  14140 }
  14141 static inline HRESULT ID3D12Device5_SetResidencyPriority(ID3D12Device5* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  14142     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  14143 }
  14144 /*** ID3D12Device2 methods ***/
  14145 static inline HRESULT ID3D12Device5_CreatePipelineState(ID3D12Device5* This,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
  14146     return This->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state);
  14147 }
  14148 /*** ID3D12Device3 methods ***/
  14149 static inline HRESULT ID3D12Device5_OpenExistingHeapFromAddress(ID3D12Device5* This,const void *address,REFIID riid,void **heap) {
  14150     return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
  14151 }
  14152 static inline HRESULT ID3D12Device5_OpenExistingHeapFromFileMapping(ID3D12Device5* This,HANDLE file_mapping,REFIID riid,void **heap) {
  14153     return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
  14154 }
  14155 static inline HRESULT ID3D12Device5_EnqueueMakeResident(ID3D12Device5* This,D3D12_RESIDENCY_FLAGS flags,UINT num_objects,ID3D12Pageable *const *objects,ID3D12Fence *fence,UINT64 fence_value) {
  14156     return This->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value);
  14157 }
  14158 /*** ID3D12Device4 methods ***/
  14159 static inline HRESULT ID3D12Device5_CreateCommandList1(ID3D12Device5* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,D3D12_COMMAND_LIST_FLAGS flags,REFIID riid,void **command_list) {
  14160     return This->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list);
  14161 }
  14162 static inline HRESULT ID3D12Device5_CreateProtectedResourceSession(ID3D12Device5* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,REFIID riid,void **session) {
  14163     return This->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session);
  14164 }
  14165 static inline HRESULT ID3D12Device5_CreateCommittedResource1(ID3D12Device5* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  14166     return This->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  14167 }
  14168 static inline HRESULT ID3D12Device5_CreateHeap1(ID3D12Device5* This,const D3D12_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **heap) {
  14169     return This->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap);
  14170 }
  14171 static inline HRESULT ID3D12Device5_CreateReservedResource1(ID3D12Device5* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **resource) {
  14172     return This->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource);
  14173 }
  14174 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device5_GetResourceAllocationInfo1(ID3D12Device5* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  14175     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  14176     return *This->lpVtbl->GetResourceAllocationInfo1(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  14177 }
  14178 /*** ID3D12Device5 methods ***/
  14179 static inline HRESULT ID3D12Device5_CreateLifetimeTracker(ID3D12Device5* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
  14180     return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
  14181 }
  14182 static inline void ID3D12Device5_RemoveDevice(ID3D12Device5* This) {
  14183     This->lpVtbl->RemoveDevice(This);
  14184 }
  14185 static inline HRESULT ID3D12Device5_EnumerateMetaCommands(ID3D12Device5* This,UINT *meta_commands_count,D3D12_META_COMMAND_DESC *descs) {
  14186     return This->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs);
  14187 }
  14188 static inline HRESULT ID3D12Device5_EnumerateMetaCommandParameters(ID3D12Device5* This,REFGUID command_id,D3D12_META_COMMAND_PARAMETER_STAGE stage,UINT *total_structure_size_in_bytes,UINT *parameter_count,D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs) {
  14189     return This->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs);
  14190 }
  14191 static inline HRESULT ID3D12Device5_CreateMetaCommand(ID3D12Device5* This,REFGUID command_id,UINT node_mask,const void *creation_parameters_data,SIZE_T creation_parameters_data_size_in_bytes,REFIID riid,void **meta_command) {
  14192     return This->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command);
  14193 }
  14194 static inline HRESULT ID3D12Device5_CreateStateObject(ID3D12Device5* This,const D3D12_STATE_OBJECT_DESC *desc,REFIID riid,void **state_object) {
  14195     return This->lpVtbl->CreateStateObject(This,desc,riid,state_object);
  14196 }
  14197 static inline void ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(ID3D12Device5* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info) {
  14198     This->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info);
  14199 }
  14200 static inline D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ID3D12Device5_CheckDriverMatchingIdentifier(ID3D12Device5* This,D3D12_SERIALIZED_DATA_TYPE serialized_data_type,const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check) {
  14201     return This->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check);
  14202 }
  14203 #endif
  14204 #endif
  14205 
  14206 #endif
  14207 
  14208 
  14209 #endif  /* __ID3D12Device5_INTERFACE_DEFINED__ */
  14210 
  14211 typedef enum D3D12_AUTO_BREADCRUMB_OP {
  14212     D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0x0,
  14213     D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 0x1,
  14214     D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 0x2,
  14215     D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 0x3,
  14216     D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 0x4,
  14217     D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 0x5,
  14218     D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 0x6,
  14219     D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 0x7,
  14220     D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 0x8,
  14221     D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 0x9,
  14222     D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 0xa,
  14223     D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 0xb,
  14224     D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 0xc,
  14225     D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 0xd,
  14226     D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 0xe,
  14227     D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 0xf,
  14228     D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 0x10,
  14229     D3D12_AUTO_BREADCRUMB_OP_PRESENT = 0x11,
  14230     D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 0x12,
  14231     D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 0x13,
  14232     D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 0x14,
  14233     D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 0x15,
  14234     D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 0x16,
  14235     D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 0x17,
  14236     D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 0x18,
  14237     D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 0x19,
  14238     D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 0x1a,
  14239     D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 0x1b,
  14240     D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 0x1c,
  14241     D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 0x1d,
  14242     D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 0x1e,
  14243     D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 0x1f,
  14244     D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 0x20,
  14245     D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 0x21,
  14246     D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 0x22,
  14247     D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 0x23,
  14248     D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 0x24,
  14249     D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 0x25,
  14250     D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 0x26,
  14251     D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 0x27,
  14252     D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 0x28,
  14253     D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 0x29,
  14254     D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 0x2a,
  14255     D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 0x2b,
  14256     D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 0x2c
  14257 } D3D12_AUTO_BREADCRUMB_OP;
  14258 typedef struct D3D12_AUTO_BREADCRUMB_NODE {
  14259     const char *pCommandListDebugNameA;
  14260     const WCHAR *pCommandListDebugNameW;
  14261     const char *pCommandQueueDebugNameA;
  14262     const WCHAR *pCommandQueueDebugNameW;
  14263     ID3D12GraphicsCommandList *pCommandList;
  14264     ID3D12CommandQueue *pCommandQueue;
  14265     UINT32 BreadcrumbCount;
  14266     const UINT32 *pLastBreadcrumbValue;
  14267     const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
  14268     const struct D3D12_AUTO_BREADCRUMB_NODE *pNext;
  14269 } D3D12_AUTO_BREADCRUMB_NODE;
  14270 typedef struct D3D12_DRED_BREADCRUMB_CONTEXT {
  14271     UINT BreadcrumbIndex;
  14272     const WCHAR *pContextString;
  14273 } D3D12_DRED_BREADCRUMB_CONTEXT;
  14274 typedef struct D3D12_AUTO_BREADCRUMB_NODE1 {
  14275     const char *pCommandListDebugNameA;
  14276     const WCHAR *pCommandListDebugNameW;
  14277     const char *pCommandQueueDebugNameA;
  14278     const WCHAR *pCommandQueueDebugNameW;
  14279     ID3D12GraphicsCommandList *pCommandList;
  14280     ID3D12CommandQueue *pCommandQueue;
  14281     UINT BreadcrumbCount;
  14282     const UINT *pLastBreadcrumbValue;
  14283     const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
  14284     const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext;
  14285     UINT BreadcrumbContextsCount;
  14286     D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
  14287 } D3D12_AUTO_BREADCRUMB_NODE1;
  14288 typedef enum D3D12_DRED_VERSION {
  14289     D3D12_DRED_VERSION_1_0 = 0x1,
  14290     D3D12_DRED_VERSION_1_1 = 0x2,
  14291     D3D12_DRED_VERSION_1_2 = 0x3,
  14292     D3D12_DRED_VERSION_1_3 = 0x4
  14293 } D3D12_DRED_VERSION;
  14294 typedef enum D3D12_DRED_FLAGS {
  14295     D3D12_DRED_FLAG_NONE = 0x0,
  14296     D3D12_DRED_FLAG_FORCE_ENABLE = 0x1,
  14297     D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 0x2
  14298 } D3D12_DRED_FLAGS;
  14299 DEFINE_ENUM_FLAG_OPERATORS(D3D12_DRED_FLAGS);
  14300 typedef enum D3D12_DRED_ENABLEMENT {
  14301     D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0x0,
  14302     D3D12_DRED_ENABLEMENT_FORCED_OFF = 0x1,
  14303     D3D12_DRED_ENABLEMENT_FORCED_ON = 0x2
  14304 } D3D12_DRED_ENABLEMENT;
  14305 typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA {
  14306     D3D12_DRED_FLAGS Flags;
  14307     D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
  14308 } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
  14309 typedef enum D3D12_DRED_ALLOCATION_TYPE {
  14310     D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 0x13,
  14311     D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 0x14,
  14312     D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 0x15,
  14313     D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 0x16,
  14314     D3D12_DRED_ALLOCATION_TYPE_FENCE = 0x17,
  14315     D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 0x18,
  14316     D3D12_DRED_ALLOCATION_TYPE_HEAP = 0x19,
  14317     D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 0x1b,
  14318     D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 0x1c,
  14319     D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 0x1d,
  14320     D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 0x1e,
  14321     D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 0x20,
  14322     D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 0x22,
  14323     D3D12_DRED_ALLOCATION_TYPE_PASS = 0x23,
  14324     D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 0x24,
  14325     D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 0x25,
  14326     D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 0x26,
  14327     D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 0x27,
  14328     D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 0x28,
  14329     D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 0x29,
  14330     D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 0x2a,
  14331     D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 0x2b,
  14332     D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 0x2c,
  14333     D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 0x2d,
  14334     D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 0x2e,
  14335     D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 0x2f,
  14336     D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 0x30,
  14337     D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 0x31,
  14338     D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff
  14339 } D3D12_DRED_ALLOCATION_TYPE;
  14340 typedef struct D3D12_DRED_ALLOCATION_NODE {
  14341     const char *ObjectNameA;
  14342     const WCHAR *ObjectNameW;
  14343     D3D12_DRED_ALLOCATION_TYPE AllocationType;
  14344     const struct D3D12_DRED_ALLOCATION_NODE *pNext;
  14345 } D3D12_DRED_ALLOCATION_NODE;
  14346 typedef struct D3D12_DRED_ALLOCATION_NODE1 {
  14347     const char *ObjectNameA;
  14348     const WCHAR *ObjectNameW;
  14349     D3D12_DRED_ALLOCATION_TYPE AllocationType;
  14350     const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
  14351     const IUnknown *pObject;
  14352 } D3D12_DRED_ALLOCATION_NODE1;
  14353 typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT {
  14354     const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
  14355 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
  14356 typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 {
  14357     const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
  14358 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
  14359 typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT {
  14360     D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
  14361     const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
  14362     const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
  14363 } D3D12_DRED_PAGE_FAULT_OUTPUT;
  14364 typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1 {
  14365     D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
  14366     const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
  14367     const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
  14368 } D3D12_DRED_PAGE_FAULT_OUTPUT1;
  14369 typedef enum D3D12_DRED_PAGE_FAULT_FLAGS {
  14370     D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0x0
  14371 } D3D12_DRED_PAGE_FAULT_FLAGS;
  14372 DEFINE_ENUM_FLAG_OPERATORS(D3D12_DRED_PAGE_FAULT_FLAGS);
  14373 typedef enum D3D12_DRED_DEVICE_STATE {
  14374     D3D12_DRED_DEVICE_STATE_UNKNOWN = 0x0,
  14375     D3D12_DRED_DEVICE_STATE_HUNG = 0x3,
  14376     D3D12_DRED_DEVICE_STATE_FAULT = 0x6,
  14377     D3D12_DRED_DEVICE_STATE_PAGEFAULT = 0x7
  14378 } D3D12_DRED_DEVICE_STATE;
  14379 typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2 {
  14380     D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
  14381     const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
  14382     const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
  14383     D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
  14384 } D3D12_DRED_PAGE_FAULT_OUTPUT2;
  14385 typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1 {
  14386     HRESULT DeviceRemovedReason;
  14387     D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
  14388     D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
  14389 } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
  14390 typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2 {
  14391     HRESULT DeviceRemovedReason;
  14392     D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
  14393     D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
  14394 } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
  14395 typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3 {
  14396     HRESULT DeviceRemovedReason;
  14397     D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
  14398     D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
  14399     D3D12_DRED_DEVICE_STATE DeviceState;
  14400 } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
  14401 typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA {
  14402     D3D12_DRED_VERSION Version;
  14403     __C89_NAMELESS union {
  14404         D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
  14405         D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
  14406         D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
  14407         D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
  14408     } __C89_NAMELESSUNIONNAME;
  14409 } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
  14410 /*****************************************************************************
  14411  * ID3D12DeviceRemovedExtendedDataSettings interface
  14412  */
  14413 #ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
  14414 #define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
  14415 
  14416 DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings, 0x82bc481c, 0x6b9b, 0x4030, 0xae,0xdb, 0x7e,0xe3,0xd1,0xdf,0x1e,0x63);
  14417 #if defined(__cplusplus) && !defined(CINTERFACE)
  14418 MIDL_INTERFACE("82bc481c-6b9b-4030-aedb-7ee3d1df1e63")
  14419 ID3D12DeviceRemovedExtendedDataSettings : public IUnknown
  14420 {
  14421     virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement(
  14422         D3D12_DRED_ENABLEMENT enablement) = 0;
  14423 
  14424     virtual void STDMETHODCALLTYPE SetPageFaultEnablement(
  14425         D3D12_DRED_ENABLEMENT enablement) = 0;
  14426 
  14427     virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement(
  14428         D3D12_DRED_ENABLEMENT enablement) = 0;
  14429 
  14430 };
  14431 #ifdef __CRT_UUID_DECL
  14432 __CRT_UUID_DECL(ID3D12DeviceRemovedExtendedDataSettings, 0x82bc481c, 0x6b9b, 0x4030, 0xae,0xdb, 0x7e,0xe3,0xd1,0xdf,0x1e,0x63)
  14433 #endif
  14434 #else
  14435 typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl {
  14436     BEGIN_INTERFACE
  14437 
  14438     /*** IUnknown methods ***/
  14439     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  14440         ID3D12DeviceRemovedExtendedDataSettings *This,
  14441         REFIID riid,
  14442         void **ppvObject);
  14443 
  14444     ULONG (STDMETHODCALLTYPE *AddRef)(
  14445         ID3D12DeviceRemovedExtendedDataSettings *This);
  14446 
  14447     ULONG (STDMETHODCALLTYPE *Release)(
  14448         ID3D12DeviceRemovedExtendedDataSettings *This);
  14449 
  14450     /*** ID3D12DeviceRemovedExtendedDataSettings methods ***/
  14451     void (STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement)(
  14452         ID3D12DeviceRemovedExtendedDataSettings *This,
  14453         D3D12_DRED_ENABLEMENT enablement);
  14454 
  14455     void (STDMETHODCALLTYPE *SetPageFaultEnablement)(
  14456         ID3D12DeviceRemovedExtendedDataSettings *This,
  14457         D3D12_DRED_ENABLEMENT enablement);
  14458 
  14459     void (STDMETHODCALLTYPE *SetWatsonDumpEnablement)(
  14460         ID3D12DeviceRemovedExtendedDataSettings *This,
  14461         D3D12_DRED_ENABLEMENT enablement);
  14462 
  14463     END_INTERFACE
  14464 } ID3D12DeviceRemovedExtendedDataSettingsVtbl;
  14465 
  14466 interface ID3D12DeviceRemovedExtendedDataSettings {
  14467     CONST_VTBL ID3D12DeviceRemovedExtendedDataSettingsVtbl* lpVtbl;
  14468 };
  14469 
  14470 #ifdef COBJMACROS
  14471 #ifndef WIDL_C_INLINE_WRAPPERS
  14472 /*** IUnknown methods ***/
  14473 #define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  14474 #define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) (This)->lpVtbl->AddRef(This)
  14475 #define ID3D12DeviceRemovedExtendedDataSettings_Release(This) (This)->lpVtbl->Release(This)
  14476 /*** ID3D12DeviceRemovedExtendedDataSettings methods ***/
  14477 #define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,enablement) (This)->lpVtbl->SetAutoBreadcrumbsEnablement(This,enablement)
  14478 #define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,enablement) (This)->lpVtbl->SetPageFaultEnablement(This,enablement)
  14479 #define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,enablement) (This)->lpVtbl->SetWatsonDumpEnablement(This,enablement)
  14480 #else
  14481 /*** IUnknown methods ***/
  14482 static inline HRESULT ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(ID3D12DeviceRemovedExtendedDataSettings* This,REFIID riid,void **ppvObject) {
  14483     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  14484 }
  14485 static inline ULONG ID3D12DeviceRemovedExtendedDataSettings_AddRef(ID3D12DeviceRemovedExtendedDataSettings* This) {
  14486     return This->lpVtbl->AddRef(This);
  14487 }
  14488 static inline ULONG ID3D12DeviceRemovedExtendedDataSettings_Release(ID3D12DeviceRemovedExtendedDataSettings* This) {
  14489     return This->lpVtbl->Release(This);
  14490 }
  14491 /*** ID3D12DeviceRemovedExtendedDataSettings methods ***/
  14492 static inline void ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(ID3D12DeviceRemovedExtendedDataSettings* This,D3D12_DRED_ENABLEMENT enablement) {
  14493     This->lpVtbl->SetAutoBreadcrumbsEnablement(This,enablement);
  14494 }
  14495 static inline void ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(ID3D12DeviceRemovedExtendedDataSettings* This,D3D12_DRED_ENABLEMENT enablement) {
  14496     This->lpVtbl->SetPageFaultEnablement(This,enablement);
  14497 }
  14498 static inline void ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(ID3D12DeviceRemovedExtendedDataSettings* This,D3D12_DRED_ENABLEMENT enablement) {
  14499     This->lpVtbl->SetWatsonDumpEnablement(This,enablement);
  14500 }
  14501 #endif
  14502 #endif
  14503 
  14504 #endif
  14505 
  14506 
  14507 #endif  /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */
  14508 
  14509 /*****************************************************************************
  14510  * ID3D12DeviceRemovedExtendedDataSettings1 interface
  14511  */
  14512 #ifndef __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
  14513 #define __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
  14514 
  14515 DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1, 0xdbd5ae51, 0x3317, 0x4f0a, 0xad,0xf9, 0x1d,0x7c,0xed,0xca,0xae,0x0b);
  14516 #if defined(__cplusplus) && !defined(CINTERFACE)
  14517 MIDL_INTERFACE("dbd5ae51-3317-4f0a-adf9-1d7cedcaae0b")
  14518 ID3D12DeviceRemovedExtendedDataSettings1 : public ID3D12DeviceRemovedExtendedDataSettings
  14519 {
  14520     virtual void STDMETHODCALLTYPE SetBreadcrumbContextEnablement(
  14521         D3D12_DRED_ENABLEMENT enablement) = 0;
  14522 
  14523 };
  14524 #ifdef __CRT_UUID_DECL
  14525 __CRT_UUID_DECL(ID3D12DeviceRemovedExtendedDataSettings1, 0xdbd5ae51, 0x3317, 0x4f0a, 0xad,0xf9, 0x1d,0x7c,0xed,0xca,0xae,0x0b)
  14526 #endif
  14527 #else
  14528 typedef struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl {
  14529     BEGIN_INTERFACE
  14530 
  14531     /*** IUnknown methods ***/
  14532     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  14533         ID3D12DeviceRemovedExtendedDataSettings1 *This,
  14534         REFIID riid,
  14535         void **ppvObject);
  14536 
  14537     ULONG (STDMETHODCALLTYPE *AddRef)(
  14538         ID3D12DeviceRemovedExtendedDataSettings1 *This);
  14539 
  14540     ULONG (STDMETHODCALLTYPE *Release)(
  14541         ID3D12DeviceRemovedExtendedDataSettings1 *This);
  14542 
  14543     /*** ID3D12DeviceRemovedExtendedDataSettings methods ***/
  14544     void (STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement)(
  14545         ID3D12DeviceRemovedExtendedDataSettings1 *This,
  14546         D3D12_DRED_ENABLEMENT enablement);
  14547 
  14548     void (STDMETHODCALLTYPE *SetPageFaultEnablement)(
  14549         ID3D12DeviceRemovedExtendedDataSettings1 *This,
  14550         D3D12_DRED_ENABLEMENT enablement);
  14551 
  14552     void (STDMETHODCALLTYPE *SetWatsonDumpEnablement)(
  14553         ID3D12DeviceRemovedExtendedDataSettings1 *This,
  14554         D3D12_DRED_ENABLEMENT enablement);
  14555 
  14556     /*** ID3D12DeviceRemovedExtendedDataSettings1 methods ***/
  14557     void (STDMETHODCALLTYPE *SetBreadcrumbContextEnablement)(
  14558         ID3D12DeviceRemovedExtendedDataSettings1 *This,
  14559         D3D12_DRED_ENABLEMENT enablement);
  14560 
  14561     END_INTERFACE
  14562 } ID3D12DeviceRemovedExtendedDataSettings1Vtbl;
  14563 
  14564 interface ID3D12DeviceRemovedExtendedDataSettings1 {
  14565     CONST_VTBL ID3D12DeviceRemovedExtendedDataSettings1Vtbl* lpVtbl;
  14566 };
  14567 
  14568 #ifdef COBJMACROS
  14569 #ifndef WIDL_C_INLINE_WRAPPERS
  14570 /*** IUnknown methods ***/
  14571 #define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  14572 #define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This) (This)->lpVtbl->AddRef(This)
  14573 #define ID3D12DeviceRemovedExtendedDataSettings1_Release(This) (This)->lpVtbl->Release(This)
  14574 /*** ID3D12DeviceRemovedExtendedDataSettings methods ***/
  14575 #define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,enablement) (This)->lpVtbl->SetAutoBreadcrumbsEnablement(This,enablement)
  14576 #define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,enablement) (This)->lpVtbl->SetPageFaultEnablement(This,enablement)
  14577 #define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,enablement) (This)->lpVtbl->SetWatsonDumpEnablement(This,enablement)
  14578 /*** ID3D12DeviceRemovedExtendedDataSettings1 methods ***/
  14579 #define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,enablement) (This)->lpVtbl->SetBreadcrumbContextEnablement(This,enablement)
  14580 #else
  14581 /*** IUnknown methods ***/
  14582 static inline HRESULT ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(ID3D12DeviceRemovedExtendedDataSettings1* This,REFIID riid,void **ppvObject) {
  14583     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  14584 }
  14585 static inline ULONG ID3D12DeviceRemovedExtendedDataSettings1_AddRef(ID3D12DeviceRemovedExtendedDataSettings1* This) {
  14586     return This->lpVtbl->AddRef(This);
  14587 }
  14588 static inline ULONG ID3D12DeviceRemovedExtendedDataSettings1_Release(ID3D12DeviceRemovedExtendedDataSettings1* This) {
  14589     return This->lpVtbl->Release(This);
  14590 }
  14591 /*** ID3D12DeviceRemovedExtendedDataSettings methods ***/
  14592 static inline void ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(ID3D12DeviceRemovedExtendedDataSettings1* This,D3D12_DRED_ENABLEMENT enablement) {
  14593     This->lpVtbl->SetAutoBreadcrumbsEnablement(This,enablement);
  14594 }
  14595 static inline void ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(ID3D12DeviceRemovedExtendedDataSettings1* This,D3D12_DRED_ENABLEMENT enablement) {
  14596     This->lpVtbl->SetPageFaultEnablement(This,enablement);
  14597 }
  14598 static inline void ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(ID3D12DeviceRemovedExtendedDataSettings1* This,D3D12_DRED_ENABLEMENT enablement) {
  14599     This->lpVtbl->SetWatsonDumpEnablement(This,enablement);
  14600 }
  14601 /*** ID3D12DeviceRemovedExtendedDataSettings1 methods ***/
  14602 static inline void ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(ID3D12DeviceRemovedExtendedDataSettings1* This,D3D12_DRED_ENABLEMENT enablement) {
  14603     This->lpVtbl->SetBreadcrumbContextEnablement(This,enablement);
  14604 }
  14605 #endif
  14606 #endif
  14607 
  14608 #endif
  14609 
  14610 
  14611 #endif  /* __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__ */
  14612 
  14613 /*****************************************************************************
  14614  * ID3D12DeviceRemovedExtendedData interface
  14615  */
  14616 #ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
  14617 #define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
  14618 
  14619 DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData, 0x98931d33, 0x5ae8, 0x4791, 0xaa,0x3c, 0x1a,0x73,0xa2,0x93,0x4e,0x71);
  14620 #if defined(__cplusplus) && !defined(CINTERFACE)
  14621 MIDL_INTERFACE("98931d33-5ae8-4791-aa3c-1a73a2934e71")
  14622 ID3D12DeviceRemovedExtendedData : public IUnknown
  14623 {
  14624     virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput(
  14625         D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output) = 0;
  14626 
  14627     virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput(
  14628         D3D12_DRED_PAGE_FAULT_OUTPUT *output) = 0;
  14629 
  14630 };
  14631 #ifdef __CRT_UUID_DECL
  14632 __CRT_UUID_DECL(ID3D12DeviceRemovedExtendedData, 0x98931d33, 0x5ae8, 0x4791, 0xaa,0x3c, 0x1a,0x73,0xa2,0x93,0x4e,0x71)
  14633 #endif
  14634 #else
  14635 typedef struct ID3D12DeviceRemovedExtendedDataVtbl {
  14636     BEGIN_INTERFACE
  14637 
  14638     /*** IUnknown methods ***/
  14639     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  14640         ID3D12DeviceRemovedExtendedData *This,
  14641         REFIID riid,
  14642         void **ppvObject);
  14643 
  14644     ULONG (STDMETHODCALLTYPE *AddRef)(
  14645         ID3D12DeviceRemovedExtendedData *This);
  14646 
  14647     ULONG (STDMETHODCALLTYPE *Release)(
  14648         ID3D12DeviceRemovedExtendedData *This);
  14649 
  14650     /*** ID3D12DeviceRemovedExtendedData methods ***/
  14651     HRESULT (STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput)(
  14652         ID3D12DeviceRemovedExtendedData *This,
  14653         D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output);
  14654 
  14655     HRESULT (STDMETHODCALLTYPE *GetPageFaultAllocationOutput)(
  14656         ID3D12DeviceRemovedExtendedData *This,
  14657         D3D12_DRED_PAGE_FAULT_OUTPUT *output);
  14658 
  14659     END_INTERFACE
  14660 } ID3D12DeviceRemovedExtendedDataVtbl;
  14661 
  14662 interface ID3D12DeviceRemovedExtendedData {
  14663     CONST_VTBL ID3D12DeviceRemovedExtendedDataVtbl* lpVtbl;
  14664 };
  14665 
  14666 #ifdef COBJMACROS
  14667 #ifndef WIDL_C_INLINE_WRAPPERS
  14668 /*** IUnknown methods ***/
  14669 #define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  14670 #define ID3D12DeviceRemovedExtendedData_AddRef(This) (This)->lpVtbl->AddRef(This)
  14671 #define ID3D12DeviceRemovedExtendedData_Release(This) (This)->lpVtbl->Release(This)
  14672 /*** ID3D12DeviceRemovedExtendedData methods ***/
  14673 #define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,output) (This)->lpVtbl->GetAutoBreadcrumbsOutput(This,output)
  14674 #define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,output) (This)->lpVtbl->GetPageFaultAllocationOutput(This,output)
  14675 #else
  14676 /*** IUnknown methods ***/
  14677 static inline HRESULT ID3D12DeviceRemovedExtendedData_QueryInterface(ID3D12DeviceRemovedExtendedData* This,REFIID riid,void **ppvObject) {
  14678     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  14679 }
  14680 static inline ULONG ID3D12DeviceRemovedExtendedData_AddRef(ID3D12DeviceRemovedExtendedData* This) {
  14681     return This->lpVtbl->AddRef(This);
  14682 }
  14683 static inline ULONG ID3D12DeviceRemovedExtendedData_Release(ID3D12DeviceRemovedExtendedData* This) {
  14684     return This->lpVtbl->Release(This);
  14685 }
  14686 /*** ID3D12DeviceRemovedExtendedData methods ***/
  14687 static inline HRESULT ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(ID3D12DeviceRemovedExtendedData* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output) {
  14688     return This->lpVtbl->GetAutoBreadcrumbsOutput(This,output);
  14689 }
  14690 static inline HRESULT ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(ID3D12DeviceRemovedExtendedData* This,D3D12_DRED_PAGE_FAULT_OUTPUT *output) {
  14691     return This->lpVtbl->GetPageFaultAllocationOutput(This,output);
  14692 }
  14693 #endif
  14694 #endif
  14695 
  14696 #endif
  14697 
  14698 
  14699 #endif  /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */
  14700 
  14701 /*****************************************************************************
  14702  * ID3D12DeviceRemovedExtendedData1 interface
  14703  */
  14704 #ifndef __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
  14705 #define __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
  14706 
  14707 DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1, 0x9727a022, 0xcf1d, 0x4dda, 0x9e,0xba, 0xef,0xfa,0x65,0x3f,0xc5,0x06);
  14708 #if defined(__cplusplus) && !defined(CINTERFACE)
  14709 MIDL_INTERFACE("9727a022-cf1d-4dda-9eba-effa653fc506")
  14710 ID3D12DeviceRemovedExtendedData1 : public ID3D12DeviceRemovedExtendedData
  14711 {
  14712     virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput1(
  14713         D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *output) = 0;
  14714 
  14715     virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput1(
  14716         D3D12_DRED_PAGE_FAULT_OUTPUT1 *output) = 0;
  14717 
  14718 };
  14719 #ifdef __CRT_UUID_DECL
  14720 __CRT_UUID_DECL(ID3D12DeviceRemovedExtendedData1, 0x9727a022, 0xcf1d, 0x4dda, 0x9e,0xba, 0xef,0xfa,0x65,0x3f,0xc5,0x06)
  14721 #endif
  14722 #else
  14723 typedef struct ID3D12DeviceRemovedExtendedData1Vtbl {
  14724     BEGIN_INTERFACE
  14725 
  14726     /*** IUnknown methods ***/
  14727     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  14728         ID3D12DeviceRemovedExtendedData1 *This,
  14729         REFIID riid,
  14730         void **ppvObject);
  14731 
  14732     ULONG (STDMETHODCALLTYPE *AddRef)(
  14733         ID3D12DeviceRemovedExtendedData1 *This);
  14734 
  14735     ULONG (STDMETHODCALLTYPE *Release)(
  14736         ID3D12DeviceRemovedExtendedData1 *This);
  14737 
  14738     /*** ID3D12DeviceRemovedExtendedData methods ***/
  14739     HRESULT (STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput)(
  14740         ID3D12DeviceRemovedExtendedData1 *This,
  14741         D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output);
  14742 
  14743     HRESULT (STDMETHODCALLTYPE *GetPageFaultAllocationOutput)(
  14744         ID3D12DeviceRemovedExtendedData1 *This,
  14745         D3D12_DRED_PAGE_FAULT_OUTPUT *output);
  14746 
  14747     /*** ID3D12DeviceRemovedExtendedData1 methods ***/
  14748     HRESULT (STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1)(
  14749         ID3D12DeviceRemovedExtendedData1 *This,
  14750         D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *output);
  14751 
  14752     HRESULT (STDMETHODCALLTYPE *GetPageFaultAllocationOutput1)(
  14753         ID3D12DeviceRemovedExtendedData1 *This,
  14754         D3D12_DRED_PAGE_FAULT_OUTPUT1 *output);
  14755 
  14756     END_INTERFACE
  14757 } ID3D12DeviceRemovedExtendedData1Vtbl;
  14758 
  14759 interface ID3D12DeviceRemovedExtendedData1 {
  14760     CONST_VTBL ID3D12DeviceRemovedExtendedData1Vtbl* lpVtbl;
  14761 };
  14762 
  14763 #ifdef COBJMACROS
  14764 #ifndef WIDL_C_INLINE_WRAPPERS
  14765 /*** IUnknown methods ***/
  14766 #define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  14767 #define ID3D12DeviceRemovedExtendedData1_AddRef(This) (This)->lpVtbl->AddRef(This)
  14768 #define ID3D12DeviceRemovedExtendedData1_Release(This) (This)->lpVtbl->Release(This)
  14769 /*** ID3D12DeviceRemovedExtendedData methods ***/
  14770 #define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,output) (This)->lpVtbl->GetAutoBreadcrumbsOutput(This,output)
  14771 #define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,output) (This)->lpVtbl->GetPageFaultAllocationOutput(This,output)
  14772 /*** ID3D12DeviceRemovedExtendedData1 methods ***/
  14773 #define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,output) (This)->lpVtbl->GetAutoBreadcrumbsOutput1(This,output)
  14774 #define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,output) (This)->lpVtbl->GetPageFaultAllocationOutput1(This,output)
  14775 #else
  14776 /*** IUnknown methods ***/
  14777 static inline HRESULT ID3D12DeviceRemovedExtendedData1_QueryInterface(ID3D12DeviceRemovedExtendedData1* This,REFIID riid,void **ppvObject) {
  14778     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  14779 }
  14780 static inline ULONG ID3D12DeviceRemovedExtendedData1_AddRef(ID3D12DeviceRemovedExtendedData1* This) {
  14781     return This->lpVtbl->AddRef(This);
  14782 }
  14783 static inline ULONG ID3D12DeviceRemovedExtendedData1_Release(ID3D12DeviceRemovedExtendedData1* This) {
  14784     return This->lpVtbl->Release(This);
  14785 }
  14786 /*** ID3D12DeviceRemovedExtendedData methods ***/
  14787 static inline HRESULT ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(ID3D12DeviceRemovedExtendedData1* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output) {
  14788     return This->lpVtbl->GetAutoBreadcrumbsOutput(This,output);
  14789 }
  14790 static inline HRESULT ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(ID3D12DeviceRemovedExtendedData1* This,D3D12_DRED_PAGE_FAULT_OUTPUT *output) {
  14791     return This->lpVtbl->GetPageFaultAllocationOutput(This,output);
  14792 }
  14793 /*** ID3D12DeviceRemovedExtendedData1 methods ***/
  14794 static inline HRESULT ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(ID3D12DeviceRemovedExtendedData1* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *output) {
  14795     return This->lpVtbl->GetAutoBreadcrumbsOutput1(This,output);
  14796 }
  14797 static inline HRESULT ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(ID3D12DeviceRemovedExtendedData1* This,D3D12_DRED_PAGE_FAULT_OUTPUT1 *output) {
  14798     return This->lpVtbl->GetPageFaultAllocationOutput1(This,output);
  14799 }
  14800 #endif
  14801 #endif
  14802 
  14803 #endif
  14804 
  14805 
  14806 #endif  /* __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__ */
  14807 
  14808 /*****************************************************************************
  14809  * ID3D12DeviceRemovedExtendedData2 interface
  14810  */
  14811 #ifndef __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
  14812 #define __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
  14813 
  14814 DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2, 0x67fc5816, 0xe4ca, 0x4915, 0xbf,0x18, 0x42,0x54,0x12,0x72,0xda,0x54);
  14815 #if defined(__cplusplus) && !defined(CINTERFACE)
  14816 MIDL_INTERFACE("67fc5816-e4ca-4915-bf18-42541272da54")
  14817 ID3D12DeviceRemovedExtendedData2 : public ID3D12DeviceRemovedExtendedData1
  14818 {
  14819     virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput2(
  14820         D3D12_DRED_PAGE_FAULT_OUTPUT2 *output) = 0;
  14821 
  14822     virtual D3D12_DRED_DEVICE_STATE STDMETHODCALLTYPE GetDeviceState(
  14823         ) = 0;
  14824 
  14825 };
  14826 #ifdef __CRT_UUID_DECL
  14827 __CRT_UUID_DECL(ID3D12DeviceRemovedExtendedData2, 0x67fc5816, 0xe4ca, 0x4915, 0xbf,0x18, 0x42,0x54,0x12,0x72,0xda,0x54)
  14828 #endif
  14829 #else
  14830 typedef struct ID3D12DeviceRemovedExtendedData2Vtbl {
  14831     BEGIN_INTERFACE
  14832 
  14833     /*** IUnknown methods ***/
  14834     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  14835         ID3D12DeviceRemovedExtendedData2 *This,
  14836         REFIID riid,
  14837         void **ppvObject);
  14838 
  14839     ULONG (STDMETHODCALLTYPE *AddRef)(
  14840         ID3D12DeviceRemovedExtendedData2 *This);
  14841 
  14842     ULONG (STDMETHODCALLTYPE *Release)(
  14843         ID3D12DeviceRemovedExtendedData2 *This);
  14844 
  14845     /*** ID3D12DeviceRemovedExtendedData methods ***/
  14846     HRESULT (STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput)(
  14847         ID3D12DeviceRemovedExtendedData2 *This,
  14848         D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output);
  14849 
  14850     HRESULT (STDMETHODCALLTYPE *GetPageFaultAllocationOutput)(
  14851         ID3D12DeviceRemovedExtendedData2 *This,
  14852         D3D12_DRED_PAGE_FAULT_OUTPUT *output);
  14853 
  14854     /*** ID3D12DeviceRemovedExtendedData1 methods ***/
  14855     HRESULT (STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1)(
  14856         ID3D12DeviceRemovedExtendedData2 *This,
  14857         D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *output);
  14858 
  14859     HRESULT (STDMETHODCALLTYPE *GetPageFaultAllocationOutput1)(
  14860         ID3D12DeviceRemovedExtendedData2 *This,
  14861         D3D12_DRED_PAGE_FAULT_OUTPUT1 *output);
  14862 
  14863     /*** ID3D12DeviceRemovedExtendedData2 methods ***/
  14864     HRESULT (STDMETHODCALLTYPE *GetPageFaultAllocationOutput2)(
  14865         ID3D12DeviceRemovedExtendedData2 *This,
  14866         D3D12_DRED_PAGE_FAULT_OUTPUT2 *output);
  14867 
  14868     D3D12_DRED_DEVICE_STATE (STDMETHODCALLTYPE *GetDeviceState)(
  14869         ID3D12DeviceRemovedExtendedData2 *This);
  14870 
  14871     END_INTERFACE
  14872 } ID3D12DeviceRemovedExtendedData2Vtbl;
  14873 
  14874 interface ID3D12DeviceRemovedExtendedData2 {
  14875     CONST_VTBL ID3D12DeviceRemovedExtendedData2Vtbl* lpVtbl;
  14876 };
  14877 
  14878 #ifdef COBJMACROS
  14879 #ifndef WIDL_C_INLINE_WRAPPERS
  14880 /*** IUnknown methods ***/
  14881 #define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  14882 #define ID3D12DeviceRemovedExtendedData2_AddRef(This) (This)->lpVtbl->AddRef(This)
  14883 #define ID3D12DeviceRemovedExtendedData2_Release(This) (This)->lpVtbl->Release(This)
  14884 /*** ID3D12DeviceRemovedExtendedData methods ***/
  14885 #define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,output) (This)->lpVtbl->GetAutoBreadcrumbsOutput(This,output)
  14886 #define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,output) (This)->lpVtbl->GetPageFaultAllocationOutput(This,output)
  14887 /*** ID3D12DeviceRemovedExtendedData1 methods ***/
  14888 #define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,output) (This)->lpVtbl->GetAutoBreadcrumbsOutput1(This,output)
  14889 #define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,output) (This)->lpVtbl->GetPageFaultAllocationOutput1(This,output)
  14890 /*** ID3D12DeviceRemovedExtendedData2 methods ***/
  14891 #define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,output) (This)->lpVtbl->GetPageFaultAllocationOutput2(This,output)
  14892 #define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This) (This)->lpVtbl->GetDeviceState(This)
  14893 #else
  14894 /*** IUnknown methods ***/
  14895 static inline HRESULT ID3D12DeviceRemovedExtendedData2_QueryInterface(ID3D12DeviceRemovedExtendedData2* This,REFIID riid,void **ppvObject) {
  14896     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  14897 }
  14898 static inline ULONG ID3D12DeviceRemovedExtendedData2_AddRef(ID3D12DeviceRemovedExtendedData2* This) {
  14899     return This->lpVtbl->AddRef(This);
  14900 }
  14901 static inline ULONG ID3D12DeviceRemovedExtendedData2_Release(ID3D12DeviceRemovedExtendedData2* This) {
  14902     return This->lpVtbl->Release(This);
  14903 }
  14904 /*** ID3D12DeviceRemovedExtendedData methods ***/
  14905 static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output) {
  14906     return This->lpVtbl->GetAutoBreadcrumbsOutput(This,output);
  14907 }
  14908 static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_PAGE_FAULT_OUTPUT *output) {
  14909     return This->lpVtbl->GetPageFaultAllocationOutput(This,output);
  14910 }
  14911 /*** ID3D12DeviceRemovedExtendedData1 methods ***/
  14912 static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *output) {
  14913     return This->lpVtbl->GetAutoBreadcrumbsOutput1(This,output);
  14914 }
  14915 static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_PAGE_FAULT_OUTPUT1 *output) {
  14916     return This->lpVtbl->GetPageFaultAllocationOutput1(This,output);
  14917 }
  14918 /*** ID3D12DeviceRemovedExtendedData2 methods ***/
  14919 static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_PAGE_FAULT_OUTPUT2 *output) {
  14920     return This->lpVtbl->GetPageFaultAllocationOutput2(This,output);
  14921 }
  14922 static inline D3D12_DRED_DEVICE_STATE ID3D12DeviceRemovedExtendedData2_GetDeviceState(ID3D12DeviceRemovedExtendedData2* This) {
  14923     return This->lpVtbl->GetDeviceState(This);
  14924 }
  14925 #endif
  14926 #endif
  14927 
  14928 #endif
  14929 
  14930 
  14931 #endif  /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
  14932 
  14933 typedef enum D3D12_BACKGROUND_PROCESSING_MODE {
  14934     D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0x0,
  14935     D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = 0x1,
  14936     D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = 0x2,
  14937     D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = 0x3
  14938 } D3D12_BACKGROUND_PROCESSING_MODE;
  14939 typedef enum D3D12_MEASUREMENTS_ACTION {
  14940     D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0x0,
  14941     D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = 0x1,
  14942     D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = 0x2,
  14943     D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = 0x3
  14944 } D3D12_MEASUREMENTS_ACTION;
  14945 /*****************************************************************************
  14946  * ID3D12Device6 interface
  14947  */
  14948 #ifndef __ID3D12Device6_INTERFACE_DEFINED__
  14949 #define __ID3D12Device6_INTERFACE_DEFINED__
  14950 
  14951 DEFINE_GUID(IID_ID3D12Device6, 0xc70b221b, 0x40e4, 0x4a17, 0x89,0xaf, 0x02,0x5a,0x07,0x27,0xa6,0xdc);
  14952 #if defined(__cplusplus) && !defined(CINTERFACE)
  14953 MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
  14954 ID3D12Device6 : public ID3D12Device5
  14955 {
  14956     virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode(
  14957         D3D12_BACKGROUND_PROCESSING_MODE mode,
  14958         D3D12_MEASUREMENTS_ACTION action,
  14959         HANDLE event,
  14960         WINBOOL *further_measurements_desired) = 0;
  14961 
  14962 };
  14963 #ifdef __CRT_UUID_DECL
  14964 __CRT_UUID_DECL(ID3D12Device6, 0xc70b221b, 0x40e4, 0x4a17, 0x89,0xaf, 0x02,0x5a,0x07,0x27,0xa6,0xdc)
  14965 #endif
  14966 #else
  14967 typedef struct ID3D12Device6Vtbl {
  14968     BEGIN_INTERFACE
  14969 
  14970     /*** IUnknown methods ***/
  14971     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  14972         ID3D12Device6 *This,
  14973         REFIID riid,
  14974         void **ppvObject);
  14975 
  14976     ULONG (STDMETHODCALLTYPE *AddRef)(
  14977         ID3D12Device6 *This);
  14978 
  14979     ULONG (STDMETHODCALLTYPE *Release)(
  14980         ID3D12Device6 *This);
  14981 
  14982     /*** ID3D12Object methods ***/
  14983     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  14984         ID3D12Device6 *This,
  14985         REFGUID guid,
  14986         UINT *data_size,
  14987         void *data);
  14988 
  14989     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  14990         ID3D12Device6 *This,
  14991         REFGUID guid,
  14992         UINT data_size,
  14993         const void *data);
  14994 
  14995     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  14996         ID3D12Device6 *This,
  14997         REFGUID guid,
  14998         const IUnknown *data);
  14999 
  15000     HRESULT (STDMETHODCALLTYPE *SetName)(
  15001         ID3D12Device6 *This,
  15002         const WCHAR *name);
  15003 
  15004     /*** ID3D12Device methods ***/
  15005     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  15006         ID3D12Device6 *This);
  15007 
  15008     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  15009         ID3D12Device6 *This,
  15010         const D3D12_COMMAND_QUEUE_DESC *desc,
  15011         REFIID riid,
  15012         void **command_queue);
  15013 
  15014     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  15015         ID3D12Device6 *This,
  15016         D3D12_COMMAND_LIST_TYPE type,
  15017         REFIID riid,
  15018         void **command_allocator);
  15019 
  15020     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  15021         ID3D12Device6 *This,
  15022         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  15023         REFIID riid,
  15024         void **pipeline_state);
  15025 
  15026     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  15027         ID3D12Device6 *This,
  15028         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  15029         REFIID riid,
  15030         void **pipeline_state);
  15031 
  15032     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  15033         ID3D12Device6 *This,
  15034         UINT node_mask,
  15035         D3D12_COMMAND_LIST_TYPE type,
  15036         ID3D12CommandAllocator *command_allocator,
  15037         ID3D12PipelineState *initial_pipeline_state,
  15038         REFIID riid,
  15039         void **command_list);
  15040 
  15041     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  15042         ID3D12Device6 *This,
  15043         D3D12_FEATURE feature,
  15044         void *feature_data,
  15045         UINT feature_data_size);
  15046 
  15047     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  15048         ID3D12Device6 *This,
  15049         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  15050         REFIID riid,
  15051         void **descriptor_heap);
  15052 
  15053     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  15054         ID3D12Device6 *This,
  15055         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  15056 
  15057     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  15058         ID3D12Device6 *This,
  15059         UINT node_mask,
  15060         const void *bytecode,
  15061         SIZE_T bytecode_length,
  15062         REFIID riid,
  15063         void **root_signature);
  15064 
  15065     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  15066         ID3D12Device6 *This,
  15067         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  15068         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  15069 
  15070     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  15071         ID3D12Device6 *This,
  15072         ID3D12Resource *resource,
  15073         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  15074         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  15075 
  15076     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  15077         ID3D12Device6 *This,
  15078         ID3D12Resource *resource,
  15079         ID3D12Resource *counter_resource,
  15080         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  15081         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  15082 
  15083     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  15084         ID3D12Device6 *This,
  15085         ID3D12Resource *resource,
  15086         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  15087         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  15088 
  15089     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  15090         ID3D12Device6 *This,
  15091         ID3D12Resource *resource,
  15092         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  15093         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  15094 
  15095     void (STDMETHODCALLTYPE *CreateSampler)(
  15096         ID3D12Device6 *This,
  15097         const D3D12_SAMPLER_DESC *desc,
  15098         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  15099 
  15100     void (STDMETHODCALLTYPE *CopyDescriptors)(
  15101         ID3D12Device6 *This,
  15102         UINT dst_descriptor_range_count,
  15103         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  15104         const UINT *dst_descriptor_range_sizes,
  15105         UINT src_descriptor_range_count,
  15106         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  15107         const UINT *src_descriptor_range_sizes,
  15108         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  15109 
  15110     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  15111         ID3D12Device6 *This,
  15112         UINT descriptor_count,
  15113         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  15114         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  15115         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  15116 
  15117     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  15118         ID3D12Device6 *This,
  15119         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  15120         UINT visible_mask,
  15121         UINT reource_desc_count,
  15122         const D3D12_RESOURCE_DESC *resource_descs);
  15123 
  15124     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  15125         ID3D12Device6 *This,
  15126         D3D12_HEAP_PROPERTIES *__ret,
  15127         UINT node_mask,
  15128         D3D12_HEAP_TYPE heap_type);
  15129 
  15130     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  15131         ID3D12Device6 *This,
  15132         const D3D12_HEAP_PROPERTIES *heap_properties,
  15133         D3D12_HEAP_FLAGS heap_flags,
  15134         const D3D12_RESOURCE_DESC *desc,
  15135         D3D12_RESOURCE_STATES initial_state,
  15136         const D3D12_CLEAR_VALUE *optimized_clear_value,
  15137         REFIID riid,
  15138         void **resource);
  15139 
  15140     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  15141         ID3D12Device6 *This,
  15142         const D3D12_HEAP_DESC *desc,
  15143         REFIID riid,
  15144         void **heap);
  15145 
  15146     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  15147         ID3D12Device6 *This,
  15148         ID3D12Heap *heap,
  15149         UINT64 heap_offset,
  15150         const D3D12_RESOURCE_DESC *desc,
  15151         D3D12_RESOURCE_STATES initial_state,
  15152         const D3D12_CLEAR_VALUE *optimized_clear_value,
  15153         REFIID riid,
  15154         void **resource);
  15155 
  15156     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  15157         ID3D12Device6 *This,
  15158         const D3D12_RESOURCE_DESC *desc,
  15159         D3D12_RESOURCE_STATES initial_state,
  15160         const D3D12_CLEAR_VALUE *optimized_clear_value,
  15161         REFIID riid,
  15162         void **resource);
  15163 
  15164     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  15165         ID3D12Device6 *This,
  15166         ID3D12DeviceChild *object,
  15167         const SECURITY_ATTRIBUTES *attributes,
  15168         DWORD access,
  15169         const WCHAR *name,
  15170         HANDLE *handle);
  15171 
  15172     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  15173         ID3D12Device6 *This,
  15174         HANDLE handle,
  15175         REFIID riid,
  15176         void **object);
  15177 
  15178     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  15179         ID3D12Device6 *This,
  15180         const WCHAR *name,
  15181         DWORD access,
  15182         HANDLE *handle);
  15183 
  15184     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  15185         ID3D12Device6 *This,
  15186         UINT object_count,
  15187         ID3D12Pageable *const *objects);
  15188 
  15189     HRESULT (STDMETHODCALLTYPE *Evict)(
  15190         ID3D12Device6 *This,
  15191         UINT object_count,
  15192         ID3D12Pageable *const *objects);
  15193 
  15194     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  15195         ID3D12Device6 *This,
  15196         UINT64 initial_value,
  15197         D3D12_FENCE_FLAGS flags,
  15198         REFIID riid,
  15199         void **fence);
  15200 
  15201     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  15202         ID3D12Device6 *This);
  15203 
  15204     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  15205         ID3D12Device6 *This,
  15206         const D3D12_RESOURCE_DESC *desc,
  15207         UINT first_sub_resource,
  15208         UINT sub_resource_count,
  15209         UINT64 base_offset,
  15210         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  15211         UINT *row_count,
  15212         UINT64 *row_size,
  15213         UINT64 *total_bytes);
  15214 
  15215     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  15216         ID3D12Device6 *This,
  15217         const D3D12_QUERY_HEAP_DESC *desc,
  15218         REFIID riid,
  15219         void **heap);
  15220 
  15221     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  15222         ID3D12Device6 *This,
  15223         WINBOOL enable);
  15224 
  15225     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  15226         ID3D12Device6 *This,
  15227         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  15228         ID3D12RootSignature *root_signature,
  15229         REFIID riid,
  15230         void **command_signature);
  15231 
  15232     void (STDMETHODCALLTYPE *GetResourceTiling)(
  15233         ID3D12Device6 *This,
  15234         ID3D12Resource *resource,
  15235         UINT *total_tile_count,
  15236         D3D12_PACKED_MIP_INFO *packed_mip_info,
  15237         D3D12_TILE_SHAPE *standard_tile_shape,
  15238         UINT *sub_resource_tiling_count,
  15239         UINT first_sub_resource_tiling,
  15240         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  15241 
  15242     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  15243         ID3D12Device6 *This,
  15244         LUID *__ret);
  15245 
  15246     /*** ID3D12Device1 methods ***/
  15247     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  15248         ID3D12Device6 *This,
  15249         const void *blob,
  15250         SIZE_T blob_size,
  15251         REFIID iid,
  15252         void **lib);
  15253 
  15254     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  15255         ID3D12Device6 *This,
  15256         ID3D12Fence *const *fences,
  15257         const UINT64 *values,
  15258         UINT fence_count,
  15259         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  15260         HANDLE event);
  15261 
  15262     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  15263         ID3D12Device6 *This,
  15264         UINT object_count,
  15265         ID3D12Pageable *const *objects,
  15266         const D3D12_RESIDENCY_PRIORITY *priorities);
  15267 
  15268     /*** ID3D12Device2 methods ***/
  15269     HRESULT (STDMETHODCALLTYPE *CreatePipelineState)(
  15270         ID3D12Device6 *This,
  15271         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  15272         REFIID riid,
  15273         void **pipeline_state);
  15274 
  15275     /*** ID3D12Device3 methods ***/
  15276     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromAddress)(
  15277         ID3D12Device6 *This,
  15278         const void *address,
  15279         REFIID riid,
  15280         void **heap);
  15281 
  15282     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping)(
  15283         ID3D12Device6 *This,
  15284         HANDLE file_mapping,
  15285         REFIID riid,
  15286         void **heap);
  15287 
  15288     HRESULT (STDMETHODCALLTYPE *EnqueueMakeResident)(
  15289         ID3D12Device6 *This,
  15290         D3D12_RESIDENCY_FLAGS flags,
  15291         UINT num_objects,
  15292         ID3D12Pageable *const *objects,
  15293         ID3D12Fence *fence,
  15294         UINT64 fence_value);
  15295 
  15296     /*** ID3D12Device4 methods ***/
  15297     HRESULT (STDMETHODCALLTYPE *CreateCommandList1)(
  15298         ID3D12Device6 *This,
  15299         UINT node_mask,
  15300         D3D12_COMMAND_LIST_TYPE type,
  15301         D3D12_COMMAND_LIST_FLAGS flags,
  15302         REFIID riid,
  15303         void **command_list);
  15304 
  15305     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession)(
  15306         ID3D12Device6 *This,
  15307         const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,
  15308         REFIID riid,
  15309         void **session);
  15310 
  15311     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource1)(
  15312         ID3D12Device6 *This,
  15313         const D3D12_HEAP_PROPERTIES *heap_properties,
  15314         D3D12_HEAP_FLAGS heap_flags,
  15315         const D3D12_RESOURCE_DESC *desc,
  15316         D3D12_RESOURCE_STATES initial_resource_state,
  15317         const D3D12_CLEAR_VALUE *optimized_clear_value,
  15318         ID3D12ProtectedResourceSession *protected_session,
  15319         REFIID riid_resource,
  15320         void **resource);
  15321 
  15322     HRESULT (STDMETHODCALLTYPE *CreateHeap1)(
  15323         ID3D12Device6 *This,
  15324         const D3D12_HEAP_DESC *desc,
  15325         ID3D12ProtectedResourceSession *protected_session,
  15326         REFIID riid,
  15327         void **heap);
  15328 
  15329     HRESULT (STDMETHODCALLTYPE *CreateReservedResource1)(
  15330         ID3D12Device6 *This,
  15331         const D3D12_RESOURCE_DESC *desc,
  15332         D3D12_RESOURCE_STATES initial_state,
  15333         const D3D12_CLEAR_VALUE *optimized_clear_value,
  15334         ID3D12ProtectedResourceSession *protected_session,
  15335         REFIID riid,
  15336         void **resource);
  15337 
  15338     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo1)(
  15339         ID3D12Device6 *This,
  15340         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  15341         UINT visible_mask,
  15342         UINT resource_descs_count,
  15343         const D3D12_RESOURCE_DESC *resource_descs,
  15344         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  15345 
  15346     /*** ID3D12Device5 methods ***/
  15347     HRESULT (STDMETHODCALLTYPE *CreateLifetimeTracker)(
  15348         ID3D12Device6 *This,
  15349         ID3D12LifetimeOwner *owner,
  15350         REFIID riid,
  15351         void **tracker);
  15352 
  15353     void (STDMETHODCALLTYPE *RemoveDevice)(
  15354         ID3D12Device6 *This);
  15355 
  15356     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommands)(
  15357         ID3D12Device6 *This,
  15358         UINT *meta_commands_count,
  15359         D3D12_META_COMMAND_DESC *descs);
  15360 
  15361     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommandParameters)(
  15362         ID3D12Device6 *This,
  15363         REFGUID command_id,
  15364         D3D12_META_COMMAND_PARAMETER_STAGE stage,
  15365         UINT *total_structure_size_in_bytes,
  15366         UINT *parameter_count,
  15367         D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs);
  15368 
  15369     HRESULT (STDMETHODCALLTYPE *CreateMetaCommand)(
  15370         ID3D12Device6 *This,
  15371         REFGUID command_id,
  15372         UINT node_mask,
  15373         const void *creation_parameters_data,
  15374         SIZE_T creation_parameters_data_size_in_bytes,
  15375         REFIID riid,
  15376         void **meta_command);
  15377 
  15378     HRESULT (STDMETHODCALLTYPE *CreateStateObject)(
  15379         ID3D12Device6 *This,
  15380         const D3D12_STATE_OBJECT_DESC *desc,
  15381         REFIID riid,
  15382         void **state_object);
  15383 
  15384     void (STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo)(
  15385         ID3D12Device6 *This,
  15386         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,
  15387         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info);
  15388 
  15389     D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS (STDMETHODCALLTYPE *CheckDriverMatchingIdentifier)(
  15390         ID3D12Device6 *This,
  15391         D3D12_SERIALIZED_DATA_TYPE serialized_data_type,
  15392         const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check);
  15393 
  15394     /*** ID3D12Device6 methods ***/
  15395     HRESULT (STDMETHODCALLTYPE *SetBackgroundProcessingMode)(
  15396         ID3D12Device6 *This,
  15397         D3D12_BACKGROUND_PROCESSING_MODE mode,
  15398         D3D12_MEASUREMENTS_ACTION action,
  15399         HANDLE event,
  15400         WINBOOL *further_measurements_desired);
  15401 
  15402     END_INTERFACE
  15403 } ID3D12Device6Vtbl;
  15404 
  15405 interface ID3D12Device6 {
  15406     CONST_VTBL ID3D12Device6Vtbl* lpVtbl;
  15407 };
  15408 
  15409 #ifdef COBJMACROS
  15410 #ifndef WIDL_C_INLINE_WRAPPERS
  15411 /*** IUnknown methods ***/
  15412 #define ID3D12Device6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  15413 #define ID3D12Device6_AddRef(This) (This)->lpVtbl->AddRef(This)
  15414 #define ID3D12Device6_Release(This) (This)->lpVtbl->Release(This)
  15415 /*** ID3D12Object methods ***/
  15416 #define ID3D12Device6_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  15417 #define ID3D12Device6_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  15418 #define ID3D12Device6_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  15419 #define ID3D12Device6_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  15420 /*** ID3D12Device methods ***/
  15421 #define ID3D12Device6_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  15422 #define ID3D12Device6_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  15423 #define ID3D12Device6_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  15424 #define ID3D12Device6_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  15425 #define ID3D12Device6_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  15426 #define ID3D12Device6_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  15427 #define ID3D12Device6_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  15428 #define ID3D12Device6_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  15429 #define ID3D12Device6_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  15430 #define ID3D12Device6_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  15431 #define ID3D12Device6_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  15432 #define ID3D12Device6_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  15433 #define ID3D12Device6_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  15434 #define ID3D12Device6_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  15435 #define ID3D12Device6_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  15436 #define ID3D12Device6_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  15437 #define ID3D12Device6_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  15438 #define ID3D12Device6_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  15439 #define ID3D12Device6_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device6_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  15440 #define ID3D12Device6_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device6_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  15441 #define ID3D12Device6_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  15442 #define ID3D12Device6_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  15443 #define ID3D12Device6_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  15444 #define ID3D12Device6_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  15445 #define ID3D12Device6_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  15446 #define ID3D12Device6_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  15447 #define ID3D12Device6_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  15448 #define ID3D12Device6_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  15449 #define ID3D12Device6_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  15450 #define ID3D12Device6_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  15451 #define ID3D12Device6_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  15452 #define ID3D12Device6_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  15453 #define ID3D12Device6_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  15454 #define ID3D12Device6_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  15455 #define ID3D12Device6_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  15456 #define ID3D12Device6_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  15457 #define ID3D12Device6_GetAdapterLuid(This) ID3D12Device6_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  15458 /*** ID3D12Device1 methods ***/
  15459 #define ID3D12Device6_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  15460 #define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  15461 #define ID3D12Device6_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  15462 /*** ID3D12Device2 methods ***/
  15463 #define ID3D12Device6_CreatePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state)
  15464 /*** ID3D12Device3 methods ***/
  15465 #define ID3D12Device6_OpenExistingHeapFromAddress(This,address,riid,heap) (This)->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap)
  15466 #define ID3D12Device6_OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap) (This)->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap)
  15467 #define ID3D12Device6_EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value) (This)->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value)
  15468 /*** ID3D12Device4 methods ***/
  15469 #define ID3D12Device6_CreateCommandList1(This,node_mask,type,flags,riid,command_list) (This)->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list)
  15470 #define ID3D12Device6_CreateProtectedResourceSession(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session)
  15471 #define ID3D12Device6_CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  15472 #define ID3D12Device6_CreateHeap1(This,desc,protected_session,riid,heap) (This)->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap)
  15473 #define ID3D12Device6_CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource) (This)->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource)
  15474 #define ID3D12Device6_GetResourceAllocationInfo1(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device6_GetResourceAllocationInfo1_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  15475 /*** ID3D12Device5 methods ***/
  15476 #define ID3D12Device6_CreateLifetimeTracker(This,owner,riid,tracker) (This)->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker)
  15477 #define ID3D12Device6_RemoveDevice(This) (This)->lpVtbl->RemoveDevice(This)
  15478 #define ID3D12Device6_EnumerateMetaCommands(This,meta_commands_count,descs) (This)->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs)
  15479 #define ID3D12Device6_EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs) (This)->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs)
  15480 #define ID3D12Device6_CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command) (This)->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command)
  15481 #define ID3D12Device6_CreateStateObject(This,desc,riid,state_object) (This)->lpVtbl->CreateStateObject(This,desc,riid,state_object)
  15482 #define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info) (This)->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info)
  15483 #define ID3D12Device6_CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check) (This)->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check)
  15484 /*** ID3D12Device6 methods ***/
  15485 #define ID3D12Device6_SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired) (This)->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired)
  15486 #else
  15487 /*** IUnknown methods ***/
  15488 static inline HRESULT ID3D12Device6_QueryInterface(ID3D12Device6* This,REFIID riid,void **ppvObject) {
  15489     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  15490 }
  15491 static inline ULONG ID3D12Device6_AddRef(ID3D12Device6* This) {
  15492     return This->lpVtbl->AddRef(This);
  15493 }
  15494 static inline ULONG ID3D12Device6_Release(ID3D12Device6* This) {
  15495     return This->lpVtbl->Release(This);
  15496 }
  15497 /*** ID3D12Object methods ***/
  15498 static inline HRESULT ID3D12Device6_GetPrivateData(ID3D12Device6* This,REFGUID guid,UINT *data_size,void *data) {
  15499     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  15500 }
  15501 static inline HRESULT ID3D12Device6_SetPrivateData(ID3D12Device6* This,REFGUID guid,UINT data_size,const void *data) {
  15502     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  15503 }
  15504 static inline HRESULT ID3D12Device6_SetPrivateDataInterface(ID3D12Device6* This,REFGUID guid,const IUnknown *data) {
  15505     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  15506 }
  15507 static inline HRESULT ID3D12Device6_SetName(ID3D12Device6* This,const WCHAR *name) {
  15508     return This->lpVtbl->SetName(This,name);
  15509 }
  15510 /*** ID3D12Device methods ***/
  15511 static inline UINT ID3D12Device6_GetNodeCount(ID3D12Device6* This) {
  15512     return This->lpVtbl->GetNodeCount(This);
  15513 }
  15514 static inline HRESULT ID3D12Device6_CreateCommandQueue(ID3D12Device6* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  15515     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  15516 }
  15517 static inline HRESULT ID3D12Device6_CreateCommandAllocator(ID3D12Device6* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  15518     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  15519 }
  15520 static inline HRESULT ID3D12Device6_CreateGraphicsPipelineState(ID3D12Device6* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  15521     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  15522 }
  15523 static inline HRESULT ID3D12Device6_CreateComputePipelineState(ID3D12Device6* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  15524     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  15525 }
  15526 static inline HRESULT ID3D12Device6_CreateCommandList(ID3D12Device6* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  15527     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  15528 }
  15529 static inline HRESULT ID3D12Device6_CheckFeatureSupport(ID3D12Device6* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  15530     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  15531 }
  15532 static inline HRESULT ID3D12Device6_CreateDescriptorHeap(ID3D12Device6* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  15533     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  15534 }
  15535 static inline UINT ID3D12Device6_GetDescriptorHandleIncrementSize(ID3D12Device6* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  15536     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  15537 }
  15538 static inline HRESULT ID3D12Device6_CreateRootSignature(ID3D12Device6* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  15539     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  15540 }
  15541 static inline void ID3D12Device6_CreateConstantBufferView(ID3D12Device6* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  15542     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  15543 }
  15544 static inline void ID3D12Device6_CreateShaderResourceView(ID3D12Device6* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  15545     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  15546 }
  15547 static inline void ID3D12Device6_CreateUnorderedAccessView(ID3D12Device6* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  15548     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  15549 }
  15550 static inline void ID3D12Device6_CreateRenderTargetView(ID3D12Device6* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  15551     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  15552 }
  15553 static inline void ID3D12Device6_CreateDepthStencilView(ID3D12Device6* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  15554     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  15555 }
  15556 static inline void ID3D12Device6_CreateSampler(ID3D12Device6* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  15557     This->lpVtbl->CreateSampler(This,desc,descriptor);
  15558 }
  15559 static inline void ID3D12Device6_CopyDescriptors(ID3D12Device6* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  15560     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  15561 }
  15562 static inline void ID3D12Device6_CopyDescriptorsSimple(ID3D12Device6* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  15563     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  15564 }
  15565 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device6_GetResourceAllocationInfo(ID3D12Device6* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  15566     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  15567     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  15568 }
  15569 static inline D3D12_HEAP_PROPERTIES ID3D12Device6_GetCustomHeapProperties(ID3D12Device6* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  15570     D3D12_HEAP_PROPERTIES __ret;
  15571     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  15572 }
  15573 static inline HRESULT ID3D12Device6_CreateCommittedResource(ID3D12Device6* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  15574     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  15575 }
  15576 static inline HRESULT ID3D12Device6_CreateHeap(ID3D12Device6* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  15577     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  15578 }
  15579 static inline HRESULT ID3D12Device6_CreatePlacedResource(ID3D12Device6* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  15580     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  15581 }
  15582 static inline HRESULT ID3D12Device6_CreateReservedResource(ID3D12Device6* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  15583     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  15584 }
  15585 static inline HRESULT ID3D12Device6_CreateSharedHandle(ID3D12Device6* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  15586     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  15587 }
  15588 static inline HRESULT ID3D12Device6_OpenSharedHandle(ID3D12Device6* This,HANDLE handle,REFIID riid,void **object) {
  15589     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  15590 }
  15591 static inline HRESULT ID3D12Device6_OpenSharedHandleByName(ID3D12Device6* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  15592     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  15593 }
  15594 static inline HRESULT ID3D12Device6_MakeResident(ID3D12Device6* This,UINT object_count,ID3D12Pageable *const *objects) {
  15595     return This->lpVtbl->MakeResident(This,object_count,objects);
  15596 }
  15597 static inline HRESULT ID3D12Device6_Evict(ID3D12Device6* This,UINT object_count,ID3D12Pageable *const *objects) {
  15598     return This->lpVtbl->Evict(This,object_count,objects);
  15599 }
  15600 static inline HRESULT ID3D12Device6_CreateFence(ID3D12Device6* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  15601     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  15602 }
  15603 static inline HRESULT ID3D12Device6_GetDeviceRemovedReason(ID3D12Device6* This) {
  15604     return This->lpVtbl->GetDeviceRemovedReason(This);
  15605 }
  15606 static inline void ID3D12Device6_GetCopyableFootprints(ID3D12Device6* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  15607     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  15608 }
  15609 static inline HRESULT ID3D12Device6_CreateQueryHeap(ID3D12Device6* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  15610     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  15611 }
  15612 static inline HRESULT ID3D12Device6_SetStablePowerState(ID3D12Device6* This,WINBOOL enable) {
  15613     return This->lpVtbl->SetStablePowerState(This,enable);
  15614 }
  15615 static inline HRESULT ID3D12Device6_CreateCommandSignature(ID3D12Device6* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  15616     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  15617 }
  15618 static inline void ID3D12Device6_GetResourceTiling(ID3D12Device6* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  15619     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  15620 }
  15621 static inline LUID ID3D12Device6_GetAdapterLuid(ID3D12Device6* This) {
  15622     LUID __ret;
  15623     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  15624 }
  15625 /*** ID3D12Device1 methods ***/
  15626 static inline HRESULT ID3D12Device6_CreatePipelineLibrary(ID3D12Device6* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  15627     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  15628 }
  15629 static inline HRESULT ID3D12Device6_SetEventOnMultipleFenceCompletion(ID3D12Device6* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  15630     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  15631 }
  15632 static inline HRESULT ID3D12Device6_SetResidencyPriority(ID3D12Device6* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  15633     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  15634 }
  15635 /*** ID3D12Device2 methods ***/
  15636 static inline HRESULT ID3D12Device6_CreatePipelineState(ID3D12Device6* This,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
  15637     return This->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state);
  15638 }
  15639 /*** ID3D12Device3 methods ***/
  15640 static inline HRESULT ID3D12Device6_OpenExistingHeapFromAddress(ID3D12Device6* This,const void *address,REFIID riid,void **heap) {
  15641     return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
  15642 }
  15643 static inline HRESULT ID3D12Device6_OpenExistingHeapFromFileMapping(ID3D12Device6* This,HANDLE file_mapping,REFIID riid,void **heap) {
  15644     return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
  15645 }
  15646 static inline HRESULT ID3D12Device6_EnqueueMakeResident(ID3D12Device6* This,D3D12_RESIDENCY_FLAGS flags,UINT num_objects,ID3D12Pageable *const *objects,ID3D12Fence *fence,UINT64 fence_value) {
  15647     return This->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value);
  15648 }
  15649 /*** ID3D12Device4 methods ***/
  15650 static inline HRESULT ID3D12Device6_CreateCommandList1(ID3D12Device6* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,D3D12_COMMAND_LIST_FLAGS flags,REFIID riid,void **command_list) {
  15651     return This->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list);
  15652 }
  15653 static inline HRESULT ID3D12Device6_CreateProtectedResourceSession(ID3D12Device6* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,REFIID riid,void **session) {
  15654     return This->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session);
  15655 }
  15656 static inline HRESULT ID3D12Device6_CreateCommittedResource1(ID3D12Device6* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  15657     return This->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  15658 }
  15659 static inline HRESULT ID3D12Device6_CreateHeap1(ID3D12Device6* This,const D3D12_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **heap) {
  15660     return This->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap);
  15661 }
  15662 static inline HRESULT ID3D12Device6_CreateReservedResource1(ID3D12Device6* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **resource) {
  15663     return This->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource);
  15664 }
  15665 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device6_GetResourceAllocationInfo1(ID3D12Device6* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  15666     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  15667     return *This->lpVtbl->GetResourceAllocationInfo1(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  15668 }
  15669 /*** ID3D12Device5 methods ***/
  15670 static inline HRESULT ID3D12Device6_CreateLifetimeTracker(ID3D12Device6* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
  15671     return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
  15672 }
  15673 static inline void ID3D12Device6_RemoveDevice(ID3D12Device6* This) {
  15674     This->lpVtbl->RemoveDevice(This);
  15675 }
  15676 static inline HRESULT ID3D12Device6_EnumerateMetaCommands(ID3D12Device6* This,UINT *meta_commands_count,D3D12_META_COMMAND_DESC *descs) {
  15677     return This->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs);
  15678 }
  15679 static inline HRESULT ID3D12Device6_EnumerateMetaCommandParameters(ID3D12Device6* This,REFGUID command_id,D3D12_META_COMMAND_PARAMETER_STAGE stage,UINT *total_structure_size_in_bytes,UINT *parameter_count,D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs) {
  15680     return This->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs);
  15681 }
  15682 static inline HRESULT ID3D12Device6_CreateMetaCommand(ID3D12Device6* This,REFGUID command_id,UINT node_mask,const void *creation_parameters_data,SIZE_T creation_parameters_data_size_in_bytes,REFIID riid,void **meta_command) {
  15683     return This->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command);
  15684 }
  15685 static inline HRESULT ID3D12Device6_CreateStateObject(ID3D12Device6* This,const D3D12_STATE_OBJECT_DESC *desc,REFIID riid,void **state_object) {
  15686     return This->lpVtbl->CreateStateObject(This,desc,riid,state_object);
  15687 }
  15688 static inline void ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(ID3D12Device6* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info) {
  15689     This->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info);
  15690 }
  15691 static inline D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ID3D12Device6_CheckDriverMatchingIdentifier(ID3D12Device6* This,D3D12_SERIALIZED_DATA_TYPE serialized_data_type,const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check) {
  15692     return This->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check);
  15693 }
  15694 /*** ID3D12Device6 methods ***/
  15695 static inline HRESULT ID3D12Device6_SetBackgroundProcessingMode(ID3D12Device6* This,D3D12_BACKGROUND_PROCESSING_MODE mode,D3D12_MEASUREMENTS_ACTION action,HANDLE event,WINBOOL *further_measurements_desired) {
  15696     return This->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired);
  15697 }
  15698 #endif
  15699 #endif
  15700 
  15701 #endif
  15702 
  15703 
  15704 #endif  /* __ID3D12Device6_INTERFACE_DEFINED__ */
  15705 
  15706 DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62b0084e, 0xc70e, 0x4daa, 0xa1, 0x09, 0x30, 0xff, 0x8d, 0x5a, 0x04, 0x82);
  15707 typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT {
  15708     UINT NodeIndex;
  15709     UINT Count;
  15710 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
  15711 typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES {
  15712     UINT NodeIndex;
  15713     UINT Count;
  15714     GUID *pTypes;
  15715 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
  15716 typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1 {
  15717     UINT NodeMask;
  15718     D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
  15719     GUID ProtectionType;
  15720 } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
  15721 /*****************************************************************************
  15722  * ID3D12ProtectedResourceSession1 interface
  15723  */
  15724 #ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
  15725 #define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
  15726 
  15727 DEFINE_GUID(IID_ID3D12ProtectedResourceSession1, 0xd6f12dd6, 0x76fb, 0x406e, 0x89,0x61, 0x42,0x96,0xee,0xfc,0x04,0x09);
  15728 #if defined(__cplusplus) && !defined(CINTERFACE)
  15729 MIDL_INTERFACE("d6f12dd6-76fb-406e-8961-4296eefc0409")
  15730 ID3D12ProtectedResourceSession1 : public ID3D12ProtectedResourceSession
  15731 {
  15732 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
  15733     virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1* STDMETHODCALLTYPE GetDesc1(
  15734         D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *__ret) = 0;
  15735     D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1(
  15736         )
  15737     {
  15738         D3D12_PROTECTED_RESOURCE_SESSION_DESC1 __ret;
  15739         return *GetDesc1(&__ret);
  15740     }
  15741 #else
  15742     virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1(
  15743         ) = 0;
  15744 #endif
  15745 
  15746 };
  15747 #ifdef __CRT_UUID_DECL
  15748 __CRT_UUID_DECL(ID3D12ProtectedResourceSession1, 0xd6f12dd6, 0x76fb, 0x406e, 0x89,0x61, 0x42,0x96,0xee,0xfc,0x04,0x09)
  15749 #endif
  15750 #else
  15751 typedef struct ID3D12ProtectedResourceSession1Vtbl {
  15752     BEGIN_INTERFACE
  15753 
  15754     /*** IUnknown methods ***/
  15755     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  15756         ID3D12ProtectedResourceSession1 *This,
  15757         REFIID riid,
  15758         void **ppvObject);
  15759 
  15760     ULONG (STDMETHODCALLTYPE *AddRef)(
  15761         ID3D12ProtectedResourceSession1 *This);
  15762 
  15763     ULONG (STDMETHODCALLTYPE *Release)(
  15764         ID3D12ProtectedResourceSession1 *This);
  15765 
  15766     /*** ID3D12Object methods ***/
  15767     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  15768         ID3D12ProtectedResourceSession1 *This,
  15769         REFGUID guid,
  15770         UINT *data_size,
  15771         void *data);
  15772 
  15773     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  15774         ID3D12ProtectedResourceSession1 *This,
  15775         REFGUID guid,
  15776         UINT data_size,
  15777         const void *data);
  15778 
  15779     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  15780         ID3D12ProtectedResourceSession1 *This,
  15781         REFGUID guid,
  15782         const IUnknown *data);
  15783 
  15784     HRESULT (STDMETHODCALLTYPE *SetName)(
  15785         ID3D12ProtectedResourceSession1 *This,
  15786         const WCHAR *name);
  15787 
  15788     /*** ID3D12DeviceChild methods ***/
  15789     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  15790         ID3D12ProtectedResourceSession1 *This,
  15791         REFIID riid,
  15792         void **device);
  15793 
  15794     /*** ID3D12ProtectedSession methods ***/
  15795     HRESULT (STDMETHODCALLTYPE *GetStatusFence)(
  15796         ID3D12ProtectedResourceSession1 *This,
  15797         REFIID riid,
  15798         void **fence);
  15799 
  15800     D3D12_PROTECTED_SESSION_STATUS (STDMETHODCALLTYPE *GetSessionStatus)(
  15801         ID3D12ProtectedResourceSession1 *This);
  15802 
  15803     /*** ID3D12ProtectedResourceSession methods ***/
  15804     D3D12_PROTECTED_RESOURCE_SESSION_DESC * (STDMETHODCALLTYPE *GetDesc)(
  15805         ID3D12ProtectedResourceSession1 *This,
  15806         D3D12_PROTECTED_RESOURCE_SESSION_DESC *__ret);
  15807 
  15808     /*** ID3D12ProtectedResourceSession1 methods ***/
  15809     D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * (STDMETHODCALLTYPE *GetDesc1)(
  15810         ID3D12ProtectedResourceSession1 *This,
  15811         D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *__ret);
  15812 
  15813     END_INTERFACE
  15814 } ID3D12ProtectedResourceSession1Vtbl;
  15815 
  15816 interface ID3D12ProtectedResourceSession1 {
  15817     CONST_VTBL ID3D12ProtectedResourceSession1Vtbl* lpVtbl;
  15818 };
  15819 
  15820 #ifdef COBJMACROS
  15821 #ifndef WIDL_C_INLINE_WRAPPERS
  15822 /*** IUnknown methods ***/
  15823 #define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  15824 #define ID3D12ProtectedResourceSession1_AddRef(This) (This)->lpVtbl->AddRef(This)
  15825 #define ID3D12ProtectedResourceSession1_Release(This) (This)->lpVtbl->Release(This)
  15826 /*** ID3D12Object methods ***/
  15827 #define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  15828 #define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  15829 #define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  15830 #define ID3D12ProtectedResourceSession1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  15831 /*** ID3D12DeviceChild methods ***/
  15832 #define ID3D12ProtectedResourceSession1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  15833 /*** ID3D12ProtectedSession methods ***/
  15834 #define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,fence) (This)->lpVtbl->GetStatusFence(This,riid,fence)
  15835 #define ID3D12ProtectedResourceSession1_GetSessionStatus(This) (This)->lpVtbl->GetSessionStatus(This)
  15836 /*** ID3D12ProtectedResourceSession methods ***/
  15837 #define ID3D12ProtectedResourceSession1_GetDesc(This) ID3D12ProtectedResourceSession1_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  15838 /*** ID3D12ProtectedResourceSession1 methods ***/
  15839 #define ID3D12ProtectedResourceSession1_GetDesc1(This) ID3D12ProtectedResourceSession1_GetDesc1_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  15840 #else
  15841 /*** IUnknown methods ***/
  15842 static inline HRESULT ID3D12ProtectedResourceSession1_QueryInterface(ID3D12ProtectedResourceSession1* This,REFIID riid,void **ppvObject) {
  15843     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  15844 }
  15845 static inline ULONG ID3D12ProtectedResourceSession1_AddRef(ID3D12ProtectedResourceSession1* This) {
  15846     return This->lpVtbl->AddRef(This);
  15847 }
  15848 static inline ULONG ID3D12ProtectedResourceSession1_Release(ID3D12ProtectedResourceSession1* This) {
  15849     return This->lpVtbl->Release(This);
  15850 }
  15851 /*** ID3D12Object methods ***/
  15852 static inline HRESULT ID3D12ProtectedResourceSession1_GetPrivateData(ID3D12ProtectedResourceSession1* This,REFGUID guid,UINT *data_size,void *data) {
  15853     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  15854 }
  15855 static inline HRESULT ID3D12ProtectedResourceSession1_SetPrivateData(ID3D12ProtectedResourceSession1* This,REFGUID guid,UINT data_size,const void *data) {
  15856     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  15857 }
  15858 static inline HRESULT ID3D12ProtectedResourceSession1_SetPrivateDataInterface(ID3D12ProtectedResourceSession1* This,REFGUID guid,const IUnknown *data) {
  15859     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  15860 }
  15861 static inline HRESULT ID3D12ProtectedResourceSession1_SetName(ID3D12ProtectedResourceSession1* This,const WCHAR *name) {
  15862     return This->lpVtbl->SetName(This,name);
  15863 }
  15864 /*** ID3D12DeviceChild methods ***/
  15865 static inline HRESULT ID3D12ProtectedResourceSession1_GetDevice(ID3D12ProtectedResourceSession1* This,REFIID riid,void **device) {
  15866     return This->lpVtbl->GetDevice(This,riid,device);
  15867 }
  15868 /*** ID3D12ProtectedSession methods ***/
  15869 static inline HRESULT ID3D12ProtectedResourceSession1_GetStatusFence(ID3D12ProtectedResourceSession1* This,REFIID riid,void **fence) {
  15870     return This->lpVtbl->GetStatusFence(This,riid,fence);
  15871 }
  15872 static inline D3D12_PROTECTED_SESSION_STATUS ID3D12ProtectedResourceSession1_GetSessionStatus(ID3D12ProtectedResourceSession1* This) {
  15873     return This->lpVtbl->GetSessionStatus(This);
  15874 }
  15875 /*** ID3D12ProtectedResourceSession methods ***/
  15876 static inline D3D12_PROTECTED_RESOURCE_SESSION_DESC ID3D12ProtectedResourceSession1_GetDesc(ID3D12ProtectedResourceSession1* This) {
  15877     D3D12_PROTECTED_RESOURCE_SESSION_DESC __ret;
  15878     return *This->lpVtbl->GetDesc(This,&__ret);
  15879 }
  15880 /*** ID3D12ProtectedResourceSession1 methods ***/
  15881 static inline D3D12_PROTECTED_RESOURCE_SESSION_DESC1 ID3D12ProtectedResourceSession1_GetDesc1(ID3D12ProtectedResourceSession1* This) {
  15882     D3D12_PROTECTED_RESOURCE_SESSION_DESC1 __ret;
  15883     return *This->lpVtbl->GetDesc1(This,&__ret);
  15884 }
  15885 #endif
  15886 #endif
  15887 
  15888 #endif
  15889 
  15890 
  15891 #endif  /* __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__ */
  15892 
  15893 /*****************************************************************************
  15894  * ID3D12Device7 interface
  15895  */
  15896 #ifndef __ID3D12Device7_INTERFACE_DEFINED__
  15897 #define __ID3D12Device7_INTERFACE_DEFINED__
  15898 
  15899 DEFINE_GUID(IID_ID3D12Device7, 0x5c014b53, 0x68a1, 0x4b9b, 0x8b,0xd1, 0xdd,0x60,0x46,0xb9,0x35,0x8b);
  15900 #if defined(__cplusplus) && !defined(CINTERFACE)
  15901 MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
  15902 ID3D12Device7 : public ID3D12Device6
  15903 {
  15904     virtual HRESULT STDMETHODCALLTYPE AddToStateObject(
  15905         const D3D12_STATE_OBJECT_DESC *addition,
  15906         ID3D12StateObject *state_object_to_grow_from,
  15907         REFIID riid,
  15908         void **new_state_object) = 0;
  15909 
  15910     virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession1(
  15911         const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *desc,
  15912         REFIID riid,
  15913         void **session) = 0;
  15914 
  15915 };
  15916 #ifdef __CRT_UUID_DECL
  15917 __CRT_UUID_DECL(ID3D12Device7, 0x5c014b53, 0x68a1, 0x4b9b, 0x8b,0xd1, 0xdd,0x60,0x46,0xb9,0x35,0x8b)
  15918 #endif
  15919 #else
  15920 typedef struct ID3D12Device7Vtbl {
  15921     BEGIN_INTERFACE
  15922 
  15923     /*** IUnknown methods ***/
  15924     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  15925         ID3D12Device7 *This,
  15926         REFIID riid,
  15927         void **ppvObject);
  15928 
  15929     ULONG (STDMETHODCALLTYPE *AddRef)(
  15930         ID3D12Device7 *This);
  15931 
  15932     ULONG (STDMETHODCALLTYPE *Release)(
  15933         ID3D12Device7 *This);
  15934 
  15935     /*** ID3D12Object methods ***/
  15936     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  15937         ID3D12Device7 *This,
  15938         REFGUID guid,
  15939         UINT *data_size,
  15940         void *data);
  15941 
  15942     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  15943         ID3D12Device7 *This,
  15944         REFGUID guid,
  15945         UINT data_size,
  15946         const void *data);
  15947 
  15948     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  15949         ID3D12Device7 *This,
  15950         REFGUID guid,
  15951         const IUnknown *data);
  15952 
  15953     HRESULT (STDMETHODCALLTYPE *SetName)(
  15954         ID3D12Device7 *This,
  15955         const WCHAR *name);
  15956 
  15957     /*** ID3D12Device methods ***/
  15958     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  15959         ID3D12Device7 *This);
  15960 
  15961     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  15962         ID3D12Device7 *This,
  15963         const D3D12_COMMAND_QUEUE_DESC *desc,
  15964         REFIID riid,
  15965         void **command_queue);
  15966 
  15967     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  15968         ID3D12Device7 *This,
  15969         D3D12_COMMAND_LIST_TYPE type,
  15970         REFIID riid,
  15971         void **command_allocator);
  15972 
  15973     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  15974         ID3D12Device7 *This,
  15975         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  15976         REFIID riid,
  15977         void **pipeline_state);
  15978 
  15979     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  15980         ID3D12Device7 *This,
  15981         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  15982         REFIID riid,
  15983         void **pipeline_state);
  15984 
  15985     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  15986         ID3D12Device7 *This,
  15987         UINT node_mask,
  15988         D3D12_COMMAND_LIST_TYPE type,
  15989         ID3D12CommandAllocator *command_allocator,
  15990         ID3D12PipelineState *initial_pipeline_state,
  15991         REFIID riid,
  15992         void **command_list);
  15993 
  15994     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  15995         ID3D12Device7 *This,
  15996         D3D12_FEATURE feature,
  15997         void *feature_data,
  15998         UINT feature_data_size);
  15999 
  16000     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  16001         ID3D12Device7 *This,
  16002         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  16003         REFIID riid,
  16004         void **descriptor_heap);
  16005 
  16006     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  16007         ID3D12Device7 *This,
  16008         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  16009 
  16010     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  16011         ID3D12Device7 *This,
  16012         UINT node_mask,
  16013         const void *bytecode,
  16014         SIZE_T bytecode_length,
  16015         REFIID riid,
  16016         void **root_signature);
  16017 
  16018     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  16019         ID3D12Device7 *This,
  16020         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  16021         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16022 
  16023     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  16024         ID3D12Device7 *This,
  16025         ID3D12Resource *resource,
  16026         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  16027         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16028 
  16029     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  16030         ID3D12Device7 *This,
  16031         ID3D12Resource *resource,
  16032         ID3D12Resource *counter_resource,
  16033         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  16034         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16035 
  16036     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  16037         ID3D12Device7 *This,
  16038         ID3D12Resource *resource,
  16039         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  16040         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16041 
  16042     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  16043         ID3D12Device7 *This,
  16044         ID3D12Resource *resource,
  16045         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  16046         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16047 
  16048     void (STDMETHODCALLTYPE *CreateSampler)(
  16049         ID3D12Device7 *This,
  16050         const D3D12_SAMPLER_DESC *desc,
  16051         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16052 
  16053     void (STDMETHODCALLTYPE *CopyDescriptors)(
  16054         ID3D12Device7 *This,
  16055         UINT dst_descriptor_range_count,
  16056         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  16057         const UINT *dst_descriptor_range_sizes,
  16058         UINT src_descriptor_range_count,
  16059         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  16060         const UINT *src_descriptor_range_sizes,
  16061         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  16062 
  16063     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  16064         ID3D12Device7 *This,
  16065         UINT descriptor_count,
  16066         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  16067         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  16068         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  16069 
  16070     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  16071         ID3D12Device7 *This,
  16072         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  16073         UINT visible_mask,
  16074         UINT reource_desc_count,
  16075         const D3D12_RESOURCE_DESC *resource_descs);
  16076 
  16077     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  16078         ID3D12Device7 *This,
  16079         D3D12_HEAP_PROPERTIES *__ret,
  16080         UINT node_mask,
  16081         D3D12_HEAP_TYPE heap_type);
  16082 
  16083     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  16084         ID3D12Device7 *This,
  16085         const D3D12_HEAP_PROPERTIES *heap_properties,
  16086         D3D12_HEAP_FLAGS heap_flags,
  16087         const D3D12_RESOURCE_DESC *desc,
  16088         D3D12_RESOURCE_STATES initial_state,
  16089         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16090         REFIID riid,
  16091         void **resource);
  16092 
  16093     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  16094         ID3D12Device7 *This,
  16095         const D3D12_HEAP_DESC *desc,
  16096         REFIID riid,
  16097         void **heap);
  16098 
  16099     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  16100         ID3D12Device7 *This,
  16101         ID3D12Heap *heap,
  16102         UINT64 heap_offset,
  16103         const D3D12_RESOURCE_DESC *desc,
  16104         D3D12_RESOURCE_STATES initial_state,
  16105         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16106         REFIID riid,
  16107         void **resource);
  16108 
  16109     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  16110         ID3D12Device7 *This,
  16111         const D3D12_RESOURCE_DESC *desc,
  16112         D3D12_RESOURCE_STATES initial_state,
  16113         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16114         REFIID riid,
  16115         void **resource);
  16116 
  16117     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  16118         ID3D12Device7 *This,
  16119         ID3D12DeviceChild *object,
  16120         const SECURITY_ATTRIBUTES *attributes,
  16121         DWORD access,
  16122         const WCHAR *name,
  16123         HANDLE *handle);
  16124 
  16125     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  16126         ID3D12Device7 *This,
  16127         HANDLE handle,
  16128         REFIID riid,
  16129         void **object);
  16130 
  16131     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  16132         ID3D12Device7 *This,
  16133         const WCHAR *name,
  16134         DWORD access,
  16135         HANDLE *handle);
  16136 
  16137     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  16138         ID3D12Device7 *This,
  16139         UINT object_count,
  16140         ID3D12Pageable *const *objects);
  16141 
  16142     HRESULT (STDMETHODCALLTYPE *Evict)(
  16143         ID3D12Device7 *This,
  16144         UINT object_count,
  16145         ID3D12Pageable *const *objects);
  16146 
  16147     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  16148         ID3D12Device7 *This,
  16149         UINT64 initial_value,
  16150         D3D12_FENCE_FLAGS flags,
  16151         REFIID riid,
  16152         void **fence);
  16153 
  16154     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  16155         ID3D12Device7 *This);
  16156 
  16157     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  16158         ID3D12Device7 *This,
  16159         const D3D12_RESOURCE_DESC *desc,
  16160         UINT first_sub_resource,
  16161         UINT sub_resource_count,
  16162         UINT64 base_offset,
  16163         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  16164         UINT *row_count,
  16165         UINT64 *row_size,
  16166         UINT64 *total_bytes);
  16167 
  16168     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  16169         ID3D12Device7 *This,
  16170         const D3D12_QUERY_HEAP_DESC *desc,
  16171         REFIID riid,
  16172         void **heap);
  16173 
  16174     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  16175         ID3D12Device7 *This,
  16176         WINBOOL enable);
  16177 
  16178     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  16179         ID3D12Device7 *This,
  16180         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  16181         ID3D12RootSignature *root_signature,
  16182         REFIID riid,
  16183         void **command_signature);
  16184 
  16185     void (STDMETHODCALLTYPE *GetResourceTiling)(
  16186         ID3D12Device7 *This,
  16187         ID3D12Resource *resource,
  16188         UINT *total_tile_count,
  16189         D3D12_PACKED_MIP_INFO *packed_mip_info,
  16190         D3D12_TILE_SHAPE *standard_tile_shape,
  16191         UINT *sub_resource_tiling_count,
  16192         UINT first_sub_resource_tiling,
  16193         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  16194 
  16195     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  16196         ID3D12Device7 *This,
  16197         LUID *__ret);
  16198 
  16199     /*** ID3D12Device1 methods ***/
  16200     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  16201         ID3D12Device7 *This,
  16202         const void *blob,
  16203         SIZE_T blob_size,
  16204         REFIID iid,
  16205         void **lib);
  16206 
  16207     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  16208         ID3D12Device7 *This,
  16209         ID3D12Fence *const *fences,
  16210         const UINT64 *values,
  16211         UINT fence_count,
  16212         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  16213         HANDLE event);
  16214 
  16215     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  16216         ID3D12Device7 *This,
  16217         UINT object_count,
  16218         ID3D12Pageable *const *objects,
  16219         const D3D12_RESIDENCY_PRIORITY *priorities);
  16220 
  16221     /*** ID3D12Device2 methods ***/
  16222     HRESULT (STDMETHODCALLTYPE *CreatePipelineState)(
  16223         ID3D12Device7 *This,
  16224         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  16225         REFIID riid,
  16226         void **pipeline_state);
  16227 
  16228     /*** ID3D12Device3 methods ***/
  16229     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromAddress)(
  16230         ID3D12Device7 *This,
  16231         const void *address,
  16232         REFIID riid,
  16233         void **heap);
  16234 
  16235     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping)(
  16236         ID3D12Device7 *This,
  16237         HANDLE file_mapping,
  16238         REFIID riid,
  16239         void **heap);
  16240 
  16241     HRESULT (STDMETHODCALLTYPE *EnqueueMakeResident)(
  16242         ID3D12Device7 *This,
  16243         D3D12_RESIDENCY_FLAGS flags,
  16244         UINT num_objects,
  16245         ID3D12Pageable *const *objects,
  16246         ID3D12Fence *fence,
  16247         UINT64 fence_value);
  16248 
  16249     /*** ID3D12Device4 methods ***/
  16250     HRESULT (STDMETHODCALLTYPE *CreateCommandList1)(
  16251         ID3D12Device7 *This,
  16252         UINT node_mask,
  16253         D3D12_COMMAND_LIST_TYPE type,
  16254         D3D12_COMMAND_LIST_FLAGS flags,
  16255         REFIID riid,
  16256         void **command_list);
  16257 
  16258     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession)(
  16259         ID3D12Device7 *This,
  16260         const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,
  16261         REFIID riid,
  16262         void **session);
  16263 
  16264     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource1)(
  16265         ID3D12Device7 *This,
  16266         const D3D12_HEAP_PROPERTIES *heap_properties,
  16267         D3D12_HEAP_FLAGS heap_flags,
  16268         const D3D12_RESOURCE_DESC *desc,
  16269         D3D12_RESOURCE_STATES initial_resource_state,
  16270         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16271         ID3D12ProtectedResourceSession *protected_session,
  16272         REFIID riid_resource,
  16273         void **resource);
  16274 
  16275     HRESULT (STDMETHODCALLTYPE *CreateHeap1)(
  16276         ID3D12Device7 *This,
  16277         const D3D12_HEAP_DESC *desc,
  16278         ID3D12ProtectedResourceSession *protected_session,
  16279         REFIID riid,
  16280         void **heap);
  16281 
  16282     HRESULT (STDMETHODCALLTYPE *CreateReservedResource1)(
  16283         ID3D12Device7 *This,
  16284         const D3D12_RESOURCE_DESC *desc,
  16285         D3D12_RESOURCE_STATES initial_state,
  16286         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16287         ID3D12ProtectedResourceSession *protected_session,
  16288         REFIID riid,
  16289         void **resource);
  16290 
  16291     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo1)(
  16292         ID3D12Device7 *This,
  16293         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  16294         UINT visible_mask,
  16295         UINT resource_descs_count,
  16296         const D3D12_RESOURCE_DESC *resource_descs,
  16297         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  16298 
  16299     /*** ID3D12Device5 methods ***/
  16300     HRESULT (STDMETHODCALLTYPE *CreateLifetimeTracker)(
  16301         ID3D12Device7 *This,
  16302         ID3D12LifetimeOwner *owner,
  16303         REFIID riid,
  16304         void **tracker);
  16305 
  16306     void (STDMETHODCALLTYPE *RemoveDevice)(
  16307         ID3D12Device7 *This);
  16308 
  16309     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommands)(
  16310         ID3D12Device7 *This,
  16311         UINT *meta_commands_count,
  16312         D3D12_META_COMMAND_DESC *descs);
  16313 
  16314     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommandParameters)(
  16315         ID3D12Device7 *This,
  16316         REFGUID command_id,
  16317         D3D12_META_COMMAND_PARAMETER_STAGE stage,
  16318         UINT *total_structure_size_in_bytes,
  16319         UINT *parameter_count,
  16320         D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs);
  16321 
  16322     HRESULT (STDMETHODCALLTYPE *CreateMetaCommand)(
  16323         ID3D12Device7 *This,
  16324         REFGUID command_id,
  16325         UINT node_mask,
  16326         const void *creation_parameters_data,
  16327         SIZE_T creation_parameters_data_size_in_bytes,
  16328         REFIID riid,
  16329         void **meta_command);
  16330 
  16331     HRESULT (STDMETHODCALLTYPE *CreateStateObject)(
  16332         ID3D12Device7 *This,
  16333         const D3D12_STATE_OBJECT_DESC *desc,
  16334         REFIID riid,
  16335         void **state_object);
  16336 
  16337     void (STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo)(
  16338         ID3D12Device7 *This,
  16339         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,
  16340         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info);
  16341 
  16342     D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS (STDMETHODCALLTYPE *CheckDriverMatchingIdentifier)(
  16343         ID3D12Device7 *This,
  16344         D3D12_SERIALIZED_DATA_TYPE serialized_data_type,
  16345         const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check);
  16346 
  16347     /*** ID3D12Device6 methods ***/
  16348     HRESULT (STDMETHODCALLTYPE *SetBackgroundProcessingMode)(
  16349         ID3D12Device7 *This,
  16350         D3D12_BACKGROUND_PROCESSING_MODE mode,
  16351         D3D12_MEASUREMENTS_ACTION action,
  16352         HANDLE event,
  16353         WINBOOL *further_measurements_desired);
  16354 
  16355     /*** ID3D12Device7 methods ***/
  16356     HRESULT (STDMETHODCALLTYPE *AddToStateObject)(
  16357         ID3D12Device7 *This,
  16358         const D3D12_STATE_OBJECT_DESC *addition,
  16359         ID3D12StateObject *state_object_to_grow_from,
  16360         REFIID riid,
  16361         void **new_state_object);
  16362 
  16363     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession1)(
  16364         ID3D12Device7 *This,
  16365         const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *desc,
  16366         REFIID riid,
  16367         void **session);
  16368 
  16369     END_INTERFACE
  16370 } ID3D12Device7Vtbl;
  16371 
  16372 interface ID3D12Device7 {
  16373     CONST_VTBL ID3D12Device7Vtbl* lpVtbl;
  16374 };
  16375 
  16376 #ifdef COBJMACROS
  16377 #ifndef WIDL_C_INLINE_WRAPPERS
  16378 /*** IUnknown methods ***/
  16379 #define ID3D12Device7_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  16380 #define ID3D12Device7_AddRef(This) (This)->lpVtbl->AddRef(This)
  16381 #define ID3D12Device7_Release(This) (This)->lpVtbl->Release(This)
  16382 /*** ID3D12Object methods ***/
  16383 #define ID3D12Device7_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  16384 #define ID3D12Device7_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  16385 #define ID3D12Device7_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  16386 #define ID3D12Device7_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  16387 /*** ID3D12Device methods ***/
  16388 #define ID3D12Device7_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  16389 #define ID3D12Device7_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  16390 #define ID3D12Device7_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  16391 #define ID3D12Device7_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  16392 #define ID3D12Device7_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  16393 #define ID3D12Device7_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  16394 #define ID3D12Device7_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  16395 #define ID3D12Device7_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  16396 #define ID3D12Device7_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  16397 #define ID3D12Device7_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  16398 #define ID3D12Device7_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  16399 #define ID3D12Device7_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  16400 #define ID3D12Device7_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  16401 #define ID3D12Device7_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  16402 #define ID3D12Device7_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  16403 #define ID3D12Device7_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  16404 #define ID3D12Device7_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  16405 #define ID3D12Device7_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  16406 #define ID3D12Device7_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device7_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  16407 #define ID3D12Device7_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device7_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  16408 #define ID3D12Device7_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  16409 #define ID3D12Device7_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  16410 #define ID3D12Device7_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  16411 #define ID3D12Device7_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  16412 #define ID3D12Device7_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  16413 #define ID3D12Device7_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  16414 #define ID3D12Device7_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  16415 #define ID3D12Device7_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  16416 #define ID3D12Device7_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  16417 #define ID3D12Device7_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  16418 #define ID3D12Device7_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  16419 #define ID3D12Device7_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  16420 #define ID3D12Device7_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  16421 #define ID3D12Device7_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  16422 #define ID3D12Device7_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  16423 #define ID3D12Device7_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  16424 #define ID3D12Device7_GetAdapterLuid(This) ID3D12Device7_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  16425 /*** ID3D12Device1 methods ***/
  16426 #define ID3D12Device7_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  16427 #define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  16428 #define ID3D12Device7_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  16429 /*** ID3D12Device2 methods ***/
  16430 #define ID3D12Device7_CreatePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state)
  16431 /*** ID3D12Device3 methods ***/
  16432 #define ID3D12Device7_OpenExistingHeapFromAddress(This,address,riid,heap) (This)->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap)
  16433 #define ID3D12Device7_OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap) (This)->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap)
  16434 #define ID3D12Device7_EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value) (This)->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value)
  16435 /*** ID3D12Device4 methods ***/
  16436 #define ID3D12Device7_CreateCommandList1(This,node_mask,type,flags,riid,command_list) (This)->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list)
  16437 #define ID3D12Device7_CreateProtectedResourceSession(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session)
  16438 #define ID3D12Device7_CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  16439 #define ID3D12Device7_CreateHeap1(This,desc,protected_session,riid,heap) (This)->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap)
  16440 #define ID3D12Device7_CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource) (This)->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource)
  16441 #define ID3D12Device7_GetResourceAllocationInfo1(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device7_GetResourceAllocationInfo1_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  16442 /*** ID3D12Device5 methods ***/
  16443 #define ID3D12Device7_CreateLifetimeTracker(This,owner,riid,tracker) (This)->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker)
  16444 #define ID3D12Device7_RemoveDevice(This) (This)->lpVtbl->RemoveDevice(This)
  16445 #define ID3D12Device7_EnumerateMetaCommands(This,meta_commands_count,descs) (This)->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs)
  16446 #define ID3D12Device7_EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs) (This)->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs)
  16447 #define ID3D12Device7_CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command) (This)->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command)
  16448 #define ID3D12Device7_CreateStateObject(This,desc,riid,state_object) (This)->lpVtbl->CreateStateObject(This,desc,riid,state_object)
  16449 #define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info) (This)->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info)
  16450 #define ID3D12Device7_CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check) (This)->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check)
  16451 /*** ID3D12Device6 methods ***/
  16452 #define ID3D12Device7_SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired) (This)->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired)
  16453 /*** ID3D12Device7 methods ***/
  16454 #define ID3D12Device7_AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object) (This)->lpVtbl->AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object)
  16455 #define ID3D12Device7_CreateProtectedResourceSession1(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession1(This,desc,riid,session)
  16456 #else
  16457 /*** IUnknown methods ***/
  16458 static inline HRESULT ID3D12Device7_QueryInterface(ID3D12Device7* This,REFIID riid,void **ppvObject) {
  16459     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  16460 }
  16461 static inline ULONG ID3D12Device7_AddRef(ID3D12Device7* This) {
  16462     return This->lpVtbl->AddRef(This);
  16463 }
  16464 static inline ULONG ID3D12Device7_Release(ID3D12Device7* This) {
  16465     return This->lpVtbl->Release(This);
  16466 }
  16467 /*** ID3D12Object methods ***/
  16468 static inline HRESULT ID3D12Device7_GetPrivateData(ID3D12Device7* This,REFGUID guid,UINT *data_size,void *data) {
  16469     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  16470 }
  16471 static inline HRESULT ID3D12Device7_SetPrivateData(ID3D12Device7* This,REFGUID guid,UINT data_size,const void *data) {
  16472     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  16473 }
  16474 static inline HRESULT ID3D12Device7_SetPrivateDataInterface(ID3D12Device7* This,REFGUID guid,const IUnknown *data) {
  16475     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  16476 }
  16477 static inline HRESULT ID3D12Device7_SetName(ID3D12Device7* This,const WCHAR *name) {
  16478     return This->lpVtbl->SetName(This,name);
  16479 }
  16480 /*** ID3D12Device methods ***/
  16481 static inline UINT ID3D12Device7_GetNodeCount(ID3D12Device7* This) {
  16482     return This->lpVtbl->GetNodeCount(This);
  16483 }
  16484 static inline HRESULT ID3D12Device7_CreateCommandQueue(ID3D12Device7* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  16485     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  16486 }
  16487 static inline HRESULT ID3D12Device7_CreateCommandAllocator(ID3D12Device7* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  16488     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  16489 }
  16490 static inline HRESULT ID3D12Device7_CreateGraphicsPipelineState(ID3D12Device7* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  16491     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  16492 }
  16493 static inline HRESULT ID3D12Device7_CreateComputePipelineState(ID3D12Device7* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  16494     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  16495 }
  16496 static inline HRESULT ID3D12Device7_CreateCommandList(ID3D12Device7* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  16497     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  16498 }
  16499 static inline HRESULT ID3D12Device7_CheckFeatureSupport(ID3D12Device7* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  16500     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  16501 }
  16502 static inline HRESULT ID3D12Device7_CreateDescriptorHeap(ID3D12Device7* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  16503     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  16504 }
  16505 static inline UINT ID3D12Device7_GetDescriptorHandleIncrementSize(ID3D12Device7* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  16506     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  16507 }
  16508 static inline HRESULT ID3D12Device7_CreateRootSignature(ID3D12Device7* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  16509     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  16510 }
  16511 static inline void ID3D12Device7_CreateConstantBufferView(ID3D12Device7* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  16512     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  16513 }
  16514 static inline void ID3D12Device7_CreateShaderResourceView(ID3D12Device7* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  16515     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  16516 }
  16517 static inline void ID3D12Device7_CreateUnorderedAccessView(ID3D12Device7* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  16518     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  16519 }
  16520 static inline void ID3D12Device7_CreateRenderTargetView(ID3D12Device7* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  16521     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  16522 }
  16523 static inline void ID3D12Device7_CreateDepthStencilView(ID3D12Device7* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  16524     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  16525 }
  16526 static inline void ID3D12Device7_CreateSampler(ID3D12Device7* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  16527     This->lpVtbl->CreateSampler(This,desc,descriptor);
  16528 }
  16529 static inline void ID3D12Device7_CopyDescriptors(ID3D12Device7* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  16530     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  16531 }
  16532 static inline void ID3D12Device7_CopyDescriptorsSimple(ID3D12Device7* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  16533     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  16534 }
  16535 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device7_GetResourceAllocationInfo(ID3D12Device7* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  16536     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  16537     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  16538 }
  16539 static inline D3D12_HEAP_PROPERTIES ID3D12Device7_GetCustomHeapProperties(ID3D12Device7* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  16540     D3D12_HEAP_PROPERTIES __ret;
  16541     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  16542 }
  16543 static inline HRESULT ID3D12Device7_CreateCommittedResource(ID3D12Device7* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  16544     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  16545 }
  16546 static inline HRESULT ID3D12Device7_CreateHeap(ID3D12Device7* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  16547     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  16548 }
  16549 static inline HRESULT ID3D12Device7_CreatePlacedResource(ID3D12Device7* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  16550     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  16551 }
  16552 static inline HRESULT ID3D12Device7_CreateReservedResource(ID3D12Device7* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  16553     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  16554 }
  16555 static inline HRESULT ID3D12Device7_CreateSharedHandle(ID3D12Device7* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  16556     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  16557 }
  16558 static inline HRESULT ID3D12Device7_OpenSharedHandle(ID3D12Device7* This,HANDLE handle,REFIID riid,void **object) {
  16559     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  16560 }
  16561 static inline HRESULT ID3D12Device7_OpenSharedHandleByName(ID3D12Device7* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  16562     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  16563 }
  16564 static inline HRESULT ID3D12Device7_MakeResident(ID3D12Device7* This,UINT object_count,ID3D12Pageable *const *objects) {
  16565     return This->lpVtbl->MakeResident(This,object_count,objects);
  16566 }
  16567 static inline HRESULT ID3D12Device7_Evict(ID3D12Device7* This,UINT object_count,ID3D12Pageable *const *objects) {
  16568     return This->lpVtbl->Evict(This,object_count,objects);
  16569 }
  16570 static inline HRESULT ID3D12Device7_CreateFence(ID3D12Device7* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  16571     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  16572 }
  16573 static inline HRESULT ID3D12Device7_GetDeviceRemovedReason(ID3D12Device7* This) {
  16574     return This->lpVtbl->GetDeviceRemovedReason(This);
  16575 }
  16576 static inline void ID3D12Device7_GetCopyableFootprints(ID3D12Device7* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  16577     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  16578 }
  16579 static inline HRESULT ID3D12Device7_CreateQueryHeap(ID3D12Device7* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  16580     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  16581 }
  16582 static inline HRESULT ID3D12Device7_SetStablePowerState(ID3D12Device7* This,WINBOOL enable) {
  16583     return This->lpVtbl->SetStablePowerState(This,enable);
  16584 }
  16585 static inline HRESULT ID3D12Device7_CreateCommandSignature(ID3D12Device7* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  16586     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  16587 }
  16588 static inline void ID3D12Device7_GetResourceTiling(ID3D12Device7* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  16589     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  16590 }
  16591 static inline LUID ID3D12Device7_GetAdapterLuid(ID3D12Device7* This) {
  16592     LUID __ret;
  16593     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  16594 }
  16595 /*** ID3D12Device1 methods ***/
  16596 static inline HRESULT ID3D12Device7_CreatePipelineLibrary(ID3D12Device7* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  16597     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  16598 }
  16599 static inline HRESULT ID3D12Device7_SetEventOnMultipleFenceCompletion(ID3D12Device7* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  16600     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  16601 }
  16602 static inline HRESULT ID3D12Device7_SetResidencyPriority(ID3D12Device7* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  16603     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  16604 }
  16605 /*** ID3D12Device2 methods ***/
  16606 static inline HRESULT ID3D12Device7_CreatePipelineState(ID3D12Device7* This,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
  16607     return This->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state);
  16608 }
  16609 /*** ID3D12Device3 methods ***/
  16610 static inline HRESULT ID3D12Device7_OpenExistingHeapFromAddress(ID3D12Device7* This,const void *address,REFIID riid,void **heap) {
  16611     return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
  16612 }
  16613 static inline HRESULT ID3D12Device7_OpenExistingHeapFromFileMapping(ID3D12Device7* This,HANDLE file_mapping,REFIID riid,void **heap) {
  16614     return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
  16615 }
  16616 static inline HRESULT ID3D12Device7_EnqueueMakeResident(ID3D12Device7* This,D3D12_RESIDENCY_FLAGS flags,UINT num_objects,ID3D12Pageable *const *objects,ID3D12Fence *fence,UINT64 fence_value) {
  16617     return This->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value);
  16618 }
  16619 /*** ID3D12Device4 methods ***/
  16620 static inline HRESULT ID3D12Device7_CreateCommandList1(ID3D12Device7* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,D3D12_COMMAND_LIST_FLAGS flags,REFIID riid,void **command_list) {
  16621     return This->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list);
  16622 }
  16623 static inline HRESULT ID3D12Device7_CreateProtectedResourceSession(ID3D12Device7* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,REFIID riid,void **session) {
  16624     return This->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session);
  16625 }
  16626 static inline HRESULT ID3D12Device7_CreateCommittedResource1(ID3D12Device7* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  16627     return This->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  16628 }
  16629 static inline HRESULT ID3D12Device7_CreateHeap1(ID3D12Device7* This,const D3D12_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **heap) {
  16630     return This->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap);
  16631 }
  16632 static inline HRESULT ID3D12Device7_CreateReservedResource1(ID3D12Device7* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **resource) {
  16633     return This->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource);
  16634 }
  16635 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device7_GetResourceAllocationInfo1(ID3D12Device7* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  16636     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  16637     return *This->lpVtbl->GetResourceAllocationInfo1(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  16638 }
  16639 /*** ID3D12Device5 methods ***/
  16640 static inline HRESULT ID3D12Device7_CreateLifetimeTracker(ID3D12Device7* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
  16641     return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
  16642 }
  16643 static inline void ID3D12Device7_RemoveDevice(ID3D12Device7* This) {
  16644     This->lpVtbl->RemoveDevice(This);
  16645 }
  16646 static inline HRESULT ID3D12Device7_EnumerateMetaCommands(ID3D12Device7* This,UINT *meta_commands_count,D3D12_META_COMMAND_DESC *descs) {
  16647     return This->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs);
  16648 }
  16649 static inline HRESULT ID3D12Device7_EnumerateMetaCommandParameters(ID3D12Device7* This,REFGUID command_id,D3D12_META_COMMAND_PARAMETER_STAGE stage,UINT *total_structure_size_in_bytes,UINT *parameter_count,D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs) {
  16650     return This->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs);
  16651 }
  16652 static inline HRESULT ID3D12Device7_CreateMetaCommand(ID3D12Device7* This,REFGUID command_id,UINT node_mask,const void *creation_parameters_data,SIZE_T creation_parameters_data_size_in_bytes,REFIID riid,void **meta_command) {
  16653     return This->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command);
  16654 }
  16655 static inline HRESULT ID3D12Device7_CreateStateObject(ID3D12Device7* This,const D3D12_STATE_OBJECT_DESC *desc,REFIID riid,void **state_object) {
  16656     return This->lpVtbl->CreateStateObject(This,desc,riid,state_object);
  16657 }
  16658 static inline void ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(ID3D12Device7* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info) {
  16659     This->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info);
  16660 }
  16661 static inline D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ID3D12Device7_CheckDriverMatchingIdentifier(ID3D12Device7* This,D3D12_SERIALIZED_DATA_TYPE serialized_data_type,const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check) {
  16662     return This->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check);
  16663 }
  16664 /*** ID3D12Device6 methods ***/
  16665 static inline HRESULT ID3D12Device7_SetBackgroundProcessingMode(ID3D12Device7* This,D3D12_BACKGROUND_PROCESSING_MODE mode,D3D12_MEASUREMENTS_ACTION action,HANDLE event,WINBOOL *further_measurements_desired) {
  16666     return This->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired);
  16667 }
  16668 /*** ID3D12Device7 methods ***/
  16669 static inline HRESULT ID3D12Device7_AddToStateObject(ID3D12Device7* This,const D3D12_STATE_OBJECT_DESC *addition,ID3D12StateObject *state_object_to_grow_from,REFIID riid,void **new_state_object) {
  16670     return This->lpVtbl->AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object);
  16671 }
  16672 static inline HRESULT ID3D12Device7_CreateProtectedResourceSession1(ID3D12Device7* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *desc,REFIID riid,void **session) {
  16673     return This->lpVtbl->CreateProtectedResourceSession1(This,desc,riid,session);
  16674 }
  16675 #endif
  16676 #endif
  16677 
  16678 #endif
  16679 
  16680 
  16681 #endif  /* __ID3D12Device7_INTERFACE_DEFINED__ */
  16682 
  16683 /*****************************************************************************
  16684  * ID3D12Device8 interface
  16685  */
  16686 #ifndef __ID3D12Device8_INTERFACE_DEFINED__
  16687 #define __ID3D12Device8_INTERFACE_DEFINED__
  16688 
  16689 DEFINE_GUID(IID_ID3D12Device8, 0x9218e6bb, 0xf944, 0x4f7e, 0xa7,0x5c, 0xb1,0xb2,0xc7,0xb7,0x01,0xf3);
  16690 #if defined(__cplusplus) && !defined(CINTERFACE)
  16691 MIDL_INTERFACE("9218e6bb-f944-4f7e-a75c-b1b2c7b701f3")
  16692 ID3D12Device8 : public ID3D12Device7
  16693 {
  16694 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
  16695     virtual D3D12_RESOURCE_ALLOCATION_INFO* STDMETHODCALLTYPE GetResourceAllocationInfo2(
  16696         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  16697         UINT visible_mask,
  16698         UINT resource_descs_count,
  16699         const D3D12_RESOURCE_DESC1 *resource_descs,
  16700         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) = 0;
  16701     D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
  16702         UINT visible_mask,
  16703         UINT resource_descs_count,
  16704         const D3D12_RESOURCE_DESC1 *resource_descs,
  16705         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1)
  16706     {
  16707         D3D12_RESOURCE_ALLOCATION_INFO __ret;
  16708         return *GetResourceAllocationInfo2(&__ret, visible_mask, resource_descs_count, resource_descs, resource_allocation_info1);
  16709     }
  16710 #else
  16711     virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
  16712         UINT visible_mask,
  16713         UINT resource_descs_count,
  16714         const D3D12_RESOURCE_DESC1 *resource_descs,
  16715         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) = 0;
  16716 #endif
  16717 
  16718     virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource2(
  16719         const D3D12_HEAP_PROPERTIES *heap_properties,
  16720         D3D12_HEAP_FLAGS heap_flags,
  16721         const D3D12_RESOURCE_DESC1 *desc,
  16722         D3D12_RESOURCE_STATES initial_resource_state,
  16723         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16724         ID3D12ProtectedResourceSession *protected_session,
  16725         REFIID riid_resource,
  16726         void **resource) = 0;
  16727 
  16728     virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource1(
  16729         ID3D12Heap *heap,
  16730         UINT64 heap_offset,
  16731         const D3D12_RESOURCE_DESC1 *desc,
  16732         D3D12_RESOURCE_STATES initial_state,
  16733         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16734         REFIID riid,
  16735         void **resource) = 0;
  16736 
  16737     virtual void STDMETHODCALLTYPE CreateSamplerFeedbackUnorderedAccessView(
  16738         ID3D12Resource *targeted_resource,
  16739         ID3D12Resource *feedback_resource,
  16740         D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor) = 0;
  16741 
  16742     virtual void STDMETHODCALLTYPE GetCopyableFootprints1(
  16743         const D3D12_RESOURCE_DESC1 *resource_desc,
  16744         UINT first_subresource,
  16745         UINT subresources_count,
  16746         UINT64 base_offset,
  16747         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  16748         UINT *rows_count,
  16749         UINT64 *row_size_in_bytes,
  16750         UINT64 *total_bytes) = 0;
  16751 
  16752 };
  16753 #ifdef __CRT_UUID_DECL
  16754 __CRT_UUID_DECL(ID3D12Device8, 0x9218e6bb, 0xf944, 0x4f7e, 0xa7,0x5c, 0xb1,0xb2,0xc7,0xb7,0x01,0xf3)
  16755 #endif
  16756 #else
  16757 typedef struct ID3D12Device8Vtbl {
  16758     BEGIN_INTERFACE
  16759 
  16760     /*** IUnknown methods ***/
  16761     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  16762         ID3D12Device8 *This,
  16763         REFIID riid,
  16764         void **ppvObject);
  16765 
  16766     ULONG (STDMETHODCALLTYPE *AddRef)(
  16767         ID3D12Device8 *This);
  16768 
  16769     ULONG (STDMETHODCALLTYPE *Release)(
  16770         ID3D12Device8 *This);
  16771 
  16772     /*** ID3D12Object methods ***/
  16773     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  16774         ID3D12Device8 *This,
  16775         REFGUID guid,
  16776         UINT *data_size,
  16777         void *data);
  16778 
  16779     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  16780         ID3D12Device8 *This,
  16781         REFGUID guid,
  16782         UINT data_size,
  16783         const void *data);
  16784 
  16785     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  16786         ID3D12Device8 *This,
  16787         REFGUID guid,
  16788         const IUnknown *data);
  16789 
  16790     HRESULT (STDMETHODCALLTYPE *SetName)(
  16791         ID3D12Device8 *This,
  16792         const WCHAR *name);
  16793 
  16794     /*** ID3D12Device methods ***/
  16795     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  16796         ID3D12Device8 *This);
  16797 
  16798     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  16799         ID3D12Device8 *This,
  16800         const D3D12_COMMAND_QUEUE_DESC *desc,
  16801         REFIID riid,
  16802         void **command_queue);
  16803 
  16804     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  16805         ID3D12Device8 *This,
  16806         D3D12_COMMAND_LIST_TYPE type,
  16807         REFIID riid,
  16808         void **command_allocator);
  16809 
  16810     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  16811         ID3D12Device8 *This,
  16812         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  16813         REFIID riid,
  16814         void **pipeline_state);
  16815 
  16816     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  16817         ID3D12Device8 *This,
  16818         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  16819         REFIID riid,
  16820         void **pipeline_state);
  16821 
  16822     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  16823         ID3D12Device8 *This,
  16824         UINT node_mask,
  16825         D3D12_COMMAND_LIST_TYPE type,
  16826         ID3D12CommandAllocator *command_allocator,
  16827         ID3D12PipelineState *initial_pipeline_state,
  16828         REFIID riid,
  16829         void **command_list);
  16830 
  16831     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  16832         ID3D12Device8 *This,
  16833         D3D12_FEATURE feature,
  16834         void *feature_data,
  16835         UINT feature_data_size);
  16836 
  16837     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  16838         ID3D12Device8 *This,
  16839         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  16840         REFIID riid,
  16841         void **descriptor_heap);
  16842 
  16843     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  16844         ID3D12Device8 *This,
  16845         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  16846 
  16847     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  16848         ID3D12Device8 *This,
  16849         UINT node_mask,
  16850         const void *bytecode,
  16851         SIZE_T bytecode_length,
  16852         REFIID riid,
  16853         void **root_signature);
  16854 
  16855     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  16856         ID3D12Device8 *This,
  16857         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  16858         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16859 
  16860     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  16861         ID3D12Device8 *This,
  16862         ID3D12Resource *resource,
  16863         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  16864         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16865 
  16866     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  16867         ID3D12Device8 *This,
  16868         ID3D12Resource *resource,
  16869         ID3D12Resource *counter_resource,
  16870         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  16871         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16872 
  16873     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  16874         ID3D12Device8 *This,
  16875         ID3D12Resource *resource,
  16876         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  16877         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16878 
  16879     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  16880         ID3D12Device8 *This,
  16881         ID3D12Resource *resource,
  16882         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  16883         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16884 
  16885     void (STDMETHODCALLTYPE *CreateSampler)(
  16886         ID3D12Device8 *This,
  16887         const D3D12_SAMPLER_DESC *desc,
  16888         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  16889 
  16890     void (STDMETHODCALLTYPE *CopyDescriptors)(
  16891         ID3D12Device8 *This,
  16892         UINT dst_descriptor_range_count,
  16893         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  16894         const UINT *dst_descriptor_range_sizes,
  16895         UINT src_descriptor_range_count,
  16896         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  16897         const UINT *src_descriptor_range_sizes,
  16898         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  16899 
  16900     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  16901         ID3D12Device8 *This,
  16902         UINT descriptor_count,
  16903         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  16904         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  16905         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  16906 
  16907     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  16908         ID3D12Device8 *This,
  16909         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  16910         UINT visible_mask,
  16911         UINT reource_desc_count,
  16912         const D3D12_RESOURCE_DESC *resource_descs);
  16913 
  16914     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  16915         ID3D12Device8 *This,
  16916         D3D12_HEAP_PROPERTIES *__ret,
  16917         UINT node_mask,
  16918         D3D12_HEAP_TYPE heap_type);
  16919 
  16920     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  16921         ID3D12Device8 *This,
  16922         const D3D12_HEAP_PROPERTIES *heap_properties,
  16923         D3D12_HEAP_FLAGS heap_flags,
  16924         const D3D12_RESOURCE_DESC *desc,
  16925         D3D12_RESOURCE_STATES initial_state,
  16926         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16927         REFIID riid,
  16928         void **resource);
  16929 
  16930     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  16931         ID3D12Device8 *This,
  16932         const D3D12_HEAP_DESC *desc,
  16933         REFIID riid,
  16934         void **heap);
  16935 
  16936     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  16937         ID3D12Device8 *This,
  16938         ID3D12Heap *heap,
  16939         UINT64 heap_offset,
  16940         const D3D12_RESOURCE_DESC *desc,
  16941         D3D12_RESOURCE_STATES initial_state,
  16942         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16943         REFIID riid,
  16944         void **resource);
  16945 
  16946     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  16947         ID3D12Device8 *This,
  16948         const D3D12_RESOURCE_DESC *desc,
  16949         D3D12_RESOURCE_STATES initial_state,
  16950         const D3D12_CLEAR_VALUE *optimized_clear_value,
  16951         REFIID riid,
  16952         void **resource);
  16953 
  16954     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  16955         ID3D12Device8 *This,
  16956         ID3D12DeviceChild *object,
  16957         const SECURITY_ATTRIBUTES *attributes,
  16958         DWORD access,
  16959         const WCHAR *name,
  16960         HANDLE *handle);
  16961 
  16962     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  16963         ID3D12Device8 *This,
  16964         HANDLE handle,
  16965         REFIID riid,
  16966         void **object);
  16967 
  16968     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  16969         ID3D12Device8 *This,
  16970         const WCHAR *name,
  16971         DWORD access,
  16972         HANDLE *handle);
  16973 
  16974     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  16975         ID3D12Device8 *This,
  16976         UINT object_count,
  16977         ID3D12Pageable *const *objects);
  16978 
  16979     HRESULT (STDMETHODCALLTYPE *Evict)(
  16980         ID3D12Device8 *This,
  16981         UINT object_count,
  16982         ID3D12Pageable *const *objects);
  16983 
  16984     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  16985         ID3D12Device8 *This,
  16986         UINT64 initial_value,
  16987         D3D12_FENCE_FLAGS flags,
  16988         REFIID riid,
  16989         void **fence);
  16990 
  16991     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  16992         ID3D12Device8 *This);
  16993 
  16994     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  16995         ID3D12Device8 *This,
  16996         const D3D12_RESOURCE_DESC *desc,
  16997         UINT first_sub_resource,
  16998         UINT sub_resource_count,
  16999         UINT64 base_offset,
  17000         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  17001         UINT *row_count,
  17002         UINT64 *row_size,
  17003         UINT64 *total_bytes);
  17004 
  17005     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  17006         ID3D12Device8 *This,
  17007         const D3D12_QUERY_HEAP_DESC *desc,
  17008         REFIID riid,
  17009         void **heap);
  17010 
  17011     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  17012         ID3D12Device8 *This,
  17013         WINBOOL enable);
  17014 
  17015     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  17016         ID3D12Device8 *This,
  17017         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  17018         ID3D12RootSignature *root_signature,
  17019         REFIID riid,
  17020         void **command_signature);
  17021 
  17022     void (STDMETHODCALLTYPE *GetResourceTiling)(
  17023         ID3D12Device8 *This,
  17024         ID3D12Resource *resource,
  17025         UINT *total_tile_count,
  17026         D3D12_PACKED_MIP_INFO *packed_mip_info,
  17027         D3D12_TILE_SHAPE *standard_tile_shape,
  17028         UINT *sub_resource_tiling_count,
  17029         UINT first_sub_resource_tiling,
  17030         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  17031 
  17032     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  17033         ID3D12Device8 *This,
  17034         LUID *__ret);
  17035 
  17036     /*** ID3D12Device1 methods ***/
  17037     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  17038         ID3D12Device8 *This,
  17039         const void *blob,
  17040         SIZE_T blob_size,
  17041         REFIID iid,
  17042         void **lib);
  17043 
  17044     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  17045         ID3D12Device8 *This,
  17046         ID3D12Fence *const *fences,
  17047         const UINT64 *values,
  17048         UINT fence_count,
  17049         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  17050         HANDLE event);
  17051 
  17052     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  17053         ID3D12Device8 *This,
  17054         UINT object_count,
  17055         ID3D12Pageable *const *objects,
  17056         const D3D12_RESIDENCY_PRIORITY *priorities);
  17057 
  17058     /*** ID3D12Device2 methods ***/
  17059     HRESULT (STDMETHODCALLTYPE *CreatePipelineState)(
  17060         ID3D12Device8 *This,
  17061         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  17062         REFIID riid,
  17063         void **pipeline_state);
  17064 
  17065     /*** ID3D12Device3 methods ***/
  17066     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromAddress)(
  17067         ID3D12Device8 *This,
  17068         const void *address,
  17069         REFIID riid,
  17070         void **heap);
  17071 
  17072     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping)(
  17073         ID3D12Device8 *This,
  17074         HANDLE file_mapping,
  17075         REFIID riid,
  17076         void **heap);
  17077 
  17078     HRESULT (STDMETHODCALLTYPE *EnqueueMakeResident)(
  17079         ID3D12Device8 *This,
  17080         D3D12_RESIDENCY_FLAGS flags,
  17081         UINT num_objects,
  17082         ID3D12Pageable *const *objects,
  17083         ID3D12Fence *fence,
  17084         UINT64 fence_value);
  17085 
  17086     /*** ID3D12Device4 methods ***/
  17087     HRESULT (STDMETHODCALLTYPE *CreateCommandList1)(
  17088         ID3D12Device8 *This,
  17089         UINT node_mask,
  17090         D3D12_COMMAND_LIST_TYPE type,
  17091         D3D12_COMMAND_LIST_FLAGS flags,
  17092         REFIID riid,
  17093         void **command_list);
  17094 
  17095     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession)(
  17096         ID3D12Device8 *This,
  17097         const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,
  17098         REFIID riid,
  17099         void **session);
  17100 
  17101     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource1)(
  17102         ID3D12Device8 *This,
  17103         const D3D12_HEAP_PROPERTIES *heap_properties,
  17104         D3D12_HEAP_FLAGS heap_flags,
  17105         const D3D12_RESOURCE_DESC *desc,
  17106         D3D12_RESOURCE_STATES initial_resource_state,
  17107         const D3D12_CLEAR_VALUE *optimized_clear_value,
  17108         ID3D12ProtectedResourceSession *protected_session,
  17109         REFIID riid_resource,
  17110         void **resource);
  17111 
  17112     HRESULT (STDMETHODCALLTYPE *CreateHeap1)(
  17113         ID3D12Device8 *This,
  17114         const D3D12_HEAP_DESC *desc,
  17115         ID3D12ProtectedResourceSession *protected_session,
  17116         REFIID riid,
  17117         void **heap);
  17118 
  17119     HRESULT (STDMETHODCALLTYPE *CreateReservedResource1)(
  17120         ID3D12Device8 *This,
  17121         const D3D12_RESOURCE_DESC *desc,
  17122         D3D12_RESOURCE_STATES initial_state,
  17123         const D3D12_CLEAR_VALUE *optimized_clear_value,
  17124         ID3D12ProtectedResourceSession *protected_session,
  17125         REFIID riid,
  17126         void **resource);
  17127 
  17128     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo1)(
  17129         ID3D12Device8 *This,
  17130         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  17131         UINT visible_mask,
  17132         UINT resource_descs_count,
  17133         const D3D12_RESOURCE_DESC *resource_descs,
  17134         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  17135 
  17136     /*** ID3D12Device5 methods ***/
  17137     HRESULT (STDMETHODCALLTYPE *CreateLifetimeTracker)(
  17138         ID3D12Device8 *This,
  17139         ID3D12LifetimeOwner *owner,
  17140         REFIID riid,
  17141         void **tracker);
  17142 
  17143     void (STDMETHODCALLTYPE *RemoveDevice)(
  17144         ID3D12Device8 *This);
  17145 
  17146     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommands)(
  17147         ID3D12Device8 *This,
  17148         UINT *meta_commands_count,
  17149         D3D12_META_COMMAND_DESC *descs);
  17150 
  17151     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommandParameters)(
  17152         ID3D12Device8 *This,
  17153         REFGUID command_id,
  17154         D3D12_META_COMMAND_PARAMETER_STAGE stage,
  17155         UINT *total_structure_size_in_bytes,
  17156         UINT *parameter_count,
  17157         D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs);
  17158 
  17159     HRESULT (STDMETHODCALLTYPE *CreateMetaCommand)(
  17160         ID3D12Device8 *This,
  17161         REFGUID command_id,
  17162         UINT node_mask,
  17163         const void *creation_parameters_data,
  17164         SIZE_T creation_parameters_data_size_in_bytes,
  17165         REFIID riid,
  17166         void **meta_command);
  17167 
  17168     HRESULT (STDMETHODCALLTYPE *CreateStateObject)(
  17169         ID3D12Device8 *This,
  17170         const D3D12_STATE_OBJECT_DESC *desc,
  17171         REFIID riid,
  17172         void **state_object);
  17173 
  17174     void (STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo)(
  17175         ID3D12Device8 *This,
  17176         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,
  17177         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info);
  17178 
  17179     D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS (STDMETHODCALLTYPE *CheckDriverMatchingIdentifier)(
  17180         ID3D12Device8 *This,
  17181         D3D12_SERIALIZED_DATA_TYPE serialized_data_type,
  17182         const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check);
  17183 
  17184     /*** ID3D12Device6 methods ***/
  17185     HRESULT (STDMETHODCALLTYPE *SetBackgroundProcessingMode)(
  17186         ID3D12Device8 *This,
  17187         D3D12_BACKGROUND_PROCESSING_MODE mode,
  17188         D3D12_MEASUREMENTS_ACTION action,
  17189         HANDLE event,
  17190         WINBOOL *further_measurements_desired);
  17191 
  17192     /*** ID3D12Device7 methods ***/
  17193     HRESULT (STDMETHODCALLTYPE *AddToStateObject)(
  17194         ID3D12Device8 *This,
  17195         const D3D12_STATE_OBJECT_DESC *addition,
  17196         ID3D12StateObject *state_object_to_grow_from,
  17197         REFIID riid,
  17198         void **new_state_object);
  17199 
  17200     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession1)(
  17201         ID3D12Device8 *This,
  17202         const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *desc,
  17203         REFIID riid,
  17204         void **session);
  17205 
  17206     /*** ID3D12Device8 methods ***/
  17207     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo2)(
  17208         ID3D12Device8 *This,
  17209         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  17210         UINT visible_mask,
  17211         UINT resource_descs_count,
  17212         const D3D12_RESOURCE_DESC1 *resource_descs,
  17213         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  17214 
  17215     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource2)(
  17216         ID3D12Device8 *This,
  17217         const D3D12_HEAP_PROPERTIES *heap_properties,
  17218         D3D12_HEAP_FLAGS heap_flags,
  17219         const D3D12_RESOURCE_DESC1 *desc,
  17220         D3D12_RESOURCE_STATES initial_resource_state,
  17221         const D3D12_CLEAR_VALUE *optimized_clear_value,
  17222         ID3D12ProtectedResourceSession *protected_session,
  17223         REFIID riid_resource,
  17224         void **resource);
  17225 
  17226     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource1)(
  17227         ID3D12Device8 *This,
  17228         ID3D12Heap *heap,
  17229         UINT64 heap_offset,
  17230         const D3D12_RESOURCE_DESC1 *desc,
  17231         D3D12_RESOURCE_STATES initial_state,
  17232         const D3D12_CLEAR_VALUE *optimized_clear_value,
  17233         REFIID riid,
  17234         void **resource);
  17235 
  17236     void (STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView)(
  17237         ID3D12Device8 *This,
  17238         ID3D12Resource *targeted_resource,
  17239         ID3D12Resource *feedback_resource,
  17240         D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor);
  17241 
  17242     void (STDMETHODCALLTYPE *GetCopyableFootprints1)(
  17243         ID3D12Device8 *This,
  17244         const D3D12_RESOURCE_DESC1 *resource_desc,
  17245         UINT first_subresource,
  17246         UINT subresources_count,
  17247         UINT64 base_offset,
  17248         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  17249         UINT *rows_count,
  17250         UINT64 *row_size_in_bytes,
  17251         UINT64 *total_bytes);
  17252 
  17253     END_INTERFACE
  17254 } ID3D12Device8Vtbl;
  17255 
  17256 interface ID3D12Device8 {
  17257     CONST_VTBL ID3D12Device8Vtbl* lpVtbl;
  17258 };
  17259 
  17260 #ifdef COBJMACROS
  17261 #ifndef WIDL_C_INLINE_WRAPPERS
  17262 /*** IUnknown methods ***/
  17263 #define ID3D12Device8_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  17264 #define ID3D12Device8_AddRef(This) (This)->lpVtbl->AddRef(This)
  17265 #define ID3D12Device8_Release(This) (This)->lpVtbl->Release(This)
  17266 /*** ID3D12Object methods ***/
  17267 #define ID3D12Device8_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  17268 #define ID3D12Device8_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  17269 #define ID3D12Device8_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  17270 #define ID3D12Device8_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  17271 /*** ID3D12Device methods ***/
  17272 #define ID3D12Device8_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  17273 #define ID3D12Device8_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  17274 #define ID3D12Device8_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  17275 #define ID3D12Device8_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  17276 #define ID3D12Device8_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  17277 #define ID3D12Device8_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  17278 #define ID3D12Device8_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  17279 #define ID3D12Device8_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  17280 #define ID3D12Device8_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  17281 #define ID3D12Device8_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  17282 #define ID3D12Device8_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  17283 #define ID3D12Device8_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  17284 #define ID3D12Device8_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  17285 #define ID3D12Device8_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  17286 #define ID3D12Device8_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  17287 #define ID3D12Device8_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  17288 #define ID3D12Device8_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  17289 #define ID3D12Device8_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  17290 #define ID3D12Device8_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device8_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  17291 #define ID3D12Device8_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device8_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  17292 #define ID3D12Device8_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  17293 #define ID3D12Device8_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  17294 #define ID3D12Device8_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  17295 #define ID3D12Device8_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  17296 #define ID3D12Device8_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  17297 #define ID3D12Device8_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  17298 #define ID3D12Device8_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  17299 #define ID3D12Device8_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  17300 #define ID3D12Device8_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  17301 #define ID3D12Device8_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  17302 #define ID3D12Device8_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  17303 #define ID3D12Device8_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  17304 #define ID3D12Device8_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  17305 #define ID3D12Device8_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  17306 #define ID3D12Device8_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  17307 #define ID3D12Device8_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  17308 #define ID3D12Device8_GetAdapterLuid(This) ID3D12Device8_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  17309 /*** ID3D12Device1 methods ***/
  17310 #define ID3D12Device8_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  17311 #define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  17312 #define ID3D12Device8_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  17313 /*** ID3D12Device2 methods ***/
  17314 #define ID3D12Device8_CreatePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state)
  17315 /*** ID3D12Device3 methods ***/
  17316 #define ID3D12Device8_OpenExistingHeapFromAddress(This,address,riid,heap) (This)->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap)
  17317 #define ID3D12Device8_OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap) (This)->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap)
  17318 #define ID3D12Device8_EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value) (This)->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value)
  17319 /*** ID3D12Device4 methods ***/
  17320 #define ID3D12Device8_CreateCommandList1(This,node_mask,type,flags,riid,command_list) (This)->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list)
  17321 #define ID3D12Device8_CreateProtectedResourceSession(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session)
  17322 #define ID3D12Device8_CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  17323 #define ID3D12Device8_CreateHeap1(This,desc,protected_session,riid,heap) (This)->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap)
  17324 #define ID3D12Device8_CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource) (This)->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource)
  17325 #define ID3D12Device8_GetResourceAllocationInfo1(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device8_GetResourceAllocationInfo1_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  17326 /*** ID3D12Device5 methods ***/
  17327 #define ID3D12Device8_CreateLifetimeTracker(This,owner,riid,tracker) (This)->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker)
  17328 #define ID3D12Device8_RemoveDevice(This) (This)->lpVtbl->RemoveDevice(This)
  17329 #define ID3D12Device8_EnumerateMetaCommands(This,meta_commands_count,descs) (This)->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs)
  17330 #define ID3D12Device8_EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs) (This)->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs)
  17331 #define ID3D12Device8_CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command) (This)->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command)
  17332 #define ID3D12Device8_CreateStateObject(This,desc,riid,state_object) (This)->lpVtbl->CreateStateObject(This,desc,riid,state_object)
  17333 #define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info) (This)->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info)
  17334 #define ID3D12Device8_CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check) (This)->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check)
  17335 /*** ID3D12Device6 methods ***/
  17336 #define ID3D12Device8_SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired) (This)->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired)
  17337 /*** ID3D12Device7 methods ***/
  17338 #define ID3D12Device8_AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object) (This)->lpVtbl->AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object)
  17339 #define ID3D12Device8_CreateProtectedResourceSession1(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession1(This,desc,riid,session)
  17340 /*** ID3D12Device8 methods ***/
  17341 #define ID3D12Device8_GetResourceAllocationInfo2(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device8_GetResourceAllocationInfo2_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  17342 #define ID3D12Device8_CreateCommittedResource2(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource2(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  17343 #define ID3D12Device8_CreatePlacedResource1(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource1(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  17344 #define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,targeted_resource,feedback_resource,dst_descriptor) (This)->lpVtbl->CreateSamplerFeedbackUnorderedAccessView(This,targeted_resource,feedback_resource,dst_descriptor)
  17345 #define ID3D12Device8_GetCopyableFootprints1(This,resource_desc,first_subresource,subresources_count,base_offset,layouts,rows_count,row_size_in_bytes,total_bytes) (This)->lpVtbl->GetCopyableFootprints1(This,resource_desc,first_subresource,subresources_count,base_offset,layouts,rows_count,row_size_in_bytes,total_bytes)
  17346 #else
  17347 /*** IUnknown methods ***/
  17348 static inline HRESULT ID3D12Device8_QueryInterface(ID3D12Device8* This,REFIID riid,void **ppvObject) {
  17349     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  17350 }
  17351 static inline ULONG ID3D12Device8_AddRef(ID3D12Device8* This) {
  17352     return This->lpVtbl->AddRef(This);
  17353 }
  17354 static inline ULONG ID3D12Device8_Release(ID3D12Device8* This) {
  17355     return This->lpVtbl->Release(This);
  17356 }
  17357 /*** ID3D12Object methods ***/
  17358 static inline HRESULT ID3D12Device8_GetPrivateData(ID3D12Device8* This,REFGUID guid,UINT *data_size,void *data) {
  17359     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  17360 }
  17361 static inline HRESULT ID3D12Device8_SetPrivateData(ID3D12Device8* This,REFGUID guid,UINT data_size,const void *data) {
  17362     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  17363 }
  17364 static inline HRESULT ID3D12Device8_SetPrivateDataInterface(ID3D12Device8* This,REFGUID guid,const IUnknown *data) {
  17365     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  17366 }
  17367 static inline HRESULT ID3D12Device8_SetName(ID3D12Device8* This,const WCHAR *name) {
  17368     return This->lpVtbl->SetName(This,name);
  17369 }
  17370 /*** ID3D12Device methods ***/
  17371 static inline UINT ID3D12Device8_GetNodeCount(ID3D12Device8* This) {
  17372     return This->lpVtbl->GetNodeCount(This);
  17373 }
  17374 static inline HRESULT ID3D12Device8_CreateCommandQueue(ID3D12Device8* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  17375     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  17376 }
  17377 static inline HRESULT ID3D12Device8_CreateCommandAllocator(ID3D12Device8* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  17378     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  17379 }
  17380 static inline HRESULT ID3D12Device8_CreateGraphicsPipelineState(ID3D12Device8* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  17381     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  17382 }
  17383 static inline HRESULT ID3D12Device8_CreateComputePipelineState(ID3D12Device8* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  17384     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  17385 }
  17386 static inline HRESULT ID3D12Device8_CreateCommandList(ID3D12Device8* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  17387     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  17388 }
  17389 static inline HRESULT ID3D12Device8_CheckFeatureSupport(ID3D12Device8* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  17390     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  17391 }
  17392 static inline HRESULT ID3D12Device8_CreateDescriptorHeap(ID3D12Device8* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  17393     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  17394 }
  17395 static inline UINT ID3D12Device8_GetDescriptorHandleIncrementSize(ID3D12Device8* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  17396     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  17397 }
  17398 static inline HRESULT ID3D12Device8_CreateRootSignature(ID3D12Device8* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  17399     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  17400 }
  17401 static inline void ID3D12Device8_CreateConstantBufferView(ID3D12Device8* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  17402     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  17403 }
  17404 static inline void ID3D12Device8_CreateShaderResourceView(ID3D12Device8* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  17405     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  17406 }
  17407 static inline void ID3D12Device8_CreateUnorderedAccessView(ID3D12Device8* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  17408     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  17409 }
  17410 static inline void ID3D12Device8_CreateRenderTargetView(ID3D12Device8* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  17411     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  17412 }
  17413 static inline void ID3D12Device8_CreateDepthStencilView(ID3D12Device8* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  17414     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  17415 }
  17416 static inline void ID3D12Device8_CreateSampler(ID3D12Device8* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  17417     This->lpVtbl->CreateSampler(This,desc,descriptor);
  17418 }
  17419 static inline void ID3D12Device8_CopyDescriptors(ID3D12Device8* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  17420     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  17421 }
  17422 static inline void ID3D12Device8_CopyDescriptorsSimple(ID3D12Device8* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  17423     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  17424 }
  17425 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device8_GetResourceAllocationInfo(ID3D12Device8* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  17426     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  17427     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  17428 }
  17429 static inline D3D12_HEAP_PROPERTIES ID3D12Device8_GetCustomHeapProperties(ID3D12Device8* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  17430     D3D12_HEAP_PROPERTIES __ret;
  17431     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  17432 }
  17433 static inline HRESULT ID3D12Device8_CreateCommittedResource(ID3D12Device8* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  17434     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  17435 }
  17436 static inline HRESULT ID3D12Device8_CreateHeap(ID3D12Device8* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  17437     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  17438 }
  17439 static inline HRESULT ID3D12Device8_CreatePlacedResource(ID3D12Device8* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  17440     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  17441 }
  17442 static inline HRESULT ID3D12Device8_CreateReservedResource(ID3D12Device8* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  17443     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  17444 }
  17445 static inline HRESULT ID3D12Device8_CreateSharedHandle(ID3D12Device8* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  17446     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  17447 }
  17448 static inline HRESULT ID3D12Device8_OpenSharedHandle(ID3D12Device8* This,HANDLE handle,REFIID riid,void **object) {
  17449     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  17450 }
  17451 static inline HRESULT ID3D12Device8_OpenSharedHandleByName(ID3D12Device8* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  17452     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  17453 }
  17454 static inline HRESULT ID3D12Device8_MakeResident(ID3D12Device8* This,UINT object_count,ID3D12Pageable *const *objects) {
  17455     return This->lpVtbl->MakeResident(This,object_count,objects);
  17456 }
  17457 static inline HRESULT ID3D12Device8_Evict(ID3D12Device8* This,UINT object_count,ID3D12Pageable *const *objects) {
  17458     return This->lpVtbl->Evict(This,object_count,objects);
  17459 }
  17460 static inline HRESULT ID3D12Device8_CreateFence(ID3D12Device8* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  17461     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  17462 }
  17463 static inline HRESULT ID3D12Device8_GetDeviceRemovedReason(ID3D12Device8* This) {
  17464     return This->lpVtbl->GetDeviceRemovedReason(This);
  17465 }
  17466 static inline void ID3D12Device8_GetCopyableFootprints(ID3D12Device8* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  17467     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  17468 }
  17469 static inline HRESULT ID3D12Device8_CreateQueryHeap(ID3D12Device8* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  17470     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  17471 }
  17472 static inline HRESULT ID3D12Device8_SetStablePowerState(ID3D12Device8* This,WINBOOL enable) {
  17473     return This->lpVtbl->SetStablePowerState(This,enable);
  17474 }
  17475 static inline HRESULT ID3D12Device8_CreateCommandSignature(ID3D12Device8* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  17476     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  17477 }
  17478 static inline void ID3D12Device8_GetResourceTiling(ID3D12Device8* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  17479     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  17480 }
  17481 static inline LUID ID3D12Device8_GetAdapterLuid(ID3D12Device8* This) {
  17482     LUID __ret;
  17483     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  17484 }
  17485 /*** ID3D12Device1 methods ***/
  17486 static inline HRESULT ID3D12Device8_CreatePipelineLibrary(ID3D12Device8* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  17487     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  17488 }
  17489 static inline HRESULT ID3D12Device8_SetEventOnMultipleFenceCompletion(ID3D12Device8* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  17490     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  17491 }
  17492 static inline HRESULT ID3D12Device8_SetResidencyPriority(ID3D12Device8* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  17493     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  17494 }
  17495 /*** ID3D12Device2 methods ***/
  17496 static inline HRESULT ID3D12Device8_CreatePipelineState(ID3D12Device8* This,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
  17497     return This->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state);
  17498 }
  17499 /*** ID3D12Device3 methods ***/
  17500 static inline HRESULT ID3D12Device8_OpenExistingHeapFromAddress(ID3D12Device8* This,const void *address,REFIID riid,void **heap) {
  17501     return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
  17502 }
  17503 static inline HRESULT ID3D12Device8_OpenExistingHeapFromFileMapping(ID3D12Device8* This,HANDLE file_mapping,REFIID riid,void **heap) {
  17504     return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
  17505 }
  17506 static inline HRESULT ID3D12Device8_EnqueueMakeResident(ID3D12Device8* This,D3D12_RESIDENCY_FLAGS flags,UINT num_objects,ID3D12Pageable *const *objects,ID3D12Fence *fence,UINT64 fence_value) {
  17507     return This->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value);
  17508 }
  17509 /*** ID3D12Device4 methods ***/
  17510 static inline HRESULT ID3D12Device8_CreateCommandList1(ID3D12Device8* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,D3D12_COMMAND_LIST_FLAGS flags,REFIID riid,void **command_list) {
  17511     return This->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list);
  17512 }
  17513 static inline HRESULT ID3D12Device8_CreateProtectedResourceSession(ID3D12Device8* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,REFIID riid,void **session) {
  17514     return This->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session);
  17515 }
  17516 static inline HRESULT ID3D12Device8_CreateCommittedResource1(ID3D12Device8* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  17517     return This->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  17518 }
  17519 static inline HRESULT ID3D12Device8_CreateHeap1(ID3D12Device8* This,const D3D12_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **heap) {
  17520     return This->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap);
  17521 }
  17522 static inline HRESULT ID3D12Device8_CreateReservedResource1(ID3D12Device8* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **resource) {
  17523     return This->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource);
  17524 }
  17525 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device8_GetResourceAllocationInfo1(ID3D12Device8* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  17526     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  17527     return *This->lpVtbl->GetResourceAllocationInfo1(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  17528 }
  17529 /*** ID3D12Device5 methods ***/
  17530 static inline HRESULT ID3D12Device8_CreateLifetimeTracker(ID3D12Device8* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
  17531     return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
  17532 }
  17533 static inline void ID3D12Device8_RemoveDevice(ID3D12Device8* This) {
  17534     This->lpVtbl->RemoveDevice(This);
  17535 }
  17536 static inline HRESULT ID3D12Device8_EnumerateMetaCommands(ID3D12Device8* This,UINT *meta_commands_count,D3D12_META_COMMAND_DESC *descs) {
  17537     return This->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs);
  17538 }
  17539 static inline HRESULT ID3D12Device8_EnumerateMetaCommandParameters(ID3D12Device8* This,REFGUID command_id,D3D12_META_COMMAND_PARAMETER_STAGE stage,UINT *total_structure_size_in_bytes,UINT *parameter_count,D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs) {
  17540     return This->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs);
  17541 }
  17542 static inline HRESULT ID3D12Device8_CreateMetaCommand(ID3D12Device8* This,REFGUID command_id,UINT node_mask,const void *creation_parameters_data,SIZE_T creation_parameters_data_size_in_bytes,REFIID riid,void **meta_command) {
  17543     return This->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command);
  17544 }
  17545 static inline HRESULT ID3D12Device8_CreateStateObject(ID3D12Device8* This,const D3D12_STATE_OBJECT_DESC *desc,REFIID riid,void **state_object) {
  17546     return This->lpVtbl->CreateStateObject(This,desc,riid,state_object);
  17547 }
  17548 static inline void ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(ID3D12Device8* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info) {
  17549     This->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info);
  17550 }
  17551 static inline D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ID3D12Device8_CheckDriverMatchingIdentifier(ID3D12Device8* This,D3D12_SERIALIZED_DATA_TYPE serialized_data_type,const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check) {
  17552     return This->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check);
  17553 }
  17554 /*** ID3D12Device6 methods ***/
  17555 static inline HRESULT ID3D12Device8_SetBackgroundProcessingMode(ID3D12Device8* This,D3D12_BACKGROUND_PROCESSING_MODE mode,D3D12_MEASUREMENTS_ACTION action,HANDLE event,WINBOOL *further_measurements_desired) {
  17556     return This->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired);
  17557 }
  17558 /*** ID3D12Device7 methods ***/
  17559 static inline HRESULT ID3D12Device8_AddToStateObject(ID3D12Device8* This,const D3D12_STATE_OBJECT_DESC *addition,ID3D12StateObject *state_object_to_grow_from,REFIID riid,void **new_state_object) {
  17560     return This->lpVtbl->AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object);
  17561 }
  17562 static inline HRESULT ID3D12Device8_CreateProtectedResourceSession1(ID3D12Device8* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *desc,REFIID riid,void **session) {
  17563     return This->lpVtbl->CreateProtectedResourceSession1(This,desc,riid,session);
  17564 }
  17565 /*** ID3D12Device8 methods ***/
  17566 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device8_GetResourceAllocationInfo2(ID3D12Device8* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC1 *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  17567     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  17568     return *This->lpVtbl->GetResourceAllocationInfo2(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  17569 }
  17570 static inline HRESULT ID3D12Device8_CreateCommittedResource2(ID3D12Device8* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC1 *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  17571     return This->lpVtbl->CreateCommittedResource2(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  17572 }
  17573 static inline HRESULT ID3D12Device8_CreatePlacedResource1(ID3D12Device8* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC1 *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  17574     return This->lpVtbl->CreatePlacedResource1(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  17575 }
  17576 static inline void ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(ID3D12Device8* This,ID3D12Resource *targeted_resource,ID3D12Resource *feedback_resource,D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor) {
  17577     This->lpVtbl->CreateSamplerFeedbackUnorderedAccessView(This,targeted_resource,feedback_resource,dst_descriptor);
  17578 }
  17579 static inline void ID3D12Device8_GetCopyableFootprints1(ID3D12Device8* This,const D3D12_RESOURCE_DESC1 *resource_desc,UINT first_subresource,UINT subresources_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *rows_count,UINT64 *row_size_in_bytes,UINT64 *total_bytes) {
  17580     This->lpVtbl->GetCopyableFootprints1(This,resource_desc,first_subresource,subresources_count,base_offset,layouts,rows_count,row_size_in_bytes,total_bytes);
  17581 }
  17582 #endif
  17583 #endif
  17584 
  17585 #endif
  17586 
  17587 
  17588 #endif  /* __ID3D12Device8_INTERFACE_DEFINED__ */
  17589 
  17590 /*****************************************************************************
  17591  * ID3D12Resource1 interface
  17592  */
  17593 #ifndef __ID3D12Resource1_INTERFACE_DEFINED__
  17594 #define __ID3D12Resource1_INTERFACE_DEFINED__
  17595 
  17596 DEFINE_GUID(IID_ID3D12Resource1, 0x9d5e227a, 0x4430, 0x4161, 0x88,0xb3, 0x3e,0xca,0x6b,0xb1,0x6e,0x19);
  17597 #if defined(__cplusplus) && !defined(CINTERFACE)
  17598 MIDL_INTERFACE("9d5e227a-4430-4161-88b3-3eca6bb16e19")
  17599 ID3D12Resource1 : public ID3D12Resource
  17600 {
  17601     virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
  17602         REFIID riid,
  17603         void **protected_session) = 0;
  17604 
  17605 };
  17606 #ifdef __CRT_UUID_DECL
  17607 __CRT_UUID_DECL(ID3D12Resource1, 0x9d5e227a, 0x4430, 0x4161, 0x88,0xb3, 0x3e,0xca,0x6b,0xb1,0x6e,0x19)
  17608 #endif
  17609 #else
  17610 typedef struct ID3D12Resource1Vtbl {
  17611     BEGIN_INTERFACE
  17612 
  17613     /*** IUnknown methods ***/
  17614     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  17615         ID3D12Resource1 *This,
  17616         REFIID riid,
  17617         void **ppvObject);
  17618 
  17619     ULONG (STDMETHODCALLTYPE *AddRef)(
  17620         ID3D12Resource1 *This);
  17621 
  17622     ULONG (STDMETHODCALLTYPE *Release)(
  17623         ID3D12Resource1 *This);
  17624 
  17625     /*** ID3D12Object methods ***/
  17626     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  17627         ID3D12Resource1 *This,
  17628         REFGUID guid,
  17629         UINT *data_size,
  17630         void *data);
  17631 
  17632     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  17633         ID3D12Resource1 *This,
  17634         REFGUID guid,
  17635         UINT data_size,
  17636         const void *data);
  17637 
  17638     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  17639         ID3D12Resource1 *This,
  17640         REFGUID guid,
  17641         const IUnknown *data);
  17642 
  17643     HRESULT (STDMETHODCALLTYPE *SetName)(
  17644         ID3D12Resource1 *This,
  17645         const WCHAR *name);
  17646 
  17647     /*** ID3D12DeviceChild methods ***/
  17648     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  17649         ID3D12Resource1 *This,
  17650         REFIID riid,
  17651         void **device);
  17652 
  17653     /*** ID3D12Resource methods ***/
  17654     HRESULT (STDMETHODCALLTYPE *Map)(
  17655         ID3D12Resource1 *This,
  17656         UINT sub_resource,
  17657         const D3D12_RANGE *read_range,
  17658         void **data);
  17659 
  17660     void (STDMETHODCALLTYPE *Unmap)(
  17661         ID3D12Resource1 *This,
  17662         UINT sub_resource,
  17663         const D3D12_RANGE *written_range);
  17664 
  17665     D3D12_RESOURCE_DESC * (STDMETHODCALLTYPE *GetDesc)(
  17666         ID3D12Resource1 *This,
  17667         D3D12_RESOURCE_DESC *__ret);
  17668 
  17669     D3D12_GPU_VIRTUAL_ADDRESS (STDMETHODCALLTYPE *GetGPUVirtualAddress)(
  17670         ID3D12Resource1 *This);
  17671 
  17672     HRESULT (STDMETHODCALLTYPE *WriteToSubresource)(
  17673         ID3D12Resource1 *This,
  17674         UINT dst_sub_resource,
  17675         const D3D12_BOX *dst_box,
  17676         const void *src_data,
  17677         UINT src_row_pitch,
  17678         UINT src_slice_pitch);
  17679 
  17680     HRESULT (STDMETHODCALLTYPE *ReadFromSubresource)(
  17681         ID3D12Resource1 *This,
  17682         void *dst_data,
  17683         UINT dst_row_pitch,
  17684         UINT dst_slice_pitch,
  17685         UINT src_sub_resource,
  17686         const D3D12_BOX *src_box);
  17687 
  17688     HRESULT (STDMETHODCALLTYPE *GetHeapProperties)(
  17689         ID3D12Resource1 *This,
  17690         D3D12_HEAP_PROPERTIES *heap_properties,
  17691         D3D12_HEAP_FLAGS *flags);
  17692 
  17693     /*** ID3D12Resource1 methods ***/
  17694     HRESULT (STDMETHODCALLTYPE *GetProtectedResourceSession)(
  17695         ID3D12Resource1 *This,
  17696         REFIID riid,
  17697         void **protected_session);
  17698 
  17699     END_INTERFACE
  17700 } ID3D12Resource1Vtbl;
  17701 
  17702 interface ID3D12Resource1 {
  17703     CONST_VTBL ID3D12Resource1Vtbl* lpVtbl;
  17704 };
  17705 
  17706 #ifdef COBJMACROS
  17707 #ifndef WIDL_C_INLINE_WRAPPERS
  17708 /*** IUnknown methods ***/
  17709 #define ID3D12Resource1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  17710 #define ID3D12Resource1_AddRef(This) (This)->lpVtbl->AddRef(This)
  17711 #define ID3D12Resource1_Release(This) (This)->lpVtbl->Release(This)
  17712 /*** ID3D12Object methods ***/
  17713 #define ID3D12Resource1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  17714 #define ID3D12Resource1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  17715 #define ID3D12Resource1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  17716 #define ID3D12Resource1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  17717 /*** ID3D12DeviceChild methods ***/
  17718 #define ID3D12Resource1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  17719 /*** ID3D12Resource methods ***/
  17720 #define ID3D12Resource1_Map(This,sub_resource,read_range,data) (This)->lpVtbl->Map(This,sub_resource,read_range,data)
  17721 #define ID3D12Resource1_Unmap(This,sub_resource,written_range) (This)->lpVtbl->Unmap(This,sub_resource,written_range)
  17722 #define ID3D12Resource1_GetDesc(This) ID3D12Resource1_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  17723 #define ID3D12Resource1_GetGPUVirtualAddress(This) (This)->lpVtbl->GetGPUVirtualAddress(This)
  17724 #define ID3D12Resource1_WriteToSubresource(This,dst_sub_resource,dst_box,src_data,src_row_pitch,src_slice_pitch) (This)->lpVtbl->WriteToSubresource(This,dst_sub_resource,dst_box,src_data,src_row_pitch,src_slice_pitch)
  17725 #define ID3D12Resource1_ReadFromSubresource(This,dst_data,dst_row_pitch,dst_slice_pitch,src_sub_resource,src_box) (This)->lpVtbl->ReadFromSubresource(This,dst_data,dst_row_pitch,dst_slice_pitch,src_sub_resource,src_box)
  17726 #define ID3D12Resource1_GetHeapProperties(This,heap_properties,flags) (This)->lpVtbl->GetHeapProperties(This,heap_properties,flags)
  17727 /*** ID3D12Resource1 methods ***/
  17728 #define ID3D12Resource1_GetProtectedResourceSession(This,riid,protected_session) (This)->lpVtbl->GetProtectedResourceSession(This,riid,protected_session)
  17729 #else
  17730 /*** IUnknown methods ***/
  17731 static inline HRESULT ID3D12Resource1_QueryInterface(ID3D12Resource1* This,REFIID riid,void **ppvObject) {
  17732     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  17733 }
  17734 static inline ULONG ID3D12Resource1_AddRef(ID3D12Resource1* This) {
  17735     return This->lpVtbl->AddRef(This);
  17736 }
  17737 static inline ULONG ID3D12Resource1_Release(ID3D12Resource1* This) {
  17738     return This->lpVtbl->Release(This);
  17739 }
  17740 /*** ID3D12Object methods ***/
  17741 static inline HRESULT ID3D12Resource1_GetPrivateData(ID3D12Resource1* This,REFGUID guid,UINT *data_size,void *data) {
  17742     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  17743 }
  17744 static inline HRESULT ID3D12Resource1_SetPrivateData(ID3D12Resource1* This,REFGUID guid,UINT data_size,const void *data) {
  17745     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  17746 }
  17747 static inline HRESULT ID3D12Resource1_SetPrivateDataInterface(ID3D12Resource1* This,REFGUID guid,const IUnknown *data) {
  17748     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  17749 }
  17750 static inline HRESULT ID3D12Resource1_SetName(ID3D12Resource1* This,const WCHAR *name) {
  17751     return This->lpVtbl->SetName(This,name);
  17752 }
  17753 /*** ID3D12DeviceChild methods ***/
  17754 static inline HRESULT ID3D12Resource1_GetDevice(ID3D12Resource1* This,REFIID riid,void **device) {
  17755     return This->lpVtbl->GetDevice(This,riid,device);
  17756 }
  17757 /*** ID3D12Resource methods ***/
  17758 static inline HRESULT ID3D12Resource1_Map(ID3D12Resource1* This,UINT sub_resource,const D3D12_RANGE *read_range,void **data) {
  17759     return This->lpVtbl->Map(This,sub_resource,read_range,data);
  17760 }
  17761 static inline void ID3D12Resource1_Unmap(ID3D12Resource1* This,UINT sub_resource,const D3D12_RANGE *written_range) {
  17762     This->lpVtbl->Unmap(This,sub_resource,written_range);
  17763 }
  17764 static inline D3D12_RESOURCE_DESC ID3D12Resource1_GetDesc(ID3D12Resource1* This) {
  17765     D3D12_RESOURCE_DESC __ret;
  17766     return *This->lpVtbl->GetDesc(This,&__ret);
  17767 }
  17768 static inline D3D12_GPU_VIRTUAL_ADDRESS ID3D12Resource1_GetGPUVirtualAddress(ID3D12Resource1* This) {
  17769     return This->lpVtbl->GetGPUVirtualAddress(This);
  17770 }
  17771 static inline HRESULT ID3D12Resource1_WriteToSubresource(ID3D12Resource1* This,UINT dst_sub_resource,const D3D12_BOX *dst_box,const void *src_data,UINT src_row_pitch,UINT src_slice_pitch) {
  17772     return This->lpVtbl->WriteToSubresource(This,dst_sub_resource,dst_box,src_data,src_row_pitch,src_slice_pitch);
  17773 }
  17774 static inline HRESULT ID3D12Resource1_ReadFromSubresource(ID3D12Resource1* This,void *dst_data,UINT dst_row_pitch,UINT dst_slice_pitch,UINT src_sub_resource,const D3D12_BOX *src_box) {
  17775     return This->lpVtbl->ReadFromSubresource(This,dst_data,dst_row_pitch,dst_slice_pitch,src_sub_resource,src_box);
  17776 }
  17777 static inline HRESULT ID3D12Resource1_GetHeapProperties(ID3D12Resource1* This,D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS *flags) {
  17778     return This->lpVtbl->GetHeapProperties(This,heap_properties,flags);
  17779 }
  17780 /*** ID3D12Resource1 methods ***/
  17781 static inline HRESULT ID3D12Resource1_GetProtectedResourceSession(ID3D12Resource1* This,REFIID riid,void **protected_session) {
  17782     return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
  17783 }
  17784 #endif
  17785 #endif
  17786 
  17787 #endif
  17788 
  17789 
  17790 #endif  /* __ID3D12Resource1_INTERFACE_DEFINED__ */
  17791 
  17792 /*****************************************************************************
  17793  * ID3D12Resource2 interface
  17794  */
  17795 #ifndef __ID3D12Resource2_INTERFACE_DEFINED__
  17796 #define __ID3D12Resource2_INTERFACE_DEFINED__
  17797 
  17798 DEFINE_GUID(IID_ID3D12Resource2, 0xbe36ec3b, 0xea85, 0x4aeb, 0xa4,0x5a, 0xe9,0xd7,0x64,0x04,0xa4,0x95);
  17799 #if defined(__cplusplus) && !defined(CINTERFACE)
  17800 MIDL_INTERFACE("be36ec3b-ea85-4aeb-a45a-e9d76404a495")
  17801 ID3D12Resource2 : public ID3D12Resource1
  17802 {
  17803 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
  17804     virtual D3D12_RESOURCE_DESC1* STDMETHODCALLTYPE GetDesc1(
  17805         D3D12_RESOURCE_DESC1 *__ret) = 0;
  17806     D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1(
  17807         )
  17808     {
  17809         D3D12_RESOURCE_DESC1 __ret;
  17810         return *GetDesc1(&__ret);
  17811     }
  17812 #else
  17813     virtual D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1(
  17814         ) = 0;
  17815 #endif
  17816 
  17817 };
  17818 #ifdef __CRT_UUID_DECL
  17819 __CRT_UUID_DECL(ID3D12Resource2, 0xbe36ec3b, 0xea85, 0x4aeb, 0xa4,0x5a, 0xe9,0xd7,0x64,0x04,0xa4,0x95)
  17820 #endif
  17821 #else
  17822 typedef struct ID3D12Resource2Vtbl {
  17823     BEGIN_INTERFACE
  17824 
  17825     /*** IUnknown methods ***/
  17826     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  17827         ID3D12Resource2 *This,
  17828         REFIID riid,
  17829         void **ppvObject);
  17830 
  17831     ULONG (STDMETHODCALLTYPE *AddRef)(
  17832         ID3D12Resource2 *This);
  17833 
  17834     ULONG (STDMETHODCALLTYPE *Release)(
  17835         ID3D12Resource2 *This);
  17836 
  17837     /*** ID3D12Object methods ***/
  17838     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  17839         ID3D12Resource2 *This,
  17840         REFGUID guid,
  17841         UINT *data_size,
  17842         void *data);
  17843 
  17844     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  17845         ID3D12Resource2 *This,
  17846         REFGUID guid,
  17847         UINT data_size,
  17848         const void *data);
  17849 
  17850     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  17851         ID3D12Resource2 *This,
  17852         REFGUID guid,
  17853         const IUnknown *data);
  17854 
  17855     HRESULT (STDMETHODCALLTYPE *SetName)(
  17856         ID3D12Resource2 *This,
  17857         const WCHAR *name);
  17858 
  17859     /*** ID3D12DeviceChild methods ***/
  17860     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  17861         ID3D12Resource2 *This,
  17862         REFIID riid,
  17863         void **device);
  17864 
  17865     /*** ID3D12Resource methods ***/
  17866     HRESULT (STDMETHODCALLTYPE *Map)(
  17867         ID3D12Resource2 *This,
  17868         UINT sub_resource,
  17869         const D3D12_RANGE *read_range,
  17870         void **data);
  17871 
  17872     void (STDMETHODCALLTYPE *Unmap)(
  17873         ID3D12Resource2 *This,
  17874         UINT sub_resource,
  17875         const D3D12_RANGE *written_range);
  17876 
  17877     D3D12_RESOURCE_DESC * (STDMETHODCALLTYPE *GetDesc)(
  17878         ID3D12Resource2 *This,
  17879         D3D12_RESOURCE_DESC *__ret);
  17880 
  17881     D3D12_GPU_VIRTUAL_ADDRESS (STDMETHODCALLTYPE *GetGPUVirtualAddress)(
  17882         ID3D12Resource2 *This);
  17883 
  17884     HRESULT (STDMETHODCALLTYPE *WriteToSubresource)(
  17885         ID3D12Resource2 *This,
  17886         UINT dst_sub_resource,
  17887         const D3D12_BOX *dst_box,
  17888         const void *src_data,
  17889         UINT src_row_pitch,
  17890         UINT src_slice_pitch);
  17891 
  17892     HRESULT (STDMETHODCALLTYPE *ReadFromSubresource)(
  17893         ID3D12Resource2 *This,
  17894         void *dst_data,
  17895         UINT dst_row_pitch,
  17896         UINT dst_slice_pitch,
  17897         UINT src_sub_resource,
  17898         const D3D12_BOX *src_box);
  17899 
  17900     HRESULT (STDMETHODCALLTYPE *GetHeapProperties)(
  17901         ID3D12Resource2 *This,
  17902         D3D12_HEAP_PROPERTIES *heap_properties,
  17903         D3D12_HEAP_FLAGS *flags);
  17904 
  17905     /*** ID3D12Resource1 methods ***/
  17906     HRESULT (STDMETHODCALLTYPE *GetProtectedResourceSession)(
  17907         ID3D12Resource2 *This,
  17908         REFIID riid,
  17909         void **protected_session);
  17910 
  17911     /*** ID3D12Resource2 methods ***/
  17912     D3D12_RESOURCE_DESC1 * (STDMETHODCALLTYPE *GetDesc1)(
  17913         ID3D12Resource2 *This,
  17914         D3D12_RESOURCE_DESC1 *__ret);
  17915 
  17916     END_INTERFACE
  17917 } ID3D12Resource2Vtbl;
  17918 
  17919 interface ID3D12Resource2 {
  17920     CONST_VTBL ID3D12Resource2Vtbl* lpVtbl;
  17921 };
  17922 
  17923 #ifdef COBJMACROS
  17924 #ifndef WIDL_C_INLINE_WRAPPERS
  17925 /*** IUnknown methods ***/
  17926 #define ID3D12Resource2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  17927 #define ID3D12Resource2_AddRef(This) (This)->lpVtbl->AddRef(This)
  17928 #define ID3D12Resource2_Release(This) (This)->lpVtbl->Release(This)
  17929 /*** ID3D12Object methods ***/
  17930 #define ID3D12Resource2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  17931 #define ID3D12Resource2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  17932 #define ID3D12Resource2_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  17933 #define ID3D12Resource2_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  17934 /*** ID3D12DeviceChild methods ***/
  17935 #define ID3D12Resource2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  17936 /*** ID3D12Resource methods ***/
  17937 #define ID3D12Resource2_Map(This,sub_resource,read_range,data) (This)->lpVtbl->Map(This,sub_resource,read_range,data)
  17938 #define ID3D12Resource2_Unmap(This,sub_resource,written_range) (This)->lpVtbl->Unmap(This,sub_resource,written_range)
  17939 #define ID3D12Resource2_GetDesc(This) ID3D12Resource2_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  17940 #define ID3D12Resource2_GetGPUVirtualAddress(This) (This)->lpVtbl->GetGPUVirtualAddress(This)
  17941 #define ID3D12Resource2_WriteToSubresource(This,dst_sub_resource,dst_box,src_data,src_row_pitch,src_slice_pitch) (This)->lpVtbl->WriteToSubresource(This,dst_sub_resource,dst_box,src_data,src_row_pitch,src_slice_pitch)
  17942 #define ID3D12Resource2_ReadFromSubresource(This,dst_data,dst_row_pitch,dst_slice_pitch,src_sub_resource,src_box) (This)->lpVtbl->ReadFromSubresource(This,dst_data,dst_row_pitch,dst_slice_pitch,src_sub_resource,src_box)
  17943 #define ID3D12Resource2_GetHeapProperties(This,heap_properties,flags) (This)->lpVtbl->GetHeapProperties(This,heap_properties,flags)
  17944 /*** ID3D12Resource1 methods ***/
  17945 #define ID3D12Resource2_GetProtectedResourceSession(This,riid,protected_session) (This)->lpVtbl->GetProtectedResourceSession(This,riid,protected_session)
  17946 /*** ID3D12Resource2 methods ***/
  17947 #define ID3D12Resource2_GetDesc1(This) ID3D12Resource2_GetDesc1_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  17948 #else
  17949 /*** IUnknown methods ***/
  17950 static inline HRESULT ID3D12Resource2_QueryInterface(ID3D12Resource2* This,REFIID riid,void **ppvObject) {
  17951     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  17952 }
  17953 static inline ULONG ID3D12Resource2_AddRef(ID3D12Resource2* This) {
  17954     return This->lpVtbl->AddRef(This);
  17955 }
  17956 static inline ULONG ID3D12Resource2_Release(ID3D12Resource2* This) {
  17957     return This->lpVtbl->Release(This);
  17958 }
  17959 /*** ID3D12Object methods ***/
  17960 static inline HRESULT ID3D12Resource2_GetPrivateData(ID3D12Resource2* This,REFGUID guid,UINT *data_size,void *data) {
  17961     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  17962 }
  17963 static inline HRESULT ID3D12Resource2_SetPrivateData(ID3D12Resource2* This,REFGUID guid,UINT data_size,const void *data) {
  17964     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  17965 }
  17966 static inline HRESULT ID3D12Resource2_SetPrivateDataInterface(ID3D12Resource2* This,REFGUID guid,const IUnknown *data) {
  17967     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  17968 }
  17969 static inline HRESULT ID3D12Resource2_SetName(ID3D12Resource2* This,const WCHAR *name) {
  17970     return This->lpVtbl->SetName(This,name);
  17971 }
  17972 /*** ID3D12DeviceChild methods ***/
  17973 static inline HRESULT ID3D12Resource2_GetDevice(ID3D12Resource2* This,REFIID riid,void **device) {
  17974     return This->lpVtbl->GetDevice(This,riid,device);
  17975 }
  17976 /*** ID3D12Resource methods ***/
  17977 static inline HRESULT ID3D12Resource2_Map(ID3D12Resource2* This,UINT sub_resource,const D3D12_RANGE *read_range,void **data) {
  17978     return This->lpVtbl->Map(This,sub_resource,read_range,data);
  17979 }
  17980 static inline void ID3D12Resource2_Unmap(ID3D12Resource2* This,UINT sub_resource,const D3D12_RANGE *written_range) {
  17981     This->lpVtbl->Unmap(This,sub_resource,written_range);
  17982 }
  17983 static inline D3D12_RESOURCE_DESC ID3D12Resource2_GetDesc(ID3D12Resource2* This) {
  17984     D3D12_RESOURCE_DESC __ret;
  17985     return *This->lpVtbl->GetDesc(This,&__ret);
  17986 }
  17987 static inline D3D12_GPU_VIRTUAL_ADDRESS ID3D12Resource2_GetGPUVirtualAddress(ID3D12Resource2* This) {
  17988     return This->lpVtbl->GetGPUVirtualAddress(This);
  17989 }
  17990 static inline HRESULT ID3D12Resource2_WriteToSubresource(ID3D12Resource2* This,UINT dst_sub_resource,const D3D12_BOX *dst_box,const void *src_data,UINT src_row_pitch,UINT src_slice_pitch) {
  17991     return This->lpVtbl->WriteToSubresource(This,dst_sub_resource,dst_box,src_data,src_row_pitch,src_slice_pitch);
  17992 }
  17993 static inline HRESULT ID3D12Resource2_ReadFromSubresource(ID3D12Resource2* This,void *dst_data,UINT dst_row_pitch,UINT dst_slice_pitch,UINT src_sub_resource,const D3D12_BOX *src_box) {
  17994     return This->lpVtbl->ReadFromSubresource(This,dst_data,dst_row_pitch,dst_slice_pitch,src_sub_resource,src_box);
  17995 }
  17996 static inline HRESULT ID3D12Resource2_GetHeapProperties(ID3D12Resource2* This,D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS *flags) {
  17997     return This->lpVtbl->GetHeapProperties(This,heap_properties,flags);
  17998 }
  17999 /*** ID3D12Resource1 methods ***/
  18000 static inline HRESULT ID3D12Resource2_GetProtectedResourceSession(ID3D12Resource2* This,REFIID riid,void **protected_session) {
  18001     return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
  18002 }
  18003 /*** ID3D12Resource2 methods ***/
  18004 static inline D3D12_RESOURCE_DESC1 ID3D12Resource2_GetDesc1(ID3D12Resource2* This) {
  18005     D3D12_RESOURCE_DESC1 __ret;
  18006     return *This->lpVtbl->GetDesc1(This,&__ret);
  18007 }
  18008 #endif
  18009 #endif
  18010 
  18011 #endif
  18012 
  18013 
  18014 #endif  /* __ID3D12Resource2_INTERFACE_DEFINED__ */
  18015 
  18016 /*****************************************************************************
  18017  * ID3D12Heap1 interface
  18018  */
  18019 #ifndef __ID3D12Heap1_INTERFACE_DEFINED__
  18020 #define __ID3D12Heap1_INTERFACE_DEFINED__
  18021 
  18022 DEFINE_GUID(IID_ID3D12Heap1, 0x572f7389, 0x2168, 0x49e3, 0x96,0x93, 0xd6,0xdf,0x58,0x71,0xbf,0x6d);
  18023 #if defined(__cplusplus) && !defined(CINTERFACE)
  18024 MIDL_INTERFACE("572f7389-2168-49e3-9693-d6df5871bf6d")
  18025 ID3D12Heap1 : public ID3D12Heap
  18026 {
  18027     virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
  18028         REFIID riid,
  18029         void **protected_session) = 0;
  18030 
  18031 };
  18032 #ifdef __CRT_UUID_DECL
  18033 __CRT_UUID_DECL(ID3D12Heap1, 0x572f7389, 0x2168, 0x49e3, 0x96,0x93, 0xd6,0xdf,0x58,0x71,0xbf,0x6d)
  18034 #endif
  18035 #else
  18036 typedef struct ID3D12Heap1Vtbl {
  18037     BEGIN_INTERFACE
  18038 
  18039     /*** IUnknown methods ***/
  18040     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  18041         ID3D12Heap1 *This,
  18042         REFIID riid,
  18043         void **ppvObject);
  18044 
  18045     ULONG (STDMETHODCALLTYPE *AddRef)(
  18046         ID3D12Heap1 *This);
  18047 
  18048     ULONG (STDMETHODCALLTYPE *Release)(
  18049         ID3D12Heap1 *This);
  18050 
  18051     /*** ID3D12Object methods ***/
  18052     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  18053         ID3D12Heap1 *This,
  18054         REFGUID guid,
  18055         UINT *data_size,
  18056         void *data);
  18057 
  18058     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  18059         ID3D12Heap1 *This,
  18060         REFGUID guid,
  18061         UINT data_size,
  18062         const void *data);
  18063 
  18064     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  18065         ID3D12Heap1 *This,
  18066         REFGUID guid,
  18067         const IUnknown *data);
  18068 
  18069     HRESULT (STDMETHODCALLTYPE *SetName)(
  18070         ID3D12Heap1 *This,
  18071         const WCHAR *name);
  18072 
  18073     /*** ID3D12DeviceChild methods ***/
  18074     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  18075         ID3D12Heap1 *This,
  18076         REFIID riid,
  18077         void **device);
  18078 
  18079     /*** ID3D12Heap methods ***/
  18080     D3D12_HEAP_DESC * (STDMETHODCALLTYPE *GetDesc)(
  18081         ID3D12Heap1 *This,
  18082         D3D12_HEAP_DESC *__ret);
  18083 
  18084     /*** ID3D12Heap1 methods ***/
  18085     HRESULT (STDMETHODCALLTYPE *GetProtectedResourceSession)(
  18086         ID3D12Heap1 *This,
  18087         REFIID riid,
  18088         void **protected_session);
  18089 
  18090     END_INTERFACE
  18091 } ID3D12Heap1Vtbl;
  18092 
  18093 interface ID3D12Heap1 {
  18094     CONST_VTBL ID3D12Heap1Vtbl* lpVtbl;
  18095 };
  18096 
  18097 #ifdef COBJMACROS
  18098 #ifndef WIDL_C_INLINE_WRAPPERS
  18099 /*** IUnknown methods ***/
  18100 #define ID3D12Heap1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  18101 #define ID3D12Heap1_AddRef(This) (This)->lpVtbl->AddRef(This)
  18102 #define ID3D12Heap1_Release(This) (This)->lpVtbl->Release(This)
  18103 /*** ID3D12Object methods ***/
  18104 #define ID3D12Heap1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  18105 #define ID3D12Heap1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  18106 #define ID3D12Heap1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  18107 #define ID3D12Heap1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  18108 /*** ID3D12DeviceChild methods ***/
  18109 #define ID3D12Heap1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  18110 /*** ID3D12Heap methods ***/
  18111 #define ID3D12Heap1_GetDesc(This) ID3D12Heap1_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  18112 /*** ID3D12Heap1 methods ***/
  18113 #define ID3D12Heap1_GetProtectedResourceSession(This,riid,protected_session) (This)->lpVtbl->GetProtectedResourceSession(This,riid,protected_session)
  18114 #else
  18115 /*** IUnknown methods ***/
  18116 static inline HRESULT ID3D12Heap1_QueryInterface(ID3D12Heap1* This,REFIID riid,void **ppvObject) {
  18117     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  18118 }
  18119 static inline ULONG ID3D12Heap1_AddRef(ID3D12Heap1* This) {
  18120     return This->lpVtbl->AddRef(This);
  18121 }
  18122 static inline ULONG ID3D12Heap1_Release(ID3D12Heap1* This) {
  18123     return This->lpVtbl->Release(This);
  18124 }
  18125 /*** ID3D12Object methods ***/
  18126 static inline HRESULT ID3D12Heap1_GetPrivateData(ID3D12Heap1* This,REFGUID guid,UINT *data_size,void *data) {
  18127     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  18128 }
  18129 static inline HRESULT ID3D12Heap1_SetPrivateData(ID3D12Heap1* This,REFGUID guid,UINT data_size,const void *data) {
  18130     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  18131 }
  18132 static inline HRESULT ID3D12Heap1_SetPrivateDataInterface(ID3D12Heap1* This,REFGUID guid,const IUnknown *data) {
  18133     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  18134 }
  18135 static inline HRESULT ID3D12Heap1_SetName(ID3D12Heap1* This,const WCHAR *name) {
  18136     return This->lpVtbl->SetName(This,name);
  18137 }
  18138 /*** ID3D12DeviceChild methods ***/
  18139 static inline HRESULT ID3D12Heap1_GetDevice(ID3D12Heap1* This,REFIID riid,void **device) {
  18140     return This->lpVtbl->GetDevice(This,riid,device);
  18141 }
  18142 /*** ID3D12Heap methods ***/
  18143 static inline D3D12_HEAP_DESC ID3D12Heap1_GetDesc(ID3D12Heap1* This) {
  18144     D3D12_HEAP_DESC __ret;
  18145     return *This->lpVtbl->GetDesc(This,&__ret);
  18146 }
  18147 /*** ID3D12Heap1 methods ***/
  18148 static inline HRESULT ID3D12Heap1_GetProtectedResourceSession(ID3D12Heap1* This,REFIID riid,void **protected_session) {
  18149     return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
  18150 }
  18151 #endif
  18152 #endif
  18153 
  18154 #endif
  18155 
  18156 
  18157 #endif  /* __ID3D12Heap1_INTERFACE_DEFINED__ */
  18158 
  18159 typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE {
  18160     D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0x0,
  18161     D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = 0x1,
  18162     D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = 0x2,
  18163     D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = 0x3
  18164 } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
  18165 typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS {
  18166     D3D12_CLEAR_VALUE ClearValue;
  18167 } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
  18168 typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS {
  18169     D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
  18170     __C89_NAMELESS union {
  18171         D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
  18172     } __C89_NAMELESSUNIONNAME;
  18173 } D3D12_RENDER_PASS_BEGINNING_ACCESS;
  18174 typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE {
  18175     D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0x0,
  18176     D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = 0x1,
  18177     D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = 0x2,
  18178     D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = 0x3
  18179 } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
  18180 typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS {
  18181     UINT SrcSubresource;
  18182     UINT DstSubresource;
  18183     UINT DstX;
  18184     UINT DstY;
  18185     D3D12_RECT SrcRect;
  18186 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
  18187 typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS {
  18188     ID3D12Resource *pSrcResource;
  18189     ID3D12Resource *pDstResource;
  18190     UINT SubresourceCount;
  18191     const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
  18192     DXGI_FORMAT Format;
  18193     D3D12_RESOLVE_MODE ResolveMode;
  18194     WINBOOL PreserveResolveSource;
  18195 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
  18196 typedef struct D3D12_RENDER_PASS_ENDING_ACCESS {
  18197     D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
  18198     __C89_NAMELESS union {
  18199         D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
  18200     } __C89_NAMELESSUNIONNAME;
  18201 } D3D12_RENDER_PASS_ENDING_ACCESS;
  18202 typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC {
  18203     D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
  18204     D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
  18205     D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
  18206 } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
  18207 typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC {
  18208     D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
  18209     D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
  18210     D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
  18211     D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
  18212     D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
  18213 } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
  18214 typedef enum D3D12_RENDER_PASS_FLAGS {
  18215     D3D12_RENDER_PASS_FLAG_NONE = 0x0,
  18216     D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
  18217     D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
  18218     D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4
  18219 } D3D12_RENDER_PASS_FLAGS;
  18220 DEFINE_ENUM_FLAG_OPERATORS(D3D12_RENDER_PASS_FLAGS);
  18221 /*****************************************************************************
  18222  * ID3D12MetaCommand interface
  18223  */
  18224 #ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
  18225 #define __ID3D12MetaCommand_INTERFACE_DEFINED__
  18226 
  18227 DEFINE_GUID(IID_ID3D12MetaCommand, 0xdbb84c27, 0x36ce, 0x4fc9, 0xb8,0x01, 0xf0,0x48,0xc4,0x6a,0xc5,0x70);
  18228 #if defined(__cplusplus) && !defined(CINTERFACE)
  18229 MIDL_INTERFACE("dbb84c27-36ce-4fc9-b801-f048c46ac570")
  18230 ID3D12MetaCommand : public ID3D12Pageable
  18231 {
  18232     virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize(
  18233         D3D12_META_COMMAND_PARAMETER_STAGE stage,
  18234         UINT parameter_index) = 0;
  18235 
  18236 };
  18237 #ifdef __CRT_UUID_DECL
  18238 __CRT_UUID_DECL(ID3D12MetaCommand, 0xdbb84c27, 0x36ce, 0x4fc9, 0xb8,0x01, 0xf0,0x48,0xc4,0x6a,0xc5,0x70)
  18239 #endif
  18240 #else
  18241 typedef struct ID3D12MetaCommandVtbl {
  18242     BEGIN_INTERFACE
  18243 
  18244     /*** IUnknown methods ***/
  18245     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  18246         ID3D12MetaCommand *This,
  18247         REFIID riid,
  18248         void **ppvObject);
  18249 
  18250     ULONG (STDMETHODCALLTYPE *AddRef)(
  18251         ID3D12MetaCommand *This);
  18252 
  18253     ULONG (STDMETHODCALLTYPE *Release)(
  18254         ID3D12MetaCommand *This);
  18255 
  18256     /*** ID3D12Object methods ***/
  18257     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  18258         ID3D12MetaCommand *This,
  18259         REFGUID guid,
  18260         UINT *data_size,
  18261         void *data);
  18262 
  18263     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  18264         ID3D12MetaCommand *This,
  18265         REFGUID guid,
  18266         UINT data_size,
  18267         const void *data);
  18268 
  18269     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  18270         ID3D12MetaCommand *This,
  18271         REFGUID guid,
  18272         const IUnknown *data);
  18273 
  18274     HRESULT (STDMETHODCALLTYPE *SetName)(
  18275         ID3D12MetaCommand *This,
  18276         const WCHAR *name);
  18277 
  18278     /*** ID3D12DeviceChild methods ***/
  18279     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  18280         ID3D12MetaCommand *This,
  18281         REFIID riid,
  18282         void **device);
  18283 
  18284     /*** ID3D12MetaCommand methods ***/
  18285     UINT64 (STDMETHODCALLTYPE *GetRequiredParameterResourceSize)(
  18286         ID3D12MetaCommand *This,
  18287         D3D12_META_COMMAND_PARAMETER_STAGE stage,
  18288         UINT parameter_index);
  18289 
  18290     END_INTERFACE
  18291 } ID3D12MetaCommandVtbl;
  18292 
  18293 interface ID3D12MetaCommand {
  18294     CONST_VTBL ID3D12MetaCommandVtbl* lpVtbl;
  18295 };
  18296 
  18297 #ifdef COBJMACROS
  18298 #ifndef WIDL_C_INLINE_WRAPPERS
  18299 /*** IUnknown methods ***/
  18300 #define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  18301 #define ID3D12MetaCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
  18302 #define ID3D12MetaCommand_Release(This) (This)->lpVtbl->Release(This)
  18303 /*** ID3D12Object methods ***/
  18304 #define ID3D12MetaCommand_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  18305 #define ID3D12MetaCommand_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  18306 #define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  18307 #define ID3D12MetaCommand_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  18308 /*** ID3D12DeviceChild methods ***/
  18309 #define ID3D12MetaCommand_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  18310 /*** ID3D12MetaCommand methods ***/
  18311 #define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,stage,parameter_index) (This)->lpVtbl->GetRequiredParameterResourceSize(This,stage,parameter_index)
  18312 #else
  18313 /*** IUnknown methods ***/
  18314 static inline HRESULT ID3D12MetaCommand_QueryInterface(ID3D12MetaCommand* This,REFIID riid,void **ppvObject) {
  18315     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  18316 }
  18317 static inline ULONG ID3D12MetaCommand_AddRef(ID3D12MetaCommand* This) {
  18318     return This->lpVtbl->AddRef(This);
  18319 }
  18320 static inline ULONG ID3D12MetaCommand_Release(ID3D12MetaCommand* This) {
  18321     return This->lpVtbl->Release(This);
  18322 }
  18323 /*** ID3D12Object methods ***/
  18324 static inline HRESULT ID3D12MetaCommand_GetPrivateData(ID3D12MetaCommand* This,REFGUID guid,UINT *data_size,void *data) {
  18325     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  18326 }
  18327 static inline HRESULT ID3D12MetaCommand_SetPrivateData(ID3D12MetaCommand* This,REFGUID guid,UINT data_size,const void *data) {
  18328     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  18329 }
  18330 static inline HRESULT ID3D12MetaCommand_SetPrivateDataInterface(ID3D12MetaCommand* This,REFGUID guid,const IUnknown *data) {
  18331     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  18332 }
  18333 static inline HRESULT ID3D12MetaCommand_SetName(ID3D12MetaCommand* This,const WCHAR *name) {
  18334     return This->lpVtbl->SetName(This,name);
  18335 }
  18336 /*** ID3D12DeviceChild methods ***/
  18337 static inline HRESULT ID3D12MetaCommand_GetDevice(ID3D12MetaCommand* This,REFIID riid,void **device) {
  18338     return This->lpVtbl->GetDevice(This,riid,device);
  18339 }
  18340 /*** ID3D12MetaCommand methods ***/
  18341 static inline UINT64 ID3D12MetaCommand_GetRequiredParameterResourceSize(ID3D12MetaCommand* This,D3D12_META_COMMAND_PARAMETER_STAGE stage,UINT parameter_index) {
  18342     return This->lpVtbl->GetRequiredParameterResourceSize(This,stage,parameter_index);
  18343 }
  18344 #endif
  18345 #endif
  18346 
  18347 #endif
  18348 
  18349 
  18350 #endif  /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
  18351 
  18352 typedef struct D3D12_DISPATCH_RAYS_DESC {
  18353     D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
  18354     D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
  18355     D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
  18356     D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
  18357     UINT Width;
  18358     UINT Height;
  18359     UINT Depth;
  18360 } D3D12_DISPATCH_RAYS_DESC;
  18361 /*****************************************************************************
  18362  * ID3D12GraphicsCommandList4 interface
  18363  */
  18364 #ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
  18365 #define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
  18366 
  18367 DEFINE_GUID(IID_ID3D12GraphicsCommandList4, 0x8754318e, 0xd3a9, 0x4541, 0x98,0xcf, 0x64,0x5b,0x50,0xdc,0x48,0x74);
  18368 #if defined(__cplusplus) && !defined(CINTERFACE)
  18369 MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
  18370 ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3
  18371 {
  18372     virtual void STDMETHODCALLTYPE BeginRenderPass(
  18373         UINT render_targets_count,
  18374         const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,
  18375         const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,
  18376         D3D12_RENDER_PASS_FLAGS flags) = 0;
  18377 
  18378     virtual void STDMETHODCALLTYPE EndRenderPass(
  18379         ) = 0;
  18380 
  18381     virtual void STDMETHODCALLTYPE InitializeMetaCommand(
  18382         ID3D12MetaCommand *meta_command,
  18383         const void *initialization_parameters_data,
  18384         SIZE_T initialization_parameters_data_size_in_bytes) = 0;
  18385 
  18386     virtual void STDMETHODCALLTYPE ExecuteMetaCommand(
  18387         ID3D12MetaCommand *meta_command,
  18388         const void *execution_parameters_data,
  18389         SIZE_T execution_parameters_data_size_in_bytes) = 0;
  18390 
  18391     virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure(
  18392         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,
  18393         UINT postbuild_info_descs_count,
  18394         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs) = 0;
  18395 
  18396     virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo(
  18397         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,
  18398         UINT src_acceleration_structures_count,
  18399         const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data) = 0;
  18400 
  18401     virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure(
  18402         D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,
  18403         D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,
  18404         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode) = 0;
  18405 
  18406     virtual void STDMETHODCALLTYPE SetPipelineState1(
  18407         ID3D12StateObject *state_object) = 0;
  18408 
  18409     virtual void STDMETHODCALLTYPE DispatchRays(
  18410         const D3D12_DISPATCH_RAYS_DESC *desc) = 0;
  18411 
  18412 };
  18413 #ifdef __CRT_UUID_DECL
  18414 __CRT_UUID_DECL(ID3D12GraphicsCommandList4, 0x8754318e, 0xd3a9, 0x4541, 0x98,0xcf, 0x64,0x5b,0x50,0xdc,0x48,0x74)
  18415 #endif
  18416 #else
  18417 typedef struct ID3D12GraphicsCommandList4Vtbl {
  18418     BEGIN_INTERFACE
  18419 
  18420     /*** IUnknown methods ***/
  18421     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  18422         ID3D12GraphicsCommandList4 *This,
  18423         REFIID riid,
  18424         void **ppvObject);
  18425 
  18426     ULONG (STDMETHODCALLTYPE *AddRef)(
  18427         ID3D12GraphicsCommandList4 *This);
  18428 
  18429     ULONG (STDMETHODCALLTYPE *Release)(
  18430         ID3D12GraphicsCommandList4 *This);
  18431 
  18432     /*** ID3D12Object methods ***/
  18433     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  18434         ID3D12GraphicsCommandList4 *This,
  18435         REFGUID guid,
  18436         UINT *data_size,
  18437         void *data);
  18438 
  18439     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  18440         ID3D12GraphicsCommandList4 *This,
  18441         REFGUID guid,
  18442         UINT data_size,
  18443         const void *data);
  18444 
  18445     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  18446         ID3D12GraphicsCommandList4 *This,
  18447         REFGUID guid,
  18448         const IUnknown *data);
  18449 
  18450     HRESULT (STDMETHODCALLTYPE *SetName)(
  18451         ID3D12GraphicsCommandList4 *This,
  18452         const WCHAR *name);
  18453 
  18454     /*** ID3D12DeviceChild methods ***/
  18455     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  18456         ID3D12GraphicsCommandList4 *This,
  18457         REFIID riid,
  18458         void **device);
  18459 
  18460     /*** ID3D12CommandList methods ***/
  18461     D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
  18462         ID3D12GraphicsCommandList4 *This);
  18463 
  18464     /*** ID3D12GraphicsCommandList methods ***/
  18465     HRESULT (STDMETHODCALLTYPE *Close)(
  18466         ID3D12GraphicsCommandList4 *This);
  18467 
  18468     HRESULT (STDMETHODCALLTYPE *Reset)(
  18469         ID3D12GraphicsCommandList4 *This,
  18470         ID3D12CommandAllocator *allocator,
  18471         ID3D12PipelineState *initial_state);
  18472 
  18473     void (STDMETHODCALLTYPE *ClearState)(
  18474         ID3D12GraphicsCommandList4 *This,
  18475         ID3D12PipelineState *pipeline_state);
  18476 
  18477     void (STDMETHODCALLTYPE *DrawInstanced)(
  18478         ID3D12GraphicsCommandList4 *This,
  18479         UINT vertex_count_per_instance,
  18480         UINT instance_count,
  18481         UINT start_vertex_location,
  18482         UINT start_instance_location);
  18483 
  18484     void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
  18485         ID3D12GraphicsCommandList4 *This,
  18486         UINT index_count_per_instance,
  18487         UINT instance_count,
  18488         UINT start_vertex_location,
  18489         INT base_vertex_location,
  18490         UINT start_instance_location);
  18491 
  18492     void (STDMETHODCALLTYPE *Dispatch)(
  18493         ID3D12GraphicsCommandList4 *This,
  18494         UINT x,
  18495         UINT u,
  18496         UINT z);
  18497 
  18498     void (STDMETHODCALLTYPE *CopyBufferRegion)(
  18499         ID3D12GraphicsCommandList4 *This,
  18500         ID3D12Resource *dst_buffer,
  18501         UINT64 dst_offset,
  18502         ID3D12Resource *src_buffer,
  18503         UINT64 src_offset,
  18504         UINT64 byte_count);
  18505 
  18506     void (STDMETHODCALLTYPE *CopyTextureRegion)(
  18507         ID3D12GraphicsCommandList4 *This,
  18508         const D3D12_TEXTURE_COPY_LOCATION *dst,
  18509         UINT dst_x,
  18510         UINT dst_y,
  18511         UINT dst_z,
  18512         const D3D12_TEXTURE_COPY_LOCATION *src,
  18513         const D3D12_BOX *src_box);
  18514 
  18515     void (STDMETHODCALLTYPE *CopyResource)(
  18516         ID3D12GraphicsCommandList4 *This,
  18517         ID3D12Resource *dst_resource,
  18518         ID3D12Resource *src_resource);
  18519 
  18520     void (STDMETHODCALLTYPE *CopyTiles)(
  18521         ID3D12GraphicsCommandList4 *This,
  18522         ID3D12Resource *tiled_resource,
  18523         const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
  18524         const D3D12_TILE_REGION_SIZE *tile_region_size,
  18525         ID3D12Resource *buffer,
  18526         UINT64 buffer_offset,
  18527         D3D12_TILE_COPY_FLAGS flags);
  18528 
  18529     void (STDMETHODCALLTYPE *ResolveSubresource)(
  18530         ID3D12GraphicsCommandList4 *This,
  18531         ID3D12Resource *dst_resource,
  18532         UINT dst_sub_resource,
  18533         ID3D12Resource *src_resource,
  18534         UINT src_sub_resource,
  18535         DXGI_FORMAT format);
  18536 
  18537     void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
  18538         ID3D12GraphicsCommandList4 *This,
  18539         D3D12_PRIMITIVE_TOPOLOGY primitive_topology);
  18540 
  18541     void (STDMETHODCALLTYPE *RSSetViewports)(
  18542         ID3D12GraphicsCommandList4 *This,
  18543         UINT viewport_count,
  18544         const D3D12_VIEWPORT *viewports);
  18545 
  18546     void (STDMETHODCALLTYPE *RSSetScissorRects)(
  18547         ID3D12GraphicsCommandList4 *This,
  18548         UINT rect_count,
  18549         const D3D12_RECT *rects);
  18550 
  18551     void (STDMETHODCALLTYPE *OMSetBlendFactor)(
  18552         ID3D12GraphicsCommandList4 *This,
  18553         const FLOAT blend_factor[4]);
  18554 
  18555     void (STDMETHODCALLTYPE *OMSetStencilRef)(
  18556         ID3D12GraphicsCommandList4 *This,
  18557         UINT stencil_ref);
  18558 
  18559     void (STDMETHODCALLTYPE *SetPipelineState)(
  18560         ID3D12GraphicsCommandList4 *This,
  18561         ID3D12PipelineState *pipeline_state);
  18562 
  18563     void (STDMETHODCALLTYPE *ResourceBarrier)(
  18564         ID3D12GraphicsCommandList4 *This,
  18565         UINT barrier_count,
  18566         const D3D12_RESOURCE_BARRIER *barriers);
  18567 
  18568     void (STDMETHODCALLTYPE *ExecuteBundle)(
  18569         ID3D12GraphicsCommandList4 *This,
  18570         ID3D12GraphicsCommandList *command_list);
  18571 
  18572     void (STDMETHODCALLTYPE *SetDescriptorHeaps)(
  18573         ID3D12GraphicsCommandList4 *This,
  18574         UINT heap_count,
  18575         ID3D12DescriptorHeap *const *heaps);
  18576 
  18577     void (STDMETHODCALLTYPE *SetComputeRootSignature)(
  18578         ID3D12GraphicsCommandList4 *This,
  18579         ID3D12RootSignature *root_signature);
  18580 
  18581     void (STDMETHODCALLTYPE *SetGraphicsRootSignature)(
  18582         ID3D12GraphicsCommandList4 *This,
  18583         ID3D12RootSignature *root_signature);
  18584 
  18585     void (STDMETHODCALLTYPE *SetComputeRootDescriptorTable)(
  18586         ID3D12GraphicsCommandList4 *This,
  18587         UINT root_parameter_index,
  18588         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  18589 
  18590     void (STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable)(
  18591         ID3D12GraphicsCommandList4 *This,
  18592         UINT root_parameter_index,
  18593         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  18594 
  18595     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstant)(
  18596         ID3D12GraphicsCommandList4 *This,
  18597         UINT root_parameter_index,
  18598         UINT data,
  18599         UINT dst_offset);
  18600 
  18601     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant)(
  18602         ID3D12GraphicsCommandList4 *This,
  18603         UINT root_parameter_index,
  18604         UINT data,
  18605         UINT dst_offset);
  18606 
  18607     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstants)(
  18608         ID3D12GraphicsCommandList4 *This,
  18609         UINT root_parameter_index,
  18610         UINT constant_count,
  18611         const void *data,
  18612         UINT dst_offset);
  18613 
  18614     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants)(
  18615         ID3D12GraphicsCommandList4 *This,
  18616         UINT root_parameter_index,
  18617         UINT constant_count,
  18618         const void *data,
  18619         UINT dst_offset);
  18620 
  18621     void (STDMETHODCALLTYPE *SetComputeRootConstantBufferView)(
  18622         ID3D12GraphicsCommandList4 *This,
  18623         UINT root_parameter_index,
  18624         D3D12_GPU_VIRTUAL_ADDRESS address);
  18625 
  18626     void (STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView)(
  18627         ID3D12GraphicsCommandList4 *This,
  18628         UINT root_parameter_index,
  18629         D3D12_GPU_VIRTUAL_ADDRESS address);
  18630 
  18631     void (STDMETHODCALLTYPE *SetComputeRootShaderResourceView)(
  18632         ID3D12GraphicsCommandList4 *This,
  18633         UINT root_parameter_index,
  18634         D3D12_GPU_VIRTUAL_ADDRESS address);
  18635 
  18636     void (STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView)(
  18637         ID3D12GraphicsCommandList4 *This,
  18638         UINT root_parameter_index,
  18639         D3D12_GPU_VIRTUAL_ADDRESS address);
  18640 
  18641     void (STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView)(
  18642         ID3D12GraphicsCommandList4 *This,
  18643         UINT root_parameter_index,
  18644         D3D12_GPU_VIRTUAL_ADDRESS address);
  18645 
  18646     void (STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView)(
  18647         ID3D12GraphicsCommandList4 *This,
  18648         UINT root_parameter_index,
  18649         D3D12_GPU_VIRTUAL_ADDRESS address);
  18650 
  18651     void (STDMETHODCALLTYPE *IASetIndexBuffer)(
  18652         ID3D12GraphicsCommandList4 *This,
  18653         const D3D12_INDEX_BUFFER_VIEW *view);
  18654 
  18655     void (STDMETHODCALLTYPE *IASetVertexBuffers)(
  18656         ID3D12GraphicsCommandList4 *This,
  18657         UINT start_slot,
  18658         UINT view_count,
  18659         const D3D12_VERTEX_BUFFER_VIEW *views);
  18660 
  18661     void (STDMETHODCALLTYPE *SOSetTargets)(
  18662         ID3D12GraphicsCommandList4 *This,
  18663         UINT start_slot,
  18664         UINT view_count,
  18665         const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views);
  18666 
  18667     void (STDMETHODCALLTYPE *OMSetRenderTargets)(
  18668         ID3D12GraphicsCommandList4 *This,
  18669         UINT render_target_descriptor_count,
  18670         const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
  18671         WINBOOL single_descriptor_handle,
  18672         const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor);
  18673 
  18674     void (STDMETHODCALLTYPE *ClearDepthStencilView)(
  18675         ID3D12GraphicsCommandList4 *This,
  18676         D3D12_CPU_DESCRIPTOR_HANDLE dsv,
  18677         D3D12_CLEAR_FLAGS flags,
  18678         FLOAT depth,
  18679         UINT8 stencil,
  18680         UINT rect_count,
  18681         const D3D12_RECT *rects);
  18682 
  18683     void (STDMETHODCALLTYPE *ClearRenderTargetView)(
  18684         ID3D12GraphicsCommandList4 *This,
  18685         D3D12_CPU_DESCRIPTOR_HANDLE rtv,
  18686         const FLOAT color[4],
  18687         UINT rect_count,
  18688         const D3D12_RECT *rects);
  18689 
  18690     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewUint)(
  18691         ID3D12GraphicsCommandList4 *This,
  18692         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  18693         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
  18694         ID3D12Resource *resource,
  18695         const UINT values[4],
  18696         UINT rect_count,
  18697         const D3D12_RECT *rects);
  18698 
  18699     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat)(
  18700         ID3D12GraphicsCommandList4 *This,
  18701         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  18702         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
  18703         ID3D12Resource *resource,
  18704         const float values[4],
  18705         UINT rect_count,
  18706         const D3D12_RECT *rects);
  18707 
  18708     void (STDMETHODCALLTYPE *DiscardResource)(
  18709         ID3D12GraphicsCommandList4 *This,
  18710         ID3D12Resource *resource,
  18711         const D3D12_DISCARD_REGION *region);
  18712 
  18713     void (STDMETHODCALLTYPE *BeginQuery)(
  18714         ID3D12GraphicsCommandList4 *This,
  18715         ID3D12QueryHeap *heap,
  18716         D3D12_QUERY_TYPE type,
  18717         UINT index);
  18718 
  18719     void (STDMETHODCALLTYPE *EndQuery)(
  18720         ID3D12GraphicsCommandList4 *This,
  18721         ID3D12QueryHeap *heap,
  18722         D3D12_QUERY_TYPE type,
  18723         UINT index);
  18724 
  18725     void (STDMETHODCALLTYPE *ResolveQueryData)(
  18726         ID3D12GraphicsCommandList4 *This,
  18727         ID3D12QueryHeap *heap,
  18728         D3D12_QUERY_TYPE type,
  18729         UINT start_index,
  18730         UINT query_count,
  18731         ID3D12Resource *dst_buffer,
  18732         UINT64 aligned_dst_buffer_offset);
  18733 
  18734     void (STDMETHODCALLTYPE *SetPredication)(
  18735         ID3D12GraphicsCommandList4 *This,
  18736         ID3D12Resource *buffer,
  18737         UINT64 aligned_buffer_offset,
  18738         D3D12_PREDICATION_OP operation);
  18739 
  18740     void (STDMETHODCALLTYPE *SetMarker)(
  18741         ID3D12GraphicsCommandList4 *This,
  18742         UINT metadata,
  18743         const void *data,
  18744         UINT size);
  18745 
  18746     void (STDMETHODCALLTYPE *BeginEvent)(
  18747         ID3D12GraphicsCommandList4 *This,
  18748         UINT metadata,
  18749         const void *data,
  18750         UINT size);
  18751 
  18752     void (STDMETHODCALLTYPE *EndEvent)(
  18753         ID3D12GraphicsCommandList4 *This);
  18754 
  18755     void (STDMETHODCALLTYPE *ExecuteIndirect)(
  18756         ID3D12GraphicsCommandList4 *This,
  18757         ID3D12CommandSignature *command_signature,
  18758         UINT max_command_count,
  18759         ID3D12Resource *arg_buffer,
  18760         UINT64 arg_buffer_offset,
  18761         ID3D12Resource *count_buffer,
  18762         UINT64 count_buffer_offset);
  18763 
  18764     /*** ID3D12GraphicsCommandList1 methods ***/
  18765     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT)(
  18766         ID3D12GraphicsCommandList4 *This,
  18767         ID3D12Resource *dst_buffer,
  18768         UINT64 dst_offset,
  18769         ID3D12Resource *src_buffer,
  18770         UINT64 src_offset,
  18771         UINT dependent_resource_count,
  18772         ID3D12Resource *const *dependent_resources,
  18773         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  18774 
  18775     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT64)(
  18776         ID3D12GraphicsCommandList4 *This,
  18777         ID3D12Resource *dst_buffer,
  18778         UINT64 dst_offset,
  18779         ID3D12Resource *src_buffer,
  18780         UINT64 src_offset,
  18781         UINT dependent_resource_count,
  18782         ID3D12Resource *const *dependent_resources,
  18783         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  18784 
  18785     void (STDMETHODCALLTYPE *OMSetDepthBounds)(
  18786         ID3D12GraphicsCommandList4 *This,
  18787         FLOAT min,
  18788         FLOAT max);
  18789 
  18790     void (STDMETHODCALLTYPE *SetSamplePositions)(
  18791         ID3D12GraphicsCommandList4 *This,
  18792         UINT sample_count,
  18793         UINT pixel_count,
  18794         D3D12_SAMPLE_POSITION *sample_positions);
  18795 
  18796     void (STDMETHODCALLTYPE *ResolveSubresourceRegion)(
  18797         ID3D12GraphicsCommandList4 *This,
  18798         ID3D12Resource *dst_resource,
  18799         UINT dst_sub_resource_idx,
  18800         UINT dst_x,
  18801         UINT dst_y,
  18802         ID3D12Resource *src_resource,
  18803         UINT src_sub_resource_idx,
  18804         D3D12_RECT *src_rect,
  18805         DXGI_FORMAT format,
  18806         D3D12_RESOLVE_MODE mode);
  18807 
  18808     void (STDMETHODCALLTYPE *SetViewInstanceMask)(
  18809         ID3D12GraphicsCommandList4 *This,
  18810         UINT mask);
  18811 
  18812     /*** ID3D12GraphicsCommandList2 methods ***/
  18813     void (STDMETHODCALLTYPE *WriteBufferImmediate)(
  18814         ID3D12GraphicsCommandList4 *This,
  18815         UINT count,
  18816         const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,
  18817         const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
  18818 
  18819     /*** ID3D12GraphicsCommandList3 methods ***/
  18820     void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
  18821         ID3D12GraphicsCommandList4 *This,
  18822         ID3D12ProtectedResourceSession *protected_resource_session);
  18823 
  18824     /*** ID3D12GraphicsCommandList4 methods ***/
  18825     void (STDMETHODCALLTYPE *BeginRenderPass)(
  18826         ID3D12GraphicsCommandList4 *This,
  18827         UINT render_targets_count,
  18828         const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,
  18829         const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,
  18830         D3D12_RENDER_PASS_FLAGS flags);
  18831 
  18832     void (STDMETHODCALLTYPE *EndRenderPass)(
  18833         ID3D12GraphicsCommandList4 *This);
  18834 
  18835     void (STDMETHODCALLTYPE *InitializeMetaCommand)(
  18836         ID3D12GraphicsCommandList4 *This,
  18837         ID3D12MetaCommand *meta_command,
  18838         const void *initialization_parameters_data,
  18839         SIZE_T initialization_parameters_data_size_in_bytes);
  18840 
  18841     void (STDMETHODCALLTYPE *ExecuteMetaCommand)(
  18842         ID3D12GraphicsCommandList4 *This,
  18843         ID3D12MetaCommand *meta_command,
  18844         const void *execution_parameters_data,
  18845         SIZE_T execution_parameters_data_size_in_bytes);
  18846 
  18847     void (STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure)(
  18848         ID3D12GraphicsCommandList4 *This,
  18849         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,
  18850         UINT postbuild_info_descs_count,
  18851         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs);
  18852 
  18853     void (STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo)(
  18854         ID3D12GraphicsCommandList4 *This,
  18855         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,
  18856         UINT src_acceleration_structures_count,
  18857         const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data);
  18858 
  18859     void (STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure)(
  18860         ID3D12GraphicsCommandList4 *This,
  18861         D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,
  18862         D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,
  18863         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode);
  18864 
  18865     void (STDMETHODCALLTYPE *SetPipelineState1)(
  18866         ID3D12GraphicsCommandList4 *This,
  18867         ID3D12StateObject *state_object);
  18868 
  18869     void (STDMETHODCALLTYPE *DispatchRays)(
  18870         ID3D12GraphicsCommandList4 *This,
  18871         const D3D12_DISPATCH_RAYS_DESC *desc);
  18872 
  18873     END_INTERFACE
  18874 } ID3D12GraphicsCommandList4Vtbl;
  18875 
  18876 interface ID3D12GraphicsCommandList4 {
  18877     CONST_VTBL ID3D12GraphicsCommandList4Vtbl* lpVtbl;
  18878 };
  18879 
  18880 #ifdef COBJMACROS
  18881 #ifndef WIDL_C_INLINE_WRAPPERS
  18882 /*** IUnknown methods ***/
  18883 #define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  18884 #define ID3D12GraphicsCommandList4_AddRef(This) (This)->lpVtbl->AddRef(This)
  18885 #define ID3D12GraphicsCommandList4_Release(This) (This)->lpVtbl->Release(This)
  18886 /*** ID3D12Object methods ***/
  18887 #define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  18888 #define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  18889 #define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  18890 #define ID3D12GraphicsCommandList4_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  18891 /*** ID3D12DeviceChild methods ***/
  18892 #define ID3D12GraphicsCommandList4_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  18893 /*** ID3D12CommandList methods ***/
  18894 #define ID3D12GraphicsCommandList4_GetType(This) (This)->lpVtbl->GetType(This)
  18895 /*** ID3D12GraphicsCommandList methods ***/
  18896 #define ID3D12GraphicsCommandList4_Close(This) (This)->lpVtbl->Close(This)
  18897 #define ID3D12GraphicsCommandList4_Reset(This,allocator,initial_state) (This)->lpVtbl->Reset(This,allocator,initial_state)
  18898 #define ID3D12GraphicsCommandList4_ClearState(This,pipeline_state) (This)->lpVtbl->ClearState(This,pipeline_state)
  18899 #define ID3D12GraphicsCommandList4_DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location) (This)->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location)
  18900 #define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location) (This)->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location)
  18901 #define ID3D12GraphicsCommandList4_Dispatch(This,x,u,z) (This)->lpVtbl->Dispatch(This,x,u,z)
  18902 #define ID3D12GraphicsCommandList4_CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count) (This)->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count)
  18903 #define ID3D12GraphicsCommandList4_CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box) (This)->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box)
  18904 #define ID3D12GraphicsCommandList4_CopyResource(This,dst_resource,src_resource) (This)->lpVtbl->CopyResource(This,dst_resource,src_resource)
  18905 #define ID3D12GraphicsCommandList4_CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags) (This)->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags)
  18906 #define ID3D12GraphicsCommandList4_ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format) (This)->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format)
  18907 #define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,primitive_topology) (This)->lpVtbl->IASetPrimitiveTopology(This,primitive_topology)
  18908 #define ID3D12GraphicsCommandList4_RSSetViewports(This,viewport_count,viewports) (This)->lpVtbl->RSSetViewports(This,viewport_count,viewports)
  18909 #define ID3D12GraphicsCommandList4_RSSetScissorRects(This,rect_count,rects) (This)->lpVtbl->RSSetScissorRects(This,rect_count,rects)
  18910 #define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,blend_factor) (This)->lpVtbl->OMSetBlendFactor(This,blend_factor)
  18911 #define ID3D12GraphicsCommandList4_OMSetStencilRef(This,stencil_ref) (This)->lpVtbl->OMSetStencilRef(This,stencil_ref)
  18912 #define ID3D12GraphicsCommandList4_SetPipelineState(This,pipeline_state) (This)->lpVtbl->SetPipelineState(This,pipeline_state)
  18913 #define ID3D12GraphicsCommandList4_ResourceBarrier(This,barrier_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barrier_count,barriers)
  18914 #define ID3D12GraphicsCommandList4_ExecuteBundle(This,command_list) (This)->lpVtbl->ExecuteBundle(This,command_list)
  18915 #define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,heap_count,heaps) (This)->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps)
  18916 #define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,root_signature) (This)->lpVtbl->SetComputeRootSignature(This,root_signature)
  18917 #define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,root_signature) (This)->lpVtbl->SetGraphicsRootSignature(This,root_signature)
  18918 #define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor)
  18919 #define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor)
  18920 #define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset)
  18921 #define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset)
  18922 #define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
  18923 #define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
  18924 #define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address)
  18925 #define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address)
  18926 #define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address)
  18927 #define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address)
  18928 #define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address)
  18929 #define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address)
  18930 #define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,view) (This)->lpVtbl->IASetIndexBuffer(This,view)
  18931 #define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,start_slot,view_count,views) (This)->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views)
  18932 #define ID3D12GraphicsCommandList4_SOSetTargets(This,start_slot,view_count,views) (This)->lpVtbl->SOSetTargets(This,start_slot,view_count,views)
  18933 #define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor) (This)->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor)
  18934 #define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects) (This)->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects)
  18935 #define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,rtv,color,rect_count,rects) (This)->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects)
  18936 #define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
  18937 #define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
  18938 #define ID3D12GraphicsCommandList4_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
  18939 #define ID3D12GraphicsCommandList4_BeginQuery(This,heap,type,index) (This)->lpVtbl->BeginQuery(This,heap,type,index)
  18940 #define ID3D12GraphicsCommandList4_EndQuery(This,heap,type,index) (This)->lpVtbl->EndQuery(This,heap,type,index)
  18941 #define ID3D12GraphicsCommandList4_ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset)
  18942 #define ID3D12GraphicsCommandList4_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
  18943 #define ID3D12GraphicsCommandList4_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
  18944 #define ID3D12GraphicsCommandList4_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
  18945 #define ID3D12GraphicsCommandList4_EndEvent(This) (This)->lpVtbl->EndEvent(This)
  18946 #define ID3D12GraphicsCommandList4_ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset) (This)->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset)
  18947 /*** ID3D12GraphicsCommandList1 methods ***/
  18948 #define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
  18949 #define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
  18950 #define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,min,max) (This)->lpVtbl->OMSetDepthBounds(This,min,max)
  18951 #define ID3D12GraphicsCommandList4_SetSamplePositions(This,sample_count,pixel_count,sample_positions) (This)->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions)
  18952 #define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode) (This)->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode)
  18953 #define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,mask) (This)->lpVtbl->SetViewInstanceMask(This,mask)
  18954 /*** ID3D12GraphicsCommandList2 methods ***/
  18955 #define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,count,parameters,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,parameters,modes)
  18956 /*** ID3D12GraphicsCommandList3 methods ***/
  18957 #define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
  18958 /*** ID3D12GraphicsCommandList4 methods ***/
  18959 #define ID3D12GraphicsCommandList4_BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags) (This)->lpVtbl->BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags)
  18960 #define ID3D12GraphicsCommandList4_EndRenderPass(This) (This)->lpVtbl->EndRenderPass(This)
  18961 #define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes) (This)->lpVtbl->InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes)
  18962 #define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes) (This)->lpVtbl->ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes)
  18963 #define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs) (This)->lpVtbl->BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs)
  18964 #define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data) (This)->lpVtbl->EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data)
  18965 #define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode) (This)->lpVtbl->CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode)
  18966 #define ID3D12GraphicsCommandList4_SetPipelineState1(This,state_object) (This)->lpVtbl->SetPipelineState1(This,state_object)
  18967 #define ID3D12GraphicsCommandList4_DispatchRays(This,desc) (This)->lpVtbl->DispatchRays(This,desc)
  18968 #else
  18969 /*** IUnknown methods ***/
  18970 static inline HRESULT ID3D12GraphicsCommandList4_QueryInterface(ID3D12GraphicsCommandList4* This,REFIID riid,void **ppvObject) {
  18971     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  18972 }
  18973 static inline ULONG ID3D12GraphicsCommandList4_AddRef(ID3D12GraphicsCommandList4* This) {
  18974     return This->lpVtbl->AddRef(This);
  18975 }
  18976 static inline ULONG ID3D12GraphicsCommandList4_Release(ID3D12GraphicsCommandList4* This) {
  18977     return This->lpVtbl->Release(This);
  18978 }
  18979 /*** ID3D12Object methods ***/
  18980 static inline HRESULT ID3D12GraphicsCommandList4_GetPrivateData(ID3D12GraphicsCommandList4* This,REFGUID guid,UINT *data_size,void *data) {
  18981     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  18982 }
  18983 static inline HRESULT ID3D12GraphicsCommandList4_SetPrivateData(ID3D12GraphicsCommandList4* This,REFGUID guid,UINT data_size,const void *data) {
  18984     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  18985 }
  18986 static inline HRESULT ID3D12GraphicsCommandList4_SetPrivateDataInterface(ID3D12GraphicsCommandList4* This,REFGUID guid,const IUnknown *data) {
  18987     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  18988 }
  18989 static inline HRESULT ID3D12GraphicsCommandList4_SetName(ID3D12GraphicsCommandList4* This,const WCHAR *name) {
  18990     return This->lpVtbl->SetName(This,name);
  18991 }
  18992 /*** ID3D12DeviceChild methods ***/
  18993 static inline HRESULT ID3D12GraphicsCommandList4_GetDevice(ID3D12GraphicsCommandList4* This,REFIID riid,void **device) {
  18994     return This->lpVtbl->GetDevice(This,riid,device);
  18995 }
  18996 /*** ID3D12CommandList methods ***/
  18997 static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList4_GetType(ID3D12GraphicsCommandList4* This) {
  18998     return This->lpVtbl->GetType(This);
  18999 }
  19000 /*** ID3D12GraphicsCommandList methods ***/
  19001 static inline HRESULT ID3D12GraphicsCommandList4_Close(ID3D12GraphicsCommandList4* This) {
  19002     return This->lpVtbl->Close(This);
  19003 }
  19004 static inline HRESULT ID3D12GraphicsCommandList4_Reset(ID3D12GraphicsCommandList4* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
  19005     return This->lpVtbl->Reset(This,allocator,initial_state);
  19006 }
  19007 static inline void ID3D12GraphicsCommandList4_ClearState(ID3D12GraphicsCommandList4* This,ID3D12PipelineState *pipeline_state) {
  19008     This->lpVtbl->ClearState(This,pipeline_state);
  19009 }
  19010 static inline void ID3D12GraphicsCommandList4_DrawInstanced(ID3D12GraphicsCommandList4* This,UINT vertex_count_per_instance,UINT instance_count,UINT start_vertex_location,UINT start_instance_location) {
  19011     This->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location);
  19012 }
  19013 static inline void ID3D12GraphicsCommandList4_DrawIndexedInstanced(ID3D12GraphicsCommandList4* This,UINT index_count_per_instance,UINT instance_count,UINT start_vertex_location,INT base_vertex_location,UINT start_instance_location) {
  19014     This->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location);
  19015 }
  19016 static inline void ID3D12GraphicsCommandList4_Dispatch(ID3D12GraphicsCommandList4* This,UINT x,UINT u,UINT z) {
  19017     This->lpVtbl->Dispatch(This,x,u,z);
  19018 }
  19019 static inline void ID3D12GraphicsCommandList4_CopyBufferRegion(ID3D12GraphicsCommandList4* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT64 byte_count) {
  19020     This->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count);
  19021 }
  19022 static inline void ID3D12GraphicsCommandList4_CopyTextureRegion(ID3D12GraphicsCommandList4* This,const D3D12_TEXTURE_COPY_LOCATION *dst,UINT dst_x,UINT dst_y,UINT dst_z,const D3D12_TEXTURE_COPY_LOCATION *src,const D3D12_BOX *src_box) {
  19023     This->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box);
  19024 }
  19025 static inline void ID3D12GraphicsCommandList4_CopyResource(ID3D12GraphicsCommandList4* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
  19026     This->lpVtbl->CopyResource(This,dst_resource,src_resource);
  19027 }
  19028 static inline void ID3D12GraphicsCommandList4_CopyTiles(ID3D12GraphicsCommandList4* This,ID3D12Resource *tiled_resource,const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,const D3D12_TILE_REGION_SIZE *tile_region_size,ID3D12Resource *buffer,UINT64 buffer_offset,D3D12_TILE_COPY_FLAGS flags) {
  19029     This->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags);
  19030 }
  19031 static inline void ID3D12GraphicsCommandList4_ResolveSubresource(ID3D12GraphicsCommandList4* This,ID3D12Resource *dst_resource,UINT dst_sub_resource,ID3D12Resource *src_resource,UINT src_sub_resource,DXGI_FORMAT format) {
  19032     This->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format);
  19033 }
  19034 static inline void ID3D12GraphicsCommandList4_IASetPrimitiveTopology(ID3D12GraphicsCommandList4* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
  19035     This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
  19036 }
  19037 static inline void ID3D12GraphicsCommandList4_RSSetViewports(ID3D12GraphicsCommandList4* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
  19038     This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
  19039 }
  19040 static inline void ID3D12GraphicsCommandList4_RSSetScissorRects(ID3D12GraphicsCommandList4* This,UINT rect_count,const D3D12_RECT *rects) {
  19041     This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
  19042 }
  19043 static inline void ID3D12GraphicsCommandList4_OMSetBlendFactor(ID3D12GraphicsCommandList4* This,const FLOAT blend_factor[4]) {
  19044     This->lpVtbl->OMSetBlendFactor(This,blend_factor);
  19045 }
  19046 static inline void ID3D12GraphicsCommandList4_OMSetStencilRef(ID3D12GraphicsCommandList4* This,UINT stencil_ref) {
  19047     This->lpVtbl->OMSetStencilRef(This,stencil_ref);
  19048 }
  19049 static inline void ID3D12GraphicsCommandList4_SetPipelineState(ID3D12GraphicsCommandList4* This,ID3D12PipelineState *pipeline_state) {
  19050     This->lpVtbl->SetPipelineState(This,pipeline_state);
  19051 }
  19052 static inline void ID3D12GraphicsCommandList4_ResourceBarrier(ID3D12GraphicsCommandList4* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
  19053     This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
  19054 }
  19055 static inline void ID3D12GraphicsCommandList4_ExecuteBundle(ID3D12GraphicsCommandList4* This,ID3D12GraphicsCommandList *command_list) {
  19056     This->lpVtbl->ExecuteBundle(This,command_list);
  19057 }
  19058 static inline void ID3D12GraphicsCommandList4_SetDescriptorHeaps(ID3D12GraphicsCommandList4* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
  19059     This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
  19060 }
  19061 static inline void ID3D12GraphicsCommandList4_SetComputeRootSignature(ID3D12GraphicsCommandList4* This,ID3D12RootSignature *root_signature) {
  19062     This->lpVtbl->SetComputeRootSignature(This,root_signature);
  19063 }
  19064 static inline void ID3D12GraphicsCommandList4_SetGraphicsRootSignature(ID3D12GraphicsCommandList4* This,ID3D12RootSignature *root_signature) {
  19065     This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
  19066 }
  19067 static inline void ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
  19068     This->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor);
  19069 }
  19070 static inline void ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
  19071     This->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor);
  19072 }
  19073 static inline void ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
  19074     This->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset);
  19075 }
  19076 static inline void ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
  19077     This->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset);
  19078 }
  19079 static inline void ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
  19080     This->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
  19081 }
  19082 static inline void ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
  19083     This->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
  19084 }
  19085 static inline void ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  19086     This->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address);
  19087 }
  19088 static inline void ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  19089     This->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address);
  19090 }
  19091 static inline void ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  19092     This->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address);
  19093 }
  19094 static inline void ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  19095     This->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address);
  19096 }
  19097 static inline void ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  19098     This->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address);
  19099 }
  19100 static inline void ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(ID3D12GraphicsCommandList4* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  19101     This->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address);
  19102 }
  19103 static inline void ID3D12GraphicsCommandList4_IASetIndexBuffer(ID3D12GraphicsCommandList4* This,const D3D12_INDEX_BUFFER_VIEW *view) {
  19104     This->lpVtbl->IASetIndexBuffer(This,view);
  19105 }
  19106 static inline void ID3D12GraphicsCommandList4_IASetVertexBuffers(ID3D12GraphicsCommandList4* This,UINT start_slot,UINT view_count,const D3D12_VERTEX_BUFFER_VIEW *views) {
  19107     This->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views);
  19108 }
  19109 static inline void ID3D12GraphicsCommandList4_SOSetTargets(ID3D12GraphicsCommandList4* This,UINT start_slot,UINT view_count,const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views) {
  19110     This->lpVtbl->SOSetTargets(This,start_slot,view_count,views);
  19111 }
  19112 static inline void ID3D12GraphicsCommandList4_OMSetRenderTargets(ID3D12GraphicsCommandList4* This,UINT render_target_descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,WINBOOL single_descriptor_handle,const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor) {
  19113     This->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor);
  19114 }
  19115 static inline void ID3D12GraphicsCommandList4_ClearDepthStencilView(ID3D12GraphicsCommandList4* This,D3D12_CPU_DESCRIPTOR_HANDLE dsv,D3D12_CLEAR_FLAGS flags,FLOAT depth,UINT8 stencil,UINT rect_count,const D3D12_RECT *rects) {
  19116     This->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects);
  19117 }
  19118 static inline void ID3D12GraphicsCommandList4_ClearRenderTargetView(ID3D12GraphicsCommandList4* This,D3D12_CPU_DESCRIPTOR_HANDLE rtv,const FLOAT color[4],UINT rect_count,const D3D12_RECT *rects) {
  19119     This->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects);
  19120 }
  19121 static inline void ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(ID3D12GraphicsCommandList4* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const UINT values[4],UINT rect_count,const D3D12_RECT *rects) {
  19122     This->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
  19123 }
  19124 static inline void ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(ID3D12GraphicsCommandList4* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const float values[4],UINT rect_count,const D3D12_RECT *rects) {
  19125     This->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
  19126 }
  19127 static inline void ID3D12GraphicsCommandList4_DiscardResource(ID3D12GraphicsCommandList4* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
  19128     This->lpVtbl->DiscardResource(This,resource,region);
  19129 }
  19130 static inline void ID3D12GraphicsCommandList4_BeginQuery(ID3D12GraphicsCommandList4* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
  19131     This->lpVtbl->BeginQuery(This,heap,type,index);
  19132 }
  19133 static inline void ID3D12GraphicsCommandList4_EndQuery(ID3D12GraphicsCommandList4* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
  19134     This->lpVtbl->EndQuery(This,heap,type,index);
  19135 }
  19136 static inline void ID3D12GraphicsCommandList4_ResolveQueryData(ID3D12GraphicsCommandList4* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT start_index,UINT query_count,ID3D12Resource *dst_buffer,UINT64 aligned_dst_buffer_offset) {
  19137     This->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset);
  19138 }
  19139 static inline void ID3D12GraphicsCommandList4_SetPredication(ID3D12GraphicsCommandList4* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
  19140     This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
  19141 }
  19142 static inline void ID3D12GraphicsCommandList4_SetMarker(ID3D12GraphicsCommandList4* This,UINT metadata,const void *data,UINT size) {
  19143     This->lpVtbl->SetMarker(This,metadata,data,size);
  19144 }
  19145 static inline void ID3D12GraphicsCommandList4_BeginEvent(ID3D12GraphicsCommandList4* This,UINT metadata,const void *data,UINT size) {
  19146     This->lpVtbl->BeginEvent(This,metadata,data,size);
  19147 }
  19148 static inline void ID3D12GraphicsCommandList4_EndEvent(ID3D12GraphicsCommandList4* This) {
  19149     This->lpVtbl->EndEvent(This);
  19150 }
  19151 static inline void ID3D12GraphicsCommandList4_ExecuteIndirect(ID3D12GraphicsCommandList4* This,ID3D12CommandSignature *command_signature,UINT max_command_count,ID3D12Resource *arg_buffer,UINT64 arg_buffer_offset,ID3D12Resource *count_buffer,UINT64 count_buffer_offset) {
  19152     This->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset);
  19153 }
  19154 /*** ID3D12GraphicsCommandList1 methods ***/
  19155 static inline void ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(ID3D12GraphicsCommandList4* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
  19156     This->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
  19157 }
  19158 static inline void ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(ID3D12GraphicsCommandList4* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
  19159     This->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
  19160 }
  19161 static inline void ID3D12GraphicsCommandList4_OMSetDepthBounds(ID3D12GraphicsCommandList4* This,FLOAT min,FLOAT max) {
  19162     This->lpVtbl->OMSetDepthBounds(This,min,max);
  19163 }
  19164 static inline void ID3D12GraphicsCommandList4_SetSamplePositions(ID3D12GraphicsCommandList4* This,UINT sample_count,UINT pixel_count,D3D12_SAMPLE_POSITION *sample_positions) {
  19165     This->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions);
  19166 }
  19167 static inline void ID3D12GraphicsCommandList4_ResolveSubresourceRegion(ID3D12GraphicsCommandList4* This,ID3D12Resource *dst_resource,UINT dst_sub_resource_idx,UINT dst_x,UINT dst_y,ID3D12Resource *src_resource,UINT src_sub_resource_idx,D3D12_RECT *src_rect,DXGI_FORMAT format,D3D12_RESOLVE_MODE mode) {
  19168     This->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode);
  19169 }
  19170 static inline void ID3D12GraphicsCommandList4_SetViewInstanceMask(ID3D12GraphicsCommandList4* This,UINT mask) {
  19171     This->lpVtbl->SetViewInstanceMask(This,mask);
  19172 }
  19173 /*** ID3D12GraphicsCommandList2 methods ***/
  19174 static inline void ID3D12GraphicsCommandList4_WriteBufferImmediate(ID3D12GraphicsCommandList4* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
  19175     This->lpVtbl->WriteBufferImmediate(This,count,parameters,modes);
  19176 }
  19177 /*** ID3D12GraphicsCommandList3 methods ***/
  19178 static inline void ID3D12GraphicsCommandList4_SetProtectedResourceSession(ID3D12GraphicsCommandList4* This,ID3D12ProtectedResourceSession *protected_resource_session) {
  19179     This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
  19180 }
  19181 /*** ID3D12GraphicsCommandList4 methods ***/
  19182 static inline void ID3D12GraphicsCommandList4_BeginRenderPass(ID3D12GraphicsCommandList4* This,UINT render_targets_count,const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,D3D12_RENDER_PASS_FLAGS flags) {
  19183     This->lpVtbl->BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags);
  19184 }
  19185 static inline void ID3D12GraphicsCommandList4_EndRenderPass(ID3D12GraphicsCommandList4* This) {
  19186     This->lpVtbl->EndRenderPass(This);
  19187 }
  19188 static inline void ID3D12GraphicsCommandList4_InitializeMetaCommand(ID3D12GraphicsCommandList4* This,ID3D12MetaCommand *meta_command,const void *initialization_parameters_data,SIZE_T initialization_parameters_data_size_in_bytes) {
  19189     This->lpVtbl->InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes);
  19190 }
  19191 static inline void ID3D12GraphicsCommandList4_ExecuteMetaCommand(ID3D12GraphicsCommandList4* This,ID3D12MetaCommand *meta_command,const void *execution_parameters_data,SIZE_T execution_parameters_data_size_in_bytes) {
  19192     This->lpVtbl->ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes);
  19193 }
  19194 static inline void ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(ID3D12GraphicsCommandList4* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,UINT postbuild_info_descs_count,const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs) {
  19195     This->lpVtbl->BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs);
  19196 }
  19197 static inline void ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(ID3D12GraphicsCommandList4* This,const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,UINT src_acceleration_structures_count,const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data) {
  19198     This->lpVtbl->EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data);
  19199 }
  19200 static inline void ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(ID3D12GraphicsCommandList4* This,D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode) {
  19201     This->lpVtbl->CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode);
  19202 }
  19203 static inline void ID3D12GraphicsCommandList4_SetPipelineState1(ID3D12GraphicsCommandList4* This,ID3D12StateObject *state_object) {
  19204     This->lpVtbl->SetPipelineState1(This,state_object);
  19205 }
  19206 static inline void ID3D12GraphicsCommandList4_DispatchRays(ID3D12GraphicsCommandList4* This,const D3D12_DISPATCH_RAYS_DESC *desc) {
  19207     This->lpVtbl->DispatchRays(This,desc);
  19208 }
  19209 #endif
  19210 #endif
  19211 
  19212 #endif
  19213 
  19214 
  19215 #endif  /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
  19216 
  19217 typedef enum D3D12_SHADER_CACHE_MODE {
  19218     D3D12_SHADER_CACHE_MODE_MEMORY = 0x0,
  19219     D3D12_SHADER_CACHE_MODE_DISK = 0x1
  19220 } D3D12_SHADER_CACHE_MODE;
  19221 typedef enum D3D12_SHADER_CACHE_FLAGS {
  19222     D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
  19223     D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
  19224     D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
  19225 } D3D12_SHADER_CACHE_FLAGS;
  19226 DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_FLAGS);
  19227 typedef struct D3D12_SHADER_CACHE_SESSION_DESC {
  19228     GUID Identifier;
  19229     D3D12_SHADER_CACHE_MODE Mode;
  19230     D3D12_SHADER_CACHE_FLAGS Flags;
  19231     UINT MaximumInMemoryCacheSizeBytes;
  19232     UINT MaximumInMemoryCacheEntries;
  19233     UINT MaximumValueFileSizeBytes;
  19234     UINT64 Version;
  19235 } D3D12_SHADER_CACHE_SESSION_DESC;
  19236 typedef enum D3D12_BARRIER_LAYOUT {
  19237     D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
  19238     D3D12_BARRIER_LAYOUT_COMMON = 0x0,
  19239     D3D12_BARRIER_LAYOUT_PRESENT = 0x0,
  19240     D3D12_BARRIER_LAYOUT_GENERIC_READ = 0x1,
  19241     D3D12_BARRIER_LAYOUT_RENDER_TARGET = 0x2,
  19242     D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 0x3,
  19243     D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 0x4,
  19244     D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 0x5,
  19245     D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 0x6,
  19246     D3D12_BARRIER_LAYOUT_COPY_SOURCE = 0x7,
  19247     D3D12_BARRIER_LAYOUT_COPY_DEST = 0x8,
  19248     D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 0x9,
  19249     D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 0xa,
  19250     D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 0xb,
  19251     D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 0xc,
  19252     D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 0xd,
  19253     D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 0xe,
  19254     D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 0xf,
  19255     D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 0x10,
  19256     D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 0x11,
  19257     D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 0x12,
  19258     D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 0x13,
  19259     D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 0x14,
  19260     D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 0x15,
  19261     D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 0x16,
  19262     D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 0x17,
  19263     D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 0x18,
  19264     D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 0x19,
  19265     D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 0x1a,
  19266     D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 0x1b,
  19267     D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 0x1c,
  19268     D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 0x1d,
  19269     D3D12_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON = 0x1e
  19270 } D3D12_BARRIER_LAYOUT;
  19271 typedef enum D3D12_BARRIER_SYNC {
  19272     D3D12_BARRIER_SYNC_NONE = 0x0,
  19273     D3D12_BARRIER_SYNC_ALL = 0x1,
  19274     D3D12_BARRIER_SYNC_DRAW = 0x2,
  19275     D3D12_BARRIER_SYNC_INPUT_ASSEMBLER = 0x4,
  19276     D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
  19277     D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
  19278     D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
  19279     D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
  19280     D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
  19281     D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
  19282     D3D12_BARRIER_SYNC_COPY = 0x200,
  19283     D3D12_BARRIER_SYNC_RESOLVE = 0x400,
  19284     D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
  19285     D3D12_BARRIER_SYNC_PREDICATION = 0x800,
  19286     D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
  19287     D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
  19288     D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
  19289     D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
  19290     D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
  19291     D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
  19292     D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
  19293     D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
  19294     D3D12_BARRIER_SYNC_SPLIT = 0x80000000
  19295 } D3D12_BARRIER_SYNC;
  19296 DEFINE_ENUM_FLAG_OPERATORS(D3D12_BARRIER_SYNC);
  19297 typedef enum D3D12_BARRIER_ACCESS {
  19298     D3D12_BARRIER_ACCESS_COMMON = 0,
  19299     D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
  19300     D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
  19301     D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
  19302     D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
  19303     D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
  19304     D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
  19305     D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
  19306     D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
  19307     D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
  19308     D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
  19309     D3D12_BARRIER_ACCESS_PREDICATION = 0x200,
  19310     D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
  19311     D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
  19312     D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
  19313     D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
  19314     D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
  19315     D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
  19316     D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
  19317     D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
  19318     D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
  19319     D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
  19320     D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
  19321     D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
  19322     D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
  19323     D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000
  19324 } D3D12_BARRIER_ACCESS;
  19325 DEFINE_ENUM_FLAG_OPERATORS(D3D12_BARRIER_ACCESS);
  19326 typedef enum D3D12_BARRIER_TYPE {
  19327     D3D12_BARRIER_TYPE_GLOBAL = 0x0,
  19328     D3D12_BARRIER_TYPE_TEXTURE = 0x1,
  19329     D3D12_BARRIER_TYPE_BUFFER = 0x2
  19330 } D3D12_BARRIER_TYPE;
  19331 typedef enum D3D12_TEXTURE_BARRIER_FLAGS {
  19332     D3D12_TEXTURE_BARRIER_FLAG_NONE = 0x0,
  19333     D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1
  19334 } D3D12_TEXTURE_BARRIER_FLAGS;
  19335 DEFINE_ENUM_FLAG_OPERATORS(D3D12_TEXTURE_BARRIER_FLAGS);
  19336 typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE {
  19337     UINT IndexOrFirstMipLevel;
  19338     UINT NumMipLevels;
  19339     UINT FirstArraySlice;
  19340     UINT NumArraySlices;
  19341     UINT FirstPlane;
  19342     UINT NumPlanes;
  19343 } D3D12_BARRIER_SUBRESOURCE_RANGE;
  19344 typedef struct D3D12_GLOBAL_BARRIER {
  19345     D3D12_BARRIER_SYNC SyncBefore;
  19346     D3D12_BARRIER_SYNC SyncAfter;
  19347     D3D12_BARRIER_ACCESS AccessBefore;
  19348     D3D12_BARRIER_ACCESS AccessAfter;
  19349 } D3D12_GLOBAL_BARRIER;
  19350 typedef struct D3D12_TEXTURE_BARRIER {
  19351     D3D12_BARRIER_SYNC SyncBefore;
  19352     D3D12_BARRIER_SYNC SyncAfter;
  19353     D3D12_BARRIER_ACCESS AccessBefore;
  19354     D3D12_BARRIER_ACCESS AccessAfter;
  19355     D3D12_BARRIER_LAYOUT LayoutBefore;
  19356     D3D12_BARRIER_LAYOUT LayoutAfter;
  19357     ID3D12Resource *pResource;
  19358     D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
  19359     D3D12_TEXTURE_BARRIER_FLAGS Flags;
  19360 } D3D12_TEXTURE_BARRIER;
  19361 typedef struct D3D12_BUFFER_BARRIER {
  19362     D3D12_BARRIER_SYNC SyncBefore;
  19363     D3D12_BARRIER_SYNC SyncAfter;
  19364     D3D12_BARRIER_ACCESS AccessBefore;
  19365     D3D12_BARRIER_ACCESS AccessAfter;
  19366     ID3D12Resource *pResource;
  19367     UINT64 Offset;
  19368     UINT64 Size;
  19369 } D3D12_BUFFER_BARRIER;
  19370 typedef struct D3D12_BARRIER_GROUP {
  19371     D3D12_BARRIER_TYPE Type;
  19372     UINT32 NumBarriers;
  19373     __C89_NAMELESS union {
  19374         const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
  19375         const D3D12_TEXTURE_BARRIER *pTextureBarriers;
  19376         const D3D12_BUFFER_BARRIER *pBufferBarriers;
  19377     } __C89_NAMELESSUNIONNAME;
  19378 } D3D12_BARRIER_GROUP;
  19379 /*****************************************************************************
  19380  * ID3D12ShaderCacheSession interface
  19381  */
  19382 #ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
  19383 #define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
  19384 
  19385 DEFINE_GUID(IID_ID3D12ShaderCacheSession, 0x28e2495d, 0x0f64, 0x4ae4, 0xa6,0xec, 0x12,0x92,0x55,0xdc,0x49,0xa8);
  19386 #if defined(__cplusplus) && !defined(CINTERFACE)
  19387 MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
  19388 ID3D12ShaderCacheSession : public ID3D12DeviceChild
  19389 {
  19390     virtual HRESULT STDMETHODCALLTYPE FindValue(
  19391         const void *key,
  19392         UINT key_size,
  19393         void *value,
  19394         UINT *value_size) = 0;
  19395 
  19396     virtual HRESULT STDMETHODCALLTYPE StoreValue(
  19397         const void *key,
  19398         UINT key_size,
  19399         const void *value,
  19400         UINT value_size) = 0;
  19401 
  19402     virtual void STDMETHODCALLTYPE SetDeleteOnDestroy(
  19403         ) = 0;
  19404 
  19405 #ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
  19406     virtual D3D12_SHADER_CACHE_SESSION_DESC* STDMETHODCALLTYPE GetDesc(
  19407         D3D12_SHADER_CACHE_SESSION_DESC *__ret) = 0;
  19408     D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc(
  19409         )
  19410     {
  19411         D3D12_SHADER_CACHE_SESSION_DESC __ret;
  19412         return *GetDesc(&__ret);
  19413     }
  19414 #else
  19415     virtual D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc(
  19416         ) = 0;
  19417 #endif
  19418 
  19419 };
  19420 #ifdef __CRT_UUID_DECL
  19421 __CRT_UUID_DECL(ID3D12ShaderCacheSession, 0x28e2495d, 0x0f64, 0x4ae4, 0xa6,0xec, 0x12,0x92,0x55,0xdc,0x49,0xa8)
  19422 #endif
  19423 #else
  19424 typedef struct ID3D12ShaderCacheSessionVtbl {
  19425     BEGIN_INTERFACE
  19426 
  19427     /*** IUnknown methods ***/
  19428     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  19429         ID3D12ShaderCacheSession *This,
  19430         REFIID riid,
  19431         void **ppvObject);
  19432 
  19433     ULONG (STDMETHODCALLTYPE *AddRef)(
  19434         ID3D12ShaderCacheSession *This);
  19435 
  19436     ULONG (STDMETHODCALLTYPE *Release)(
  19437         ID3D12ShaderCacheSession *This);
  19438 
  19439     /*** ID3D12Object methods ***/
  19440     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  19441         ID3D12ShaderCacheSession *This,
  19442         REFGUID guid,
  19443         UINT *data_size,
  19444         void *data);
  19445 
  19446     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  19447         ID3D12ShaderCacheSession *This,
  19448         REFGUID guid,
  19449         UINT data_size,
  19450         const void *data);
  19451 
  19452     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  19453         ID3D12ShaderCacheSession *This,
  19454         REFGUID guid,
  19455         const IUnknown *data);
  19456 
  19457     HRESULT (STDMETHODCALLTYPE *SetName)(
  19458         ID3D12ShaderCacheSession *This,
  19459         const WCHAR *name);
  19460 
  19461     /*** ID3D12DeviceChild methods ***/
  19462     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  19463         ID3D12ShaderCacheSession *This,
  19464         REFIID riid,
  19465         void **device);
  19466 
  19467     /*** ID3D12ShaderCacheSession methods ***/
  19468     HRESULT (STDMETHODCALLTYPE *FindValue)(
  19469         ID3D12ShaderCacheSession *This,
  19470         const void *key,
  19471         UINT key_size,
  19472         void *value,
  19473         UINT *value_size);
  19474 
  19475     HRESULT (STDMETHODCALLTYPE *StoreValue)(
  19476         ID3D12ShaderCacheSession *This,
  19477         const void *key,
  19478         UINT key_size,
  19479         const void *value,
  19480         UINT value_size);
  19481 
  19482     void (STDMETHODCALLTYPE *SetDeleteOnDestroy)(
  19483         ID3D12ShaderCacheSession *This);
  19484 
  19485     D3D12_SHADER_CACHE_SESSION_DESC * (STDMETHODCALLTYPE *GetDesc)(
  19486         ID3D12ShaderCacheSession *This,
  19487         D3D12_SHADER_CACHE_SESSION_DESC *__ret);
  19488 
  19489     END_INTERFACE
  19490 } ID3D12ShaderCacheSessionVtbl;
  19491 
  19492 interface ID3D12ShaderCacheSession {
  19493     CONST_VTBL ID3D12ShaderCacheSessionVtbl* lpVtbl;
  19494 };
  19495 
  19496 #ifdef COBJMACROS
  19497 #ifndef WIDL_C_INLINE_WRAPPERS
  19498 /*** IUnknown methods ***/
  19499 #define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  19500 #define ID3D12ShaderCacheSession_AddRef(This) (This)->lpVtbl->AddRef(This)
  19501 #define ID3D12ShaderCacheSession_Release(This) (This)->lpVtbl->Release(This)
  19502 /*** ID3D12Object methods ***/
  19503 #define ID3D12ShaderCacheSession_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  19504 #define ID3D12ShaderCacheSession_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  19505 #define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  19506 #define ID3D12ShaderCacheSession_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  19507 /*** ID3D12DeviceChild methods ***/
  19508 #define ID3D12ShaderCacheSession_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  19509 /*** ID3D12ShaderCacheSession methods ***/
  19510 #define ID3D12ShaderCacheSession_FindValue(This,key,key_size,value,value_size) (This)->lpVtbl->FindValue(This,key,key_size,value,value_size)
  19511 #define ID3D12ShaderCacheSession_StoreValue(This,key,key_size,value,value_size) (This)->lpVtbl->StoreValue(This,key,key_size,value,value_size)
  19512 #define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This) (This)->lpVtbl->SetDeleteOnDestroy(This)
  19513 #define ID3D12ShaderCacheSession_GetDesc(This) ID3D12ShaderCacheSession_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  19514 #else
  19515 /*** IUnknown methods ***/
  19516 static inline HRESULT ID3D12ShaderCacheSession_QueryInterface(ID3D12ShaderCacheSession* This,REFIID riid,void **ppvObject) {
  19517     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  19518 }
  19519 static inline ULONG ID3D12ShaderCacheSession_AddRef(ID3D12ShaderCacheSession* This) {
  19520     return This->lpVtbl->AddRef(This);
  19521 }
  19522 static inline ULONG ID3D12ShaderCacheSession_Release(ID3D12ShaderCacheSession* This) {
  19523     return This->lpVtbl->Release(This);
  19524 }
  19525 /*** ID3D12Object methods ***/
  19526 static inline HRESULT ID3D12ShaderCacheSession_GetPrivateData(ID3D12ShaderCacheSession* This,REFGUID guid,UINT *data_size,void *data) {
  19527     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  19528 }
  19529 static inline HRESULT ID3D12ShaderCacheSession_SetPrivateData(ID3D12ShaderCacheSession* This,REFGUID guid,UINT data_size,const void *data) {
  19530     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  19531 }
  19532 static inline HRESULT ID3D12ShaderCacheSession_SetPrivateDataInterface(ID3D12ShaderCacheSession* This,REFGUID guid,const IUnknown *data) {
  19533     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  19534 }
  19535 static inline HRESULT ID3D12ShaderCacheSession_SetName(ID3D12ShaderCacheSession* This,const WCHAR *name) {
  19536     return This->lpVtbl->SetName(This,name);
  19537 }
  19538 /*** ID3D12DeviceChild methods ***/
  19539 static inline HRESULT ID3D12ShaderCacheSession_GetDevice(ID3D12ShaderCacheSession* This,REFIID riid,void **device) {
  19540     return This->lpVtbl->GetDevice(This,riid,device);
  19541 }
  19542 /*** ID3D12ShaderCacheSession methods ***/
  19543 static inline HRESULT ID3D12ShaderCacheSession_FindValue(ID3D12ShaderCacheSession* This,const void *key,UINT key_size,void *value,UINT *value_size) {
  19544     return This->lpVtbl->FindValue(This,key,key_size,value,value_size);
  19545 }
  19546 static inline HRESULT ID3D12ShaderCacheSession_StoreValue(ID3D12ShaderCacheSession* This,const void *key,UINT key_size,const void *value,UINT value_size) {
  19547     return This->lpVtbl->StoreValue(This,key,key_size,value,value_size);
  19548 }
  19549 static inline void ID3D12ShaderCacheSession_SetDeleteOnDestroy(ID3D12ShaderCacheSession* This) {
  19550     This->lpVtbl->SetDeleteOnDestroy(This);
  19551 }
  19552 static inline D3D12_SHADER_CACHE_SESSION_DESC ID3D12ShaderCacheSession_GetDesc(ID3D12ShaderCacheSession* This) {
  19553     D3D12_SHADER_CACHE_SESSION_DESC __ret;
  19554     return *This->lpVtbl->GetDesc(This,&__ret);
  19555 }
  19556 #endif
  19557 #endif
  19558 
  19559 #endif
  19560 
  19561 
  19562 #endif  /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
  19563 
  19564 typedef enum D3D12_SHADER_CACHE_KIND_FLAGS {
  19565     D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
  19566     D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
  19567     D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
  19568     D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
  19569 } D3D12_SHADER_CACHE_KIND_FLAGS;
  19570 DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_KIND_FLAGS);
  19571 typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS {
  19572     D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
  19573     D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
  19574     D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
  19575 } D3D12_SHADER_CACHE_CONTROL_FLAGS;
  19576 DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_CONTROL_FLAGS);
  19577 /*****************************************************************************
  19578  * ID3D12Device9 interface
  19579  */
  19580 #ifndef __ID3D12Device9_INTERFACE_DEFINED__
  19581 #define __ID3D12Device9_INTERFACE_DEFINED__
  19582 
  19583 DEFINE_GUID(IID_ID3D12Device9, 0x4c80e962, 0xf032, 0x4f60, 0xbc,0x9e, 0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
  19584 #if defined(__cplusplus) && !defined(CINTERFACE)
  19585 MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
  19586 ID3D12Device9 : public ID3D12Device8
  19587 {
  19588     virtual HRESULT STDMETHODCALLTYPE CreateShaderCacheSession(
  19589         const D3D12_SHADER_CACHE_SESSION_DESC *desc,
  19590         REFIID riid,
  19591         void **session) = 0;
  19592 
  19593     virtual HRESULT STDMETHODCALLTYPE ShaderCacheControl(
  19594         D3D12_SHADER_CACHE_KIND_FLAGS kinds,
  19595         D3D12_SHADER_CACHE_CONTROL_FLAGS control) = 0;
  19596 
  19597     virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue1(
  19598         const D3D12_COMMAND_QUEUE_DESC *desc,
  19599         REFIID creator_id,
  19600         REFIID riid,
  19601         void **command_queue) = 0;
  19602 
  19603 };
  19604 #ifdef __CRT_UUID_DECL
  19605 __CRT_UUID_DECL(ID3D12Device9, 0x4c80e962, 0xf032, 0x4f60, 0xbc,0x9e, 0xeb,0xc2,0xcf,0xa1,0xd8,0x3c)
  19606 #endif
  19607 #else
  19608 typedef struct ID3D12Device9Vtbl {
  19609     BEGIN_INTERFACE
  19610 
  19611     /*** IUnknown methods ***/
  19612     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  19613         ID3D12Device9 *This,
  19614         REFIID riid,
  19615         void **ppvObject);
  19616 
  19617     ULONG (STDMETHODCALLTYPE *AddRef)(
  19618         ID3D12Device9 *This);
  19619 
  19620     ULONG (STDMETHODCALLTYPE *Release)(
  19621         ID3D12Device9 *This);
  19622 
  19623     /*** ID3D12Object methods ***/
  19624     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  19625         ID3D12Device9 *This,
  19626         REFGUID guid,
  19627         UINT *data_size,
  19628         void *data);
  19629 
  19630     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  19631         ID3D12Device9 *This,
  19632         REFGUID guid,
  19633         UINT data_size,
  19634         const void *data);
  19635 
  19636     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  19637         ID3D12Device9 *This,
  19638         REFGUID guid,
  19639         const IUnknown *data);
  19640 
  19641     HRESULT (STDMETHODCALLTYPE *SetName)(
  19642         ID3D12Device9 *This,
  19643         const WCHAR *name);
  19644 
  19645     /*** ID3D12Device methods ***/
  19646     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  19647         ID3D12Device9 *This);
  19648 
  19649     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  19650         ID3D12Device9 *This,
  19651         const D3D12_COMMAND_QUEUE_DESC *desc,
  19652         REFIID riid,
  19653         void **command_queue);
  19654 
  19655     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  19656         ID3D12Device9 *This,
  19657         D3D12_COMMAND_LIST_TYPE type,
  19658         REFIID riid,
  19659         void **command_allocator);
  19660 
  19661     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  19662         ID3D12Device9 *This,
  19663         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  19664         REFIID riid,
  19665         void **pipeline_state);
  19666 
  19667     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  19668         ID3D12Device9 *This,
  19669         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  19670         REFIID riid,
  19671         void **pipeline_state);
  19672 
  19673     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  19674         ID3D12Device9 *This,
  19675         UINT node_mask,
  19676         D3D12_COMMAND_LIST_TYPE type,
  19677         ID3D12CommandAllocator *command_allocator,
  19678         ID3D12PipelineState *initial_pipeline_state,
  19679         REFIID riid,
  19680         void **command_list);
  19681 
  19682     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  19683         ID3D12Device9 *This,
  19684         D3D12_FEATURE feature,
  19685         void *feature_data,
  19686         UINT feature_data_size);
  19687 
  19688     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  19689         ID3D12Device9 *This,
  19690         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  19691         REFIID riid,
  19692         void **descriptor_heap);
  19693 
  19694     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  19695         ID3D12Device9 *This,
  19696         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  19697 
  19698     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  19699         ID3D12Device9 *This,
  19700         UINT node_mask,
  19701         const void *bytecode,
  19702         SIZE_T bytecode_length,
  19703         REFIID riid,
  19704         void **root_signature);
  19705 
  19706     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  19707         ID3D12Device9 *This,
  19708         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  19709         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  19710 
  19711     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  19712         ID3D12Device9 *This,
  19713         ID3D12Resource *resource,
  19714         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  19715         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  19716 
  19717     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  19718         ID3D12Device9 *This,
  19719         ID3D12Resource *resource,
  19720         ID3D12Resource *counter_resource,
  19721         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  19722         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  19723 
  19724     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  19725         ID3D12Device9 *This,
  19726         ID3D12Resource *resource,
  19727         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  19728         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  19729 
  19730     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  19731         ID3D12Device9 *This,
  19732         ID3D12Resource *resource,
  19733         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  19734         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  19735 
  19736     void (STDMETHODCALLTYPE *CreateSampler)(
  19737         ID3D12Device9 *This,
  19738         const D3D12_SAMPLER_DESC *desc,
  19739         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  19740 
  19741     void (STDMETHODCALLTYPE *CopyDescriptors)(
  19742         ID3D12Device9 *This,
  19743         UINT dst_descriptor_range_count,
  19744         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  19745         const UINT *dst_descriptor_range_sizes,
  19746         UINT src_descriptor_range_count,
  19747         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  19748         const UINT *src_descriptor_range_sizes,
  19749         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  19750 
  19751     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  19752         ID3D12Device9 *This,
  19753         UINT descriptor_count,
  19754         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  19755         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  19756         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  19757 
  19758     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  19759         ID3D12Device9 *This,
  19760         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  19761         UINT visible_mask,
  19762         UINT reource_desc_count,
  19763         const D3D12_RESOURCE_DESC *resource_descs);
  19764 
  19765     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  19766         ID3D12Device9 *This,
  19767         D3D12_HEAP_PROPERTIES *__ret,
  19768         UINT node_mask,
  19769         D3D12_HEAP_TYPE heap_type);
  19770 
  19771     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  19772         ID3D12Device9 *This,
  19773         const D3D12_HEAP_PROPERTIES *heap_properties,
  19774         D3D12_HEAP_FLAGS heap_flags,
  19775         const D3D12_RESOURCE_DESC *desc,
  19776         D3D12_RESOURCE_STATES initial_state,
  19777         const D3D12_CLEAR_VALUE *optimized_clear_value,
  19778         REFIID riid,
  19779         void **resource);
  19780 
  19781     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  19782         ID3D12Device9 *This,
  19783         const D3D12_HEAP_DESC *desc,
  19784         REFIID riid,
  19785         void **heap);
  19786 
  19787     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  19788         ID3D12Device9 *This,
  19789         ID3D12Heap *heap,
  19790         UINT64 heap_offset,
  19791         const D3D12_RESOURCE_DESC *desc,
  19792         D3D12_RESOURCE_STATES initial_state,
  19793         const D3D12_CLEAR_VALUE *optimized_clear_value,
  19794         REFIID riid,
  19795         void **resource);
  19796 
  19797     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  19798         ID3D12Device9 *This,
  19799         const D3D12_RESOURCE_DESC *desc,
  19800         D3D12_RESOURCE_STATES initial_state,
  19801         const D3D12_CLEAR_VALUE *optimized_clear_value,
  19802         REFIID riid,
  19803         void **resource);
  19804 
  19805     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  19806         ID3D12Device9 *This,
  19807         ID3D12DeviceChild *object,
  19808         const SECURITY_ATTRIBUTES *attributes,
  19809         DWORD access,
  19810         const WCHAR *name,
  19811         HANDLE *handle);
  19812 
  19813     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  19814         ID3D12Device9 *This,
  19815         HANDLE handle,
  19816         REFIID riid,
  19817         void **object);
  19818 
  19819     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  19820         ID3D12Device9 *This,
  19821         const WCHAR *name,
  19822         DWORD access,
  19823         HANDLE *handle);
  19824 
  19825     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  19826         ID3D12Device9 *This,
  19827         UINT object_count,
  19828         ID3D12Pageable *const *objects);
  19829 
  19830     HRESULT (STDMETHODCALLTYPE *Evict)(
  19831         ID3D12Device9 *This,
  19832         UINT object_count,
  19833         ID3D12Pageable *const *objects);
  19834 
  19835     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  19836         ID3D12Device9 *This,
  19837         UINT64 initial_value,
  19838         D3D12_FENCE_FLAGS flags,
  19839         REFIID riid,
  19840         void **fence);
  19841 
  19842     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  19843         ID3D12Device9 *This);
  19844 
  19845     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  19846         ID3D12Device9 *This,
  19847         const D3D12_RESOURCE_DESC *desc,
  19848         UINT first_sub_resource,
  19849         UINT sub_resource_count,
  19850         UINT64 base_offset,
  19851         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  19852         UINT *row_count,
  19853         UINT64 *row_size,
  19854         UINT64 *total_bytes);
  19855 
  19856     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  19857         ID3D12Device9 *This,
  19858         const D3D12_QUERY_HEAP_DESC *desc,
  19859         REFIID riid,
  19860         void **heap);
  19861 
  19862     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  19863         ID3D12Device9 *This,
  19864         WINBOOL enable);
  19865 
  19866     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  19867         ID3D12Device9 *This,
  19868         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  19869         ID3D12RootSignature *root_signature,
  19870         REFIID riid,
  19871         void **command_signature);
  19872 
  19873     void (STDMETHODCALLTYPE *GetResourceTiling)(
  19874         ID3D12Device9 *This,
  19875         ID3D12Resource *resource,
  19876         UINT *total_tile_count,
  19877         D3D12_PACKED_MIP_INFO *packed_mip_info,
  19878         D3D12_TILE_SHAPE *standard_tile_shape,
  19879         UINT *sub_resource_tiling_count,
  19880         UINT first_sub_resource_tiling,
  19881         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  19882 
  19883     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  19884         ID3D12Device9 *This,
  19885         LUID *__ret);
  19886 
  19887     /*** ID3D12Device1 methods ***/
  19888     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  19889         ID3D12Device9 *This,
  19890         const void *blob,
  19891         SIZE_T blob_size,
  19892         REFIID iid,
  19893         void **lib);
  19894 
  19895     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  19896         ID3D12Device9 *This,
  19897         ID3D12Fence *const *fences,
  19898         const UINT64 *values,
  19899         UINT fence_count,
  19900         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  19901         HANDLE event);
  19902 
  19903     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  19904         ID3D12Device9 *This,
  19905         UINT object_count,
  19906         ID3D12Pageable *const *objects,
  19907         const D3D12_RESIDENCY_PRIORITY *priorities);
  19908 
  19909     /*** ID3D12Device2 methods ***/
  19910     HRESULT (STDMETHODCALLTYPE *CreatePipelineState)(
  19911         ID3D12Device9 *This,
  19912         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  19913         REFIID riid,
  19914         void **pipeline_state);
  19915 
  19916     /*** ID3D12Device3 methods ***/
  19917     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromAddress)(
  19918         ID3D12Device9 *This,
  19919         const void *address,
  19920         REFIID riid,
  19921         void **heap);
  19922 
  19923     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping)(
  19924         ID3D12Device9 *This,
  19925         HANDLE file_mapping,
  19926         REFIID riid,
  19927         void **heap);
  19928 
  19929     HRESULT (STDMETHODCALLTYPE *EnqueueMakeResident)(
  19930         ID3D12Device9 *This,
  19931         D3D12_RESIDENCY_FLAGS flags,
  19932         UINT num_objects,
  19933         ID3D12Pageable *const *objects,
  19934         ID3D12Fence *fence,
  19935         UINT64 fence_value);
  19936 
  19937     /*** ID3D12Device4 methods ***/
  19938     HRESULT (STDMETHODCALLTYPE *CreateCommandList1)(
  19939         ID3D12Device9 *This,
  19940         UINT node_mask,
  19941         D3D12_COMMAND_LIST_TYPE type,
  19942         D3D12_COMMAND_LIST_FLAGS flags,
  19943         REFIID riid,
  19944         void **command_list);
  19945 
  19946     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession)(
  19947         ID3D12Device9 *This,
  19948         const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,
  19949         REFIID riid,
  19950         void **session);
  19951 
  19952     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource1)(
  19953         ID3D12Device9 *This,
  19954         const D3D12_HEAP_PROPERTIES *heap_properties,
  19955         D3D12_HEAP_FLAGS heap_flags,
  19956         const D3D12_RESOURCE_DESC *desc,
  19957         D3D12_RESOURCE_STATES initial_resource_state,
  19958         const D3D12_CLEAR_VALUE *optimized_clear_value,
  19959         ID3D12ProtectedResourceSession *protected_session,
  19960         REFIID riid_resource,
  19961         void **resource);
  19962 
  19963     HRESULT (STDMETHODCALLTYPE *CreateHeap1)(
  19964         ID3D12Device9 *This,
  19965         const D3D12_HEAP_DESC *desc,
  19966         ID3D12ProtectedResourceSession *protected_session,
  19967         REFIID riid,
  19968         void **heap);
  19969 
  19970     HRESULT (STDMETHODCALLTYPE *CreateReservedResource1)(
  19971         ID3D12Device9 *This,
  19972         const D3D12_RESOURCE_DESC *desc,
  19973         D3D12_RESOURCE_STATES initial_state,
  19974         const D3D12_CLEAR_VALUE *optimized_clear_value,
  19975         ID3D12ProtectedResourceSession *protected_session,
  19976         REFIID riid,
  19977         void **resource);
  19978 
  19979     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo1)(
  19980         ID3D12Device9 *This,
  19981         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  19982         UINT visible_mask,
  19983         UINT resource_descs_count,
  19984         const D3D12_RESOURCE_DESC *resource_descs,
  19985         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  19986 
  19987     /*** ID3D12Device5 methods ***/
  19988     HRESULT (STDMETHODCALLTYPE *CreateLifetimeTracker)(
  19989         ID3D12Device9 *This,
  19990         ID3D12LifetimeOwner *owner,
  19991         REFIID riid,
  19992         void **tracker);
  19993 
  19994     void (STDMETHODCALLTYPE *RemoveDevice)(
  19995         ID3D12Device9 *This);
  19996 
  19997     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommands)(
  19998         ID3D12Device9 *This,
  19999         UINT *meta_commands_count,
  20000         D3D12_META_COMMAND_DESC *descs);
  20001 
  20002     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommandParameters)(
  20003         ID3D12Device9 *This,
  20004         REFGUID command_id,
  20005         D3D12_META_COMMAND_PARAMETER_STAGE stage,
  20006         UINT *total_structure_size_in_bytes,
  20007         UINT *parameter_count,
  20008         D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs);
  20009 
  20010     HRESULT (STDMETHODCALLTYPE *CreateMetaCommand)(
  20011         ID3D12Device9 *This,
  20012         REFGUID command_id,
  20013         UINT node_mask,
  20014         const void *creation_parameters_data,
  20015         SIZE_T creation_parameters_data_size_in_bytes,
  20016         REFIID riid,
  20017         void **meta_command);
  20018 
  20019     HRESULT (STDMETHODCALLTYPE *CreateStateObject)(
  20020         ID3D12Device9 *This,
  20021         const D3D12_STATE_OBJECT_DESC *desc,
  20022         REFIID riid,
  20023         void **state_object);
  20024 
  20025     void (STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo)(
  20026         ID3D12Device9 *This,
  20027         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,
  20028         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info);
  20029 
  20030     D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS (STDMETHODCALLTYPE *CheckDriverMatchingIdentifier)(
  20031         ID3D12Device9 *This,
  20032         D3D12_SERIALIZED_DATA_TYPE serialized_data_type,
  20033         const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check);
  20034 
  20035     /*** ID3D12Device6 methods ***/
  20036     HRESULT (STDMETHODCALLTYPE *SetBackgroundProcessingMode)(
  20037         ID3D12Device9 *This,
  20038         D3D12_BACKGROUND_PROCESSING_MODE mode,
  20039         D3D12_MEASUREMENTS_ACTION action,
  20040         HANDLE event,
  20041         WINBOOL *further_measurements_desired);
  20042 
  20043     /*** ID3D12Device7 methods ***/
  20044     HRESULT (STDMETHODCALLTYPE *AddToStateObject)(
  20045         ID3D12Device9 *This,
  20046         const D3D12_STATE_OBJECT_DESC *addition,
  20047         ID3D12StateObject *state_object_to_grow_from,
  20048         REFIID riid,
  20049         void **new_state_object);
  20050 
  20051     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession1)(
  20052         ID3D12Device9 *This,
  20053         const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *desc,
  20054         REFIID riid,
  20055         void **session);
  20056 
  20057     /*** ID3D12Device8 methods ***/
  20058     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo2)(
  20059         ID3D12Device9 *This,
  20060         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  20061         UINT visible_mask,
  20062         UINT resource_descs_count,
  20063         const D3D12_RESOURCE_DESC1 *resource_descs,
  20064         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  20065 
  20066     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource2)(
  20067         ID3D12Device9 *This,
  20068         const D3D12_HEAP_PROPERTIES *heap_properties,
  20069         D3D12_HEAP_FLAGS heap_flags,
  20070         const D3D12_RESOURCE_DESC1 *desc,
  20071         D3D12_RESOURCE_STATES initial_resource_state,
  20072         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20073         ID3D12ProtectedResourceSession *protected_session,
  20074         REFIID riid_resource,
  20075         void **resource);
  20076 
  20077     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource1)(
  20078         ID3D12Device9 *This,
  20079         ID3D12Heap *heap,
  20080         UINT64 heap_offset,
  20081         const D3D12_RESOURCE_DESC1 *desc,
  20082         D3D12_RESOURCE_STATES initial_state,
  20083         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20084         REFIID riid,
  20085         void **resource);
  20086 
  20087     void (STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView)(
  20088         ID3D12Device9 *This,
  20089         ID3D12Resource *targeted_resource,
  20090         ID3D12Resource *feedback_resource,
  20091         D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor);
  20092 
  20093     void (STDMETHODCALLTYPE *GetCopyableFootprints1)(
  20094         ID3D12Device9 *This,
  20095         const D3D12_RESOURCE_DESC1 *resource_desc,
  20096         UINT first_subresource,
  20097         UINT subresources_count,
  20098         UINT64 base_offset,
  20099         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  20100         UINT *rows_count,
  20101         UINT64 *row_size_in_bytes,
  20102         UINT64 *total_bytes);
  20103 
  20104     /*** ID3D12Device9 methods ***/
  20105     HRESULT (STDMETHODCALLTYPE *CreateShaderCacheSession)(
  20106         ID3D12Device9 *This,
  20107         const D3D12_SHADER_CACHE_SESSION_DESC *desc,
  20108         REFIID riid,
  20109         void **session);
  20110 
  20111     HRESULT (STDMETHODCALLTYPE *ShaderCacheControl)(
  20112         ID3D12Device9 *This,
  20113         D3D12_SHADER_CACHE_KIND_FLAGS kinds,
  20114         D3D12_SHADER_CACHE_CONTROL_FLAGS control);
  20115 
  20116     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue1)(
  20117         ID3D12Device9 *This,
  20118         const D3D12_COMMAND_QUEUE_DESC *desc,
  20119         REFIID creator_id,
  20120         REFIID riid,
  20121         void **command_queue);
  20122 
  20123     END_INTERFACE
  20124 } ID3D12Device9Vtbl;
  20125 
  20126 interface ID3D12Device9 {
  20127     CONST_VTBL ID3D12Device9Vtbl* lpVtbl;
  20128 };
  20129 
  20130 #ifdef COBJMACROS
  20131 #ifndef WIDL_C_INLINE_WRAPPERS
  20132 /*** IUnknown methods ***/
  20133 #define ID3D12Device9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  20134 #define ID3D12Device9_AddRef(This) (This)->lpVtbl->AddRef(This)
  20135 #define ID3D12Device9_Release(This) (This)->lpVtbl->Release(This)
  20136 /*** ID3D12Object methods ***/
  20137 #define ID3D12Device9_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  20138 #define ID3D12Device9_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  20139 #define ID3D12Device9_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  20140 #define ID3D12Device9_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  20141 /*** ID3D12Device methods ***/
  20142 #define ID3D12Device9_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  20143 #define ID3D12Device9_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  20144 #define ID3D12Device9_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  20145 #define ID3D12Device9_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  20146 #define ID3D12Device9_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  20147 #define ID3D12Device9_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  20148 #define ID3D12Device9_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  20149 #define ID3D12Device9_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  20150 #define ID3D12Device9_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  20151 #define ID3D12Device9_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  20152 #define ID3D12Device9_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  20153 #define ID3D12Device9_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  20154 #define ID3D12Device9_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  20155 #define ID3D12Device9_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  20156 #define ID3D12Device9_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  20157 #define ID3D12Device9_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  20158 #define ID3D12Device9_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  20159 #define ID3D12Device9_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  20160 #define ID3D12Device9_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device9_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  20161 #define ID3D12Device9_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device9_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  20162 #define ID3D12Device9_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  20163 #define ID3D12Device9_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  20164 #define ID3D12Device9_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  20165 #define ID3D12Device9_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  20166 #define ID3D12Device9_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  20167 #define ID3D12Device9_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  20168 #define ID3D12Device9_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  20169 #define ID3D12Device9_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  20170 #define ID3D12Device9_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  20171 #define ID3D12Device9_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  20172 #define ID3D12Device9_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  20173 #define ID3D12Device9_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  20174 #define ID3D12Device9_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  20175 #define ID3D12Device9_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  20176 #define ID3D12Device9_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  20177 #define ID3D12Device9_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  20178 #define ID3D12Device9_GetAdapterLuid(This) ID3D12Device9_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  20179 /*** ID3D12Device1 methods ***/
  20180 #define ID3D12Device9_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  20181 #define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  20182 #define ID3D12Device9_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  20183 /*** ID3D12Device2 methods ***/
  20184 #define ID3D12Device9_CreatePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state)
  20185 /*** ID3D12Device3 methods ***/
  20186 #define ID3D12Device9_OpenExistingHeapFromAddress(This,address,riid,heap) (This)->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap)
  20187 #define ID3D12Device9_OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap) (This)->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap)
  20188 #define ID3D12Device9_EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value) (This)->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value)
  20189 /*** ID3D12Device4 methods ***/
  20190 #define ID3D12Device9_CreateCommandList1(This,node_mask,type,flags,riid,command_list) (This)->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list)
  20191 #define ID3D12Device9_CreateProtectedResourceSession(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session)
  20192 #define ID3D12Device9_CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  20193 #define ID3D12Device9_CreateHeap1(This,desc,protected_session,riid,heap) (This)->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap)
  20194 #define ID3D12Device9_CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource) (This)->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource)
  20195 #define ID3D12Device9_GetResourceAllocationInfo1(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device9_GetResourceAllocationInfo1_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  20196 /*** ID3D12Device5 methods ***/
  20197 #define ID3D12Device9_CreateLifetimeTracker(This,owner,riid,tracker) (This)->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker)
  20198 #define ID3D12Device9_RemoveDevice(This) (This)->lpVtbl->RemoveDevice(This)
  20199 #define ID3D12Device9_EnumerateMetaCommands(This,meta_commands_count,descs) (This)->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs)
  20200 #define ID3D12Device9_EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs) (This)->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs)
  20201 #define ID3D12Device9_CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command) (This)->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command)
  20202 #define ID3D12Device9_CreateStateObject(This,desc,riid,state_object) (This)->lpVtbl->CreateStateObject(This,desc,riid,state_object)
  20203 #define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info) (This)->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info)
  20204 #define ID3D12Device9_CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check) (This)->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check)
  20205 /*** ID3D12Device6 methods ***/
  20206 #define ID3D12Device9_SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired) (This)->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired)
  20207 /*** ID3D12Device7 methods ***/
  20208 #define ID3D12Device9_AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object) (This)->lpVtbl->AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object)
  20209 #define ID3D12Device9_CreateProtectedResourceSession1(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession1(This,desc,riid,session)
  20210 /*** ID3D12Device8 methods ***/
  20211 #define ID3D12Device9_GetResourceAllocationInfo2(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device9_GetResourceAllocationInfo2_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  20212 #define ID3D12Device9_CreateCommittedResource2(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource2(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  20213 #define ID3D12Device9_CreatePlacedResource1(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource1(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  20214 #define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,targeted_resource,feedback_resource,dst_descriptor) (This)->lpVtbl->CreateSamplerFeedbackUnorderedAccessView(This,targeted_resource,feedback_resource,dst_descriptor)
  20215 #define ID3D12Device9_GetCopyableFootprints1(This,resource_desc,first_subresource,subresources_count,base_offset,layouts,rows_count,row_size_in_bytes,total_bytes) (This)->lpVtbl->GetCopyableFootprints1(This,resource_desc,first_subresource,subresources_count,base_offset,layouts,rows_count,row_size_in_bytes,total_bytes)
  20216 /*** ID3D12Device9 methods ***/
  20217 #define ID3D12Device9_CreateShaderCacheSession(This,desc,riid,session) (This)->lpVtbl->CreateShaderCacheSession(This,desc,riid,session)
  20218 #define ID3D12Device9_ShaderCacheControl(This,kinds,control) (This)->lpVtbl->ShaderCacheControl(This,kinds,control)
  20219 #define ID3D12Device9_CreateCommandQueue1(This,desc,creator_id,riid,command_queue) (This)->lpVtbl->CreateCommandQueue1(This,desc,creator_id,riid,command_queue)
  20220 #else
  20221 /*** IUnknown methods ***/
  20222 static inline HRESULT ID3D12Device9_QueryInterface(ID3D12Device9* This,REFIID riid,void **ppvObject) {
  20223     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  20224 }
  20225 static inline ULONG ID3D12Device9_AddRef(ID3D12Device9* This) {
  20226     return This->lpVtbl->AddRef(This);
  20227 }
  20228 static inline ULONG ID3D12Device9_Release(ID3D12Device9* This) {
  20229     return This->lpVtbl->Release(This);
  20230 }
  20231 /*** ID3D12Object methods ***/
  20232 static inline HRESULT ID3D12Device9_GetPrivateData(ID3D12Device9* This,REFGUID guid,UINT *data_size,void *data) {
  20233     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  20234 }
  20235 static inline HRESULT ID3D12Device9_SetPrivateData(ID3D12Device9* This,REFGUID guid,UINT data_size,const void *data) {
  20236     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  20237 }
  20238 static inline HRESULT ID3D12Device9_SetPrivateDataInterface(ID3D12Device9* This,REFGUID guid,const IUnknown *data) {
  20239     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  20240 }
  20241 static inline HRESULT ID3D12Device9_SetName(ID3D12Device9* This,const WCHAR *name) {
  20242     return This->lpVtbl->SetName(This,name);
  20243 }
  20244 /*** ID3D12Device methods ***/
  20245 static inline UINT ID3D12Device9_GetNodeCount(ID3D12Device9* This) {
  20246     return This->lpVtbl->GetNodeCount(This);
  20247 }
  20248 static inline HRESULT ID3D12Device9_CreateCommandQueue(ID3D12Device9* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  20249     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  20250 }
  20251 static inline HRESULT ID3D12Device9_CreateCommandAllocator(ID3D12Device9* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  20252     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  20253 }
  20254 static inline HRESULT ID3D12Device9_CreateGraphicsPipelineState(ID3D12Device9* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  20255     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  20256 }
  20257 static inline HRESULT ID3D12Device9_CreateComputePipelineState(ID3D12Device9* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  20258     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  20259 }
  20260 static inline HRESULT ID3D12Device9_CreateCommandList(ID3D12Device9* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  20261     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  20262 }
  20263 static inline HRESULT ID3D12Device9_CheckFeatureSupport(ID3D12Device9* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  20264     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  20265 }
  20266 static inline HRESULT ID3D12Device9_CreateDescriptorHeap(ID3D12Device9* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  20267     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  20268 }
  20269 static inline UINT ID3D12Device9_GetDescriptorHandleIncrementSize(ID3D12Device9* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  20270     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  20271 }
  20272 static inline HRESULT ID3D12Device9_CreateRootSignature(ID3D12Device9* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  20273     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  20274 }
  20275 static inline void ID3D12Device9_CreateConstantBufferView(ID3D12Device9* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  20276     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  20277 }
  20278 static inline void ID3D12Device9_CreateShaderResourceView(ID3D12Device9* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  20279     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  20280 }
  20281 static inline void ID3D12Device9_CreateUnorderedAccessView(ID3D12Device9* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  20282     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  20283 }
  20284 static inline void ID3D12Device9_CreateRenderTargetView(ID3D12Device9* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  20285     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  20286 }
  20287 static inline void ID3D12Device9_CreateDepthStencilView(ID3D12Device9* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  20288     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  20289 }
  20290 static inline void ID3D12Device9_CreateSampler(ID3D12Device9* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  20291     This->lpVtbl->CreateSampler(This,desc,descriptor);
  20292 }
  20293 static inline void ID3D12Device9_CopyDescriptors(ID3D12Device9* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  20294     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  20295 }
  20296 static inline void ID3D12Device9_CopyDescriptorsSimple(ID3D12Device9* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  20297     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  20298 }
  20299 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device9_GetResourceAllocationInfo(ID3D12Device9* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  20300     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  20301     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  20302 }
  20303 static inline D3D12_HEAP_PROPERTIES ID3D12Device9_GetCustomHeapProperties(ID3D12Device9* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  20304     D3D12_HEAP_PROPERTIES __ret;
  20305     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  20306 }
  20307 static inline HRESULT ID3D12Device9_CreateCommittedResource(ID3D12Device9* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  20308     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  20309 }
  20310 static inline HRESULT ID3D12Device9_CreateHeap(ID3D12Device9* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  20311     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  20312 }
  20313 static inline HRESULT ID3D12Device9_CreatePlacedResource(ID3D12Device9* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  20314     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  20315 }
  20316 static inline HRESULT ID3D12Device9_CreateReservedResource(ID3D12Device9* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  20317     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  20318 }
  20319 static inline HRESULT ID3D12Device9_CreateSharedHandle(ID3D12Device9* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  20320     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  20321 }
  20322 static inline HRESULT ID3D12Device9_OpenSharedHandle(ID3D12Device9* This,HANDLE handle,REFIID riid,void **object) {
  20323     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  20324 }
  20325 static inline HRESULT ID3D12Device9_OpenSharedHandleByName(ID3D12Device9* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  20326     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  20327 }
  20328 static inline HRESULT ID3D12Device9_MakeResident(ID3D12Device9* This,UINT object_count,ID3D12Pageable *const *objects) {
  20329     return This->lpVtbl->MakeResident(This,object_count,objects);
  20330 }
  20331 static inline HRESULT ID3D12Device9_Evict(ID3D12Device9* This,UINT object_count,ID3D12Pageable *const *objects) {
  20332     return This->lpVtbl->Evict(This,object_count,objects);
  20333 }
  20334 static inline HRESULT ID3D12Device9_CreateFence(ID3D12Device9* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  20335     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  20336 }
  20337 static inline HRESULT ID3D12Device9_GetDeviceRemovedReason(ID3D12Device9* This) {
  20338     return This->lpVtbl->GetDeviceRemovedReason(This);
  20339 }
  20340 static inline void ID3D12Device9_GetCopyableFootprints(ID3D12Device9* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  20341     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  20342 }
  20343 static inline HRESULT ID3D12Device9_CreateQueryHeap(ID3D12Device9* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  20344     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  20345 }
  20346 static inline HRESULT ID3D12Device9_SetStablePowerState(ID3D12Device9* This,WINBOOL enable) {
  20347     return This->lpVtbl->SetStablePowerState(This,enable);
  20348 }
  20349 static inline HRESULT ID3D12Device9_CreateCommandSignature(ID3D12Device9* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  20350     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  20351 }
  20352 static inline void ID3D12Device9_GetResourceTiling(ID3D12Device9* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  20353     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  20354 }
  20355 static inline LUID ID3D12Device9_GetAdapterLuid(ID3D12Device9* This) {
  20356     LUID __ret;
  20357     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  20358 }
  20359 /*** ID3D12Device1 methods ***/
  20360 static inline HRESULT ID3D12Device9_CreatePipelineLibrary(ID3D12Device9* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  20361     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  20362 }
  20363 static inline HRESULT ID3D12Device9_SetEventOnMultipleFenceCompletion(ID3D12Device9* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  20364     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  20365 }
  20366 static inline HRESULT ID3D12Device9_SetResidencyPriority(ID3D12Device9* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  20367     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  20368 }
  20369 /*** ID3D12Device2 methods ***/
  20370 static inline HRESULT ID3D12Device9_CreatePipelineState(ID3D12Device9* This,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
  20371     return This->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state);
  20372 }
  20373 /*** ID3D12Device3 methods ***/
  20374 static inline HRESULT ID3D12Device9_OpenExistingHeapFromAddress(ID3D12Device9* This,const void *address,REFIID riid,void **heap) {
  20375     return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
  20376 }
  20377 static inline HRESULT ID3D12Device9_OpenExistingHeapFromFileMapping(ID3D12Device9* This,HANDLE file_mapping,REFIID riid,void **heap) {
  20378     return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
  20379 }
  20380 static inline HRESULT ID3D12Device9_EnqueueMakeResident(ID3D12Device9* This,D3D12_RESIDENCY_FLAGS flags,UINT num_objects,ID3D12Pageable *const *objects,ID3D12Fence *fence,UINT64 fence_value) {
  20381     return This->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value);
  20382 }
  20383 /*** ID3D12Device4 methods ***/
  20384 static inline HRESULT ID3D12Device9_CreateCommandList1(ID3D12Device9* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,D3D12_COMMAND_LIST_FLAGS flags,REFIID riid,void **command_list) {
  20385     return This->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list);
  20386 }
  20387 static inline HRESULT ID3D12Device9_CreateProtectedResourceSession(ID3D12Device9* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,REFIID riid,void **session) {
  20388     return This->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session);
  20389 }
  20390 static inline HRESULT ID3D12Device9_CreateCommittedResource1(ID3D12Device9* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  20391     return This->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  20392 }
  20393 static inline HRESULT ID3D12Device9_CreateHeap1(ID3D12Device9* This,const D3D12_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **heap) {
  20394     return This->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap);
  20395 }
  20396 static inline HRESULT ID3D12Device9_CreateReservedResource1(ID3D12Device9* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **resource) {
  20397     return This->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource);
  20398 }
  20399 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device9_GetResourceAllocationInfo1(ID3D12Device9* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  20400     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  20401     return *This->lpVtbl->GetResourceAllocationInfo1(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  20402 }
  20403 /*** ID3D12Device5 methods ***/
  20404 static inline HRESULT ID3D12Device9_CreateLifetimeTracker(ID3D12Device9* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
  20405     return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
  20406 }
  20407 static inline void ID3D12Device9_RemoveDevice(ID3D12Device9* This) {
  20408     This->lpVtbl->RemoveDevice(This);
  20409 }
  20410 static inline HRESULT ID3D12Device9_EnumerateMetaCommands(ID3D12Device9* This,UINT *meta_commands_count,D3D12_META_COMMAND_DESC *descs) {
  20411     return This->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs);
  20412 }
  20413 static inline HRESULT ID3D12Device9_EnumerateMetaCommandParameters(ID3D12Device9* This,REFGUID command_id,D3D12_META_COMMAND_PARAMETER_STAGE stage,UINT *total_structure_size_in_bytes,UINT *parameter_count,D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs) {
  20414     return This->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs);
  20415 }
  20416 static inline HRESULT ID3D12Device9_CreateMetaCommand(ID3D12Device9* This,REFGUID command_id,UINT node_mask,const void *creation_parameters_data,SIZE_T creation_parameters_data_size_in_bytes,REFIID riid,void **meta_command) {
  20417     return This->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command);
  20418 }
  20419 static inline HRESULT ID3D12Device9_CreateStateObject(ID3D12Device9* This,const D3D12_STATE_OBJECT_DESC *desc,REFIID riid,void **state_object) {
  20420     return This->lpVtbl->CreateStateObject(This,desc,riid,state_object);
  20421 }
  20422 static inline void ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(ID3D12Device9* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info) {
  20423     This->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info);
  20424 }
  20425 static inline D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ID3D12Device9_CheckDriverMatchingIdentifier(ID3D12Device9* This,D3D12_SERIALIZED_DATA_TYPE serialized_data_type,const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check) {
  20426     return This->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check);
  20427 }
  20428 /*** ID3D12Device6 methods ***/
  20429 static inline HRESULT ID3D12Device9_SetBackgroundProcessingMode(ID3D12Device9* This,D3D12_BACKGROUND_PROCESSING_MODE mode,D3D12_MEASUREMENTS_ACTION action,HANDLE event,WINBOOL *further_measurements_desired) {
  20430     return This->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired);
  20431 }
  20432 /*** ID3D12Device7 methods ***/
  20433 static inline HRESULT ID3D12Device9_AddToStateObject(ID3D12Device9* This,const D3D12_STATE_OBJECT_DESC *addition,ID3D12StateObject *state_object_to_grow_from,REFIID riid,void **new_state_object) {
  20434     return This->lpVtbl->AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object);
  20435 }
  20436 static inline HRESULT ID3D12Device9_CreateProtectedResourceSession1(ID3D12Device9* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *desc,REFIID riid,void **session) {
  20437     return This->lpVtbl->CreateProtectedResourceSession1(This,desc,riid,session);
  20438 }
  20439 /*** ID3D12Device8 methods ***/
  20440 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device9_GetResourceAllocationInfo2(ID3D12Device9* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC1 *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  20441     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  20442     return *This->lpVtbl->GetResourceAllocationInfo2(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  20443 }
  20444 static inline HRESULT ID3D12Device9_CreateCommittedResource2(ID3D12Device9* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC1 *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  20445     return This->lpVtbl->CreateCommittedResource2(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  20446 }
  20447 static inline HRESULT ID3D12Device9_CreatePlacedResource1(ID3D12Device9* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC1 *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  20448     return This->lpVtbl->CreatePlacedResource1(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  20449 }
  20450 static inline void ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(ID3D12Device9* This,ID3D12Resource *targeted_resource,ID3D12Resource *feedback_resource,D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor) {
  20451     This->lpVtbl->CreateSamplerFeedbackUnorderedAccessView(This,targeted_resource,feedback_resource,dst_descriptor);
  20452 }
  20453 static inline void ID3D12Device9_GetCopyableFootprints1(ID3D12Device9* This,const D3D12_RESOURCE_DESC1 *resource_desc,UINT first_subresource,UINT subresources_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *rows_count,UINT64 *row_size_in_bytes,UINT64 *total_bytes) {
  20454     This->lpVtbl->GetCopyableFootprints1(This,resource_desc,first_subresource,subresources_count,base_offset,layouts,rows_count,row_size_in_bytes,total_bytes);
  20455 }
  20456 /*** ID3D12Device9 methods ***/
  20457 static inline HRESULT ID3D12Device9_CreateShaderCacheSession(ID3D12Device9* This,const D3D12_SHADER_CACHE_SESSION_DESC *desc,REFIID riid,void **session) {
  20458     return This->lpVtbl->CreateShaderCacheSession(This,desc,riid,session);
  20459 }
  20460 static inline HRESULT ID3D12Device9_ShaderCacheControl(ID3D12Device9* This,D3D12_SHADER_CACHE_KIND_FLAGS kinds,D3D12_SHADER_CACHE_CONTROL_FLAGS control) {
  20461     return This->lpVtbl->ShaderCacheControl(This,kinds,control);
  20462 }
  20463 static inline HRESULT ID3D12Device9_CreateCommandQueue1(ID3D12Device9* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID creator_id,REFIID riid,void **command_queue) {
  20464     return This->lpVtbl->CreateCommandQueue1(This,desc,creator_id,riid,command_queue);
  20465 }
  20466 #endif
  20467 #endif
  20468 
  20469 #endif
  20470 
  20471 
  20472 #endif  /* __ID3D12Device9_INTERFACE_DEFINED__ */
  20473 
  20474 /*****************************************************************************
  20475  * ID3D12Device10 interface
  20476  */
  20477 #ifndef __ID3D12Device10_INTERFACE_DEFINED__
  20478 #define __ID3D12Device10_INTERFACE_DEFINED__
  20479 
  20480 DEFINE_GUID(IID_ID3D12Device10, 0x517f8718, 0xaa66, 0x49f9, 0xb0,0x2b, 0xa7,0xab,0x89,0xc0,0x60,0x31);
  20481 #if defined(__cplusplus) && !defined(CINTERFACE)
  20482 MIDL_INTERFACE("517f8718-aa66-49f9-b02b-a7ab89c06031")
  20483 ID3D12Device10 : public ID3D12Device9
  20484 {
  20485     virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource3(
  20486         const D3D12_HEAP_PROPERTIES *heap_properties,
  20487         D3D12_HEAP_FLAGS heap_flags,
  20488         const D3D12_RESOURCE_DESC1 *desc,
  20489         D3D12_BARRIER_LAYOUT initial_layout,
  20490         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20491         ID3D12ProtectedResourceSession *protected_session,
  20492         UINT32 castable_formats_count,
  20493         DXGI_FORMAT *castable_formats,
  20494         REFIID riid_resource,
  20495         void **resource) = 0;
  20496 
  20497     virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource2(
  20498         ID3D12Heap *heap,
  20499         UINT64 heap_offset,
  20500         const D3D12_RESOURCE_DESC1 *desc,
  20501         D3D12_BARRIER_LAYOUT initial_layout,
  20502         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20503         UINT32 castable_formats_count,
  20504         DXGI_FORMAT *castable_formats,
  20505         REFIID riid,
  20506         void **resource) = 0;
  20507 
  20508     virtual HRESULT STDMETHODCALLTYPE CreateReservedResource2(
  20509         const D3D12_RESOURCE_DESC *desc,
  20510         D3D12_BARRIER_LAYOUT initial_layout,
  20511         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20512         ID3D12ProtectedResourceSession *protected_session,
  20513         UINT32 castable_formats_count,
  20514         DXGI_FORMAT *castable_formats,
  20515         REFIID riid,
  20516         void **resource) = 0;
  20517 
  20518 };
  20519 #ifdef __CRT_UUID_DECL
  20520 __CRT_UUID_DECL(ID3D12Device10, 0x517f8718, 0xaa66, 0x49f9, 0xb0,0x2b, 0xa7,0xab,0x89,0xc0,0x60,0x31)
  20521 #endif
  20522 #else
  20523 typedef struct ID3D12Device10Vtbl {
  20524     BEGIN_INTERFACE
  20525 
  20526     /*** IUnknown methods ***/
  20527     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  20528         ID3D12Device10 *This,
  20529         REFIID riid,
  20530         void **ppvObject);
  20531 
  20532     ULONG (STDMETHODCALLTYPE *AddRef)(
  20533         ID3D12Device10 *This);
  20534 
  20535     ULONG (STDMETHODCALLTYPE *Release)(
  20536         ID3D12Device10 *This);
  20537 
  20538     /*** ID3D12Object methods ***/
  20539     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  20540         ID3D12Device10 *This,
  20541         REFGUID guid,
  20542         UINT *data_size,
  20543         void *data);
  20544 
  20545     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  20546         ID3D12Device10 *This,
  20547         REFGUID guid,
  20548         UINT data_size,
  20549         const void *data);
  20550 
  20551     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  20552         ID3D12Device10 *This,
  20553         REFGUID guid,
  20554         const IUnknown *data);
  20555 
  20556     HRESULT (STDMETHODCALLTYPE *SetName)(
  20557         ID3D12Device10 *This,
  20558         const WCHAR *name);
  20559 
  20560     /*** ID3D12Device methods ***/
  20561     UINT (STDMETHODCALLTYPE *GetNodeCount)(
  20562         ID3D12Device10 *This);
  20563 
  20564     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue)(
  20565         ID3D12Device10 *This,
  20566         const D3D12_COMMAND_QUEUE_DESC *desc,
  20567         REFIID riid,
  20568         void **command_queue);
  20569 
  20570     HRESULT (STDMETHODCALLTYPE *CreateCommandAllocator)(
  20571         ID3D12Device10 *This,
  20572         D3D12_COMMAND_LIST_TYPE type,
  20573         REFIID riid,
  20574         void **command_allocator);
  20575 
  20576     HRESULT (STDMETHODCALLTYPE *CreateGraphicsPipelineState)(
  20577         ID3D12Device10 *This,
  20578         const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  20579         REFIID riid,
  20580         void **pipeline_state);
  20581 
  20582     HRESULT (STDMETHODCALLTYPE *CreateComputePipelineState)(
  20583         ID3D12Device10 *This,
  20584         const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  20585         REFIID riid,
  20586         void **pipeline_state);
  20587 
  20588     HRESULT (STDMETHODCALLTYPE *CreateCommandList)(
  20589         ID3D12Device10 *This,
  20590         UINT node_mask,
  20591         D3D12_COMMAND_LIST_TYPE type,
  20592         ID3D12CommandAllocator *command_allocator,
  20593         ID3D12PipelineState *initial_pipeline_state,
  20594         REFIID riid,
  20595         void **command_list);
  20596 
  20597     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  20598         ID3D12Device10 *This,
  20599         D3D12_FEATURE feature,
  20600         void *feature_data,
  20601         UINT feature_data_size);
  20602 
  20603     HRESULT (STDMETHODCALLTYPE *CreateDescriptorHeap)(
  20604         ID3D12Device10 *This,
  20605         const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  20606         REFIID riid,
  20607         void **descriptor_heap);
  20608 
  20609     UINT (STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize)(
  20610         ID3D12Device10 *This,
  20611         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  20612 
  20613     HRESULT (STDMETHODCALLTYPE *CreateRootSignature)(
  20614         ID3D12Device10 *This,
  20615         UINT node_mask,
  20616         const void *bytecode,
  20617         SIZE_T bytecode_length,
  20618         REFIID riid,
  20619         void **root_signature);
  20620 
  20621     void (STDMETHODCALLTYPE *CreateConstantBufferView)(
  20622         ID3D12Device10 *This,
  20623         const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  20624         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  20625 
  20626     void (STDMETHODCALLTYPE *CreateShaderResourceView)(
  20627         ID3D12Device10 *This,
  20628         ID3D12Resource *resource,
  20629         const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  20630         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  20631 
  20632     void (STDMETHODCALLTYPE *CreateUnorderedAccessView)(
  20633         ID3D12Device10 *This,
  20634         ID3D12Resource *resource,
  20635         ID3D12Resource *counter_resource,
  20636         const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  20637         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  20638 
  20639     void (STDMETHODCALLTYPE *CreateRenderTargetView)(
  20640         ID3D12Device10 *This,
  20641         ID3D12Resource *resource,
  20642         const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  20643         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  20644 
  20645     void (STDMETHODCALLTYPE *CreateDepthStencilView)(
  20646         ID3D12Device10 *This,
  20647         ID3D12Resource *resource,
  20648         const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  20649         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  20650 
  20651     void (STDMETHODCALLTYPE *CreateSampler)(
  20652         ID3D12Device10 *This,
  20653         const D3D12_SAMPLER_DESC *desc,
  20654         D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  20655 
  20656     void (STDMETHODCALLTYPE *CopyDescriptors)(
  20657         ID3D12Device10 *This,
  20658         UINT dst_descriptor_range_count,
  20659         const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  20660         const UINT *dst_descriptor_range_sizes,
  20661         UINT src_descriptor_range_count,
  20662         const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  20663         const UINT *src_descriptor_range_sizes,
  20664         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  20665 
  20666     void (STDMETHODCALLTYPE *CopyDescriptorsSimple)(
  20667         ID3D12Device10 *This,
  20668         UINT descriptor_count,
  20669         const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  20670         const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  20671         D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  20672 
  20673     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo)(
  20674         ID3D12Device10 *This,
  20675         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  20676         UINT visible_mask,
  20677         UINT reource_desc_count,
  20678         const D3D12_RESOURCE_DESC *resource_descs);
  20679 
  20680     D3D12_HEAP_PROPERTIES * (STDMETHODCALLTYPE *GetCustomHeapProperties)(
  20681         ID3D12Device10 *This,
  20682         D3D12_HEAP_PROPERTIES *__ret,
  20683         UINT node_mask,
  20684         D3D12_HEAP_TYPE heap_type);
  20685 
  20686     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource)(
  20687         ID3D12Device10 *This,
  20688         const D3D12_HEAP_PROPERTIES *heap_properties,
  20689         D3D12_HEAP_FLAGS heap_flags,
  20690         const D3D12_RESOURCE_DESC *desc,
  20691         D3D12_RESOURCE_STATES initial_state,
  20692         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20693         REFIID riid,
  20694         void **resource);
  20695 
  20696     HRESULT (STDMETHODCALLTYPE *CreateHeap)(
  20697         ID3D12Device10 *This,
  20698         const D3D12_HEAP_DESC *desc,
  20699         REFIID riid,
  20700         void **heap);
  20701 
  20702     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource)(
  20703         ID3D12Device10 *This,
  20704         ID3D12Heap *heap,
  20705         UINT64 heap_offset,
  20706         const D3D12_RESOURCE_DESC *desc,
  20707         D3D12_RESOURCE_STATES initial_state,
  20708         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20709         REFIID riid,
  20710         void **resource);
  20711 
  20712     HRESULT (STDMETHODCALLTYPE *CreateReservedResource)(
  20713         ID3D12Device10 *This,
  20714         const D3D12_RESOURCE_DESC *desc,
  20715         D3D12_RESOURCE_STATES initial_state,
  20716         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20717         REFIID riid,
  20718         void **resource);
  20719 
  20720     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  20721         ID3D12Device10 *This,
  20722         ID3D12DeviceChild *object,
  20723         const SECURITY_ATTRIBUTES *attributes,
  20724         DWORD access,
  20725         const WCHAR *name,
  20726         HANDLE *handle);
  20727 
  20728     HRESULT (STDMETHODCALLTYPE *OpenSharedHandle)(
  20729         ID3D12Device10 *This,
  20730         HANDLE handle,
  20731         REFIID riid,
  20732         void **object);
  20733 
  20734     HRESULT (STDMETHODCALLTYPE *OpenSharedHandleByName)(
  20735         ID3D12Device10 *This,
  20736         const WCHAR *name,
  20737         DWORD access,
  20738         HANDLE *handle);
  20739 
  20740     HRESULT (STDMETHODCALLTYPE *MakeResident)(
  20741         ID3D12Device10 *This,
  20742         UINT object_count,
  20743         ID3D12Pageable *const *objects);
  20744 
  20745     HRESULT (STDMETHODCALLTYPE *Evict)(
  20746         ID3D12Device10 *This,
  20747         UINT object_count,
  20748         ID3D12Pageable *const *objects);
  20749 
  20750     HRESULT (STDMETHODCALLTYPE *CreateFence)(
  20751         ID3D12Device10 *This,
  20752         UINT64 initial_value,
  20753         D3D12_FENCE_FLAGS flags,
  20754         REFIID riid,
  20755         void **fence);
  20756 
  20757     HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
  20758         ID3D12Device10 *This);
  20759 
  20760     void (STDMETHODCALLTYPE *GetCopyableFootprints)(
  20761         ID3D12Device10 *This,
  20762         const D3D12_RESOURCE_DESC *desc,
  20763         UINT first_sub_resource,
  20764         UINT sub_resource_count,
  20765         UINT64 base_offset,
  20766         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  20767         UINT *row_count,
  20768         UINT64 *row_size,
  20769         UINT64 *total_bytes);
  20770 
  20771     HRESULT (STDMETHODCALLTYPE *CreateQueryHeap)(
  20772         ID3D12Device10 *This,
  20773         const D3D12_QUERY_HEAP_DESC *desc,
  20774         REFIID riid,
  20775         void **heap);
  20776 
  20777     HRESULT (STDMETHODCALLTYPE *SetStablePowerState)(
  20778         ID3D12Device10 *This,
  20779         WINBOOL enable);
  20780 
  20781     HRESULT (STDMETHODCALLTYPE *CreateCommandSignature)(
  20782         ID3D12Device10 *This,
  20783         const D3D12_COMMAND_SIGNATURE_DESC *desc,
  20784         ID3D12RootSignature *root_signature,
  20785         REFIID riid,
  20786         void **command_signature);
  20787 
  20788     void (STDMETHODCALLTYPE *GetResourceTiling)(
  20789         ID3D12Device10 *This,
  20790         ID3D12Resource *resource,
  20791         UINT *total_tile_count,
  20792         D3D12_PACKED_MIP_INFO *packed_mip_info,
  20793         D3D12_TILE_SHAPE *standard_tile_shape,
  20794         UINT *sub_resource_tiling_count,
  20795         UINT first_sub_resource_tiling,
  20796         D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  20797 
  20798     LUID * (STDMETHODCALLTYPE *GetAdapterLuid)(
  20799         ID3D12Device10 *This,
  20800         LUID *__ret);
  20801 
  20802     /*** ID3D12Device1 methods ***/
  20803     HRESULT (STDMETHODCALLTYPE *CreatePipelineLibrary)(
  20804         ID3D12Device10 *This,
  20805         const void *blob,
  20806         SIZE_T blob_size,
  20807         REFIID iid,
  20808         void **lib);
  20809 
  20810     HRESULT (STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion)(
  20811         ID3D12Device10 *This,
  20812         ID3D12Fence *const *fences,
  20813         const UINT64 *values,
  20814         UINT fence_count,
  20815         D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,
  20816         HANDLE event);
  20817 
  20818     HRESULT (STDMETHODCALLTYPE *SetResidencyPriority)(
  20819         ID3D12Device10 *This,
  20820         UINT object_count,
  20821         ID3D12Pageable *const *objects,
  20822         const D3D12_RESIDENCY_PRIORITY *priorities);
  20823 
  20824     /*** ID3D12Device2 methods ***/
  20825     HRESULT (STDMETHODCALLTYPE *CreatePipelineState)(
  20826         ID3D12Device10 *This,
  20827         const D3D12_PIPELINE_STATE_STREAM_DESC *desc,
  20828         REFIID riid,
  20829         void **pipeline_state);
  20830 
  20831     /*** ID3D12Device3 methods ***/
  20832     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromAddress)(
  20833         ID3D12Device10 *This,
  20834         const void *address,
  20835         REFIID riid,
  20836         void **heap);
  20837 
  20838     HRESULT (STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping)(
  20839         ID3D12Device10 *This,
  20840         HANDLE file_mapping,
  20841         REFIID riid,
  20842         void **heap);
  20843 
  20844     HRESULT (STDMETHODCALLTYPE *EnqueueMakeResident)(
  20845         ID3D12Device10 *This,
  20846         D3D12_RESIDENCY_FLAGS flags,
  20847         UINT num_objects,
  20848         ID3D12Pageable *const *objects,
  20849         ID3D12Fence *fence,
  20850         UINT64 fence_value);
  20851 
  20852     /*** ID3D12Device4 methods ***/
  20853     HRESULT (STDMETHODCALLTYPE *CreateCommandList1)(
  20854         ID3D12Device10 *This,
  20855         UINT node_mask,
  20856         D3D12_COMMAND_LIST_TYPE type,
  20857         D3D12_COMMAND_LIST_FLAGS flags,
  20858         REFIID riid,
  20859         void **command_list);
  20860 
  20861     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession)(
  20862         ID3D12Device10 *This,
  20863         const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,
  20864         REFIID riid,
  20865         void **session);
  20866 
  20867     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource1)(
  20868         ID3D12Device10 *This,
  20869         const D3D12_HEAP_PROPERTIES *heap_properties,
  20870         D3D12_HEAP_FLAGS heap_flags,
  20871         const D3D12_RESOURCE_DESC *desc,
  20872         D3D12_RESOURCE_STATES initial_resource_state,
  20873         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20874         ID3D12ProtectedResourceSession *protected_session,
  20875         REFIID riid_resource,
  20876         void **resource);
  20877 
  20878     HRESULT (STDMETHODCALLTYPE *CreateHeap1)(
  20879         ID3D12Device10 *This,
  20880         const D3D12_HEAP_DESC *desc,
  20881         ID3D12ProtectedResourceSession *protected_session,
  20882         REFIID riid,
  20883         void **heap);
  20884 
  20885     HRESULT (STDMETHODCALLTYPE *CreateReservedResource1)(
  20886         ID3D12Device10 *This,
  20887         const D3D12_RESOURCE_DESC *desc,
  20888         D3D12_RESOURCE_STATES initial_state,
  20889         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20890         ID3D12ProtectedResourceSession *protected_session,
  20891         REFIID riid,
  20892         void **resource);
  20893 
  20894     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo1)(
  20895         ID3D12Device10 *This,
  20896         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  20897         UINT visible_mask,
  20898         UINT resource_descs_count,
  20899         const D3D12_RESOURCE_DESC *resource_descs,
  20900         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  20901 
  20902     /*** ID3D12Device5 methods ***/
  20903     HRESULT (STDMETHODCALLTYPE *CreateLifetimeTracker)(
  20904         ID3D12Device10 *This,
  20905         ID3D12LifetimeOwner *owner,
  20906         REFIID riid,
  20907         void **tracker);
  20908 
  20909     void (STDMETHODCALLTYPE *RemoveDevice)(
  20910         ID3D12Device10 *This);
  20911 
  20912     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommands)(
  20913         ID3D12Device10 *This,
  20914         UINT *meta_commands_count,
  20915         D3D12_META_COMMAND_DESC *descs);
  20916 
  20917     HRESULT (STDMETHODCALLTYPE *EnumerateMetaCommandParameters)(
  20918         ID3D12Device10 *This,
  20919         REFGUID command_id,
  20920         D3D12_META_COMMAND_PARAMETER_STAGE stage,
  20921         UINT *total_structure_size_in_bytes,
  20922         UINT *parameter_count,
  20923         D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs);
  20924 
  20925     HRESULT (STDMETHODCALLTYPE *CreateMetaCommand)(
  20926         ID3D12Device10 *This,
  20927         REFGUID command_id,
  20928         UINT node_mask,
  20929         const void *creation_parameters_data,
  20930         SIZE_T creation_parameters_data_size_in_bytes,
  20931         REFIID riid,
  20932         void **meta_command);
  20933 
  20934     HRESULT (STDMETHODCALLTYPE *CreateStateObject)(
  20935         ID3D12Device10 *This,
  20936         const D3D12_STATE_OBJECT_DESC *desc,
  20937         REFIID riid,
  20938         void **state_object);
  20939 
  20940     void (STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo)(
  20941         ID3D12Device10 *This,
  20942         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,
  20943         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info);
  20944 
  20945     D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS (STDMETHODCALLTYPE *CheckDriverMatchingIdentifier)(
  20946         ID3D12Device10 *This,
  20947         D3D12_SERIALIZED_DATA_TYPE serialized_data_type,
  20948         const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check);
  20949 
  20950     /*** ID3D12Device6 methods ***/
  20951     HRESULT (STDMETHODCALLTYPE *SetBackgroundProcessingMode)(
  20952         ID3D12Device10 *This,
  20953         D3D12_BACKGROUND_PROCESSING_MODE mode,
  20954         D3D12_MEASUREMENTS_ACTION action,
  20955         HANDLE event,
  20956         WINBOOL *further_measurements_desired);
  20957 
  20958     /*** ID3D12Device7 methods ***/
  20959     HRESULT (STDMETHODCALLTYPE *AddToStateObject)(
  20960         ID3D12Device10 *This,
  20961         const D3D12_STATE_OBJECT_DESC *addition,
  20962         ID3D12StateObject *state_object_to_grow_from,
  20963         REFIID riid,
  20964         void **new_state_object);
  20965 
  20966     HRESULT (STDMETHODCALLTYPE *CreateProtectedResourceSession1)(
  20967         ID3D12Device10 *This,
  20968         const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *desc,
  20969         REFIID riid,
  20970         void **session);
  20971 
  20972     /*** ID3D12Device8 methods ***/
  20973     D3D12_RESOURCE_ALLOCATION_INFO * (STDMETHODCALLTYPE *GetResourceAllocationInfo2)(
  20974         ID3D12Device10 *This,
  20975         D3D12_RESOURCE_ALLOCATION_INFO *__ret,
  20976         UINT visible_mask,
  20977         UINT resource_descs_count,
  20978         const D3D12_RESOURCE_DESC1 *resource_descs,
  20979         D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1);
  20980 
  20981     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource2)(
  20982         ID3D12Device10 *This,
  20983         const D3D12_HEAP_PROPERTIES *heap_properties,
  20984         D3D12_HEAP_FLAGS heap_flags,
  20985         const D3D12_RESOURCE_DESC1 *desc,
  20986         D3D12_RESOURCE_STATES initial_resource_state,
  20987         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20988         ID3D12ProtectedResourceSession *protected_session,
  20989         REFIID riid_resource,
  20990         void **resource);
  20991 
  20992     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource1)(
  20993         ID3D12Device10 *This,
  20994         ID3D12Heap *heap,
  20995         UINT64 heap_offset,
  20996         const D3D12_RESOURCE_DESC1 *desc,
  20997         D3D12_RESOURCE_STATES initial_state,
  20998         const D3D12_CLEAR_VALUE *optimized_clear_value,
  20999         REFIID riid,
  21000         void **resource);
  21001 
  21002     void (STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView)(
  21003         ID3D12Device10 *This,
  21004         ID3D12Resource *targeted_resource,
  21005         ID3D12Resource *feedback_resource,
  21006         D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor);
  21007 
  21008     void (STDMETHODCALLTYPE *GetCopyableFootprints1)(
  21009         ID3D12Device10 *This,
  21010         const D3D12_RESOURCE_DESC1 *resource_desc,
  21011         UINT first_subresource,
  21012         UINT subresources_count,
  21013         UINT64 base_offset,
  21014         D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  21015         UINT *rows_count,
  21016         UINT64 *row_size_in_bytes,
  21017         UINT64 *total_bytes);
  21018 
  21019     /*** ID3D12Device9 methods ***/
  21020     HRESULT (STDMETHODCALLTYPE *CreateShaderCacheSession)(
  21021         ID3D12Device10 *This,
  21022         const D3D12_SHADER_CACHE_SESSION_DESC *desc,
  21023         REFIID riid,
  21024         void **session);
  21025 
  21026     HRESULT (STDMETHODCALLTYPE *ShaderCacheControl)(
  21027         ID3D12Device10 *This,
  21028         D3D12_SHADER_CACHE_KIND_FLAGS kinds,
  21029         D3D12_SHADER_CACHE_CONTROL_FLAGS control);
  21030 
  21031     HRESULT (STDMETHODCALLTYPE *CreateCommandQueue1)(
  21032         ID3D12Device10 *This,
  21033         const D3D12_COMMAND_QUEUE_DESC *desc,
  21034         REFIID creator_id,
  21035         REFIID riid,
  21036         void **command_queue);
  21037 
  21038     /*** ID3D12Device10 methods ***/
  21039     HRESULT (STDMETHODCALLTYPE *CreateCommittedResource3)(
  21040         ID3D12Device10 *This,
  21041         const D3D12_HEAP_PROPERTIES *heap_properties,
  21042         D3D12_HEAP_FLAGS heap_flags,
  21043         const D3D12_RESOURCE_DESC1 *desc,
  21044         D3D12_BARRIER_LAYOUT initial_layout,
  21045         const D3D12_CLEAR_VALUE *optimized_clear_value,
  21046         ID3D12ProtectedResourceSession *protected_session,
  21047         UINT32 castable_formats_count,
  21048         DXGI_FORMAT *castable_formats,
  21049         REFIID riid_resource,
  21050         void **resource);
  21051 
  21052     HRESULT (STDMETHODCALLTYPE *CreatePlacedResource2)(
  21053         ID3D12Device10 *This,
  21054         ID3D12Heap *heap,
  21055         UINT64 heap_offset,
  21056         const D3D12_RESOURCE_DESC1 *desc,
  21057         D3D12_BARRIER_LAYOUT initial_layout,
  21058         const D3D12_CLEAR_VALUE *optimized_clear_value,
  21059         UINT32 castable_formats_count,
  21060         DXGI_FORMAT *castable_formats,
  21061         REFIID riid,
  21062         void **resource);
  21063 
  21064     HRESULT (STDMETHODCALLTYPE *CreateReservedResource2)(
  21065         ID3D12Device10 *This,
  21066         const D3D12_RESOURCE_DESC *desc,
  21067         D3D12_BARRIER_LAYOUT initial_layout,
  21068         const D3D12_CLEAR_VALUE *optimized_clear_value,
  21069         ID3D12ProtectedResourceSession *protected_session,
  21070         UINT32 castable_formats_count,
  21071         DXGI_FORMAT *castable_formats,
  21072         REFIID riid,
  21073         void **resource);
  21074 
  21075     END_INTERFACE
  21076 } ID3D12Device10Vtbl;
  21077 
  21078 interface ID3D12Device10 {
  21079     CONST_VTBL ID3D12Device10Vtbl* lpVtbl;
  21080 };
  21081 
  21082 #ifdef COBJMACROS
  21083 #ifndef WIDL_C_INLINE_WRAPPERS
  21084 /*** IUnknown methods ***/
  21085 #define ID3D12Device10_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  21086 #define ID3D12Device10_AddRef(This) (This)->lpVtbl->AddRef(This)
  21087 #define ID3D12Device10_Release(This) (This)->lpVtbl->Release(This)
  21088 /*** ID3D12Object methods ***/
  21089 #define ID3D12Device10_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  21090 #define ID3D12Device10_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  21091 #define ID3D12Device10_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  21092 #define ID3D12Device10_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  21093 /*** ID3D12Device methods ***/
  21094 #define ID3D12Device10_GetNodeCount(This) (This)->lpVtbl->GetNodeCount(This)
  21095 #define ID3D12Device10_CreateCommandQueue(This,desc,riid,command_queue) (This)->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue)
  21096 #define ID3D12Device10_CreateCommandAllocator(This,type,riid,command_allocator) (This)->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator)
  21097 #define ID3D12Device10_CreateGraphicsPipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state)
  21098 #define ID3D12Device10_CreateComputePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state)
  21099 #define ID3D12Device10_CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list) (This)->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list)
  21100 #define ID3D12Device10_CheckFeatureSupport(This,feature,feature_data,feature_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size)
  21101 #define ID3D12Device10_CreateDescriptorHeap(This,desc,riid,descriptor_heap) (This)->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap)
  21102 #define ID3D12Device10_GetDescriptorHandleIncrementSize(This,descriptor_heap_type) (This)->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type)
  21103 #define ID3D12Device10_CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature) (This)->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature)
  21104 #define ID3D12Device10_CreateConstantBufferView(This,desc,descriptor) (This)->lpVtbl->CreateConstantBufferView(This,desc,descriptor)
  21105 #define ID3D12Device10_CreateShaderResourceView(This,resource,desc,descriptor) (This)->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor)
  21106 #define ID3D12Device10_CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor) (This)->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor)
  21107 #define ID3D12Device10_CreateRenderTargetView(This,resource,desc,descriptor) (This)->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor)
  21108 #define ID3D12Device10_CreateDepthStencilView(This,resource,desc,descriptor) (This)->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor)
  21109 #define ID3D12Device10_CreateSampler(This,desc,descriptor) (This)->lpVtbl->CreateSampler(This,desc,descriptor)
  21110 #define ID3D12Device10_CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type) (This)->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type)
  21111 #define ID3D12Device10_CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type) (This)->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type)
  21112 #define ID3D12Device10_GetResourceAllocationInfo(This,visible_mask,reource_desc_count,resource_descs) ID3D12Device10_GetResourceAllocationInfo_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  21113 #define ID3D12Device10_GetCustomHeapProperties(This,node_mask,heap_type) ID3D12Device10_GetCustomHeapProperties_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  21114 #define ID3D12Device10_CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource)
  21115 #define ID3D12Device10_CreateHeap(This,desc,riid,heap) (This)->lpVtbl->CreateHeap(This,desc,riid,heap)
  21116 #define ID3D12Device10_CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  21117 #define ID3D12Device10_CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource)
  21118 #define ID3D12Device10_CreateSharedHandle(This,object,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle)
  21119 #define ID3D12Device10_OpenSharedHandle(This,handle,riid,object) (This)->lpVtbl->OpenSharedHandle(This,handle,riid,object)
  21120 #define ID3D12Device10_OpenSharedHandleByName(This,name,access,handle) (This)->lpVtbl->OpenSharedHandleByName(This,name,access,handle)
  21121 #define ID3D12Device10_MakeResident(This,object_count,objects) (This)->lpVtbl->MakeResident(This,object_count,objects)
  21122 #define ID3D12Device10_Evict(This,object_count,objects) (This)->lpVtbl->Evict(This,object_count,objects)
  21123 #define ID3D12Device10_CreateFence(This,initial_value,flags,riid,fence) (This)->lpVtbl->CreateFence(This,initial_value,flags,riid,fence)
  21124 #define ID3D12Device10_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
  21125 #define ID3D12Device10_GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes) (This)->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes)
  21126 #define ID3D12Device10_CreateQueryHeap(This,desc,riid,heap) (This)->lpVtbl->CreateQueryHeap(This,desc,riid,heap)
  21127 #define ID3D12Device10_SetStablePowerState(This,enable) (This)->lpVtbl->SetStablePowerState(This,enable)
  21128 #define ID3D12Device10_CreateCommandSignature(This,desc,root_signature,riid,command_signature) (This)->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature)
  21129 #define ID3D12Device10_GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings) (This)->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings)
  21130 #define ID3D12Device10_GetAdapterLuid(This) ID3D12Device10_GetAdapterLuid_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  21131 /*** ID3D12Device1 methods ***/
  21132 #define ID3D12Device10_CreatePipelineLibrary(This,blob,blob_size,iid,lib) (This)->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib)
  21133 #define ID3D12Device10_SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event) (This)->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event)
  21134 #define ID3D12Device10_SetResidencyPriority(This,object_count,objects,priorities) (This)->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities)
  21135 /*** ID3D12Device2 methods ***/
  21136 #define ID3D12Device10_CreatePipelineState(This,desc,riid,pipeline_state) (This)->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state)
  21137 /*** ID3D12Device3 methods ***/
  21138 #define ID3D12Device10_OpenExistingHeapFromAddress(This,address,riid,heap) (This)->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap)
  21139 #define ID3D12Device10_OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap) (This)->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap)
  21140 #define ID3D12Device10_EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value) (This)->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value)
  21141 /*** ID3D12Device4 methods ***/
  21142 #define ID3D12Device10_CreateCommandList1(This,node_mask,type,flags,riid,command_list) (This)->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list)
  21143 #define ID3D12Device10_CreateProtectedResourceSession(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session)
  21144 #define ID3D12Device10_CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  21145 #define ID3D12Device10_CreateHeap1(This,desc,protected_session,riid,heap) (This)->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap)
  21146 #define ID3D12Device10_CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource) (This)->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource)
  21147 #define ID3D12Device10_GetResourceAllocationInfo1(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device10_GetResourceAllocationInfo1_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  21148 /*** ID3D12Device5 methods ***/
  21149 #define ID3D12Device10_CreateLifetimeTracker(This,owner,riid,tracker) (This)->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker)
  21150 #define ID3D12Device10_RemoveDevice(This) (This)->lpVtbl->RemoveDevice(This)
  21151 #define ID3D12Device10_EnumerateMetaCommands(This,meta_commands_count,descs) (This)->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs)
  21152 #define ID3D12Device10_EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs) (This)->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs)
  21153 #define ID3D12Device10_CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command) (This)->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command)
  21154 #define ID3D12Device10_CreateStateObject(This,desc,riid,state_object) (This)->lpVtbl->CreateStateObject(This,desc,riid,state_object)
  21155 #define ID3D12Device10_GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info) (This)->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info)
  21156 #define ID3D12Device10_CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check) (This)->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check)
  21157 /*** ID3D12Device6 methods ***/
  21158 #define ID3D12Device10_SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired) (This)->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired)
  21159 /*** ID3D12Device7 methods ***/
  21160 #define ID3D12Device10_AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object) (This)->lpVtbl->AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object)
  21161 #define ID3D12Device10_CreateProtectedResourceSession1(This,desc,riid,session) (This)->lpVtbl->CreateProtectedResourceSession1(This,desc,riid,session)
  21162 /*** ID3D12Device8 methods ***/
  21163 #define ID3D12Device10_GetResourceAllocationInfo2(This,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1) ID3D12Device10_GetResourceAllocationInfo2_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
  21164 #define ID3D12Device10_CreateCommittedResource2(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource2(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource)
  21165 #define ID3D12Device10_CreatePlacedResource1(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource) (This)->lpVtbl->CreatePlacedResource1(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource)
  21166 #define ID3D12Device10_CreateSamplerFeedbackUnorderedAccessView(This,targeted_resource,feedback_resource,dst_descriptor) (This)->lpVtbl->CreateSamplerFeedbackUnorderedAccessView(This,targeted_resource,feedback_resource,dst_descriptor)
  21167 #define ID3D12Device10_GetCopyableFootprints1(This,resource_desc,first_subresource,subresources_count,base_offset,layouts,rows_count,row_size_in_bytes,total_bytes) (This)->lpVtbl->GetCopyableFootprints1(This,resource_desc,first_subresource,subresources_count,base_offset,layouts,rows_count,row_size_in_bytes,total_bytes)
  21168 /*** ID3D12Device9 methods ***/
  21169 #define ID3D12Device10_CreateShaderCacheSession(This,desc,riid,session) (This)->lpVtbl->CreateShaderCacheSession(This,desc,riid,session)
  21170 #define ID3D12Device10_ShaderCacheControl(This,kinds,control) (This)->lpVtbl->ShaderCacheControl(This,kinds,control)
  21171 #define ID3D12Device10_CreateCommandQueue1(This,desc,creator_id,riid,command_queue) (This)->lpVtbl->CreateCommandQueue1(This,desc,creator_id,riid,command_queue)
  21172 /*** ID3D12Device10 methods ***/
  21173 #define ID3D12Device10_CreateCommittedResource3(This,heap_properties,heap_flags,desc,initial_layout,optimized_clear_value,protected_session,castable_formats_count,castable_formats,riid_resource,resource) (This)->lpVtbl->CreateCommittedResource3(This,heap_properties,heap_flags,desc,initial_layout,optimized_clear_value,protected_session,castable_formats_count,castable_formats,riid_resource,resource)
  21174 #define ID3D12Device10_CreatePlacedResource2(This,heap,heap_offset,desc,initial_layout,optimized_clear_value,castable_formats_count,castable_formats,riid,resource) (This)->lpVtbl->CreatePlacedResource2(This,heap,heap_offset,desc,initial_layout,optimized_clear_value,castable_formats_count,castable_formats,riid,resource)
  21175 #define ID3D12Device10_CreateReservedResource2(This,desc,initial_layout,optimized_clear_value,protected_session,castable_formats_count,castable_formats,riid,resource) (This)->lpVtbl->CreateReservedResource2(This,desc,initial_layout,optimized_clear_value,protected_session,castable_formats_count,castable_formats,riid,resource)
  21176 #else
  21177 /*** IUnknown methods ***/
  21178 static inline HRESULT ID3D12Device10_QueryInterface(ID3D12Device10* This,REFIID riid,void **ppvObject) {
  21179     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  21180 }
  21181 static inline ULONG ID3D12Device10_AddRef(ID3D12Device10* This) {
  21182     return This->lpVtbl->AddRef(This);
  21183 }
  21184 static inline ULONG ID3D12Device10_Release(ID3D12Device10* This) {
  21185     return This->lpVtbl->Release(This);
  21186 }
  21187 /*** ID3D12Object methods ***/
  21188 static inline HRESULT ID3D12Device10_GetPrivateData(ID3D12Device10* This,REFGUID guid,UINT *data_size,void *data) {
  21189     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  21190 }
  21191 static inline HRESULT ID3D12Device10_SetPrivateData(ID3D12Device10* This,REFGUID guid,UINT data_size,const void *data) {
  21192     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  21193 }
  21194 static inline HRESULT ID3D12Device10_SetPrivateDataInterface(ID3D12Device10* This,REFGUID guid,const IUnknown *data) {
  21195     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  21196 }
  21197 static inline HRESULT ID3D12Device10_SetName(ID3D12Device10* This,const WCHAR *name) {
  21198     return This->lpVtbl->SetName(This,name);
  21199 }
  21200 /*** ID3D12Device methods ***/
  21201 static inline UINT ID3D12Device10_GetNodeCount(ID3D12Device10* This) {
  21202     return This->lpVtbl->GetNodeCount(This);
  21203 }
  21204 static inline HRESULT ID3D12Device10_CreateCommandQueue(ID3D12Device10* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID riid,void **command_queue) {
  21205     return This->lpVtbl->CreateCommandQueue(This,desc,riid,command_queue);
  21206 }
  21207 static inline HRESULT ID3D12Device10_CreateCommandAllocator(ID3D12Device10* This,D3D12_COMMAND_LIST_TYPE type,REFIID riid,void **command_allocator) {
  21208     return This->lpVtbl->CreateCommandAllocator(This,type,riid,command_allocator);
  21209 }
  21210 static inline HRESULT ID3D12Device10_CreateGraphicsPipelineState(ID3D12Device10* This,const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  21211     return This->lpVtbl->CreateGraphicsPipelineState(This,desc,riid,pipeline_state);
  21212 }
  21213 static inline HRESULT ID3D12Device10_CreateComputePipelineState(ID3D12Device10* This,const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,REFIID riid,void **pipeline_state) {
  21214     return This->lpVtbl->CreateComputePipelineState(This,desc,riid,pipeline_state);
  21215 }
  21216 static inline HRESULT ID3D12Device10_CreateCommandList(ID3D12Device10* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,ID3D12CommandAllocator *command_allocator,ID3D12PipelineState *initial_pipeline_state,REFIID riid,void **command_list) {
  21217     return This->lpVtbl->CreateCommandList(This,node_mask,type,command_allocator,initial_pipeline_state,riid,command_list);
  21218 }
  21219 static inline HRESULT ID3D12Device10_CheckFeatureSupport(ID3D12Device10* This,D3D12_FEATURE feature,void *feature_data,UINT feature_data_size) {
  21220     return This->lpVtbl->CheckFeatureSupport(This,feature,feature_data,feature_data_size);
  21221 }
  21222 static inline HRESULT ID3D12Device10_CreateDescriptorHeap(ID3D12Device10* This,const D3D12_DESCRIPTOR_HEAP_DESC *desc,REFIID riid,void **descriptor_heap) {
  21223     return This->lpVtbl->CreateDescriptorHeap(This,desc,riid,descriptor_heap);
  21224 }
  21225 static inline UINT ID3D12Device10_GetDescriptorHandleIncrementSize(ID3D12Device10* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  21226     return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
  21227 }
  21228 static inline HRESULT ID3D12Device10_CreateRootSignature(ID3D12Device10* This,UINT node_mask,const void *bytecode,SIZE_T bytecode_length,REFIID riid,void **root_signature) {
  21229     return This->lpVtbl->CreateRootSignature(This,node_mask,bytecode,bytecode_length,riid,root_signature);
  21230 }
  21231 static inline void ID3D12Device10_CreateConstantBufferView(ID3D12Device10* This,const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  21232     This->lpVtbl->CreateConstantBufferView(This,desc,descriptor);
  21233 }
  21234 static inline void ID3D12Device10_CreateShaderResourceView(ID3D12Device10* This,ID3D12Resource *resource,const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  21235     This->lpVtbl->CreateShaderResourceView(This,resource,desc,descriptor);
  21236 }
  21237 static inline void ID3D12Device10_CreateUnorderedAccessView(ID3D12Device10* This,ID3D12Resource *resource,ID3D12Resource *counter_resource,const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  21238     This->lpVtbl->CreateUnorderedAccessView(This,resource,counter_resource,desc,descriptor);
  21239 }
  21240 static inline void ID3D12Device10_CreateRenderTargetView(ID3D12Device10* This,ID3D12Resource *resource,const D3D12_RENDER_TARGET_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  21241     This->lpVtbl->CreateRenderTargetView(This,resource,desc,descriptor);
  21242 }
  21243 static inline void ID3D12Device10_CreateDepthStencilView(ID3D12Device10* This,ID3D12Resource *resource,const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  21244     This->lpVtbl->CreateDepthStencilView(This,resource,desc,descriptor);
  21245 }
  21246 static inline void ID3D12Device10_CreateSampler(ID3D12Device10* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
  21247     This->lpVtbl->CreateSampler(This,desc,descriptor);
  21248 }
  21249 static inline void ID3D12Device10_CopyDescriptors(ID3D12Device10* This,UINT dst_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,const UINT *dst_descriptor_range_sizes,UINT src_descriptor_range_count,const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,const UINT *src_descriptor_range_sizes,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  21250     This->lpVtbl->CopyDescriptors(This,dst_descriptor_range_count,dst_descriptor_range_offsets,dst_descriptor_range_sizes,src_descriptor_range_count,src_descriptor_range_offsets,src_descriptor_range_sizes,descriptor_heap_type);
  21251 }
  21252 static inline void ID3D12Device10_CopyDescriptorsSimple(ID3D12Device10* This,UINT descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
  21253     This->lpVtbl->CopyDescriptorsSimple(This,descriptor_count,dst_descriptor_range_offset,src_descriptor_range_offset,descriptor_heap_type);
  21254 }
  21255 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device10_GetResourceAllocationInfo(ID3D12Device10* This,UINT visible_mask,UINT reource_desc_count,const D3D12_RESOURCE_DESC *resource_descs) {
  21256     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  21257     return *This->lpVtbl->GetResourceAllocationInfo(This,&__ret,visible_mask,reource_desc_count,resource_descs);
  21258 }
  21259 static inline D3D12_HEAP_PROPERTIES ID3D12Device10_GetCustomHeapProperties(ID3D12Device10* This,UINT node_mask,D3D12_HEAP_TYPE heap_type) {
  21260     D3D12_HEAP_PROPERTIES __ret;
  21261     return *This->lpVtbl->GetCustomHeapProperties(This,&__ret,node_mask,heap_type);
  21262 }
  21263 static inline HRESULT ID3D12Device10_CreateCommittedResource(ID3D12Device10* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  21264     return This->lpVtbl->CreateCommittedResource(This,heap_properties,heap_flags,desc,initial_state,optimized_clear_value,riid,resource);
  21265 }
  21266 static inline HRESULT ID3D12Device10_CreateHeap(ID3D12Device10* This,const D3D12_HEAP_DESC *desc,REFIID riid,void **heap) {
  21267     return This->lpVtbl->CreateHeap(This,desc,riid,heap);
  21268 }
  21269 static inline HRESULT ID3D12Device10_CreatePlacedResource(ID3D12Device10* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  21270     return This->lpVtbl->CreatePlacedResource(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  21271 }
  21272 static inline HRESULT ID3D12Device10_CreateReservedResource(ID3D12Device10* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  21273     return This->lpVtbl->CreateReservedResource(This,desc,initial_state,optimized_clear_value,riid,resource);
  21274 }
  21275 static inline HRESULT ID3D12Device10_CreateSharedHandle(ID3D12Device10* This,ID3D12DeviceChild *object,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  21276     return This->lpVtbl->CreateSharedHandle(This,object,attributes,access,name,handle);
  21277 }
  21278 static inline HRESULT ID3D12Device10_OpenSharedHandle(ID3D12Device10* This,HANDLE handle,REFIID riid,void **object) {
  21279     return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
  21280 }
  21281 static inline HRESULT ID3D12Device10_OpenSharedHandleByName(ID3D12Device10* This,const WCHAR *name,DWORD access,HANDLE *handle) {
  21282     return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
  21283 }
  21284 static inline HRESULT ID3D12Device10_MakeResident(ID3D12Device10* This,UINT object_count,ID3D12Pageable *const *objects) {
  21285     return This->lpVtbl->MakeResident(This,object_count,objects);
  21286 }
  21287 static inline HRESULT ID3D12Device10_Evict(ID3D12Device10* This,UINT object_count,ID3D12Pageable *const *objects) {
  21288     return This->lpVtbl->Evict(This,object_count,objects);
  21289 }
  21290 static inline HRESULT ID3D12Device10_CreateFence(ID3D12Device10* This,UINT64 initial_value,D3D12_FENCE_FLAGS flags,REFIID riid,void **fence) {
  21291     return This->lpVtbl->CreateFence(This,initial_value,flags,riid,fence);
  21292 }
  21293 static inline HRESULT ID3D12Device10_GetDeviceRemovedReason(ID3D12Device10* This) {
  21294     return This->lpVtbl->GetDeviceRemovedReason(This);
  21295 }
  21296 static inline void ID3D12Device10_GetCopyableFootprints(ID3D12Device10* This,const D3D12_RESOURCE_DESC *desc,UINT first_sub_resource,UINT sub_resource_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *row_count,UINT64 *row_size,UINT64 *total_bytes) {
  21297     This->lpVtbl->GetCopyableFootprints(This,desc,first_sub_resource,sub_resource_count,base_offset,layouts,row_count,row_size,total_bytes);
  21298 }
  21299 static inline HRESULT ID3D12Device10_CreateQueryHeap(ID3D12Device10* This,const D3D12_QUERY_HEAP_DESC *desc,REFIID riid,void **heap) {
  21300     return This->lpVtbl->CreateQueryHeap(This,desc,riid,heap);
  21301 }
  21302 static inline HRESULT ID3D12Device10_SetStablePowerState(ID3D12Device10* This,WINBOOL enable) {
  21303     return This->lpVtbl->SetStablePowerState(This,enable);
  21304 }
  21305 static inline HRESULT ID3D12Device10_CreateCommandSignature(ID3D12Device10* This,const D3D12_COMMAND_SIGNATURE_DESC *desc,ID3D12RootSignature *root_signature,REFIID riid,void **command_signature) {
  21306     return This->lpVtbl->CreateCommandSignature(This,desc,root_signature,riid,command_signature);
  21307 }
  21308 static inline void ID3D12Device10_GetResourceTiling(ID3D12Device10* This,ID3D12Resource *resource,UINT *total_tile_count,D3D12_PACKED_MIP_INFO *packed_mip_info,D3D12_TILE_SHAPE *standard_tile_shape,UINT *sub_resource_tiling_count,UINT first_sub_resource_tiling,D3D12_SUBRESOURCE_TILING *sub_resource_tilings) {
  21309     This->lpVtbl->GetResourceTiling(This,resource,total_tile_count,packed_mip_info,standard_tile_shape,sub_resource_tiling_count,first_sub_resource_tiling,sub_resource_tilings);
  21310 }
  21311 static inline LUID ID3D12Device10_GetAdapterLuid(ID3D12Device10* This) {
  21312     LUID __ret;
  21313     return *This->lpVtbl->GetAdapterLuid(This,&__ret);
  21314 }
  21315 /*** ID3D12Device1 methods ***/
  21316 static inline HRESULT ID3D12Device10_CreatePipelineLibrary(ID3D12Device10* This,const void *blob,SIZE_T blob_size,REFIID iid,void **lib) {
  21317     return This->lpVtbl->CreatePipelineLibrary(This,blob,blob_size,iid,lib);
  21318 }
  21319 static inline HRESULT ID3D12Device10_SetEventOnMultipleFenceCompletion(ID3D12Device10* This,ID3D12Fence *const *fences,const UINT64 *values,UINT fence_count,D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags,HANDLE event) {
  21320     return This->lpVtbl->SetEventOnMultipleFenceCompletion(This,fences,values,fence_count,flags,event);
  21321 }
  21322 static inline HRESULT ID3D12Device10_SetResidencyPriority(ID3D12Device10* This,UINT object_count,ID3D12Pageable *const *objects,const D3D12_RESIDENCY_PRIORITY *priorities) {
  21323     return This->lpVtbl->SetResidencyPriority(This,object_count,objects,priorities);
  21324 }
  21325 /*** ID3D12Device2 methods ***/
  21326 static inline HRESULT ID3D12Device10_CreatePipelineState(ID3D12Device10* This,const D3D12_PIPELINE_STATE_STREAM_DESC *desc,REFIID riid,void **pipeline_state) {
  21327     return This->lpVtbl->CreatePipelineState(This,desc,riid,pipeline_state);
  21328 }
  21329 /*** ID3D12Device3 methods ***/
  21330 static inline HRESULT ID3D12Device10_OpenExistingHeapFromAddress(ID3D12Device10* This,const void *address,REFIID riid,void **heap) {
  21331     return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
  21332 }
  21333 static inline HRESULT ID3D12Device10_OpenExistingHeapFromFileMapping(ID3D12Device10* This,HANDLE file_mapping,REFIID riid,void **heap) {
  21334     return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
  21335 }
  21336 static inline HRESULT ID3D12Device10_EnqueueMakeResident(ID3D12Device10* This,D3D12_RESIDENCY_FLAGS flags,UINT num_objects,ID3D12Pageable *const *objects,ID3D12Fence *fence,UINT64 fence_value) {
  21337     return This->lpVtbl->EnqueueMakeResident(This,flags,num_objects,objects,fence,fence_value);
  21338 }
  21339 /*** ID3D12Device4 methods ***/
  21340 static inline HRESULT ID3D12Device10_CreateCommandList1(ID3D12Device10* This,UINT node_mask,D3D12_COMMAND_LIST_TYPE type,D3D12_COMMAND_LIST_FLAGS flags,REFIID riid,void **command_list) {
  21341     return This->lpVtbl->CreateCommandList1(This,node_mask,type,flags,riid,command_list);
  21342 }
  21343 static inline HRESULT ID3D12Device10_CreateProtectedResourceSession(ID3D12Device10* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC *desc,REFIID riid,void **session) {
  21344     return This->lpVtbl->CreateProtectedResourceSession(This,desc,riid,session);
  21345 }
  21346 static inline HRESULT ID3D12Device10_CreateCommittedResource1(ID3D12Device10* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  21347     return This->lpVtbl->CreateCommittedResource1(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  21348 }
  21349 static inline HRESULT ID3D12Device10_CreateHeap1(ID3D12Device10* This,const D3D12_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **heap) {
  21350     return This->lpVtbl->CreateHeap1(This,desc,protected_session,riid,heap);
  21351 }
  21352 static inline HRESULT ID3D12Device10_CreateReservedResource1(ID3D12Device10* This,const D3D12_RESOURCE_DESC *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid,void **resource) {
  21353     return This->lpVtbl->CreateReservedResource1(This,desc,initial_state,optimized_clear_value,protected_session,riid,resource);
  21354 }
  21355 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device10_GetResourceAllocationInfo1(ID3D12Device10* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  21356     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  21357     return *This->lpVtbl->GetResourceAllocationInfo1(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  21358 }
  21359 /*** ID3D12Device5 methods ***/
  21360 static inline HRESULT ID3D12Device10_CreateLifetimeTracker(ID3D12Device10* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
  21361     return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
  21362 }
  21363 static inline void ID3D12Device10_RemoveDevice(ID3D12Device10* This) {
  21364     This->lpVtbl->RemoveDevice(This);
  21365 }
  21366 static inline HRESULT ID3D12Device10_EnumerateMetaCommands(ID3D12Device10* This,UINT *meta_commands_count,D3D12_META_COMMAND_DESC *descs) {
  21367     return This->lpVtbl->EnumerateMetaCommands(This,meta_commands_count,descs);
  21368 }
  21369 static inline HRESULT ID3D12Device10_EnumerateMetaCommandParameters(ID3D12Device10* This,REFGUID command_id,D3D12_META_COMMAND_PARAMETER_STAGE stage,UINT *total_structure_size_in_bytes,UINT *parameter_count,D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs) {
  21370     return This->lpVtbl->EnumerateMetaCommandParameters(This,command_id,stage,total_structure_size_in_bytes,parameter_count,parameter_descs);
  21371 }
  21372 static inline HRESULT ID3D12Device10_CreateMetaCommand(ID3D12Device10* This,REFGUID command_id,UINT node_mask,const void *creation_parameters_data,SIZE_T creation_parameters_data_size_in_bytes,REFIID riid,void **meta_command) {
  21373     return This->lpVtbl->CreateMetaCommand(This,command_id,node_mask,creation_parameters_data,creation_parameters_data_size_in_bytes,riid,meta_command);
  21374 }
  21375 static inline HRESULT ID3D12Device10_CreateStateObject(ID3D12Device10* This,const D3D12_STATE_OBJECT_DESC *desc,REFIID riid,void **state_object) {
  21376     return This->lpVtbl->CreateStateObject(This,desc,riid,state_object);
  21377 }
  21378 static inline void ID3D12Device10_GetRaytracingAccelerationStructurePrebuildInfo(ID3D12Device10* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info) {
  21379     This->lpVtbl->GetRaytracingAccelerationStructurePrebuildInfo(This,desc,info);
  21380 }
  21381 static inline D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ID3D12Device10_CheckDriverMatchingIdentifier(ID3D12Device10* This,D3D12_SERIALIZED_DATA_TYPE serialized_data_type,const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check) {
  21382     return This->lpVtbl->CheckDriverMatchingIdentifier(This,serialized_data_type,identifier_to_check);
  21383 }
  21384 /*** ID3D12Device6 methods ***/
  21385 static inline HRESULT ID3D12Device10_SetBackgroundProcessingMode(ID3D12Device10* This,D3D12_BACKGROUND_PROCESSING_MODE mode,D3D12_MEASUREMENTS_ACTION action,HANDLE event,WINBOOL *further_measurements_desired) {
  21386     return This->lpVtbl->SetBackgroundProcessingMode(This,mode,action,event,further_measurements_desired);
  21387 }
  21388 /*** ID3D12Device7 methods ***/
  21389 static inline HRESULT ID3D12Device10_AddToStateObject(ID3D12Device10* This,const D3D12_STATE_OBJECT_DESC *addition,ID3D12StateObject *state_object_to_grow_from,REFIID riid,void **new_state_object) {
  21390     return This->lpVtbl->AddToStateObject(This,addition,state_object_to_grow_from,riid,new_state_object);
  21391 }
  21392 static inline HRESULT ID3D12Device10_CreateProtectedResourceSession1(ID3D12Device10* This,const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *desc,REFIID riid,void **session) {
  21393     return This->lpVtbl->CreateProtectedResourceSession1(This,desc,riid,session);
  21394 }
  21395 /*** ID3D12Device8 methods ***/
  21396 static inline D3D12_RESOURCE_ALLOCATION_INFO ID3D12Device10_GetResourceAllocationInfo2(ID3D12Device10* This,UINT visible_mask,UINT resource_descs_count,const D3D12_RESOURCE_DESC1 *resource_descs,D3D12_RESOURCE_ALLOCATION_INFO1 *resource_allocation_info1) {
  21397     D3D12_RESOURCE_ALLOCATION_INFO __ret;
  21398     return *This->lpVtbl->GetResourceAllocationInfo2(This,&__ret,visible_mask,resource_descs_count,resource_descs,resource_allocation_info1);
  21399 }
  21400 static inline HRESULT ID3D12Device10_CreateCommittedResource2(ID3D12Device10* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC1 *desc,D3D12_RESOURCE_STATES initial_resource_state,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,REFIID riid_resource,void **resource) {
  21401     return This->lpVtbl->CreateCommittedResource2(This,heap_properties,heap_flags,desc,initial_resource_state,optimized_clear_value,protected_session,riid_resource,resource);
  21402 }
  21403 static inline HRESULT ID3D12Device10_CreatePlacedResource1(ID3D12Device10* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC1 *desc,D3D12_RESOURCE_STATES initial_state,const D3D12_CLEAR_VALUE *optimized_clear_value,REFIID riid,void **resource) {
  21404     return This->lpVtbl->CreatePlacedResource1(This,heap,heap_offset,desc,initial_state,optimized_clear_value,riid,resource);
  21405 }
  21406 static inline void ID3D12Device10_CreateSamplerFeedbackUnorderedAccessView(ID3D12Device10* This,ID3D12Resource *targeted_resource,ID3D12Resource *feedback_resource,D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor) {
  21407     This->lpVtbl->CreateSamplerFeedbackUnorderedAccessView(This,targeted_resource,feedback_resource,dst_descriptor);
  21408 }
  21409 static inline void ID3D12Device10_GetCopyableFootprints1(ID3D12Device10* This,const D3D12_RESOURCE_DESC1 *resource_desc,UINT first_subresource,UINT subresources_count,UINT64 base_offset,D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,UINT *rows_count,UINT64 *row_size_in_bytes,UINT64 *total_bytes) {
  21410     This->lpVtbl->GetCopyableFootprints1(This,resource_desc,first_subresource,subresources_count,base_offset,layouts,rows_count,row_size_in_bytes,total_bytes);
  21411 }
  21412 /*** ID3D12Device9 methods ***/
  21413 static inline HRESULT ID3D12Device10_CreateShaderCacheSession(ID3D12Device10* This,const D3D12_SHADER_CACHE_SESSION_DESC *desc,REFIID riid,void **session) {
  21414     return This->lpVtbl->CreateShaderCacheSession(This,desc,riid,session);
  21415 }
  21416 static inline HRESULT ID3D12Device10_ShaderCacheControl(ID3D12Device10* This,D3D12_SHADER_CACHE_KIND_FLAGS kinds,D3D12_SHADER_CACHE_CONTROL_FLAGS control) {
  21417     return This->lpVtbl->ShaderCacheControl(This,kinds,control);
  21418 }
  21419 static inline HRESULT ID3D12Device10_CreateCommandQueue1(ID3D12Device10* This,const D3D12_COMMAND_QUEUE_DESC *desc,REFIID creator_id,REFIID riid,void **command_queue) {
  21420     return This->lpVtbl->CreateCommandQueue1(This,desc,creator_id,riid,command_queue);
  21421 }
  21422 /*** ID3D12Device10 methods ***/
  21423 static inline HRESULT ID3D12Device10_CreateCommittedResource3(ID3D12Device10* This,const D3D12_HEAP_PROPERTIES *heap_properties,D3D12_HEAP_FLAGS heap_flags,const D3D12_RESOURCE_DESC1 *desc,D3D12_BARRIER_LAYOUT initial_layout,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,UINT32 castable_formats_count,DXGI_FORMAT *castable_formats,REFIID riid_resource,void **resource) {
  21424     return This->lpVtbl->CreateCommittedResource3(This,heap_properties,heap_flags,desc,initial_layout,optimized_clear_value,protected_session,castable_formats_count,castable_formats,riid_resource,resource);
  21425 }
  21426 static inline HRESULT ID3D12Device10_CreatePlacedResource2(ID3D12Device10* This,ID3D12Heap *heap,UINT64 heap_offset,const D3D12_RESOURCE_DESC1 *desc,D3D12_BARRIER_LAYOUT initial_layout,const D3D12_CLEAR_VALUE *optimized_clear_value,UINT32 castable_formats_count,DXGI_FORMAT *castable_formats,REFIID riid,void **resource) {
  21427     return This->lpVtbl->CreatePlacedResource2(This,heap,heap_offset,desc,initial_layout,optimized_clear_value,castable_formats_count,castable_formats,riid,resource);
  21428 }
  21429 static inline HRESULT ID3D12Device10_CreateReservedResource2(ID3D12Device10* This,const D3D12_RESOURCE_DESC *desc,D3D12_BARRIER_LAYOUT initial_layout,const D3D12_CLEAR_VALUE *optimized_clear_value,ID3D12ProtectedResourceSession *protected_session,UINT32 castable_formats_count,DXGI_FORMAT *castable_formats,REFIID riid,void **resource) {
  21430     return This->lpVtbl->CreateReservedResource2(This,desc,initial_layout,optimized_clear_value,protected_session,castable_formats_count,castable_formats,riid,resource);
  21431 }
  21432 #endif
  21433 #endif
  21434 
  21435 #endif
  21436 
  21437 
  21438 #endif  /* __ID3D12Device10_INTERFACE_DEFINED__ */
  21439 
  21440 /*****************************************************************************
  21441  * ID3D12VirtualizationGuestDevice interface
  21442  */
  21443 #ifndef __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
  21444 #define __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
  21445 
  21446 DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice, 0xbc66d368, 0x7373, 0x4943, 0x87,0x57, 0xfc,0x87,0xdc,0x79,0xe4,0x76);
  21447 #if defined(__cplusplus) && !defined(CINTERFACE)
  21448 MIDL_INTERFACE("bc66d368-7373-4943-8757-fc87dc79e476")
  21449 ID3D12VirtualizationGuestDevice : public IUnknown
  21450 {
  21451     virtual HRESULT STDMETHODCALLTYPE ShareWithHost(
  21452         ID3D12DeviceChild *object,
  21453         HANDLE *handle) = 0;
  21454 
  21455     virtual HRESULT STDMETHODCALLTYPE CreateFenceFd(
  21456         ID3D12Fence *fence,
  21457         UINT64 fence_value,
  21458         int *fence_fd) = 0;
  21459 
  21460 };
  21461 #ifdef __CRT_UUID_DECL
  21462 __CRT_UUID_DECL(ID3D12VirtualizationGuestDevice, 0xbc66d368, 0x7373, 0x4943, 0x87,0x57, 0xfc,0x87,0xdc,0x79,0xe4,0x76)
  21463 #endif
  21464 #else
  21465 typedef struct ID3D12VirtualizationGuestDeviceVtbl {
  21466     BEGIN_INTERFACE
  21467 
  21468     /*** IUnknown methods ***/
  21469     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  21470         ID3D12VirtualizationGuestDevice *This,
  21471         REFIID riid,
  21472         void **ppvObject);
  21473 
  21474     ULONG (STDMETHODCALLTYPE *AddRef)(
  21475         ID3D12VirtualizationGuestDevice *This);
  21476 
  21477     ULONG (STDMETHODCALLTYPE *Release)(
  21478         ID3D12VirtualizationGuestDevice *This);
  21479 
  21480     /*** ID3D12VirtualizationGuestDevice methods ***/
  21481     HRESULT (STDMETHODCALLTYPE *ShareWithHost)(
  21482         ID3D12VirtualizationGuestDevice *This,
  21483         ID3D12DeviceChild *object,
  21484         HANDLE *handle);
  21485 
  21486     HRESULT (STDMETHODCALLTYPE *CreateFenceFd)(
  21487         ID3D12VirtualizationGuestDevice *This,
  21488         ID3D12Fence *fence,
  21489         UINT64 fence_value,
  21490         int *fence_fd);
  21491 
  21492     END_INTERFACE
  21493 } ID3D12VirtualizationGuestDeviceVtbl;
  21494 
  21495 interface ID3D12VirtualizationGuestDevice {
  21496     CONST_VTBL ID3D12VirtualizationGuestDeviceVtbl* lpVtbl;
  21497 };
  21498 
  21499 #ifdef COBJMACROS
  21500 #ifndef WIDL_C_INLINE_WRAPPERS
  21501 /*** IUnknown methods ***/
  21502 #define ID3D12VirtualizationGuestDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  21503 #define ID3D12VirtualizationGuestDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
  21504 #define ID3D12VirtualizationGuestDevice_Release(This) (This)->lpVtbl->Release(This)
  21505 /*** ID3D12VirtualizationGuestDevice methods ***/
  21506 #define ID3D12VirtualizationGuestDevice_ShareWithHost(This,object,handle) (This)->lpVtbl->ShareWithHost(This,object,handle)
  21507 #define ID3D12VirtualizationGuestDevice_CreateFenceFd(This,fence,fence_value,fence_fd) (This)->lpVtbl->CreateFenceFd(This,fence,fence_value,fence_fd)
  21508 #else
  21509 /*** IUnknown methods ***/
  21510 static inline HRESULT ID3D12VirtualizationGuestDevice_QueryInterface(ID3D12VirtualizationGuestDevice* This,REFIID riid,void **ppvObject) {
  21511     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  21512 }
  21513 static inline ULONG ID3D12VirtualizationGuestDevice_AddRef(ID3D12VirtualizationGuestDevice* This) {
  21514     return This->lpVtbl->AddRef(This);
  21515 }
  21516 static inline ULONG ID3D12VirtualizationGuestDevice_Release(ID3D12VirtualizationGuestDevice* This) {
  21517     return This->lpVtbl->Release(This);
  21518 }
  21519 /*** ID3D12VirtualizationGuestDevice methods ***/
  21520 static inline HRESULT ID3D12VirtualizationGuestDevice_ShareWithHost(ID3D12VirtualizationGuestDevice* This,ID3D12DeviceChild *object,HANDLE *handle) {
  21521     return This->lpVtbl->ShareWithHost(This,object,handle);
  21522 }
  21523 static inline HRESULT ID3D12VirtualizationGuestDevice_CreateFenceFd(ID3D12VirtualizationGuestDevice* This,ID3D12Fence *fence,UINT64 fence_value,int *fence_fd) {
  21524     return This->lpVtbl->CreateFenceFd(This,fence,fence_value,fence_fd);
  21525 }
  21526 #endif
  21527 #endif
  21528 
  21529 #endif
  21530 
  21531 
  21532 #endif  /* __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__ */
  21533 
  21534 /*****************************************************************************
  21535  * ID3D12Tools interface
  21536  */
  21537 #ifndef __ID3D12Tools_INTERFACE_DEFINED__
  21538 #define __ID3D12Tools_INTERFACE_DEFINED__
  21539 
  21540 DEFINE_GUID(IID_ID3D12Tools, 0x7071e1f0, 0xe84b, 0x4b33, 0x97,0x4f, 0x12,0xfa,0x49,0xde,0x65,0xc5);
  21541 #if defined(__cplusplus) && !defined(CINTERFACE)
  21542 MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
  21543 ID3D12Tools : public IUnknown
  21544 {
  21545     virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
  21546         WINBOOL enable) = 0;
  21547 
  21548     virtual WINBOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled(
  21549         ) = 0;
  21550 
  21551 };
  21552 #ifdef __CRT_UUID_DECL
  21553 __CRT_UUID_DECL(ID3D12Tools, 0x7071e1f0, 0xe84b, 0x4b33, 0x97,0x4f, 0x12,0xfa,0x49,0xde,0x65,0xc5)
  21554 #endif
  21555 #else
  21556 typedef struct ID3D12ToolsVtbl {
  21557     BEGIN_INTERFACE
  21558 
  21559     /*** IUnknown methods ***/
  21560     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  21561         ID3D12Tools *This,
  21562         REFIID riid,
  21563         void **ppvObject);
  21564 
  21565     ULONG (STDMETHODCALLTYPE *AddRef)(
  21566         ID3D12Tools *This);
  21567 
  21568     ULONG (STDMETHODCALLTYPE *Release)(
  21569         ID3D12Tools *This);
  21570 
  21571     /*** ID3D12Tools methods ***/
  21572     void (STDMETHODCALLTYPE *EnableShaderInstrumentation)(
  21573         ID3D12Tools *This,
  21574         WINBOOL enable);
  21575 
  21576     WINBOOL (STDMETHODCALLTYPE *ShaderInstrumentationEnabled)(
  21577         ID3D12Tools *This);
  21578 
  21579     END_INTERFACE
  21580 } ID3D12ToolsVtbl;
  21581 
  21582 interface ID3D12Tools {
  21583     CONST_VTBL ID3D12ToolsVtbl* lpVtbl;
  21584 };
  21585 
  21586 #ifdef COBJMACROS
  21587 #ifndef WIDL_C_INLINE_WRAPPERS
  21588 /*** IUnknown methods ***/
  21589 #define ID3D12Tools_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  21590 #define ID3D12Tools_AddRef(This) (This)->lpVtbl->AddRef(This)
  21591 #define ID3D12Tools_Release(This) (This)->lpVtbl->Release(This)
  21592 /*** ID3D12Tools methods ***/
  21593 #define ID3D12Tools_EnableShaderInstrumentation(This,enable) (This)->lpVtbl->EnableShaderInstrumentation(This,enable)
  21594 #define ID3D12Tools_ShaderInstrumentationEnabled(This) (This)->lpVtbl->ShaderInstrumentationEnabled(This)
  21595 #else
  21596 /*** IUnknown methods ***/
  21597 static inline HRESULT ID3D12Tools_QueryInterface(ID3D12Tools* This,REFIID riid,void **ppvObject) {
  21598     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  21599 }
  21600 static inline ULONG ID3D12Tools_AddRef(ID3D12Tools* This) {
  21601     return This->lpVtbl->AddRef(This);
  21602 }
  21603 static inline ULONG ID3D12Tools_Release(ID3D12Tools* This) {
  21604     return This->lpVtbl->Release(This);
  21605 }
  21606 /*** ID3D12Tools methods ***/
  21607 static inline void ID3D12Tools_EnableShaderInstrumentation(ID3D12Tools* This,WINBOOL enable) {
  21608     This->lpVtbl->EnableShaderInstrumentation(This,enable);
  21609 }
  21610 static inline WINBOOL ID3D12Tools_ShaderInstrumentationEnabled(ID3D12Tools* This) {
  21611     return This->lpVtbl->ShaderInstrumentationEnabled(This);
  21612 }
  21613 #endif
  21614 #endif
  21615 
  21616 #endif
  21617 
  21618 
  21619 #endif  /* __ID3D12Tools_INTERFACE_DEFINED__ */
  21620 
  21621 DEFINE_GUID(CLSID_D3D12Debug,                     0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
  21622 DEFINE_GUID(CLSID_D3D12Tools,                     0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
  21623 DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
  21624 DEFINE_GUID(CLSID_D3D12SDKConfiguration,          0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
  21625 /*****************************************************************************
  21626  * ID3D12SDKConfiguration interface
  21627  */
  21628 #ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
  21629 #define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
  21630 
  21631 DEFINE_GUID(IID_ID3D12SDKConfiguration, 0xe9eb5314, 0x33aa, 0x42b2, 0xa7,0x18, 0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
  21632 #if defined(__cplusplus) && !defined(CINTERFACE)
  21633 MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
  21634 ID3D12SDKConfiguration : public IUnknown
  21635 {
  21636     virtual HRESULT STDMETHODCALLTYPE SetSDKVersion(
  21637         UINT version,
  21638         const char *path) = 0;
  21639 
  21640 };
  21641 #ifdef __CRT_UUID_DECL
  21642 __CRT_UUID_DECL(ID3D12SDKConfiguration, 0xe9eb5314, 0x33aa, 0x42b2, 0xa7,0x18, 0xd7,0x7f,0x58,0xb1,0xf1,0xc7)
  21643 #endif
  21644 #else
  21645 typedef struct ID3D12SDKConfigurationVtbl {
  21646     BEGIN_INTERFACE
  21647 
  21648     /*** IUnknown methods ***/
  21649     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  21650         ID3D12SDKConfiguration *This,
  21651         REFIID riid,
  21652         void **ppvObject);
  21653 
  21654     ULONG (STDMETHODCALLTYPE *AddRef)(
  21655         ID3D12SDKConfiguration *This);
  21656 
  21657     ULONG (STDMETHODCALLTYPE *Release)(
  21658         ID3D12SDKConfiguration *This);
  21659 
  21660     /*** ID3D12SDKConfiguration methods ***/
  21661     HRESULT (STDMETHODCALLTYPE *SetSDKVersion)(
  21662         ID3D12SDKConfiguration *This,
  21663         UINT version,
  21664         const char *path);
  21665 
  21666     END_INTERFACE
  21667 } ID3D12SDKConfigurationVtbl;
  21668 
  21669 interface ID3D12SDKConfiguration {
  21670     CONST_VTBL ID3D12SDKConfigurationVtbl* lpVtbl;
  21671 };
  21672 
  21673 #ifdef COBJMACROS
  21674 #ifndef WIDL_C_INLINE_WRAPPERS
  21675 /*** IUnknown methods ***/
  21676 #define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  21677 #define ID3D12SDKConfiguration_AddRef(This) (This)->lpVtbl->AddRef(This)
  21678 #define ID3D12SDKConfiguration_Release(This) (This)->lpVtbl->Release(This)
  21679 /*** ID3D12SDKConfiguration methods ***/
  21680 #define ID3D12SDKConfiguration_SetSDKVersion(This,version,path) (This)->lpVtbl->SetSDKVersion(This,version,path)
  21681 #else
  21682 /*** IUnknown methods ***/
  21683 static inline HRESULT ID3D12SDKConfiguration_QueryInterface(ID3D12SDKConfiguration* This,REFIID riid,void **ppvObject) {
  21684     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  21685 }
  21686 static inline ULONG ID3D12SDKConfiguration_AddRef(ID3D12SDKConfiguration* This) {
  21687     return This->lpVtbl->AddRef(This);
  21688 }
  21689 static inline ULONG ID3D12SDKConfiguration_Release(ID3D12SDKConfiguration* This) {
  21690     return This->lpVtbl->Release(This);
  21691 }
  21692 /*** ID3D12SDKConfiguration methods ***/
  21693 static inline HRESULT ID3D12SDKConfiguration_SetSDKVersion(ID3D12SDKConfiguration* This,UINT version,const char *path) {
  21694     return This->lpVtbl->SetSDKVersion(This,version,path);
  21695 }
  21696 #endif
  21697 #endif
  21698 
  21699 #endif
  21700 
  21701 
  21702 #endif  /* __ID3D12SDKConfiguration_INTERFACE_DEFINED__ */
  21703 
  21704 typedef enum D3D12_AXIS_SHADING_RATE {
  21705     D3D12_AXIS_SHADING_RATE_1X = 0x0,
  21706     D3D12_AXIS_SHADING_RATE_2X = 0x1,
  21707     D3D12_AXIS_SHADING_RATE_4X = 0x2
  21708 } D3D12_AXIS_SHADING_RATE;
  21709 typedef enum D3D12_SHADING_RATE {
  21710     D3D12_SHADING_RATE_1X1 = 0x0,
  21711     D3D12_SHADING_RATE_1X2 = 0x1,
  21712     D3D12_SHADING_RATE_2X1 = 0x4,
  21713     D3D12_SHADING_RATE_2X2 = 0x5,
  21714     D3D12_SHADING_RATE_2X4 = 0x6,
  21715     D3D12_SHADING_RATE_4X2 = 0x9,
  21716     D3D12_SHADING_RATE_4X4 = 0xa
  21717 } D3D12_SHADING_RATE;
  21718 typedef enum D3D12_SHADING_RATE_COMBINER {
  21719     D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0x0,
  21720     D3D12_SHADING_RATE_COMBINER_OVERRIDE = 0x1,
  21721     D3D12_SHADING_RATE_COMBINER_MIN = 0x2,
  21722     D3D12_SHADING_RATE_COMBINER_MAX = 0x3,
  21723     D3D12_SHADING_RATE_COMBINER_SUM = 0x4
  21724 } D3D12_SHADING_RATE_COMBINER;
  21725 /*****************************************************************************
  21726  * ID3D12GraphicsCommandList5 interface
  21727  */
  21728 #ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
  21729 #define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
  21730 
  21731 DEFINE_GUID(IID_ID3D12GraphicsCommandList5, 0x55050859, 0x4024, 0x474c, 0x87,0xf5, 0x64,0x72,0xea,0xee,0x44,0xea);
  21732 #if defined(__cplusplus) && !defined(CINTERFACE)
  21733 MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
  21734 ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4
  21735 {
  21736     virtual void STDMETHODCALLTYPE RSSetShadingRate(
  21737         D3D12_SHADING_RATE base_shading_rate,
  21738         const D3D12_SHADING_RATE_COMBINER *combiners) = 0;
  21739 
  21740     virtual void STDMETHODCALLTYPE RSSetShadingRateImage(
  21741         ID3D12Resource *shading_rate_image) = 0;
  21742 
  21743 };
  21744 #ifdef __CRT_UUID_DECL
  21745 __CRT_UUID_DECL(ID3D12GraphicsCommandList5, 0x55050859, 0x4024, 0x474c, 0x87,0xf5, 0x64,0x72,0xea,0xee,0x44,0xea)
  21746 #endif
  21747 #else
  21748 typedef struct ID3D12GraphicsCommandList5Vtbl {
  21749     BEGIN_INTERFACE
  21750 
  21751     /*** IUnknown methods ***/
  21752     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  21753         ID3D12GraphicsCommandList5 *This,
  21754         REFIID riid,
  21755         void **ppvObject);
  21756 
  21757     ULONG (STDMETHODCALLTYPE *AddRef)(
  21758         ID3D12GraphicsCommandList5 *This);
  21759 
  21760     ULONG (STDMETHODCALLTYPE *Release)(
  21761         ID3D12GraphicsCommandList5 *This);
  21762 
  21763     /*** ID3D12Object methods ***/
  21764     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  21765         ID3D12GraphicsCommandList5 *This,
  21766         REFGUID guid,
  21767         UINT *data_size,
  21768         void *data);
  21769 
  21770     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  21771         ID3D12GraphicsCommandList5 *This,
  21772         REFGUID guid,
  21773         UINT data_size,
  21774         const void *data);
  21775 
  21776     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  21777         ID3D12GraphicsCommandList5 *This,
  21778         REFGUID guid,
  21779         const IUnknown *data);
  21780 
  21781     HRESULT (STDMETHODCALLTYPE *SetName)(
  21782         ID3D12GraphicsCommandList5 *This,
  21783         const WCHAR *name);
  21784 
  21785     /*** ID3D12DeviceChild methods ***/
  21786     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  21787         ID3D12GraphicsCommandList5 *This,
  21788         REFIID riid,
  21789         void **device);
  21790 
  21791     /*** ID3D12CommandList methods ***/
  21792     D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
  21793         ID3D12GraphicsCommandList5 *This);
  21794 
  21795     /*** ID3D12GraphicsCommandList methods ***/
  21796     HRESULT (STDMETHODCALLTYPE *Close)(
  21797         ID3D12GraphicsCommandList5 *This);
  21798 
  21799     HRESULT (STDMETHODCALLTYPE *Reset)(
  21800         ID3D12GraphicsCommandList5 *This,
  21801         ID3D12CommandAllocator *allocator,
  21802         ID3D12PipelineState *initial_state);
  21803 
  21804     void (STDMETHODCALLTYPE *ClearState)(
  21805         ID3D12GraphicsCommandList5 *This,
  21806         ID3D12PipelineState *pipeline_state);
  21807 
  21808     void (STDMETHODCALLTYPE *DrawInstanced)(
  21809         ID3D12GraphicsCommandList5 *This,
  21810         UINT vertex_count_per_instance,
  21811         UINT instance_count,
  21812         UINT start_vertex_location,
  21813         UINT start_instance_location);
  21814 
  21815     void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
  21816         ID3D12GraphicsCommandList5 *This,
  21817         UINT index_count_per_instance,
  21818         UINT instance_count,
  21819         UINT start_vertex_location,
  21820         INT base_vertex_location,
  21821         UINT start_instance_location);
  21822 
  21823     void (STDMETHODCALLTYPE *Dispatch)(
  21824         ID3D12GraphicsCommandList5 *This,
  21825         UINT x,
  21826         UINT u,
  21827         UINT z);
  21828 
  21829     void (STDMETHODCALLTYPE *CopyBufferRegion)(
  21830         ID3D12GraphicsCommandList5 *This,
  21831         ID3D12Resource *dst_buffer,
  21832         UINT64 dst_offset,
  21833         ID3D12Resource *src_buffer,
  21834         UINT64 src_offset,
  21835         UINT64 byte_count);
  21836 
  21837     void (STDMETHODCALLTYPE *CopyTextureRegion)(
  21838         ID3D12GraphicsCommandList5 *This,
  21839         const D3D12_TEXTURE_COPY_LOCATION *dst,
  21840         UINT dst_x,
  21841         UINT dst_y,
  21842         UINT dst_z,
  21843         const D3D12_TEXTURE_COPY_LOCATION *src,
  21844         const D3D12_BOX *src_box);
  21845 
  21846     void (STDMETHODCALLTYPE *CopyResource)(
  21847         ID3D12GraphicsCommandList5 *This,
  21848         ID3D12Resource *dst_resource,
  21849         ID3D12Resource *src_resource);
  21850 
  21851     void (STDMETHODCALLTYPE *CopyTiles)(
  21852         ID3D12GraphicsCommandList5 *This,
  21853         ID3D12Resource *tiled_resource,
  21854         const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
  21855         const D3D12_TILE_REGION_SIZE *tile_region_size,
  21856         ID3D12Resource *buffer,
  21857         UINT64 buffer_offset,
  21858         D3D12_TILE_COPY_FLAGS flags);
  21859 
  21860     void (STDMETHODCALLTYPE *ResolveSubresource)(
  21861         ID3D12GraphicsCommandList5 *This,
  21862         ID3D12Resource *dst_resource,
  21863         UINT dst_sub_resource,
  21864         ID3D12Resource *src_resource,
  21865         UINT src_sub_resource,
  21866         DXGI_FORMAT format);
  21867 
  21868     void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
  21869         ID3D12GraphicsCommandList5 *This,
  21870         D3D12_PRIMITIVE_TOPOLOGY primitive_topology);
  21871 
  21872     void (STDMETHODCALLTYPE *RSSetViewports)(
  21873         ID3D12GraphicsCommandList5 *This,
  21874         UINT viewport_count,
  21875         const D3D12_VIEWPORT *viewports);
  21876 
  21877     void (STDMETHODCALLTYPE *RSSetScissorRects)(
  21878         ID3D12GraphicsCommandList5 *This,
  21879         UINT rect_count,
  21880         const D3D12_RECT *rects);
  21881 
  21882     void (STDMETHODCALLTYPE *OMSetBlendFactor)(
  21883         ID3D12GraphicsCommandList5 *This,
  21884         const FLOAT blend_factor[4]);
  21885 
  21886     void (STDMETHODCALLTYPE *OMSetStencilRef)(
  21887         ID3D12GraphicsCommandList5 *This,
  21888         UINT stencil_ref);
  21889 
  21890     void (STDMETHODCALLTYPE *SetPipelineState)(
  21891         ID3D12GraphicsCommandList5 *This,
  21892         ID3D12PipelineState *pipeline_state);
  21893 
  21894     void (STDMETHODCALLTYPE *ResourceBarrier)(
  21895         ID3D12GraphicsCommandList5 *This,
  21896         UINT barrier_count,
  21897         const D3D12_RESOURCE_BARRIER *barriers);
  21898 
  21899     void (STDMETHODCALLTYPE *ExecuteBundle)(
  21900         ID3D12GraphicsCommandList5 *This,
  21901         ID3D12GraphicsCommandList *command_list);
  21902 
  21903     void (STDMETHODCALLTYPE *SetDescriptorHeaps)(
  21904         ID3D12GraphicsCommandList5 *This,
  21905         UINT heap_count,
  21906         ID3D12DescriptorHeap *const *heaps);
  21907 
  21908     void (STDMETHODCALLTYPE *SetComputeRootSignature)(
  21909         ID3D12GraphicsCommandList5 *This,
  21910         ID3D12RootSignature *root_signature);
  21911 
  21912     void (STDMETHODCALLTYPE *SetGraphicsRootSignature)(
  21913         ID3D12GraphicsCommandList5 *This,
  21914         ID3D12RootSignature *root_signature);
  21915 
  21916     void (STDMETHODCALLTYPE *SetComputeRootDescriptorTable)(
  21917         ID3D12GraphicsCommandList5 *This,
  21918         UINT root_parameter_index,
  21919         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  21920 
  21921     void (STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable)(
  21922         ID3D12GraphicsCommandList5 *This,
  21923         UINT root_parameter_index,
  21924         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  21925 
  21926     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstant)(
  21927         ID3D12GraphicsCommandList5 *This,
  21928         UINT root_parameter_index,
  21929         UINT data,
  21930         UINT dst_offset);
  21931 
  21932     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant)(
  21933         ID3D12GraphicsCommandList5 *This,
  21934         UINT root_parameter_index,
  21935         UINT data,
  21936         UINT dst_offset);
  21937 
  21938     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstants)(
  21939         ID3D12GraphicsCommandList5 *This,
  21940         UINT root_parameter_index,
  21941         UINT constant_count,
  21942         const void *data,
  21943         UINT dst_offset);
  21944 
  21945     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants)(
  21946         ID3D12GraphicsCommandList5 *This,
  21947         UINT root_parameter_index,
  21948         UINT constant_count,
  21949         const void *data,
  21950         UINT dst_offset);
  21951 
  21952     void (STDMETHODCALLTYPE *SetComputeRootConstantBufferView)(
  21953         ID3D12GraphicsCommandList5 *This,
  21954         UINT root_parameter_index,
  21955         D3D12_GPU_VIRTUAL_ADDRESS address);
  21956 
  21957     void (STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView)(
  21958         ID3D12GraphicsCommandList5 *This,
  21959         UINT root_parameter_index,
  21960         D3D12_GPU_VIRTUAL_ADDRESS address);
  21961 
  21962     void (STDMETHODCALLTYPE *SetComputeRootShaderResourceView)(
  21963         ID3D12GraphicsCommandList5 *This,
  21964         UINT root_parameter_index,
  21965         D3D12_GPU_VIRTUAL_ADDRESS address);
  21966 
  21967     void (STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView)(
  21968         ID3D12GraphicsCommandList5 *This,
  21969         UINT root_parameter_index,
  21970         D3D12_GPU_VIRTUAL_ADDRESS address);
  21971 
  21972     void (STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView)(
  21973         ID3D12GraphicsCommandList5 *This,
  21974         UINT root_parameter_index,
  21975         D3D12_GPU_VIRTUAL_ADDRESS address);
  21976 
  21977     void (STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView)(
  21978         ID3D12GraphicsCommandList5 *This,
  21979         UINT root_parameter_index,
  21980         D3D12_GPU_VIRTUAL_ADDRESS address);
  21981 
  21982     void (STDMETHODCALLTYPE *IASetIndexBuffer)(
  21983         ID3D12GraphicsCommandList5 *This,
  21984         const D3D12_INDEX_BUFFER_VIEW *view);
  21985 
  21986     void (STDMETHODCALLTYPE *IASetVertexBuffers)(
  21987         ID3D12GraphicsCommandList5 *This,
  21988         UINT start_slot,
  21989         UINT view_count,
  21990         const D3D12_VERTEX_BUFFER_VIEW *views);
  21991 
  21992     void (STDMETHODCALLTYPE *SOSetTargets)(
  21993         ID3D12GraphicsCommandList5 *This,
  21994         UINT start_slot,
  21995         UINT view_count,
  21996         const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views);
  21997 
  21998     void (STDMETHODCALLTYPE *OMSetRenderTargets)(
  21999         ID3D12GraphicsCommandList5 *This,
  22000         UINT render_target_descriptor_count,
  22001         const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
  22002         WINBOOL single_descriptor_handle,
  22003         const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor);
  22004 
  22005     void (STDMETHODCALLTYPE *ClearDepthStencilView)(
  22006         ID3D12GraphicsCommandList5 *This,
  22007         D3D12_CPU_DESCRIPTOR_HANDLE dsv,
  22008         D3D12_CLEAR_FLAGS flags,
  22009         FLOAT depth,
  22010         UINT8 stencil,
  22011         UINT rect_count,
  22012         const D3D12_RECT *rects);
  22013 
  22014     void (STDMETHODCALLTYPE *ClearRenderTargetView)(
  22015         ID3D12GraphicsCommandList5 *This,
  22016         D3D12_CPU_DESCRIPTOR_HANDLE rtv,
  22017         const FLOAT color[4],
  22018         UINT rect_count,
  22019         const D3D12_RECT *rects);
  22020 
  22021     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewUint)(
  22022         ID3D12GraphicsCommandList5 *This,
  22023         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  22024         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
  22025         ID3D12Resource *resource,
  22026         const UINT values[4],
  22027         UINT rect_count,
  22028         const D3D12_RECT *rects);
  22029 
  22030     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat)(
  22031         ID3D12GraphicsCommandList5 *This,
  22032         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  22033         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
  22034         ID3D12Resource *resource,
  22035         const float values[4],
  22036         UINT rect_count,
  22037         const D3D12_RECT *rects);
  22038 
  22039     void (STDMETHODCALLTYPE *DiscardResource)(
  22040         ID3D12GraphicsCommandList5 *This,
  22041         ID3D12Resource *resource,
  22042         const D3D12_DISCARD_REGION *region);
  22043 
  22044     void (STDMETHODCALLTYPE *BeginQuery)(
  22045         ID3D12GraphicsCommandList5 *This,
  22046         ID3D12QueryHeap *heap,
  22047         D3D12_QUERY_TYPE type,
  22048         UINT index);
  22049 
  22050     void (STDMETHODCALLTYPE *EndQuery)(
  22051         ID3D12GraphicsCommandList5 *This,
  22052         ID3D12QueryHeap *heap,
  22053         D3D12_QUERY_TYPE type,
  22054         UINT index);
  22055 
  22056     void (STDMETHODCALLTYPE *ResolveQueryData)(
  22057         ID3D12GraphicsCommandList5 *This,
  22058         ID3D12QueryHeap *heap,
  22059         D3D12_QUERY_TYPE type,
  22060         UINT start_index,
  22061         UINT query_count,
  22062         ID3D12Resource *dst_buffer,
  22063         UINT64 aligned_dst_buffer_offset);
  22064 
  22065     void (STDMETHODCALLTYPE *SetPredication)(
  22066         ID3D12GraphicsCommandList5 *This,
  22067         ID3D12Resource *buffer,
  22068         UINT64 aligned_buffer_offset,
  22069         D3D12_PREDICATION_OP operation);
  22070 
  22071     void (STDMETHODCALLTYPE *SetMarker)(
  22072         ID3D12GraphicsCommandList5 *This,
  22073         UINT metadata,
  22074         const void *data,
  22075         UINT size);
  22076 
  22077     void (STDMETHODCALLTYPE *BeginEvent)(
  22078         ID3D12GraphicsCommandList5 *This,
  22079         UINT metadata,
  22080         const void *data,
  22081         UINT size);
  22082 
  22083     void (STDMETHODCALLTYPE *EndEvent)(
  22084         ID3D12GraphicsCommandList5 *This);
  22085 
  22086     void (STDMETHODCALLTYPE *ExecuteIndirect)(
  22087         ID3D12GraphicsCommandList5 *This,
  22088         ID3D12CommandSignature *command_signature,
  22089         UINT max_command_count,
  22090         ID3D12Resource *arg_buffer,
  22091         UINT64 arg_buffer_offset,
  22092         ID3D12Resource *count_buffer,
  22093         UINT64 count_buffer_offset);
  22094 
  22095     /*** ID3D12GraphicsCommandList1 methods ***/
  22096     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT)(
  22097         ID3D12GraphicsCommandList5 *This,
  22098         ID3D12Resource *dst_buffer,
  22099         UINT64 dst_offset,
  22100         ID3D12Resource *src_buffer,
  22101         UINT64 src_offset,
  22102         UINT dependent_resource_count,
  22103         ID3D12Resource *const *dependent_resources,
  22104         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  22105 
  22106     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT64)(
  22107         ID3D12GraphicsCommandList5 *This,
  22108         ID3D12Resource *dst_buffer,
  22109         UINT64 dst_offset,
  22110         ID3D12Resource *src_buffer,
  22111         UINT64 src_offset,
  22112         UINT dependent_resource_count,
  22113         ID3D12Resource *const *dependent_resources,
  22114         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  22115 
  22116     void (STDMETHODCALLTYPE *OMSetDepthBounds)(
  22117         ID3D12GraphicsCommandList5 *This,
  22118         FLOAT min,
  22119         FLOAT max);
  22120 
  22121     void (STDMETHODCALLTYPE *SetSamplePositions)(
  22122         ID3D12GraphicsCommandList5 *This,
  22123         UINT sample_count,
  22124         UINT pixel_count,
  22125         D3D12_SAMPLE_POSITION *sample_positions);
  22126 
  22127     void (STDMETHODCALLTYPE *ResolveSubresourceRegion)(
  22128         ID3D12GraphicsCommandList5 *This,
  22129         ID3D12Resource *dst_resource,
  22130         UINT dst_sub_resource_idx,
  22131         UINT dst_x,
  22132         UINT dst_y,
  22133         ID3D12Resource *src_resource,
  22134         UINT src_sub_resource_idx,
  22135         D3D12_RECT *src_rect,
  22136         DXGI_FORMAT format,
  22137         D3D12_RESOLVE_MODE mode);
  22138 
  22139     void (STDMETHODCALLTYPE *SetViewInstanceMask)(
  22140         ID3D12GraphicsCommandList5 *This,
  22141         UINT mask);
  22142 
  22143     /*** ID3D12GraphicsCommandList2 methods ***/
  22144     void (STDMETHODCALLTYPE *WriteBufferImmediate)(
  22145         ID3D12GraphicsCommandList5 *This,
  22146         UINT count,
  22147         const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,
  22148         const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
  22149 
  22150     /*** ID3D12GraphicsCommandList3 methods ***/
  22151     void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
  22152         ID3D12GraphicsCommandList5 *This,
  22153         ID3D12ProtectedResourceSession *protected_resource_session);
  22154 
  22155     /*** ID3D12GraphicsCommandList4 methods ***/
  22156     void (STDMETHODCALLTYPE *BeginRenderPass)(
  22157         ID3D12GraphicsCommandList5 *This,
  22158         UINT render_targets_count,
  22159         const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,
  22160         const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,
  22161         D3D12_RENDER_PASS_FLAGS flags);
  22162 
  22163     void (STDMETHODCALLTYPE *EndRenderPass)(
  22164         ID3D12GraphicsCommandList5 *This);
  22165 
  22166     void (STDMETHODCALLTYPE *InitializeMetaCommand)(
  22167         ID3D12GraphicsCommandList5 *This,
  22168         ID3D12MetaCommand *meta_command,
  22169         const void *initialization_parameters_data,
  22170         SIZE_T initialization_parameters_data_size_in_bytes);
  22171 
  22172     void (STDMETHODCALLTYPE *ExecuteMetaCommand)(
  22173         ID3D12GraphicsCommandList5 *This,
  22174         ID3D12MetaCommand *meta_command,
  22175         const void *execution_parameters_data,
  22176         SIZE_T execution_parameters_data_size_in_bytes);
  22177 
  22178     void (STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure)(
  22179         ID3D12GraphicsCommandList5 *This,
  22180         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,
  22181         UINT postbuild_info_descs_count,
  22182         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs);
  22183 
  22184     void (STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo)(
  22185         ID3D12GraphicsCommandList5 *This,
  22186         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,
  22187         UINT src_acceleration_structures_count,
  22188         const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data);
  22189 
  22190     void (STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure)(
  22191         ID3D12GraphicsCommandList5 *This,
  22192         D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,
  22193         D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,
  22194         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode);
  22195 
  22196     void (STDMETHODCALLTYPE *SetPipelineState1)(
  22197         ID3D12GraphicsCommandList5 *This,
  22198         ID3D12StateObject *state_object);
  22199 
  22200     void (STDMETHODCALLTYPE *DispatchRays)(
  22201         ID3D12GraphicsCommandList5 *This,
  22202         const D3D12_DISPATCH_RAYS_DESC *desc);
  22203 
  22204     /*** ID3D12GraphicsCommandList5 methods ***/
  22205     void (STDMETHODCALLTYPE *RSSetShadingRate)(
  22206         ID3D12GraphicsCommandList5 *This,
  22207         D3D12_SHADING_RATE base_shading_rate,
  22208         const D3D12_SHADING_RATE_COMBINER *combiners);
  22209 
  22210     void (STDMETHODCALLTYPE *RSSetShadingRateImage)(
  22211         ID3D12GraphicsCommandList5 *This,
  22212         ID3D12Resource *shading_rate_image);
  22213 
  22214     END_INTERFACE
  22215 } ID3D12GraphicsCommandList5Vtbl;
  22216 
  22217 interface ID3D12GraphicsCommandList5 {
  22218     CONST_VTBL ID3D12GraphicsCommandList5Vtbl* lpVtbl;
  22219 };
  22220 
  22221 #ifdef COBJMACROS
  22222 #ifndef WIDL_C_INLINE_WRAPPERS
  22223 /*** IUnknown methods ***/
  22224 #define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  22225 #define ID3D12GraphicsCommandList5_AddRef(This) (This)->lpVtbl->AddRef(This)
  22226 #define ID3D12GraphicsCommandList5_Release(This) (This)->lpVtbl->Release(This)
  22227 /*** ID3D12Object methods ***/
  22228 #define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  22229 #define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  22230 #define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  22231 #define ID3D12GraphicsCommandList5_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  22232 /*** ID3D12DeviceChild methods ***/
  22233 #define ID3D12GraphicsCommandList5_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  22234 /*** ID3D12CommandList methods ***/
  22235 #define ID3D12GraphicsCommandList5_GetType(This) (This)->lpVtbl->GetType(This)
  22236 /*** ID3D12GraphicsCommandList methods ***/
  22237 #define ID3D12GraphicsCommandList5_Close(This) (This)->lpVtbl->Close(This)
  22238 #define ID3D12GraphicsCommandList5_Reset(This,allocator,initial_state) (This)->lpVtbl->Reset(This,allocator,initial_state)
  22239 #define ID3D12GraphicsCommandList5_ClearState(This,pipeline_state) (This)->lpVtbl->ClearState(This,pipeline_state)
  22240 #define ID3D12GraphicsCommandList5_DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location) (This)->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location)
  22241 #define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location) (This)->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location)
  22242 #define ID3D12GraphicsCommandList5_Dispatch(This,x,u,z) (This)->lpVtbl->Dispatch(This,x,u,z)
  22243 #define ID3D12GraphicsCommandList5_CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count) (This)->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count)
  22244 #define ID3D12GraphicsCommandList5_CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box) (This)->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box)
  22245 #define ID3D12GraphicsCommandList5_CopyResource(This,dst_resource,src_resource) (This)->lpVtbl->CopyResource(This,dst_resource,src_resource)
  22246 #define ID3D12GraphicsCommandList5_CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags) (This)->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags)
  22247 #define ID3D12GraphicsCommandList5_ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format) (This)->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format)
  22248 #define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,primitive_topology) (This)->lpVtbl->IASetPrimitiveTopology(This,primitive_topology)
  22249 #define ID3D12GraphicsCommandList5_RSSetViewports(This,viewport_count,viewports) (This)->lpVtbl->RSSetViewports(This,viewport_count,viewports)
  22250 #define ID3D12GraphicsCommandList5_RSSetScissorRects(This,rect_count,rects) (This)->lpVtbl->RSSetScissorRects(This,rect_count,rects)
  22251 #define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,blend_factor) (This)->lpVtbl->OMSetBlendFactor(This,blend_factor)
  22252 #define ID3D12GraphicsCommandList5_OMSetStencilRef(This,stencil_ref) (This)->lpVtbl->OMSetStencilRef(This,stencil_ref)
  22253 #define ID3D12GraphicsCommandList5_SetPipelineState(This,pipeline_state) (This)->lpVtbl->SetPipelineState(This,pipeline_state)
  22254 #define ID3D12GraphicsCommandList5_ResourceBarrier(This,barrier_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barrier_count,barriers)
  22255 #define ID3D12GraphicsCommandList5_ExecuteBundle(This,command_list) (This)->lpVtbl->ExecuteBundle(This,command_list)
  22256 #define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,heap_count,heaps) (This)->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps)
  22257 #define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,root_signature) (This)->lpVtbl->SetComputeRootSignature(This,root_signature)
  22258 #define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,root_signature) (This)->lpVtbl->SetGraphicsRootSignature(This,root_signature)
  22259 #define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor)
  22260 #define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor)
  22261 #define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset)
  22262 #define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset)
  22263 #define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
  22264 #define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
  22265 #define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address)
  22266 #define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address)
  22267 #define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address)
  22268 #define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address)
  22269 #define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address)
  22270 #define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address)
  22271 #define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,view) (This)->lpVtbl->IASetIndexBuffer(This,view)
  22272 #define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,start_slot,view_count,views) (This)->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views)
  22273 #define ID3D12GraphicsCommandList5_SOSetTargets(This,start_slot,view_count,views) (This)->lpVtbl->SOSetTargets(This,start_slot,view_count,views)
  22274 #define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor) (This)->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor)
  22275 #define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects) (This)->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects)
  22276 #define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,rtv,color,rect_count,rects) (This)->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects)
  22277 #define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
  22278 #define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
  22279 #define ID3D12GraphicsCommandList5_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
  22280 #define ID3D12GraphicsCommandList5_BeginQuery(This,heap,type,index) (This)->lpVtbl->BeginQuery(This,heap,type,index)
  22281 #define ID3D12GraphicsCommandList5_EndQuery(This,heap,type,index) (This)->lpVtbl->EndQuery(This,heap,type,index)
  22282 #define ID3D12GraphicsCommandList5_ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset)
  22283 #define ID3D12GraphicsCommandList5_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
  22284 #define ID3D12GraphicsCommandList5_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
  22285 #define ID3D12GraphicsCommandList5_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
  22286 #define ID3D12GraphicsCommandList5_EndEvent(This) (This)->lpVtbl->EndEvent(This)
  22287 #define ID3D12GraphicsCommandList5_ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset) (This)->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset)
  22288 /*** ID3D12GraphicsCommandList1 methods ***/
  22289 #define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
  22290 #define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
  22291 #define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,min,max) (This)->lpVtbl->OMSetDepthBounds(This,min,max)
  22292 #define ID3D12GraphicsCommandList5_SetSamplePositions(This,sample_count,pixel_count,sample_positions) (This)->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions)
  22293 #define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode) (This)->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode)
  22294 #define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,mask) (This)->lpVtbl->SetViewInstanceMask(This,mask)
  22295 /*** ID3D12GraphicsCommandList2 methods ***/
  22296 #define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,count,parameters,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,parameters,modes)
  22297 /*** ID3D12GraphicsCommandList3 methods ***/
  22298 #define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
  22299 /*** ID3D12GraphicsCommandList4 methods ***/
  22300 #define ID3D12GraphicsCommandList5_BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags) (This)->lpVtbl->BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags)
  22301 #define ID3D12GraphicsCommandList5_EndRenderPass(This) (This)->lpVtbl->EndRenderPass(This)
  22302 #define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes) (This)->lpVtbl->InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes)
  22303 #define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes) (This)->lpVtbl->ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes)
  22304 #define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs) (This)->lpVtbl->BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs)
  22305 #define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data) (This)->lpVtbl->EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data)
  22306 #define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode) (This)->lpVtbl->CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode)
  22307 #define ID3D12GraphicsCommandList5_SetPipelineState1(This,state_object) (This)->lpVtbl->SetPipelineState1(This,state_object)
  22308 #define ID3D12GraphicsCommandList5_DispatchRays(This,desc) (This)->lpVtbl->DispatchRays(This,desc)
  22309 /*** ID3D12GraphicsCommandList5 methods ***/
  22310 #define ID3D12GraphicsCommandList5_RSSetShadingRate(This,base_shading_rate,combiners) (This)->lpVtbl->RSSetShadingRate(This,base_shading_rate,combiners)
  22311 #define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shading_rate_image) (This)->lpVtbl->RSSetShadingRateImage(This,shading_rate_image)
  22312 #else
  22313 /*** IUnknown methods ***/
  22314 static inline HRESULT ID3D12GraphicsCommandList5_QueryInterface(ID3D12GraphicsCommandList5* This,REFIID riid,void **ppvObject) {
  22315     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  22316 }
  22317 static inline ULONG ID3D12GraphicsCommandList5_AddRef(ID3D12GraphicsCommandList5* This) {
  22318     return This->lpVtbl->AddRef(This);
  22319 }
  22320 static inline ULONG ID3D12GraphicsCommandList5_Release(ID3D12GraphicsCommandList5* This) {
  22321     return This->lpVtbl->Release(This);
  22322 }
  22323 /*** ID3D12Object methods ***/
  22324 static inline HRESULT ID3D12GraphicsCommandList5_GetPrivateData(ID3D12GraphicsCommandList5* This,REFGUID guid,UINT *data_size,void *data) {
  22325     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  22326 }
  22327 static inline HRESULT ID3D12GraphicsCommandList5_SetPrivateData(ID3D12GraphicsCommandList5* This,REFGUID guid,UINT data_size,const void *data) {
  22328     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  22329 }
  22330 static inline HRESULT ID3D12GraphicsCommandList5_SetPrivateDataInterface(ID3D12GraphicsCommandList5* This,REFGUID guid,const IUnknown *data) {
  22331     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  22332 }
  22333 static inline HRESULT ID3D12GraphicsCommandList5_SetName(ID3D12GraphicsCommandList5* This,const WCHAR *name) {
  22334     return This->lpVtbl->SetName(This,name);
  22335 }
  22336 /*** ID3D12DeviceChild methods ***/
  22337 static inline HRESULT ID3D12GraphicsCommandList5_GetDevice(ID3D12GraphicsCommandList5* This,REFIID riid,void **device) {
  22338     return This->lpVtbl->GetDevice(This,riid,device);
  22339 }
  22340 /*** ID3D12CommandList methods ***/
  22341 static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList5_GetType(ID3D12GraphicsCommandList5* This) {
  22342     return This->lpVtbl->GetType(This);
  22343 }
  22344 /*** ID3D12GraphicsCommandList methods ***/
  22345 static inline HRESULT ID3D12GraphicsCommandList5_Close(ID3D12GraphicsCommandList5* This) {
  22346     return This->lpVtbl->Close(This);
  22347 }
  22348 static inline HRESULT ID3D12GraphicsCommandList5_Reset(ID3D12GraphicsCommandList5* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
  22349     return This->lpVtbl->Reset(This,allocator,initial_state);
  22350 }
  22351 static inline void ID3D12GraphicsCommandList5_ClearState(ID3D12GraphicsCommandList5* This,ID3D12PipelineState *pipeline_state) {
  22352     This->lpVtbl->ClearState(This,pipeline_state);
  22353 }
  22354 static inline void ID3D12GraphicsCommandList5_DrawInstanced(ID3D12GraphicsCommandList5* This,UINT vertex_count_per_instance,UINT instance_count,UINT start_vertex_location,UINT start_instance_location) {
  22355     This->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location);
  22356 }
  22357 static inline void ID3D12GraphicsCommandList5_DrawIndexedInstanced(ID3D12GraphicsCommandList5* This,UINT index_count_per_instance,UINT instance_count,UINT start_vertex_location,INT base_vertex_location,UINT start_instance_location) {
  22358     This->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location);
  22359 }
  22360 static inline void ID3D12GraphicsCommandList5_Dispatch(ID3D12GraphicsCommandList5* This,UINT x,UINT u,UINT z) {
  22361     This->lpVtbl->Dispatch(This,x,u,z);
  22362 }
  22363 static inline void ID3D12GraphicsCommandList5_CopyBufferRegion(ID3D12GraphicsCommandList5* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT64 byte_count) {
  22364     This->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count);
  22365 }
  22366 static inline void ID3D12GraphicsCommandList5_CopyTextureRegion(ID3D12GraphicsCommandList5* This,const D3D12_TEXTURE_COPY_LOCATION *dst,UINT dst_x,UINT dst_y,UINT dst_z,const D3D12_TEXTURE_COPY_LOCATION *src,const D3D12_BOX *src_box) {
  22367     This->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box);
  22368 }
  22369 static inline void ID3D12GraphicsCommandList5_CopyResource(ID3D12GraphicsCommandList5* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
  22370     This->lpVtbl->CopyResource(This,dst_resource,src_resource);
  22371 }
  22372 static inline void ID3D12GraphicsCommandList5_CopyTiles(ID3D12GraphicsCommandList5* This,ID3D12Resource *tiled_resource,const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,const D3D12_TILE_REGION_SIZE *tile_region_size,ID3D12Resource *buffer,UINT64 buffer_offset,D3D12_TILE_COPY_FLAGS flags) {
  22373     This->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags);
  22374 }
  22375 static inline void ID3D12GraphicsCommandList5_ResolveSubresource(ID3D12GraphicsCommandList5* This,ID3D12Resource *dst_resource,UINT dst_sub_resource,ID3D12Resource *src_resource,UINT src_sub_resource,DXGI_FORMAT format) {
  22376     This->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format);
  22377 }
  22378 static inline void ID3D12GraphicsCommandList5_IASetPrimitiveTopology(ID3D12GraphicsCommandList5* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
  22379     This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
  22380 }
  22381 static inline void ID3D12GraphicsCommandList5_RSSetViewports(ID3D12GraphicsCommandList5* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
  22382     This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
  22383 }
  22384 static inline void ID3D12GraphicsCommandList5_RSSetScissorRects(ID3D12GraphicsCommandList5* This,UINT rect_count,const D3D12_RECT *rects) {
  22385     This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
  22386 }
  22387 static inline void ID3D12GraphicsCommandList5_OMSetBlendFactor(ID3D12GraphicsCommandList5* This,const FLOAT blend_factor[4]) {
  22388     This->lpVtbl->OMSetBlendFactor(This,blend_factor);
  22389 }
  22390 static inline void ID3D12GraphicsCommandList5_OMSetStencilRef(ID3D12GraphicsCommandList5* This,UINT stencil_ref) {
  22391     This->lpVtbl->OMSetStencilRef(This,stencil_ref);
  22392 }
  22393 static inline void ID3D12GraphicsCommandList5_SetPipelineState(ID3D12GraphicsCommandList5* This,ID3D12PipelineState *pipeline_state) {
  22394     This->lpVtbl->SetPipelineState(This,pipeline_state);
  22395 }
  22396 static inline void ID3D12GraphicsCommandList5_ResourceBarrier(ID3D12GraphicsCommandList5* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
  22397     This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
  22398 }
  22399 static inline void ID3D12GraphicsCommandList5_ExecuteBundle(ID3D12GraphicsCommandList5* This,ID3D12GraphicsCommandList *command_list) {
  22400     This->lpVtbl->ExecuteBundle(This,command_list);
  22401 }
  22402 static inline void ID3D12GraphicsCommandList5_SetDescriptorHeaps(ID3D12GraphicsCommandList5* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
  22403     This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
  22404 }
  22405 static inline void ID3D12GraphicsCommandList5_SetComputeRootSignature(ID3D12GraphicsCommandList5* This,ID3D12RootSignature *root_signature) {
  22406     This->lpVtbl->SetComputeRootSignature(This,root_signature);
  22407 }
  22408 static inline void ID3D12GraphicsCommandList5_SetGraphicsRootSignature(ID3D12GraphicsCommandList5* This,ID3D12RootSignature *root_signature) {
  22409     This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
  22410 }
  22411 static inline void ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
  22412     This->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor);
  22413 }
  22414 static inline void ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
  22415     This->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor);
  22416 }
  22417 static inline void ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
  22418     This->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset);
  22419 }
  22420 static inline void ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
  22421     This->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset);
  22422 }
  22423 static inline void ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
  22424     This->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
  22425 }
  22426 static inline void ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
  22427     This->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
  22428 }
  22429 static inline void ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  22430     This->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address);
  22431 }
  22432 static inline void ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  22433     This->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address);
  22434 }
  22435 static inline void ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  22436     This->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address);
  22437 }
  22438 static inline void ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  22439     This->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address);
  22440 }
  22441 static inline void ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  22442     This->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address);
  22443 }
  22444 static inline void ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(ID3D12GraphicsCommandList5* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  22445     This->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address);
  22446 }
  22447 static inline void ID3D12GraphicsCommandList5_IASetIndexBuffer(ID3D12GraphicsCommandList5* This,const D3D12_INDEX_BUFFER_VIEW *view) {
  22448     This->lpVtbl->IASetIndexBuffer(This,view);
  22449 }
  22450 static inline void ID3D12GraphicsCommandList5_IASetVertexBuffers(ID3D12GraphicsCommandList5* This,UINT start_slot,UINT view_count,const D3D12_VERTEX_BUFFER_VIEW *views) {
  22451     This->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views);
  22452 }
  22453 static inline void ID3D12GraphicsCommandList5_SOSetTargets(ID3D12GraphicsCommandList5* This,UINT start_slot,UINT view_count,const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views) {
  22454     This->lpVtbl->SOSetTargets(This,start_slot,view_count,views);
  22455 }
  22456 static inline void ID3D12GraphicsCommandList5_OMSetRenderTargets(ID3D12GraphicsCommandList5* This,UINT render_target_descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,WINBOOL single_descriptor_handle,const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor) {
  22457     This->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor);
  22458 }
  22459 static inline void ID3D12GraphicsCommandList5_ClearDepthStencilView(ID3D12GraphicsCommandList5* This,D3D12_CPU_DESCRIPTOR_HANDLE dsv,D3D12_CLEAR_FLAGS flags,FLOAT depth,UINT8 stencil,UINT rect_count,const D3D12_RECT *rects) {
  22460     This->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects);
  22461 }
  22462 static inline void ID3D12GraphicsCommandList5_ClearRenderTargetView(ID3D12GraphicsCommandList5* This,D3D12_CPU_DESCRIPTOR_HANDLE rtv,const FLOAT color[4],UINT rect_count,const D3D12_RECT *rects) {
  22463     This->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects);
  22464 }
  22465 static inline void ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(ID3D12GraphicsCommandList5* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const UINT values[4],UINT rect_count,const D3D12_RECT *rects) {
  22466     This->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
  22467 }
  22468 static inline void ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(ID3D12GraphicsCommandList5* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const float values[4],UINT rect_count,const D3D12_RECT *rects) {
  22469     This->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
  22470 }
  22471 static inline void ID3D12GraphicsCommandList5_DiscardResource(ID3D12GraphicsCommandList5* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
  22472     This->lpVtbl->DiscardResource(This,resource,region);
  22473 }
  22474 static inline void ID3D12GraphicsCommandList5_BeginQuery(ID3D12GraphicsCommandList5* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
  22475     This->lpVtbl->BeginQuery(This,heap,type,index);
  22476 }
  22477 static inline void ID3D12GraphicsCommandList5_EndQuery(ID3D12GraphicsCommandList5* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
  22478     This->lpVtbl->EndQuery(This,heap,type,index);
  22479 }
  22480 static inline void ID3D12GraphicsCommandList5_ResolveQueryData(ID3D12GraphicsCommandList5* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT start_index,UINT query_count,ID3D12Resource *dst_buffer,UINT64 aligned_dst_buffer_offset) {
  22481     This->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset);
  22482 }
  22483 static inline void ID3D12GraphicsCommandList5_SetPredication(ID3D12GraphicsCommandList5* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
  22484     This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
  22485 }
  22486 static inline void ID3D12GraphicsCommandList5_SetMarker(ID3D12GraphicsCommandList5* This,UINT metadata,const void *data,UINT size) {
  22487     This->lpVtbl->SetMarker(This,metadata,data,size);
  22488 }
  22489 static inline void ID3D12GraphicsCommandList5_BeginEvent(ID3D12GraphicsCommandList5* This,UINT metadata,const void *data,UINT size) {
  22490     This->lpVtbl->BeginEvent(This,metadata,data,size);
  22491 }
  22492 static inline void ID3D12GraphicsCommandList5_EndEvent(ID3D12GraphicsCommandList5* This) {
  22493     This->lpVtbl->EndEvent(This);
  22494 }
  22495 static inline void ID3D12GraphicsCommandList5_ExecuteIndirect(ID3D12GraphicsCommandList5* This,ID3D12CommandSignature *command_signature,UINT max_command_count,ID3D12Resource *arg_buffer,UINT64 arg_buffer_offset,ID3D12Resource *count_buffer,UINT64 count_buffer_offset) {
  22496     This->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset);
  22497 }
  22498 /*** ID3D12GraphicsCommandList1 methods ***/
  22499 static inline void ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(ID3D12GraphicsCommandList5* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
  22500     This->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
  22501 }
  22502 static inline void ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(ID3D12GraphicsCommandList5* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
  22503     This->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
  22504 }
  22505 static inline void ID3D12GraphicsCommandList5_OMSetDepthBounds(ID3D12GraphicsCommandList5* This,FLOAT min,FLOAT max) {
  22506     This->lpVtbl->OMSetDepthBounds(This,min,max);
  22507 }
  22508 static inline void ID3D12GraphicsCommandList5_SetSamplePositions(ID3D12GraphicsCommandList5* This,UINT sample_count,UINT pixel_count,D3D12_SAMPLE_POSITION *sample_positions) {
  22509     This->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions);
  22510 }
  22511 static inline void ID3D12GraphicsCommandList5_ResolveSubresourceRegion(ID3D12GraphicsCommandList5* This,ID3D12Resource *dst_resource,UINT dst_sub_resource_idx,UINT dst_x,UINT dst_y,ID3D12Resource *src_resource,UINT src_sub_resource_idx,D3D12_RECT *src_rect,DXGI_FORMAT format,D3D12_RESOLVE_MODE mode) {
  22512     This->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode);
  22513 }
  22514 static inline void ID3D12GraphicsCommandList5_SetViewInstanceMask(ID3D12GraphicsCommandList5* This,UINT mask) {
  22515     This->lpVtbl->SetViewInstanceMask(This,mask);
  22516 }
  22517 /*** ID3D12GraphicsCommandList2 methods ***/
  22518 static inline void ID3D12GraphicsCommandList5_WriteBufferImmediate(ID3D12GraphicsCommandList5* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
  22519     This->lpVtbl->WriteBufferImmediate(This,count,parameters,modes);
  22520 }
  22521 /*** ID3D12GraphicsCommandList3 methods ***/
  22522 static inline void ID3D12GraphicsCommandList5_SetProtectedResourceSession(ID3D12GraphicsCommandList5* This,ID3D12ProtectedResourceSession *protected_resource_session) {
  22523     This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
  22524 }
  22525 /*** ID3D12GraphicsCommandList4 methods ***/
  22526 static inline void ID3D12GraphicsCommandList5_BeginRenderPass(ID3D12GraphicsCommandList5* This,UINT render_targets_count,const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,D3D12_RENDER_PASS_FLAGS flags) {
  22527     This->lpVtbl->BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags);
  22528 }
  22529 static inline void ID3D12GraphicsCommandList5_EndRenderPass(ID3D12GraphicsCommandList5* This) {
  22530     This->lpVtbl->EndRenderPass(This);
  22531 }
  22532 static inline void ID3D12GraphicsCommandList5_InitializeMetaCommand(ID3D12GraphicsCommandList5* This,ID3D12MetaCommand *meta_command,const void *initialization_parameters_data,SIZE_T initialization_parameters_data_size_in_bytes) {
  22533     This->lpVtbl->InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes);
  22534 }
  22535 static inline void ID3D12GraphicsCommandList5_ExecuteMetaCommand(ID3D12GraphicsCommandList5* This,ID3D12MetaCommand *meta_command,const void *execution_parameters_data,SIZE_T execution_parameters_data_size_in_bytes) {
  22536     This->lpVtbl->ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes);
  22537 }
  22538 static inline void ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(ID3D12GraphicsCommandList5* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,UINT postbuild_info_descs_count,const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs) {
  22539     This->lpVtbl->BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs);
  22540 }
  22541 static inline void ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(ID3D12GraphicsCommandList5* This,const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,UINT src_acceleration_structures_count,const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data) {
  22542     This->lpVtbl->EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data);
  22543 }
  22544 static inline void ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(ID3D12GraphicsCommandList5* This,D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode) {
  22545     This->lpVtbl->CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode);
  22546 }
  22547 static inline void ID3D12GraphicsCommandList5_SetPipelineState1(ID3D12GraphicsCommandList5* This,ID3D12StateObject *state_object) {
  22548     This->lpVtbl->SetPipelineState1(This,state_object);
  22549 }
  22550 static inline void ID3D12GraphicsCommandList5_DispatchRays(ID3D12GraphicsCommandList5* This,const D3D12_DISPATCH_RAYS_DESC *desc) {
  22551     This->lpVtbl->DispatchRays(This,desc);
  22552 }
  22553 /*** ID3D12GraphicsCommandList5 methods ***/
  22554 static inline void ID3D12GraphicsCommandList5_RSSetShadingRate(ID3D12GraphicsCommandList5* This,D3D12_SHADING_RATE base_shading_rate,const D3D12_SHADING_RATE_COMBINER *combiners) {
  22555     This->lpVtbl->RSSetShadingRate(This,base_shading_rate,combiners);
  22556 }
  22557 static inline void ID3D12GraphicsCommandList5_RSSetShadingRateImage(ID3D12GraphicsCommandList5* This,ID3D12Resource *shading_rate_image) {
  22558     This->lpVtbl->RSSetShadingRateImage(This,shading_rate_image);
  22559 }
  22560 #endif
  22561 #endif
  22562 
  22563 #endif
  22564 
  22565 
  22566 #endif  /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
  22567 
  22568 #define D3D12_SHADING_RATE_X_AXIS_SHIFT (2)
  22569 
  22570 #define D3D12_SHADING_RATE_VALID_MASK (3)
  22571 
  22572 #define D3D12_MAKE_COARSE_SHADING_RATE(x, y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))
  22573 #define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(val) (((val) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)
  22574 #define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(val) ((val) & D3D12_SHADING_RATE_VALID_MASK)
  22575 typedef struct D3D12_DISPATCH_MESH_ARGUMENTS {
  22576     UINT ThreadGroupCountX;
  22577     UINT ThreadGroupCountY;
  22578     UINT ThreadGroupCountZ;
  22579 } D3D12_DISPATCH_MESH_ARGUMENTS;
  22580 /*****************************************************************************
  22581  * ID3D12GraphicsCommandList6 interface
  22582  */
  22583 #ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
  22584 #define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
  22585 
  22586 DEFINE_GUID(IID_ID3D12GraphicsCommandList6, 0xc3827890, 0xe548, 0x4cfa, 0x96,0xcf, 0x56,0x89,0xa9,0x37,0x0f,0x80);
  22587 #if defined(__cplusplus) && !defined(CINTERFACE)
  22588 MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
  22589 ID3D12GraphicsCommandList6 : public ID3D12GraphicsCommandList5
  22590 {
  22591     virtual void STDMETHODCALLTYPE DispatchMesh(
  22592         UINT thread_group_count_x,
  22593         UINT thread_group_count_y,
  22594         UINT thread_group_count_z) = 0;
  22595 
  22596 };
  22597 #ifdef __CRT_UUID_DECL
  22598 __CRT_UUID_DECL(ID3D12GraphicsCommandList6, 0xc3827890, 0xe548, 0x4cfa, 0x96,0xcf, 0x56,0x89,0xa9,0x37,0x0f,0x80)
  22599 #endif
  22600 #else
  22601 typedef struct ID3D12GraphicsCommandList6Vtbl {
  22602     BEGIN_INTERFACE
  22603 
  22604     /*** IUnknown methods ***/
  22605     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  22606         ID3D12GraphicsCommandList6 *This,
  22607         REFIID riid,
  22608         void **ppvObject);
  22609 
  22610     ULONG (STDMETHODCALLTYPE *AddRef)(
  22611         ID3D12GraphicsCommandList6 *This);
  22612 
  22613     ULONG (STDMETHODCALLTYPE *Release)(
  22614         ID3D12GraphicsCommandList6 *This);
  22615 
  22616     /*** ID3D12Object methods ***/
  22617     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  22618         ID3D12GraphicsCommandList6 *This,
  22619         REFGUID guid,
  22620         UINT *data_size,
  22621         void *data);
  22622 
  22623     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  22624         ID3D12GraphicsCommandList6 *This,
  22625         REFGUID guid,
  22626         UINT data_size,
  22627         const void *data);
  22628 
  22629     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  22630         ID3D12GraphicsCommandList6 *This,
  22631         REFGUID guid,
  22632         const IUnknown *data);
  22633 
  22634     HRESULT (STDMETHODCALLTYPE *SetName)(
  22635         ID3D12GraphicsCommandList6 *This,
  22636         const WCHAR *name);
  22637 
  22638     /*** ID3D12DeviceChild methods ***/
  22639     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  22640         ID3D12GraphicsCommandList6 *This,
  22641         REFIID riid,
  22642         void **device);
  22643 
  22644     /*** ID3D12CommandList methods ***/
  22645     D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
  22646         ID3D12GraphicsCommandList6 *This);
  22647 
  22648     /*** ID3D12GraphicsCommandList methods ***/
  22649     HRESULT (STDMETHODCALLTYPE *Close)(
  22650         ID3D12GraphicsCommandList6 *This);
  22651 
  22652     HRESULT (STDMETHODCALLTYPE *Reset)(
  22653         ID3D12GraphicsCommandList6 *This,
  22654         ID3D12CommandAllocator *allocator,
  22655         ID3D12PipelineState *initial_state);
  22656 
  22657     void (STDMETHODCALLTYPE *ClearState)(
  22658         ID3D12GraphicsCommandList6 *This,
  22659         ID3D12PipelineState *pipeline_state);
  22660 
  22661     void (STDMETHODCALLTYPE *DrawInstanced)(
  22662         ID3D12GraphicsCommandList6 *This,
  22663         UINT vertex_count_per_instance,
  22664         UINT instance_count,
  22665         UINT start_vertex_location,
  22666         UINT start_instance_location);
  22667 
  22668     void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
  22669         ID3D12GraphicsCommandList6 *This,
  22670         UINT index_count_per_instance,
  22671         UINT instance_count,
  22672         UINT start_vertex_location,
  22673         INT base_vertex_location,
  22674         UINT start_instance_location);
  22675 
  22676     void (STDMETHODCALLTYPE *Dispatch)(
  22677         ID3D12GraphicsCommandList6 *This,
  22678         UINT x,
  22679         UINT u,
  22680         UINT z);
  22681 
  22682     void (STDMETHODCALLTYPE *CopyBufferRegion)(
  22683         ID3D12GraphicsCommandList6 *This,
  22684         ID3D12Resource *dst_buffer,
  22685         UINT64 dst_offset,
  22686         ID3D12Resource *src_buffer,
  22687         UINT64 src_offset,
  22688         UINT64 byte_count);
  22689 
  22690     void (STDMETHODCALLTYPE *CopyTextureRegion)(
  22691         ID3D12GraphicsCommandList6 *This,
  22692         const D3D12_TEXTURE_COPY_LOCATION *dst,
  22693         UINT dst_x,
  22694         UINT dst_y,
  22695         UINT dst_z,
  22696         const D3D12_TEXTURE_COPY_LOCATION *src,
  22697         const D3D12_BOX *src_box);
  22698 
  22699     void (STDMETHODCALLTYPE *CopyResource)(
  22700         ID3D12GraphicsCommandList6 *This,
  22701         ID3D12Resource *dst_resource,
  22702         ID3D12Resource *src_resource);
  22703 
  22704     void (STDMETHODCALLTYPE *CopyTiles)(
  22705         ID3D12GraphicsCommandList6 *This,
  22706         ID3D12Resource *tiled_resource,
  22707         const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
  22708         const D3D12_TILE_REGION_SIZE *tile_region_size,
  22709         ID3D12Resource *buffer,
  22710         UINT64 buffer_offset,
  22711         D3D12_TILE_COPY_FLAGS flags);
  22712 
  22713     void (STDMETHODCALLTYPE *ResolveSubresource)(
  22714         ID3D12GraphicsCommandList6 *This,
  22715         ID3D12Resource *dst_resource,
  22716         UINT dst_sub_resource,
  22717         ID3D12Resource *src_resource,
  22718         UINT src_sub_resource,
  22719         DXGI_FORMAT format);
  22720 
  22721     void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
  22722         ID3D12GraphicsCommandList6 *This,
  22723         D3D12_PRIMITIVE_TOPOLOGY primitive_topology);
  22724 
  22725     void (STDMETHODCALLTYPE *RSSetViewports)(
  22726         ID3D12GraphicsCommandList6 *This,
  22727         UINT viewport_count,
  22728         const D3D12_VIEWPORT *viewports);
  22729 
  22730     void (STDMETHODCALLTYPE *RSSetScissorRects)(
  22731         ID3D12GraphicsCommandList6 *This,
  22732         UINT rect_count,
  22733         const D3D12_RECT *rects);
  22734 
  22735     void (STDMETHODCALLTYPE *OMSetBlendFactor)(
  22736         ID3D12GraphicsCommandList6 *This,
  22737         const FLOAT blend_factor[4]);
  22738 
  22739     void (STDMETHODCALLTYPE *OMSetStencilRef)(
  22740         ID3D12GraphicsCommandList6 *This,
  22741         UINT stencil_ref);
  22742 
  22743     void (STDMETHODCALLTYPE *SetPipelineState)(
  22744         ID3D12GraphicsCommandList6 *This,
  22745         ID3D12PipelineState *pipeline_state);
  22746 
  22747     void (STDMETHODCALLTYPE *ResourceBarrier)(
  22748         ID3D12GraphicsCommandList6 *This,
  22749         UINT barrier_count,
  22750         const D3D12_RESOURCE_BARRIER *barriers);
  22751 
  22752     void (STDMETHODCALLTYPE *ExecuteBundle)(
  22753         ID3D12GraphicsCommandList6 *This,
  22754         ID3D12GraphicsCommandList *command_list);
  22755 
  22756     void (STDMETHODCALLTYPE *SetDescriptorHeaps)(
  22757         ID3D12GraphicsCommandList6 *This,
  22758         UINT heap_count,
  22759         ID3D12DescriptorHeap *const *heaps);
  22760 
  22761     void (STDMETHODCALLTYPE *SetComputeRootSignature)(
  22762         ID3D12GraphicsCommandList6 *This,
  22763         ID3D12RootSignature *root_signature);
  22764 
  22765     void (STDMETHODCALLTYPE *SetGraphicsRootSignature)(
  22766         ID3D12GraphicsCommandList6 *This,
  22767         ID3D12RootSignature *root_signature);
  22768 
  22769     void (STDMETHODCALLTYPE *SetComputeRootDescriptorTable)(
  22770         ID3D12GraphicsCommandList6 *This,
  22771         UINT root_parameter_index,
  22772         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  22773 
  22774     void (STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable)(
  22775         ID3D12GraphicsCommandList6 *This,
  22776         UINT root_parameter_index,
  22777         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  22778 
  22779     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstant)(
  22780         ID3D12GraphicsCommandList6 *This,
  22781         UINT root_parameter_index,
  22782         UINT data,
  22783         UINT dst_offset);
  22784 
  22785     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant)(
  22786         ID3D12GraphicsCommandList6 *This,
  22787         UINT root_parameter_index,
  22788         UINT data,
  22789         UINT dst_offset);
  22790 
  22791     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstants)(
  22792         ID3D12GraphicsCommandList6 *This,
  22793         UINT root_parameter_index,
  22794         UINT constant_count,
  22795         const void *data,
  22796         UINT dst_offset);
  22797 
  22798     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants)(
  22799         ID3D12GraphicsCommandList6 *This,
  22800         UINT root_parameter_index,
  22801         UINT constant_count,
  22802         const void *data,
  22803         UINT dst_offset);
  22804 
  22805     void (STDMETHODCALLTYPE *SetComputeRootConstantBufferView)(
  22806         ID3D12GraphicsCommandList6 *This,
  22807         UINT root_parameter_index,
  22808         D3D12_GPU_VIRTUAL_ADDRESS address);
  22809 
  22810     void (STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView)(
  22811         ID3D12GraphicsCommandList6 *This,
  22812         UINT root_parameter_index,
  22813         D3D12_GPU_VIRTUAL_ADDRESS address);
  22814 
  22815     void (STDMETHODCALLTYPE *SetComputeRootShaderResourceView)(
  22816         ID3D12GraphicsCommandList6 *This,
  22817         UINT root_parameter_index,
  22818         D3D12_GPU_VIRTUAL_ADDRESS address);
  22819 
  22820     void (STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView)(
  22821         ID3D12GraphicsCommandList6 *This,
  22822         UINT root_parameter_index,
  22823         D3D12_GPU_VIRTUAL_ADDRESS address);
  22824 
  22825     void (STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView)(
  22826         ID3D12GraphicsCommandList6 *This,
  22827         UINT root_parameter_index,
  22828         D3D12_GPU_VIRTUAL_ADDRESS address);
  22829 
  22830     void (STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView)(
  22831         ID3D12GraphicsCommandList6 *This,
  22832         UINT root_parameter_index,
  22833         D3D12_GPU_VIRTUAL_ADDRESS address);
  22834 
  22835     void (STDMETHODCALLTYPE *IASetIndexBuffer)(
  22836         ID3D12GraphicsCommandList6 *This,
  22837         const D3D12_INDEX_BUFFER_VIEW *view);
  22838 
  22839     void (STDMETHODCALLTYPE *IASetVertexBuffers)(
  22840         ID3D12GraphicsCommandList6 *This,
  22841         UINT start_slot,
  22842         UINT view_count,
  22843         const D3D12_VERTEX_BUFFER_VIEW *views);
  22844 
  22845     void (STDMETHODCALLTYPE *SOSetTargets)(
  22846         ID3D12GraphicsCommandList6 *This,
  22847         UINT start_slot,
  22848         UINT view_count,
  22849         const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views);
  22850 
  22851     void (STDMETHODCALLTYPE *OMSetRenderTargets)(
  22852         ID3D12GraphicsCommandList6 *This,
  22853         UINT render_target_descriptor_count,
  22854         const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
  22855         WINBOOL single_descriptor_handle,
  22856         const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor);
  22857 
  22858     void (STDMETHODCALLTYPE *ClearDepthStencilView)(
  22859         ID3D12GraphicsCommandList6 *This,
  22860         D3D12_CPU_DESCRIPTOR_HANDLE dsv,
  22861         D3D12_CLEAR_FLAGS flags,
  22862         FLOAT depth,
  22863         UINT8 stencil,
  22864         UINT rect_count,
  22865         const D3D12_RECT *rects);
  22866 
  22867     void (STDMETHODCALLTYPE *ClearRenderTargetView)(
  22868         ID3D12GraphicsCommandList6 *This,
  22869         D3D12_CPU_DESCRIPTOR_HANDLE rtv,
  22870         const FLOAT color[4],
  22871         UINT rect_count,
  22872         const D3D12_RECT *rects);
  22873 
  22874     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewUint)(
  22875         ID3D12GraphicsCommandList6 *This,
  22876         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  22877         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
  22878         ID3D12Resource *resource,
  22879         const UINT values[4],
  22880         UINT rect_count,
  22881         const D3D12_RECT *rects);
  22882 
  22883     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat)(
  22884         ID3D12GraphicsCommandList6 *This,
  22885         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  22886         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
  22887         ID3D12Resource *resource,
  22888         const float values[4],
  22889         UINT rect_count,
  22890         const D3D12_RECT *rects);
  22891 
  22892     void (STDMETHODCALLTYPE *DiscardResource)(
  22893         ID3D12GraphicsCommandList6 *This,
  22894         ID3D12Resource *resource,
  22895         const D3D12_DISCARD_REGION *region);
  22896 
  22897     void (STDMETHODCALLTYPE *BeginQuery)(
  22898         ID3D12GraphicsCommandList6 *This,
  22899         ID3D12QueryHeap *heap,
  22900         D3D12_QUERY_TYPE type,
  22901         UINT index);
  22902 
  22903     void (STDMETHODCALLTYPE *EndQuery)(
  22904         ID3D12GraphicsCommandList6 *This,
  22905         ID3D12QueryHeap *heap,
  22906         D3D12_QUERY_TYPE type,
  22907         UINT index);
  22908 
  22909     void (STDMETHODCALLTYPE *ResolveQueryData)(
  22910         ID3D12GraphicsCommandList6 *This,
  22911         ID3D12QueryHeap *heap,
  22912         D3D12_QUERY_TYPE type,
  22913         UINT start_index,
  22914         UINT query_count,
  22915         ID3D12Resource *dst_buffer,
  22916         UINT64 aligned_dst_buffer_offset);
  22917 
  22918     void (STDMETHODCALLTYPE *SetPredication)(
  22919         ID3D12GraphicsCommandList6 *This,
  22920         ID3D12Resource *buffer,
  22921         UINT64 aligned_buffer_offset,
  22922         D3D12_PREDICATION_OP operation);
  22923 
  22924     void (STDMETHODCALLTYPE *SetMarker)(
  22925         ID3D12GraphicsCommandList6 *This,
  22926         UINT metadata,
  22927         const void *data,
  22928         UINT size);
  22929 
  22930     void (STDMETHODCALLTYPE *BeginEvent)(
  22931         ID3D12GraphicsCommandList6 *This,
  22932         UINT metadata,
  22933         const void *data,
  22934         UINT size);
  22935 
  22936     void (STDMETHODCALLTYPE *EndEvent)(
  22937         ID3D12GraphicsCommandList6 *This);
  22938 
  22939     void (STDMETHODCALLTYPE *ExecuteIndirect)(
  22940         ID3D12GraphicsCommandList6 *This,
  22941         ID3D12CommandSignature *command_signature,
  22942         UINT max_command_count,
  22943         ID3D12Resource *arg_buffer,
  22944         UINT64 arg_buffer_offset,
  22945         ID3D12Resource *count_buffer,
  22946         UINT64 count_buffer_offset);
  22947 
  22948     /*** ID3D12GraphicsCommandList1 methods ***/
  22949     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT)(
  22950         ID3D12GraphicsCommandList6 *This,
  22951         ID3D12Resource *dst_buffer,
  22952         UINT64 dst_offset,
  22953         ID3D12Resource *src_buffer,
  22954         UINT64 src_offset,
  22955         UINT dependent_resource_count,
  22956         ID3D12Resource *const *dependent_resources,
  22957         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  22958 
  22959     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT64)(
  22960         ID3D12GraphicsCommandList6 *This,
  22961         ID3D12Resource *dst_buffer,
  22962         UINT64 dst_offset,
  22963         ID3D12Resource *src_buffer,
  22964         UINT64 src_offset,
  22965         UINT dependent_resource_count,
  22966         ID3D12Resource *const *dependent_resources,
  22967         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  22968 
  22969     void (STDMETHODCALLTYPE *OMSetDepthBounds)(
  22970         ID3D12GraphicsCommandList6 *This,
  22971         FLOAT min,
  22972         FLOAT max);
  22973 
  22974     void (STDMETHODCALLTYPE *SetSamplePositions)(
  22975         ID3D12GraphicsCommandList6 *This,
  22976         UINT sample_count,
  22977         UINT pixel_count,
  22978         D3D12_SAMPLE_POSITION *sample_positions);
  22979 
  22980     void (STDMETHODCALLTYPE *ResolveSubresourceRegion)(
  22981         ID3D12GraphicsCommandList6 *This,
  22982         ID3D12Resource *dst_resource,
  22983         UINT dst_sub_resource_idx,
  22984         UINT dst_x,
  22985         UINT dst_y,
  22986         ID3D12Resource *src_resource,
  22987         UINT src_sub_resource_idx,
  22988         D3D12_RECT *src_rect,
  22989         DXGI_FORMAT format,
  22990         D3D12_RESOLVE_MODE mode);
  22991 
  22992     void (STDMETHODCALLTYPE *SetViewInstanceMask)(
  22993         ID3D12GraphicsCommandList6 *This,
  22994         UINT mask);
  22995 
  22996     /*** ID3D12GraphicsCommandList2 methods ***/
  22997     void (STDMETHODCALLTYPE *WriteBufferImmediate)(
  22998         ID3D12GraphicsCommandList6 *This,
  22999         UINT count,
  23000         const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,
  23001         const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
  23002 
  23003     /*** ID3D12GraphicsCommandList3 methods ***/
  23004     void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
  23005         ID3D12GraphicsCommandList6 *This,
  23006         ID3D12ProtectedResourceSession *protected_resource_session);
  23007 
  23008     /*** ID3D12GraphicsCommandList4 methods ***/
  23009     void (STDMETHODCALLTYPE *BeginRenderPass)(
  23010         ID3D12GraphicsCommandList6 *This,
  23011         UINT render_targets_count,
  23012         const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,
  23013         const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,
  23014         D3D12_RENDER_PASS_FLAGS flags);
  23015 
  23016     void (STDMETHODCALLTYPE *EndRenderPass)(
  23017         ID3D12GraphicsCommandList6 *This);
  23018 
  23019     void (STDMETHODCALLTYPE *InitializeMetaCommand)(
  23020         ID3D12GraphicsCommandList6 *This,
  23021         ID3D12MetaCommand *meta_command,
  23022         const void *initialization_parameters_data,
  23023         SIZE_T initialization_parameters_data_size_in_bytes);
  23024 
  23025     void (STDMETHODCALLTYPE *ExecuteMetaCommand)(
  23026         ID3D12GraphicsCommandList6 *This,
  23027         ID3D12MetaCommand *meta_command,
  23028         const void *execution_parameters_data,
  23029         SIZE_T execution_parameters_data_size_in_bytes);
  23030 
  23031     void (STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure)(
  23032         ID3D12GraphicsCommandList6 *This,
  23033         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,
  23034         UINT postbuild_info_descs_count,
  23035         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs);
  23036 
  23037     void (STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo)(
  23038         ID3D12GraphicsCommandList6 *This,
  23039         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,
  23040         UINT src_acceleration_structures_count,
  23041         const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data);
  23042 
  23043     void (STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure)(
  23044         ID3D12GraphicsCommandList6 *This,
  23045         D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,
  23046         D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,
  23047         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode);
  23048 
  23049     void (STDMETHODCALLTYPE *SetPipelineState1)(
  23050         ID3D12GraphicsCommandList6 *This,
  23051         ID3D12StateObject *state_object);
  23052 
  23053     void (STDMETHODCALLTYPE *DispatchRays)(
  23054         ID3D12GraphicsCommandList6 *This,
  23055         const D3D12_DISPATCH_RAYS_DESC *desc);
  23056 
  23057     /*** ID3D12GraphicsCommandList5 methods ***/
  23058     void (STDMETHODCALLTYPE *RSSetShadingRate)(
  23059         ID3D12GraphicsCommandList6 *This,
  23060         D3D12_SHADING_RATE base_shading_rate,
  23061         const D3D12_SHADING_RATE_COMBINER *combiners);
  23062 
  23063     void (STDMETHODCALLTYPE *RSSetShadingRateImage)(
  23064         ID3D12GraphicsCommandList6 *This,
  23065         ID3D12Resource *shading_rate_image);
  23066 
  23067     /*** ID3D12GraphicsCommandList6 methods ***/
  23068     void (STDMETHODCALLTYPE *DispatchMesh)(
  23069         ID3D12GraphicsCommandList6 *This,
  23070         UINT thread_group_count_x,
  23071         UINT thread_group_count_y,
  23072         UINT thread_group_count_z);
  23073 
  23074     END_INTERFACE
  23075 } ID3D12GraphicsCommandList6Vtbl;
  23076 
  23077 interface ID3D12GraphicsCommandList6 {
  23078     CONST_VTBL ID3D12GraphicsCommandList6Vtbl* lpVtbl;
  23079 };
  23080 
  23081 #ifdef COBJMACROS
  23082 #ifndef WIDL_C_INLINE_WRAPPERS
  23083 /*** IUnknown methods ***/
  23084 #define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  23085 #define ID3D12GraphicsCommandList6_AddRef(This) (This)->lpVtbl->AddRef(This)
  23086 #define ID3D12GraphicsCommandList6_Release(This) (This)->lpVtbl->Release(This)
  23087 /*** ID3D12Object methods ***/
  23088 #define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  23089 #define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  23090 #define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  23091 #define ID3D12GraphicsCommandList6_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  23092 /*** ID3D12DeviceChild methods ***/
  23093 #define ID3D12GraphicsCommandList6_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  23094 /*** ID3D12CommandList methods ***/
  23095 #define ID3D12GraphicsCommandList6_GetType(This) (This)->lpVtbl->GetType(This)
  23096 /*** ID3D12GraphicsCommandList methods ***/
  23097 #define ID3D12GraphicsCommandList6_Close(This) (This)->lpVtbl->Close(This)
  23098 #define ID3D12GraphicsCommandList6_Reset(This,allocator,initial_state) (This)->lpVtbl->Reset(This,allocator,initial_state)
  23099 #define ID3D12GraphicsCommandList6_ClearState(This,pipeline_state) (This)->lpVtbl->ClearState(This,pipeline_state)
  23100 #define ID3D12GraphicsCommandList6_DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location) (This)->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location)
  23101 #define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location) (This)->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location)
  23102 #define ID3D12GraphicsCommandList6_Dispatch(This,x,u,z) (This)->lpVtbl->Dispatch(This,x,u,z)
  23103 #define ID3D12GraphicsCommandList6_CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count) (This)->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count)
  23104 #define ID3D12GraphicsCommandList6_CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box) (This)->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box)
  23105 #define ID3D12GraphicsCommandList6_CopyResource(This,dst_resource,src_resource) (This)->lpVtbl->CopyResource(This,dst_resource,src_resource)
  23106 #define ID3D12GraphicsCommandList6_CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags) (This)->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags)
  23107 #define ID3D12GraphicsCommandList6_ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format) (This)->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format)
  23108 #define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,primitive_topology) (This)->lpVtbl->IASetPrimitiveTopology(This,primitive_topology)
  23109 #define ID3D12GraphicsCommandList6_RSSetViewports(This,viewport_count,viewports) (This)->lpVtbl->RSSetViewports(This,viewport_count,viewports)
  23110 #define ID3D12GraphicsCommandList6_RSSetScissorRects(This,rect_count,rects) (This)->lpVtbl->RSSetScissorRects(This,rect_count,rects)
  23111 #define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,blend_factor) (This)->lpVtbl->OMSetBlendFactor(This,blend_factor)
  23112 #define ID3D12GraphicsCommandList6_OMSetStencilRef(This,stencil_ref) (This)->lpVtbl->OMSetStencilRef(This,stencil_ref)
  23113 #define ID3D12GraphicsCommandList6_SetPipelineState(This,pipeline_state) (This)->lpVtbl->SetPipelineState(This,pipeline_state)
  23114 #define ID3D12GraphicsCommandList6_ResourceBarrier(This,barrier_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barrier_count,barriers)
  23115 #define ID3D12GraphicsCommandList6_ExecuteBundle(This,command_list) (This)->lpVtbl->ExecuteBundle(This,command_list)
  23116 #define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,heap_count,heaps) (This)->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps)
  23117 #define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,root_signature) (This)->lpVtbl->SetComputeRootSignature(This,root_signature)
  23118 #define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,root_signature) (This)->lpVtbl->SetGraphicsRootSignature(This,root_signature)
  23119 #define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor)
  23120 #define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor)
  23121 #define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset)
  23122 #define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset)
  23123 #define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
  23124 #define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
  23125 #define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address)
  23126 #define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address)
  23127 #define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address)
  23128 #define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address)
  23129 #define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address)
  23130 #define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address)
  23131 #define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,view) (This)->lpVtbl->IASetIndexBuffer(This,view)
  23132 #define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,start_slot,view_count,views) (This)->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views)
  23133 #define ID3D12GraphicsCommandList6_SOSetTargets(This,start_slot,view_count,views) (This)->lpVtbl->SOSetTargets(This,start_slot,view_count,views)
  23134 #define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor) (This)->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor)
  23135 #define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects) (This)->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects)
  23136 #define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,rtv,color,rect_count,rects) (This)->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects)
  23137 #define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
  23138 #define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
  23139 #define ID3D12GraphicsCommandList6_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
  23140 #define ID3D12GraphicsCommandList6_BeginQuery(This,heap,type,index) (This)->lpVtbl->BeginQuery(This,heap,type,index)
  23141 #define ID3D12GraphicsCommandList6_EndQuery(This,heap,type,index) (This)->lpVtbl->EndQuery(This,heap,type,index)
  23142 #define ID3D12GraphicsCommandList6_ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset)
  23143 #define ID3D12GraphicsCommandList6_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
  23144 #define ID3D12GraphicsCommandList6_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
  23145 #define ID3D12GraphicsCommandList6_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
  23146 #define ID3D12GraphicsCommandList6_EndEvent(This) (This)->lpVtbl->EndEvent(This)
  23147 #define ID3D12GraphicsCommandList6_ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset) (This)->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset)
  23148 /*** ID3D12GraphicsCommandList1 methods ***/
  23149 #define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
  23150 #define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
  23151 #define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,min,max) (This)->lpVtbl->OMSetDepthBounds(This,min,max)
  23152 #define ID3D12GraphicsCommandList6_SetSamplePositions(This,sample_count,pixel_count,sample_positions) (This)->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions)
  23153 #define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode) (This)->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode)
  23154 #define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,mask) (This)->lpVtbl->SetViewInstanceMask(This,mask)
  23155 /*** ID3D12GraphicsCommandList2 methods ***/
  23156 #define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,count,parameters,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,parameters,modes)
  23157 /*** ID3D12GraphicsCommandList3 methods ***/
  23158 #define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
  23159 /*** ID3D12GraphicsCommandList4 methods ***/
  23160 #define ID3D12GraphicsCommandList6_BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags) (This)->lpVtbl->BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags)
  23161 #define ID3D12GraphicsCommandList6_EndRenderPass(This) (This)->lpVtbl->EndRenderPass(This)
  23162 #define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes) (This)->lpVtbl->InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes)
  23163 #define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes) (This)->lpVtbl->ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes)
  23164 #define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs) (This)->lpVtbl->BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs)
  23165 #define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data) (This)->lpVtbl->EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data)
  23166 #define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode) (This)->lpVtbl->CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode)
  23167 #define ID3D12GraphicsCommandList6_SetPipelineState1(This,state_object) (This)->lpVtbl->SetPipelineState1(This,state_object)
  23168 #define ID3D12GraphicsCommandList6_DispatchRays(This,desc) (This)->lpVtbl->DispatchRays(This,desc)
  23169 /*** ID3D12GraphicsCommandList5 methods ***/
  23170 #define ID3D12GraphicsCommandList6_RSSetShadingRate(This,base_shading_rate,combiners) (This)->lpVtbl->RSSetShadingRate(This,base_shading_rate,combiners)
  23171 #define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shading_rate_image) (This)->lpVtbl->RSSetShadingRateImage(This,shading_rate_image)
  23172 /*** ID3D12GraphicsCommandList6 methods ***/
  23173 #define ID3D12GraphicsCommandList6_DispatchMesh(This,thread_group_count_x,thread_group_count_y,thread_group_count_z) (This)->lpVtbl->DispatchMesh(This,thread_group_count_x,thread_group_count_y,thread_group_count_z)
  23174 #else
  23175 /*** IUnknown methods ***/
  23176 static inline HRESULT ID3D12GraphicsCommandList6_QueryInterface(ID3D12GraphicsCommandList6* This,REFIID riid,void **ppvObject) {
  23177     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  23178 }
  23179 static inline ULONG ID3D12GraphicsCommandList6_AddRef(ID3D12GraphicsCommandList6* This) {
  23180     return This->lpVtbl->AddRef(This);
  23181 }
  23182 static inline ULONG ID3D12GraphicsCommandList6_Release(ID3D12GraphicsCommandList6* This) {
  23183     return This->lpVtbl->Release(This);
  23184 }
  23185 /*** ID3D12Object methods ***/
  23186 static inline HRESULT ID3D12GraphicsCommandList6_GetPrivateData(ID3D12GraphicsCommandList6* This,REFGUID guid,UINT *data_size,void *data) {
  23187     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  23188 }
  23189 static inline HRESULT ID3D12GraphicsCommandList6_SetPrivateData(ID3D12GraphicsCommandList6* This,REFGUID guid,UINT data_size,const void *data) {
  23190     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  23191 }
  23192 static inline HRESULT ID3D12GraphicsCommandList6_SetPrivateDataInterface(ID3D12GraphicsCommandList6* This,REFGUID guid,const IUnknown *data) {
  23193     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  23194 }
  23195 static inline HRESULT ID3D12GraphicsCommandList6_SetName(ID3D12GraphicsCommandList6* This,const WCHAR *name) {
  23196     return This->lpVtbl->SetName(This,name);
  23197 }
  23198 /*** ID3D12DeviceChild methods ***/
  23199 static inline HRESULT ID3D12GraphicsCommandList6_GetDevice(ID3D12GraphicsCommandList6* This,REFIID riid,void **device) {
  23200     return This->lpVtbl->GetDevice(This,riid,device);
  23201 }
  23202 /*** ID3D12CommandList methods ***/
  23203 static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList6_GetType(ID3D12GraphicsCommandList6* This) {
  23204     return This->lpVtbl->GetType(This);
  23205 }
  23206 /*** ID3D12GraphicsCommandList methods ***/
  23207 static inline HRESULT ID3D12GraphicsCommandList6_Close(ID3D12GraphicsCommandList6* This) {
  23208     return This->lpVtbl->Close(This);
  23209 }
  23210 static inline HRESULT ID3D12GraphicsCommandList6_Reset(ID3D12GraphicsCommandList6* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
  23211     return This->lpVtbl->Reset(This,allocator,initial_state);
  23212 }
  23213 static inline void ID3D12GraphicsCommandList6_ClearState(ID3D12GraphicsCommandList6* This,ID3D12PipelineState *pipeline_state) {
  23214     This->lpVtbl->ClearState(This,pipeline_state);
  23215 }
  23216 static inline void ID3D12GraphicsCommandList6_DrawInstanced(ID3D12GraphicsCommandList6* This,UINT vertex_count_per_instance,UINT instance_count,UINT start_vertex_location,UINT start_instance_location) {
  23217     This->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location);
  23218 }
  23219 static inline void ID3D12GraphicsCommandList6_DrawIndexedInstanced(ID3D12GraphicsCommandList6* This,UINT index_count_per_instance,UINT instance_count,UINT start_vertex_location,INT base_vertex_location,UINT start_instance_location) {
  23220     This->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location);
  23221 }
  23222 static inline void ID3D12GraphicsCommandList6_Dispatch(ID3D12GraphicsCommandList6* This,UINT x,UINT u,UINT z) {
  23223     This->lpVtbl->Dispatch(This,x,u,z);
  23224 }
  23225 static inline void ID3D12GraphicsCommandList6_CopyBufferRegion(ID3D12GraphicsCommandList6* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT64 byte_count) {
  23226     This->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count);
  23227 }
  23228 static inline void ID3D12GraphicsCommandList6_CopyTextureRegion(ID3D12GraphicsCommandList6* This,const D3D12_TEXTURE_COPY_LOCATION *dst,UINT dst_x,UINT dst_y,UINT dst_z,const D3D12_TEXTURE_COPY_LOCATION *src,const D3D12_BOX *src_box) {
  23229     This->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box);
  23230 }
  23231 static inline void ID3D12GraphicsCommandList6_CopyResource(ID3D12GraphicsCommandList6* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
  23232     This->lpVtbl->CopyResource(This,dst_resource,src_resource);
  23233 }
  23234 static inline void ID3D12GraphicsCommandList6_CopyTiles(ID3D12GraphicsCommandList6* This,ID3D12Resource *tiled_resource,const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,const D3D12_TILE_REGION_SIZE *tile_region_size,ID3D12Resource *buffer,UINT64 buffer_offset,D3D12_TILE_COPY_FLAGS flags) {
  23235     This->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags);
  23236 }
  23237 static inline void ID3D12GraphicsCommandList6_ResolveSubresource(ID3D12GraphicsCommandList6* This,ID3D12Resource *dst_resource,UINT dst_sub_resource,ID3D12Resource *src_resource,UINT src_sub_resource,DXGI_FORMAT format) {
  23238     This->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format);
  23239 }
  23240 static inline void ID3D12GraphicsCommandList6_IASetPrimitiveTopology(ID3D12GraphicsCommandList6* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
  23241     This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
  23242 }
  23243 static inline void ID3D12GraphicsCommandList6_RSSetViewports(ID3D12GraphicsCommandList6* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
  23244     This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
  23245 }
  23246 static inline void ID3D12GraphicsCommandList6_RSSetScissorRects(ID3D12GraphicsCommandList6* This,UINT rect_count,const D3D12_RECT *rects) {
  23247     This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
  23248 }
  23249 static inline void ID3D12GraphicsCommandList6_OMSetBlendFactor(ID3D12GraphicsCommandList6* This,const FLOAT blend_factor[4]) {
  23250     This->lpVtbl->OMSetBlendFactor(This,blend_factor);
  23251 }
  23252 static inline void ID3D12GraphicsCommandList6_OMSetStencilRef(ID3D12GraphicsCommandList6* This,UINT stencil_ref) {
  23253     This->lpVtbl->OMSetStencilRef(This,stencil_ref);
  23254 }
  23255 static inline void ID3D12GraphicsCommandList6_SetPipelineState(ID3D12GraphicsCommandList6* This,ID3D12PipelineState *pipeline_state) {
  23256     This->lpVtbl->SetPipelineState(This,pipeline_state);
  23257 }
  23258 static inline void ID3D12GraphicsCommandList6_ResourceBarrier(ID3D12GraphicsCommandList6* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
  23259     This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
  23260 }
  23261 static inline void ID3D12GraphicsCommandList6_ExecuteBundle(ID3D12GraphicsCommandList6* This,ID3D12GraphicsCommandList *command_list) {
  23262     This->lpVtbl->ExecuteBundle(This,command_list);
  23263 }
  23264 static inline void ID3D12GraphicsCommandList6_SetDescriptorHeaps(ID3D12GraphicsCommandList6* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
  23265     This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
  23266 }
  23267 static inline void ID3D12GraphicsCommandList6_SetComputeRootSignature(ID3D12GraphicsCommandList6* This,ID3D12RootSignature *root_signature) {
  23268     This->lpVtbl->SetComputeRootSignature(This,root_signature);
  23269 }
  23270 static inline void ID3D12GraphicsCommandList6_SetGraphicsRootSignature(ID3D12GraphicsCommandList6* This,ID3D12RootSignature *root_signature) {
  23271     This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
  23272 }
  23273 static inline void ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
  23274     This->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor);
  23275 }
  23276 static inline void ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
  23277     This->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor);
  23278 }
  23279 static inline void ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
  23280     This->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset);
  23281 }
  23282 static inline void ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
  23283     This->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset);
  23284 }
  23285 static inline void ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
  23286     This->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
  23287 }
  23288 static inline void ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
  23289     This->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
  23290 }
  23291 static inline void ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  23292     This->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address);
  23293 }
  23294 static inline void ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  23295     This->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address);
  23296 }
  23297 static inline void ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  23298     This->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address);
  23299 }
  23300 static inline void ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  23301     This->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address);
  23302 }
  23303 static inline void ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  23304     This->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address);
  23305 }
  23306 static inline void ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(ID3D12GraphicsCommandList6* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  23307     This->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address);
  23308 }
  23309 static inline void ID3D12GraphicsCommandList6_IASetIndexBuffer(ID3D12GraphicsCommandList6* This,const D3D12_INDEX_BUFFER_VIEW *view) {
  23310     This->lpVtbl->IASetIndexBuffer(This,view);
  23311 }
  23312 static inline void ID3D12GraphicsCommandList6_IASetVertexBuffers(ID3D12GraphicsCommandList6* This,UINT start_slot,UINT view_count,const D3D12_VERTEX_BUFFER_VIEW *views) {
  23313     This->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views);
  23314 }
  23315 static inline void ID3D12GraphicsCommandList6_SOSetTargets(ID3D12GraphicsCommandList6* This,UINT start_slot,UINT view_count,const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views) {
  23316     This->lpVtbl->SOSetTargets(This,start_slot,view_count,views);
  23317 }
  23318 static inline void ID3D12GraphicsCommandList6_OMSetRenderTargets(ID3D12GraphicsCommandList6* This,UINT render_target_descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,WINBOOL single_descriptor_handle,const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor) {
  23319     This->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor);
  23320 }
  23321 static inline void ID3D12GraphicsCommandList6_ClearDepthStencilView(ID3D12GraphicsCommandList6* This,D3D12_CPU_DESCRIPTOR_HANDLE dsv,D3D12_CLEAR_FLAGS flags,FLOAT depth,UINT8 stencil,UINT rect_count,const D3D12_RECT *rects) {
  23322     This->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects);
  23323 }
  23324 static inline void ID3D12GraphicsCommandList6_ClearRenderTargetView(ID3D12GraphicsCommandList6* This,D3D12_CPU_DESCRIPTOR_HANDLE rtv,const FLOAT color[4],UINT rect_count,const D3D12_RECT *rects) {
  23325     This->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects);
  23326 }
  23327 static inline void ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(ID3D12GraphicsCommandList6* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const UINT values[4],UINT rect_count,const D3D12_RECT *rects) {
  23328     This->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
  23329 }
  23330 static inline void ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(ID3D12GraphicsCommandList6* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const float values[4],UINT rect_count,const D3D12_RECT *rects) {
  23331     This->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
  23332 }
  23333 static inline void ID3D12GraphicsCommandList6_DiscardResource(ID3D12GraphicsCommandList6* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
  23334     This->lpVtbl->DiscardResource(This,resource,region);
  23335 }
  23336 static inline void ID3D12GraphicsCommandList6_BeginQuery(ID3D12GraphicsCommandList6* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
  23337     This->lpVtbl->BeginQuery(This,heap,type,index);
  23338 }
  23339 static inline void ID3D12GraphicsCommandList6_EndQuery(ID3D12GraphicsCommandList6* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
  23340     This->lpVtbl->EndQuery(This,heap,type,index);
  23341 }
  23342 static inline void ID3D12GraphicsCommandList6_ResolveQueryData(ID3D12GraphicsCommandList6* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT start_index,UINT query_count,ID3D12Resource *dst_buffer,UINT64 aligned_dst_buffer_offset) {
  23343     This->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset);
  23344 }
  23345 static inline void ID3D12GraphicsCommandList6_SetPredication(ID3D12GraphicsCommandList6* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
  23346     This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
  23347 }
  23348 static inline void ID3D12GraphicsCommandList6_SetMarker(ID3D12GraphicsCommandList6* This,UINT metadata,const void *data,UINT size) {
  23349     This->lpVtbl->SetMarker(This,metadata,data,size);
  23350 }
  23351 static inline void ID3D12GraphicsCommandList6_BeginEvent(ID3D12GraphicsCommandList6* This,UINT metadata,const void *data,UINT size) {
  23352     This->lpVtbl->BeginEvent(This,metadata,data,size);
  23353 }
  23354 static inline void ID3D12GraphicsCommandList6_EndEvent(ID3D12GraphicsCommandList6* This) {
  23355     This->lpVtbl->EndEvent(This);
  23356 }
  23357 static inline void ID3D12GraphicsCommandList6_ExecuteIndirect(ID3D12GraphicsCommandList6* This,ID3D12CommandSignature *command_signature,UINT max_command_count,ID3D12Resource *arg_buffer,UINT64 arg_buffer_offset,ID3D12Resource *count_buffer,UINT64 count_buffer_offset) {
  23358     This->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset);
  23359 }
  23360 /*** ID3D12GraphicsCommandList1 methods ***/
  23361 static inline void ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(ID3D12GraphicsCommandList6* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
  23362     This->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
  23363 }
  23364 static inline void ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(ID3D12GraphicsCommandList6* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
  23365     This->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
  23366 }
  23367 static inline void ID3D12GraphicsCommandList6_OMSetDepthBounds(ID3D12GraphicsCommandList6* This,FLOAT min,FLOAT max) {
  23368     This->lpVtbl->OMSetDepthBounds(This,min,max);
  23369 }
  23370 static inline void ID3D12GraphicsCommandList6_SetSamplePositions(ID3D12GraphicsCommandList6* This,UINT sample_count,UINT pixel_count,D3D12_SAMPLE_POSITION *sample_positions) {
  23371     This->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions);
  23372 }
  23373 static inline void ID3D12GraphicsCommandList6_ResolveSubresourceRegion(ID3D12GraphicsCommandList6* This,ID3D12Resource *dst_resource,UINT dst_sub_resource_idx,UINT dst_x,UINT dst_y,ID3D12Resource *src_resource,UINT src_sub_resource_idx,D3D12_RECT *src_rect,DXGI_FORMAT format,D3D12_RESOLVE_MODE mode) {
  23374     This->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode);
  23375 }
  23376 static inline void ID3D12GraphicsCommandList6_SetViewInstanceMask(ID3D12GraphicsCommandList6* This,UINT mask) {
  23377     This->lpVtbl->SetViewInstanceMask(This,mask);
  23378 }
  23379 /*** ID3D12GraphicsCommandList2 methods ***/
  23380 static inline void ID3D12GraphicsCommandList6_WriteBufferImmediate(ID3D12GraphicsCommandList6* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
  23381     This->lpVtbl->WriteBufferImmediate(This,count,parameters,modes);
  23382 }
  23383 /*** ID3D12GraphicsCommandList3 methods ***/
  23384 static inline void ID3D12GraphicsCommandList6_SetProtectedResourceSession(ID3D12GraphicsCommandList6* This,ID3D12ProtectedResourceSession *protected_resource_session) {
  23385     This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
  23386 }
  23387 /*** ID3D12GraphicsCommandList4 methods ***/
  23388 static inline void ID3D12GraphicsCommandList6_BeginRenderPass(ID3D12GraphicsCommandList6* This,UINT render_targets_count,const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,D3D12_RENDER_PASS_FLAGS flags) {
  23389     This->lpVtbl->BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags);
  23390 }
  23391 static inline void ID3D12GraphicsCommandList6_EndRenderPass(ID3D12GraphicsCommandList6* This) {
  23392     This->lpVtbl->EndRenderPass(This);
  23393 }
  23394 static inline void ID3D12GraphicsCommandList6_InitializeMetaCommand(ID3D12GraphicsCommandList6* This,ID3D12MetaCommand *meta_command,const void *initialization_parameters_data,SIZE_T initialization_parameters_data_size_in_bytes) {
  23395     This->lpVtbl->InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes);
  23396 }
  23397 static inline void ID3D12GraphicsCommandList6_ExecuteMetaCommand(ID3D12GraphicsCommandList6* This,ID3D12MetaCommand *meta_command,const void *execution_parameters_data,SIZE_T execution_parameters_data_size_in_bytes) {
  23398     This->lpVtbl->ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes);
  23399 }
  23400 static inline void ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(ID3D12GraphicsCommandList6* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,UINT postbuild_info_descs_count,const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs) {
  23401     This->lpVtbl->BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs);
  23402 }
  23403 static inline void ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(ID3D12GraphicsCommandList6* This,const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,UINT src_acceleration_structures_count,const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data) {
  23404     This->lpVtbl->EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data);
  23405 }
  23406 static inline void ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(ID3D12GraphicsCommandList6* This,D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode) {
  23407     This->lpVtbl->CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode);
  23408 }
  23409 static inline void ID3D12GraphicsCommandList6_SetPipelineState1(ID3D12GraphicsCommandList6* This,ID3D12StateObject *state_object) {
  23410     This->lpVtbl->SetPipelineState1(This,state_object);
  23411 }
  23412 static inline void ID3D12GraphicsCommandList6_DispatchRays(ID3D12GraphicsCommandList6* This,const D3D12_DISPATCH_RAYS_DESC *desc) {
  23413     This->lpVtbl->DispatchRays(This,desc);
  23414 }
  23415 /*** ID3D12GraphicsCommandList5 methods ***/
  23416 static inline void ID3D12GraphicsCommandList6_RSSetShadingRate(ID3D12GraphicsCommandList6* This,D3D12_SHADING_RATE base_shading_rate,const D3D12_SHADING_RATE_COMBINER *combiners) {
  23417     This->lpVtbl->RSSetShadingRate(This,base_shading_rate,combiners);
  23418 }
  23419 static inline void ID3D12GraphicsCommandList6_RSSetShadingRateImage(ID3D12GraphicsCommandList6* This,ID3D12Resource *shading_rate_image) {
  23420     This->lpVtbl->RSSetShadingRateImage(This,shading_rate_image);
  23421 }
  23422 /*** ID3D12GraphicsCommandList6 methods ***/
  23423 static inline void ID3D12GraphicsCommandList6_DispatchMesh(ID3D12GraphicsCommandList6* This,UINT thread_group_count_x,UINT thread_group_count_y,UINT thread_group_count_z) {
  23424     This->lpVtbl->DispatchMesh(This,thread_group_count_x,thread_group_count_y,thread_group_count_z);
  23425 }
  23426 #endif
  23427 #endif
  23428 
  23429 #endif
  23430 
  23431 
  23432 #endif  /* __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__ */
  23433 
  23434 /*****************************************************************************
  23435  * ID3D12GraphicsCommandList7 interface
  23436  */
  23437 #ifndef __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
  23438 #define __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
  23439 
  23440 DEFINE_GUID(IID_ID3D12GraphicsCommandList7, 0xdd171223, 0x8b61, 0x4769, 0x90,0xe3, 0x16,0x0c,0xcd,0xe4,0xe2,0xc1);
  23441 #if defined(__cplusplus) && !defined(CINTERFACE)
  23442 MIDL_INTERFACE("dd171223-8b61-4769-90e3-160ccde4e2c1")
  23443 ID3D12GraphicsCommandList7 : public ID3D12GraphicsCommandList6
  23444 {
  23445     virtual void STDMETHODCALLTYPE Barrier(
  23446         UINT32 barrier_groups_count,
  23447         const D3D12_BARRIER_GROUP *barrier_groups) = 0;
  23448 
  23449 };
  23450 #ifdef __CRT_UUID_DECL
  23451 __CRT_UUID_DECL(ID3D12GraphicsCommandList7, 0xdd171223, 0x8b61, 0x4769, 0x90,0xe3, 0x16,0x0c,0xcd,0xe4,0xe2,0xc1)
  23452 #endif
  23453 #else
  23454 typedef struct ID3D12GraphicsCommandList7Vtbl {
  23455     BEGIN_INTERFACE
  23456 
  23457     /*** IUnknown methods ***/
  23458     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  23459         ID3D12GraphicsCommandList7 *This,
  23460         REFIID riid,
  23461         void **ppvObject);
  23462 
  23463     ULONG (STDMETHODCALLTYPE *AddRef)(
  23464         ID3D12GraphicsCommandList7 *This);
  23465 
  23466     ULONG (STDMETHODCALLTYPE *Release)(
  23467         ID3D12GraphicsCommandList7 *This);
  23468 
  23469     /*** ID3D12Object methods ***/
  23470     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  23471         ID3D12GraphicsCommandList7 *This,
  23472         REFGUID guid,
  23473         UINT *data_size,
  23474         void *data);
  23475 
  23476     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  23477         ID3D12GraphicsCommandList7 *This,
  23478         REFGUID guid,
  23479         UINT data_size,
  23480         const void *data);
  23481 
  23482     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  23483         ID3D12GraphicsCommandList7 *This,
  23484         REFGUID guid,
  23485         const IUnknown *data);
  23486 
  23487     HRESULT (STDMETHODCALLTYPE *SetName)(
  23488         ID3D12GraphicsCommandList7 *This,
  23489         const WCHAR *name);
  23490 
  23491     /*** ID3D12DeviceChild methods ***/
  23492     HRESULT (STDMETHODCALLTYPE *GetDevice)(
  23493         ID3D12GraphicsCommandList7 *This,
  23494         REFIID riid,
  23495         void **device);
  23496 
  23497     /*** ID3D12CommandList methods ***/
  23498     D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
  23499         ID3D12GraphicsCommandList7 *This);
  23500 
  23501     /*** ID3D12GraphicsCommandList methods ***/
  23502     HRESULT (STDMETHODCALLTYPE *Close)(
  23503         ID3D12GraphicsCommandList7 *This);
  23504 
  23505     HRESULT (STDMETHODCALLTYPE *Reset)(
  23506         ID3D12GraphicsCommandList7 *This,
  23507         ID3D12CommandAllocator *allocator,
  23508         ID3D12PipelineState *initial_state);
  23509 
  23510     void (STDMETHODCALLTYPE *ClearState)(
  23511         ID3D12GraphicsCommandList7 *This,
  23512         ID3D12PipelineState *pipeline_state);
  23513 
  23514     void (STDMETHODCALLTYPE *DrawInstanced)(
  23515         ID3D12GraphicsCommandList7 *This,
  23516         UINT vertex_count_per_instance,
  23517         UINT instance_count,
  23518         UINT start_vertex_location,
  23519         UINT start_instance_location);
  23520 
  23521     void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
  23522         ID3D12GraphicsCommandList7 *This,
  23523         UINT index_count_per_instance,
  23524         UINT instance_count,
  23525         UINT start_vertex_location,
  23526         INT base_vertex_location,
  23527         UINT start_instance_location);
  23528 
  23529     void (STDMETHODCALLTYPE *Dispatch)(
  23530         ID3D12GraphicsCommandList7 *This,
  23531         UINT x,
  23532         UINT u,
  23533         UINT z);
  23534 
  23535     void (STDMETHODCALLTYPE *CopyBufferRegion)(
  23536         ID3D12GraphicsCommandList7 *This,
  23537         ID3D12Resource *dst_buffer,
  23538         UINT64 dst_offset,
  23539         ID3D12Resource *src_buffer,
  23540         UINT64 src_offset,
  23541         UINT64 byte_count);
  23542 
  23543     void (STDMETHODCALLTYPE *CopyTextureRegion)(
  23544         ID3D12GraphicsCommandList7 *This,
  23545         const D3D12_TEXTURE_COPY_LOCATION *dst,
  23546         UINT dst_x,
  23547         UINT dst_y,
  23548         UINT dst_z,
  23549         const D3D12_TEXTURE_COPY_LOCATION *src,
  23550         const D3D12_BOX *src_box);
  23551 
  23552     void (STDMETHODCALLTYPE *CopyResource)(
  23553         ID3D12GraphicsCommandList7 *This,
  23554         ID3D12Resource *dst_resource,
  23555         ID3D12Resource *src_resource);
  23556 
  23557     void (STDMETHODCALLTYPE *CopyTiles)(
  23558         ID3D12GraphicsCommandList7 *This,
  23559         ID3D12Resource *tiled_resource,
  23560         const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
  23561         const D3D12_TILE_REGION_SIZE *tile_region_size,
  23562         ID3D12Resource *buffer,
  23563         UINT64 buffer_offset,
  23564         D3D12_TILE_COPY_FLAGS flags);
  23565 
  23566     void (STDMETHODCALLTYPE *ResolveSubresource)(
  23567         ID3D12GraphicsCommandList7 *This,
  23568         ID3D12Resource *dst_resource,
  23569         UINT dst_sub_resource,
  23570         ID3D12Resource *src_resource,
  23571         UINT src_sub_resource,
  23572         DXGI_FORMAT format);
  23573 
  23574     void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
  23575         ID3D12GraphicsCommandList7 *This,
  23576         D3D12_PRIMITIVE_TOPOLOGY primitive_topology);
  23577 
  23578     void (STDMETHODCALLTYPE *RSSetViewports)(
  23579         ID3D12GraphicsCommandList7 *This,
  23580         UINT viewport_count,
  23581         const D3D12_VIEWPORT *viewports);
  23582 
  23583     void (STDMETHODCALLTYPE *RSSetScissorRects)(
  23584         ID3D12GraphicsCommandList7 *This,
  23585         UINT rect_count,
  23586         const D3D12_RECT *rects);
  23587 
  23588     void (STDMETHODCALLTYPE *OMSetBlendFactor)(
  23589         ID3D12GraphicsCommandList7 *This,
  23590         const FLOAT blend_factor[4]);
  23591 
  23592     void (STDMETHODCALLTYPE *OMSetStencilRef)(
  23593         ID3D12GraphicsCommandList7 *This,
  23594         UINT stencil_ref);
  23595 
  23596     void (STDMETHODCALLTYPE *SetPipelineState)(
  23597         ID3D12GraphicsCommandList7 *This,
  23598         ID3D12PipelineState *pipeline_state);
  23599 
  23600     void (STDMETHODCALLTYPE *ResourceBarrier)(
  23601         ID3D12GraphicsCommandList7 *This,
  23602         UINT barrier_count,
  23603         const D3D12_RESOURCE_BARRIER *barriers);
  23604 
  23605     void (STDMETHODCALLTYPE *ExecuteBundle)(
  23606         ID3D12GraphicsCommandList7 *This,
  23607         ID3D12GraphicsCommandList *command_list);
  23608 
  23609     void (STDMETHODCALLTYPE *SetDescriptorHeaps)(
  23610         ID3D12GraphicsCommandList7 *This,
  23611         UINT heap_count,
  23612         ID3D12DescriptorHeap *const *heaps);
  23613 
  23614     void (STDMETHODCALLTYPE *SetComputeRootSignature)(
  23615         ID3D12GraphicsCommandList7 *This,
  23616         ID3D12RootSignature *root_signature);
  23617 
  23618     void (STDMETHODCALLTYPE *SetGraphicsRootSignature)(
  23619         ID3D12GraphicsCommandList7 *This,
  23620         ID3D12RootSignature *root_signature);
  23621 
  23622     void (STDMETHODCALLTYPE *SetComputeRootDescriptorTable)(
  23623         ID3D12GraphicsCommandList7 *This,
  23624         UINT root_parameter_index,
  23625         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  23626 
  23627     void (STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable)(
  23628         ID3D12GraphicsCommandList7 *This,
  23629         UINT root_parameter_index,
  23630         D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  23631 
  23632     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstant)(
  23633         ID3D12GraphicsCommandList7 *This,
  23634         UINT root_parameter_index,
  23635         UINT data,
  23636         UINT dst_offset);
  23637 
  23638     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant)(
  23639         ID3D12GraphicsCommandList7 *This,
  23640         UINT root_parameter_index,
  23641         UINT data,
  23642         UINT dst_offset);
  23643 
  23644     void (STDMETHODCALLTYPE *SetComputeRoot32BitConstants)(
  23645         ID3D12GraphicsCommandList7 *This,
  23646         UINT root_parameter_index,
  23647         UINT constant_count,
  23648         const void *data,
  23649         UINT dst_offset);
  23650 
  23651     void (STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants)(
  23652         ID3D12GraphicsCommandList7 *This,
  23653         UINT root_parameter_index,
  23654         UINT constant_count,
  23655         const void *data,
  23656         UINT dst_offset);
  23657 
  23658     void (STDMETHODCALLTYPE *SetComputeRootConstantBufferView)(
  23659         ID3D12GraphicsCommandList7 *This,
  23660         UINT root_parameter_index,
  23661         D3D12_GPU_VIRTUAL_ADDRESS address);
  23662 
  23663     void (STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView)(
  23664         ID3D12GraphicsCommandList7 *This,
  23665         UINT root_parameter_index,
  23666         D3D12_GPU_VIRTUAL_ADDRESS address);
  23667 
  23668     void (STDMETHODCALLTYPE *SetComputeRootShaderResourceView)(
  23669         ID3D12GraphicsCommandList7 *This,
  23670         UINT root_parameter_index,
  23671         D3D12_GPU_VIRTUAL_ADDRESS address);
  23672 
  23673     void (STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView)(
  23674         ID3D12GraphicsCommandList7 *This,
  23675         UINT root_parameter_index,
  23676         D3D12_GPU_VIRTUAL_ADDRESS address);
  23677 
  23678     void (STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView)(
  23679         ID3D12GraphicsCommandList7 *This,
  23680         UINT root_parameter_index,
  23681         D3D12_GPU_VIRTUAL_ADDRESS address);
  23682 
  23683     void (STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView)(
  23684         ID3D12GraphicsCommandList7 *This,
  23685         UINT root_parameter_index,
  23686         D3D12_GPU_VIRTUAL_ADDRESS address);
  23687 
  23688     void (STDMETHODCALLTYPE *IASetIndexBuffer)(
  23689         ID3D12GraphicsCommandList7 *This,
  23690         const D3D12_INDEX_BUFFER_VIEW *view);
  23691 
  23692     void (STDMETHODCALLTYPE *IASetVertexBuffers)(
  23693         ID3D12GraphicsCommandList7 *This,
  23694         UINT start_slot,
  23695         UINT view_count,
  23696         const D3D12_VERTEX_BUFFER_VIEW *views);
  23697 
  23698     void (STDMETHODCALLTYPE *SOSetTargets)(
  23699         ID3D12GraphicsCommandList7 *This,
  23700         UINT start_slot,
  23701         UINT view_count,
  23702         const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views);
  23703 
  23704     void (STDMETHODCALLTYPE *OMSetRenderTargets)(
  23705         ID3D12GraphicsCommandList7 *This,
  23706         UINT render_target_descriptor_count,
  23707         const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
  23708         WINBOOL single_descriptor_handle,
  23709         const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor);
  23710 
  23711     void (STDMETHODCALLTYPE *ClearDepthStencilView)(
  23712         ID3D12GraphicsCommandList7 *This,
  23713         D3D12_CPU_DESCRIPTOR_HANDLE dsv,
  23714         D3D12_CLEAR_FLAGS flags,
  23715         FLOAT depth,
  23716         UINT8 stencil,
  23717         UINT rect_count,
  23718         const D3D12_RECT *rects);
  23719 
  23720     void (STDMETHODCALLTYPE *ClearRenderTargetView)(
  23721         ID3D12GraphicsCommandList7 *This,
  23722         D3D12_CPU_DESCRIPTOR_HANDLE rtv,
  23723         const FLOAT color[4],
  23724         UINT rect_count,
  23725         const D3D12_RECT *rects);
  23726 
  23727     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewUint)(
  23728         ID3D12GraphicsCommandList7 *This,
  23729         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  23730         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
  23731         ID3D12Resource *resource,
  23732         const UINT values[4],
  23733         UINT rect_count,
  23734         const D3D12_RECT *rects);
  23735 
  23736     void (STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat)(
  23737         ID3D12GraphicsCommandList7 *This,
  23738         D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  23739         D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,
  23740         ID3D12Resource *resource,
  23741         const float values[4],
  23742         UINT rect_count,
  23743         const D3D12_RECT *rects);
  23744 
  23745     void (STDMETHODCALLTYPE *DiscardResource)(
  23746         ID3D12GraphicsCommandList7 *This,
  23747         ID3D12Resource *resource,
  23748         const D3D12_DISCARD_REGION *region);
  23749 
  23750     void (STDMETHODCALLTYPE *BeginQuery)(
  23751         ID3D12GraphicsCommandList7 *This,
  23752         ID3D12QueryHeap *heap,
  23753         D3D12_QUERY_TYPE type,
  23754         UINT index);
  23755 
  23756     void (STDMETHODCALLTYPE *EndQuery)(
  23757         ID3D12GraphicsCommandList7 *This,
  23758         ID3D12QueryHeap *heap,
  23759         D3D12_QUERY_TYPE type,
  23760         UINT index);
  23761 
  23762     void (STDMETHODCALLTYPE *ResolveQueryData)(
  23763         ID3D12GraphicsCommandList7 *This,
  23764         ID3D12QueryHeap *heap,
  23765         D3D12_QUERY_TYPE type,
  23766         UINT start_index,
  23767         UINT query_count,
  23768         ID3D12Resource *dst_buffer,
  23769         UINT64 aligned_dst_buffer_offset);
  23770 
  23771     void (STDMETHODCALLTYPE *SetPredication)(
  23772         ID3D12GraphicsCommandList7 *This,
  23773         ID3D12Resource *buffer,
  23774         UINT64 aligned_buffer_offset,
  23775         D3D12_PREDICATION_OP operation);
  23776 
  23777     void (STDMETHODCALLTYPE *SetMarker)(
  23778         ID3D12GraphicsCommandList7 *This,
  23779         UINT metadata,
  23780         const void *data,
  23781         UINT size);
  23782 
  23783     void (STDMETHODCALLTYPE *BeginEvent)(
  23784         ID3D12GraphicsCommandList7 *This,
  23785         UINT metadata,
  23786         const void *data,
  23787         UINT size);
  23788 
  23789     void (STDMETHODCALLTYPE *EndEvent)(
  23790         ID3D12GraphicsCommandList7 *This);
  23791 
  23792     void (STDMETHODCALLTYPE *ExecuteIndirect)(
  23793         ID3D12GraphicsCommandList7 *This,
  23794         ID3D12CommandSignature *command_signature,
  23795         UINT max_command_count,
  23796         ID3D12Resource *arg_buffer,
  23797         UINT64 arg_buffer_offset,
  23798         ID3D12Resource *count_buffer,
  23799         UINT64 count_buffer_offset);
  23800 
  23801     /*** ID3D12GraphicsCommandList1 methods ***/
  23802     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT)(
  23803         ID3D12GraphicsCommandList7 *This,
  23804         ID3D12Resource *dst_buffer,
  23805         UINT64 dst_offset,
  23806         ID3D12Resource *src_buffer,
  23807         UINT64 src_offset,
  23808         UINT dependent_resource_count,
  23809         ID3D12Resource *const *dependent_resources,
  23810         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  23811 
  23812     void (STDMETHODCALLTYPE *AtomicCopyBufferUINT64)(
  23813         ID3D12GraphicsCommandList7 *This,
  23814         ID3D12Resource *dst_buffer,
  23815         UINT64 dst_offset,
  23816         ID3D12Resource *src_buffer,
  23817         UINT64 src_offset,
  23818         UINT dependent_resource_count,
  23819         ID3D12Resource *const *dependent_resources,
  23820         const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  23821 
  23822     void (STDMETHODCALLTYPE *OMSetDepthBounds)(
  23823         ID3D12GraphicsCommandList7 *This,
  23824         FLOAT min,
  23825         FLOAT max);
  23826 
  23827     void (STDMETHODCALLTYPE *SetSamplePositions)(
  23828         ID3D12GraphicsCommandList7 *This,
  23829         UINT sample_count,
  23830         UINT pixel_count,
  23831         D3D12_SAMPLE_POSITION *sample_positions);
  23832 
  23833     void (STDMETHODCALLTYPE *ResolveSubresourceRegion)(
  23834         ID3D12GraphicsCommandList7 *This,
  23835         ID3D12Resource *dst_resource,
  23836         UINT dst_sub_resource_idx,
  23837         UINT dst_x,
  23838         UINT dst_y,
  23839         ID3D12Resource *src_resource,
  23840         UINT src_sub_resource_idx,
  23841         D3D12_RECT *src_rect,
  23842         DXGI_FORMAT format,
  23843         D3D12_RESOLVE_MODE mode);
  23844 
  23845     void (STDMETHODCALLTYPE *SetViewInstanceMask)(
  23846         ID3D12GraphicsCommandList7 *This,
  23847         UINT mask);
  23848 
  23849     /*** ID3D12GraphicsCommandList2 methods ***/
  23850     void (STDMETHODCALLTYPE *WriteBufferImmediate)(
  23851         ID3D12GraphicsCommandList7 *This,
  23852         UINT count,
  23853         const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,
  23854         const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
  23855 
  23856     /*** ID3D12GraphicsCommandList3 methods ***/
  23857     void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
  23858         ID3D12GraphicsCommandList7 *This,
  23859         ID3D12ProtectedResourceSession *protected_resource_session);
  23860 
  23861     /*** ID3D12GraphicsCommandList4 methods ***/
  23862     void (STDMETHODCALLTYPE *BeginRenderPass)(
  23863         ID3D12GraphicsCommandList7 *This,
  23864         UINT render_targets_count,
  23865         const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,
  23866         const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,
  23867         D3D12_RENDER_PASS_FLAGS flags);
  23868 
  23869     void (STDMETHODCALLTYPE *EndRenderPass)(
  23870         ID3D12GraphicsCommandList7 *This);
  23871 
  23872     void (STDMETHODCALLTYPE *InitializeMetaCommand)(
  23873         ID3D12GraphicsCommandList7 *This,
  23874         ID3D12MetaCommand *meta_command,
  23875         const void *initialization_parameters_data,
  23876         SIZE_T initialization_parameters_data_size_in_bytes);
  23877 
  23878     void (STDMETHODCALLTYPE *ExecuteMetaCommand)(
  23879         ID3D12GraphicsCommandList7 *This,
  23880         ID3D12MetaCommand *meta_command,
  23881         const void *execution_parameters_data,
  23882         SIZE_T execution_parameters_data_size_in_bytes);
  23883 
  23884     void (STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure)(
  23885         ID3D12GraphicsCommandList7 *This,
  23886         const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,
  23887         UINT postbuild_info_descs_count,
  23888         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs);
  23889 
  23890     void (STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo)(
  23891         ID3D12GraphicsCommandList7 *This,
  23892         const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,
  23893         UINT src_acceleration_structures_count,
  23894         const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data);
  23895 
  23896     void (STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure)(
  23897         ID3D12GraphicsCommandList7 *This,
  23898         D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,
  23899         D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,
  23900         D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode);
  23901 
  23902     void (STDMETHODCALLTYPE *SetPipelineState1)(
  23903         ID3D12GraphicsCommandList7 *This,
  23904         ID3D12StateObject *state_object);
  23905 
  23906     void (STDMETHODCALLTYPE *DispatchRays)(
  23907         ID3D12GraphicsCommandList7 *This,
  23908         const D3D12_DISPATCH_RAYS_DESC *desc);
  23909 
  23910     /*** ID3D12GraphicsCommandList5 methods ***/
  23911     void (STDMETHODCALLTYPE *RSSetShadingRate)(
  23912         ID3D12GraphicsCommandList7 *This,
  23913         D3D12_SHADING_RATE base_shading_rate,
  23914         const D3D12_SHADING_RATE_COMBINER *combiners);
  23915 
  23916     void (STDMETHODCALLTYPE *RSSetShadingRateImage)(
  23917         ID3D12GraphicsCommandList7 *This,
  23918         ID3D12Resource *shading_rate_image);
  23919 
  23920     /*** ID3D12GraphicsCommandList6 methods ***/
  23921     void (STDMETHODCALLTYPE *DispatchMesh)(
  23922         ID3D12GraphicsCommandList7 *This,
  23923         UINT thread_group_count_x,
  23924         UINT thread_group_count_y,
  23925         UINT thread_group_count_z);
  23926 
  23927     /*** ID3D12GraphicsCommandList7 methods ***/
  23928     void (STDMETHODCALLTYPE *Barrier)(
  23929         ID3D12GraphicsCommandList7 *This,
  23930         UINT32 barrier_groups_count,
  23931         const D3D12_BARRIER_GROUP *barrier_groups);
  23932 
  23933     END_INTERFACE
  23934 } ID3D12GraphicsCommandList7Vtbl;
  23935 
  23936 interface ID3D12GraphicsCommandList7 {
  23937     CONST_VTBL ID3D12GraphicsCommandList7Vtbl* lpVtbl;
  23938 };
  23939 
  23940 #ifdef COBJMACROS
  23941 #ifndef WIDL_C_INLINE_WRAPPERS
  23942 /*** IUnknown methods ***/
  23943 #define ID3D12GraphicsCommandList7_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  23944 #define ID3D12GraphicsCommandList7_AddRef(This) (This)->lpVtbl->AddRef(This)
  23945 #define ID3D12GraphicsCommandList7_Release(This) (This)->lpVtbl->Release(This)
  23946 /*** ID3D12Object methods ***/
  23947 #define ID3D12GraphicsCommandList7_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  23948 #define ID3D12GraphicsCommandList7_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  23949 #define ID3D12GraphicsCommandList7_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
  23950 #define ID3D12GraphicsCommandList7_SetName(This,name) (This)->lpVtbl->SetName(This,name)
  23951 /*** ID3D12DeviceChild methods ***/
  23952 #define ID3D12GraphicsCommandList7_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  23953 /*** ID3D12CommandList methods ***/
  23954 #define ID3D12GraphicsCommandList7_GetType(This) (This)->lpVtbl->GetType(This)
  23955 /*** ID3D12GraphicsCommandList methods ***/
  23956 #define ID3D12GraphicsCommandList7_Close(This) (This)->lpVtbl->Close(This)
  23957 #define ID3D12GraphicsCommandList7_Reset(This,allocator,initial_state) (This)->lpVtbl->Reset(This,allocator,initial_state)
  23958 #define ID3D12GraphicsCommandList7_ClearState(This,pipeline_state) (This)->lpVtbl->ClearState(This,pipeline_state)
  23959 #define ID3D12GraphicsCommandList7_DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location) (This)->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location)
  23960 #define ID3D12GraphicsCommandList7_DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location) (This)->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location)
  23961 #define ID3D12GraphicsCommandList7_Dispatch(This,x,u,z) (This)->lpVtbl->Dispatch(This,x,u,z)
  23962 #define ID3D12GraphicsCommandList7_CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count) (This)->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count)
  23963 #define ID3D12GraphicsCommandList7_CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box) (This)->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box)
  23964 #define ID3D12GraphicsCommandList7_CopyResource(This,dst_resource,src_resource) (This)->lpVtbl->CopyResource(This,dst_resource,src_resource)
  23965 #define ID3D12GraphicsCommandList7_CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags) (This)->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags)
  23966 #define ID3D12GraphicsCommandList7_ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format) (This)->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format)
  23967 #define ID3D12GraphicsCommandList7_IASetPrimitiveTopology(This,primitive_topology) (This)->lpVtbl->IASetPrimitiveTopology(This,primitive_topology)
  23968 #define ID3D12GraphicsCommandList7_RSSetViewports(This,viewport_count,viewports) (This)->lpVtbl->RSSetViewports(This,viewport_count,viewports)
  23969 #define ID3D12GraphicsCommandList7_RSSetScissorRects(This,rect_count,rects) (This)->lpVtbl->RSSetScissorRects(This,rect_count,rects)
  23970 #define ID3D12GraphicsCommandList7_OMSetBlendFactor(This,blend_factor) (This)->lpVtbl->OMSetBlendFactor(This,blend_factor)
  23971 #define ID3D12GraphicsCommandList7_OMSetStencilRef(This,stencil_ref) (This)->lpVtbl->OMSetStencilRef(This,stencil_ref)
  23972 #define ID3D12GraphicsCommandList7_SetPipelineState(This,pipeline_state) (This)->lpVtbl->SetPipelineState(This,pipeline_state)
  23973 #define ID3D12GraphicsCommandList7_ResourceBarrier(This,barrier_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barrier_count,barriers)
  23974 #define ID3D12GraphicsCommandList7_ExecuteBundle(This,command_list) (This)->lpVtbl->ExecuteBundle(This,command_list)
  23975 #define ID3D12GraphicsCommandList7_SetDescriptorHeaps(This,heap_count,heaps) (This)->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps)
  23976 #define ID3D12GraphicsCommandList7_SetComputeRootSignature(This,root_signature) (This)->lpVtbl->SetComputeRootSignature(This,root_signature)
  23977 #define ID3D12GraphicsCommandList7_SetGraphicsRootSignature(This,root_signature) (This)->lpVtbl->SetGraphicsRootSignature(This,root_signature)
  23978 #define ID3D12GraphicsCommandList7_SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor)
  23979 #define ID3D12GraphicsCommandList7_SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor) (This)->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor)
  23980 #define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset)
  23981 #define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset)
  23982 #define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
  23983 #define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset) (This)->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset)
  23984 #define ID3D12GraphicsCommandList7_SetComputeRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address)
  23985 #define ID3D12GraphicsCommandList7_SetGraphicsRootConstantBufferView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address)
  23986 #define ID3D12GraphicsCommandList7_SetComputeRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address)
  23987 #define ID3D12GraphicsCommandList7_SetGraphicsRootShaderResourceView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address)
  23988 #define ID3D12GraphicsCommandList7_SetComputeRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address)
  23989 #define ID3D12GraphicsCommandList7_SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address) (This)->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address)
  23990 #define ID3D12GraphicsCommandList7_IASetIndexBuffer(This,view) (This)->lpVtbl->IASetIndexBuffer(This,view)
  23991 #define ID3D12GraphicsCommandList7_IASetVertexBuffers(This,start_slot,view_count,views) (This)->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views)
  23992 #define ID3D12GraphicsCommandList7_SOSetTargets(This,start_slot,view_count,views) (This)->lpVtbl->SOSetTargets(This,start_slot,view_count,views)
  23993 #define ID3D12GraphicsCommandList7_OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor) (This)->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor)
  23994 #define ID3D12GraphicsCommandList7_ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects) (This)->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects)
  23995 #define ID3D12GraphicsCommandList7_ClearRenderTargetView(This,rtv,color,rect_count,rects) (This)->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects)
  23996 #define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
  23997 #define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects) (This)->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects)
  23998 #define ID3D12GraphicsCommandList7_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
  23999 #define ID3D12GraphicsCommandList7_BeginQuery(This,heap,type,index) (This)->lpVtbl->BeginQuery(This,heap,type,index)
  24000 #define ID3D12GraphicsCommandList7_EndQuery(This,heap,type,index) (This)->lpVtbl->EndQuery(This,heap,type,index)
  24001 #define ID3D12GraphicsCommandList7_ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset)
  24002 #define ID3D12GraphicsCommandList7_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
  24003 #define ID3D12GraphicsCommandList7_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
  24004 #define ID3D12GraphicsCommandList7_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
  24005 #define ID3D12GraphicsCommandList7_EndEvent(This) (This)->lpVtbl->EndEvent(This)
  24006 #define ID3D12GraphicsCommandList7_ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset) (This)->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset)
  24007 /*** ID3D12GraphicsCommandList1 methods ***/
  24008 #define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
  24009 #define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges) (This)->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges)
  24010 #define ID3D12GraphicsCommandList7_OMSetDepthBounds(This,min,max) (This)->lpVtbl->OMSetDepthBounds(This,min,max)
  24011 #define ID3D12GraphicsCommandList7_SetSamplePositions(This,sample_count,pixel_count,sample_positions) (This)->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions)
  24012 #define ID3D12GraphicsCommandList7_ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode) (This)->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode)
  24013 #define ID3D12GraphicsCommandList7_SetViewInstanceMask(This,mask) (This)->lpVtbl->SetViewInstanceMask(This,mask)
  24014 /*** ID3D12GraphicsCommandList2 methods ***/
  24015 #define ID3D12GraphicsCommandList7_WriteBufferImmediate(This,count,parameters,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,parameters,modes)
  24016 /*** ID3D12GraphicsCommandList3 methods ***/
  24017 #define ID3D12GraphicsCommandList7_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
  24018 /*** ID3D12GraphicsCommandList4 methods ***/
  24019 #define ID3D12GraphicsCommandList7_BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags) (This)->lpVtbl->BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags)
  24020 #define ID3D12GraphicsCommandList7_EndRenderPass(This) (This)->lpVtbl->EndRenderPass(This)
  24021 #define ID3D12GraphicsCommandList7_InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes) (This)->lpVtbl->InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes)
  24022 #define ID3D12GraphicsCommandList7_ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes) (This)->lpVtbl->ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes)
  24023 #define ID3D12GraphicsCommandList7_BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs) (This)->lpVtbl->BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs)
  24024 #define ID3D12GraphicsCommandList7_EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data) (This)->lpVtbl->EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data)
  24025 #define ID3D12GraphicsCommandList7_CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode) (This)->lpVtbl->CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode)
  24026 #define ID3D12GraphicsCommandList7_SetPipelineState1(This,state_object) (This)->lpVtbl->SetPipelineState1(This,state_object)
  24027 #define ID3D12GraphicsCommandList7_DispatchRays(This,desc) (This)->lpVtbl->DispatchRays(This,desc)
  24028 /*** ID3D12GraphicsCommandList5 methods ***/
  24029 #define ID3D12GraphicsCommandList7_RSSetShadingRate(This,base_shading_rate,combiners) (This)->lpVtbl->RSSetShadingRate(This,base_shading_rate,combiners)
  24030 #define ID3D12GraphicsCommandList7_RSSetShadingRateImage(This,shading_rate_image) (This)->lpVtbl->RSSetShadingRateImage(This,shading_rate_image)
  24031 /*** ID3D12GraphicsCommandList6 methods ***/
  24032 #define ID3D12GraphicsCommandList7_DispatchMesh(This,thread_group_count_x,thread_group_count_y,thread_group_count_z) (This)->lpVtbl->DispatchMesh(This,thread_group_count_x,thread_group_count_y,thread_group_count_z)
  24033 /*** ID3D12GraphicsCommandList7 methods ***/
  24034 #define ID3D12GraphicsCommandList7_Barrier(This,barrier_groups_count,barrier_groups) (This)->lpVtbl->Barrier(This,barrier_groups_count,barrier_groups)
  24035 #else
  24036 /*** IUnknown methods ***/
  24037 static inline HRESULT ID3D12GraphicsCommandList7_QueryInterface(ID3D12GraphicsCommandList7* This,REFIID riid,void **ppvObject) {
  24038     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  24039 }
  24040 static inline ULONG ID3D12GraphicsCommandList7_AddRef(ID3D12GraphicsCommandList7* This) {
  24041     return This->lpVtbl->AddRef(This);
  24042 }
  24043 static inline ULONG ID3D12GraphicsCommandList7_Release(ID3D12GraphicsCommandList7* This) {
  24044     return This->lpVtbl->Release(This);
  24045 }
  24046 /*** ID3D12Object methods ***/
  24047 static inline HRESULT ID3D12GraphicsCommandList7_GetPrivateData(ID3D12GraphicsCommandList7* This,REFGUID guid,UINT *data_size,void *data) {
  24048     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  24049 }
  24050 static inline HRESULT ID3D12GraphicsCommandList7_SetPrivateData(ID3D12GraphicsCommandList7* This,REFGUID guid,UINT data_size,const void *data) {
  24051     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  24052 }
  24053 static inline HRESULT ID3D12GraphicsCommandList7_SetPrivateDataInterface(ID3D12GraphicsCommandList7* This,REFGUID guid,const IUnknown *data) {
  24054     return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
  24055 }
  24056 static inline HRESULT ID3D12GraphicsCommandList7_SetName(ID3D12GraphicsCommandList7* This,const WCHAR *name) {
  24057     return This->lpVtbl->SetName(This,name);
  24058 }
  24059 /*** ID3D12DeviceChild methods ***/
  24060 static inline HRESULT ID3D12GraphicsCommandList7_GetDevice(ID3D12GraphicsCommandList7* This,REFIID riid,void **device) {
  24061     return This->lpVtbl->GetDevice(This,riid,device);
  24062 }
  24063 /*** ID3D12CommandList methods ***/
  24064 static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList7_GetType(ID3D12GraphicsCommandList7* This) {
  24065     return This->lpVtbl->GetType(This);
  24066 }
  24067 /*** ID3D12GraphicsCommandList methods ***/
  24068 static inline HRESULT ID3D12GraphicsCommandList7_Close(ID3D12GraphicsCommandList7* This) {
  24069     return This->lpVtbl->Close(This);
  24070 }
  24071 static inline HRESULT ID3D12GraphicsCommandList7_Reset(ID3D12GraphicsCommandList7* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
  24072     return This->lpVtbl->Reset(This,allocator,initial_state);
  24073 }
  24074 static inline void ID3D12GraphicsCommandList7_ClearState(ID3D12GraphicsCommandList7* This,ID3D12PipelineState *pipeline_state) {
  24075     This->lpVtbl->ClearState(This,pipeline_state);
  24076 }
  24077 static inline void ID3D12GraphicsCommandList7_DrawInstanced(ID3D12GraphicsCommandList7* This,UINT vertex_count_per_instance,UINT instance_count,UINT start_vertex_location,UINT start_instance_location) {
  24078     This->lpVtbl->DrawInstanced(This,vertex_count_per_instance,instance_count,start_vertex_location,start_instance_location);
  24079 }
  24080 static inline void ID3D12GraphicsCommandList7_DrawIndexedInstanced(ID3D12GraphicsCommandList7* This,UINT index_count_per_instance,UINT instance_count,UINT start_vertex_location,INT base_vertex_location,UINT start_instance_location) {
  24081     This->lpVtbl->DrawIndexedInstanced(This,index_count_per_instance,instance_count,start_vertex_location,base_vertex_location,start_instance_location);
  24082 }
  24083 static inline void ID3D12GraphicsCommandList7_Dispatch(ID3D12GraphicsCommandList7* This,UINT x,UINT u,UINT z) {
  24084     This->lpVtbl->Dispatch(This,x,u,z);
  24085 }
  24086 static inline void ID3D12GraphicsCommandList7_CopyBufferRegion(ID3D12GraphicsCommandList7* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT64 byte_count) {
  24087     This->lpVtbl->CopyBufferRegion(This,dst_buffer,dst_offset,src_buffer,src_offset,byte_count);
  24088 }
  24089 static inline void ID3D12GraphicsCommandList7_CopyTextureRegion(ID3D12GraphicsCommandList7* This,const D3D12_TEXTURE_COPY_LOCATION *dst,UINT dst_x,UINT dst_y,UINT dst_z,const D3D12_TEXTURE_COPY_LOCATION *src,const D3D12_BOX *src_box) {
  24090     This->lpVtbl->CopyTextureRegion(This,dst,dst_x,dst_y,dst_z,src,src_box);
  24091 }
  24092 static inline void ID3D12GraphicsCommandList7_CopyResource(ID3D12GraphicsCommandList7* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
  24093     This->lpVtbl->CopyResource(This,dst_resource,src_resource);
  24094 }
  24095 static inline void ID3D12GraphicsCommandList7_CopyTiles(ID3D12GraphicsCommandList7* This,ID3D12Resource *tiled_resource,const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,const D3D12_TILE_REGION_SIZE *tile_region_size,ID3D12Resource *buffer,UINT64 buffer_offset,D3D12_TILE_COPY_FLAGS flags) {
  24096     This->lpVtbl->CopyTiles(This,tiled_resource,tile_region_start_coordinate,tile_region_size,buffer,buffer_offset,flags);
  24097 }
  24098 static inline void ID3D12GraphicsCommandList7_ResolveSubresource(ID3D12GraphicsCommandList7* This,ID3D12Resource *dst_resource,UINT dst_sub_resource,ID3D12Resource *src_resource,UINT src_sub_resource,DXGI_FORMAT format) {
  24099     This->lpVtbl->ResolveSubresource(This,dst_resource,dst_sub_resource,src_resource,src_sub_resource,format);
  24100 }
  24101 static inline void ID3D12GraphicsCommandList7_IASetPrimitiveTopology(ID3D12GraphicsCommandList7* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
  24102     This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
  24103 }
  24104 static inline void ID3D12GraphicsCommandList7_RSSetViewports(ID3D12GraphicsCommandList7* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
  24105     This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
  24106 }
  24107 static inline void ID3D12GraphicsCommandList7_RSSetScissorRects(ID3D12GraphicsCommandList7* This,UINT rect_count,const D3D12_RECT *rects) {
  24108     This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
  24109 }
  24110 static inline void ID3D12GraphicsCommandList7_OMSetBlendFactor(ID3D12GraphicsCommandList7* This,const FLOAT blend_factor[4]) {
  24111     This->lpVtbl->OMSetBlendFactor(This,blend_factor);
  24112 }
  24113 static inline void ID3D12GraphicsCommandList7_OMSetStencilRef(ID3D12GraphicsCommandList7* This,UINT stencil_ref) {
  24114     This->lpVtbl->OMSetStencilRef(This,stencil_ref);
  24115 }
  24116 static inline void ID3D12GraphicsCommandList7_SetPipelineState(ID3D12GraphicsCommandList7* This,ID3D12PipelineState *pipeline_state) {
  24117     This->lpVtbl->SetPipelineState(This,pipeline_state);
  24118 }
  24119 static inline void ID3D12GraphicsCommandList7_ResourceBarrier(ID3D12GraphicsCommandList7* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
  24120     This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
  24121 }
  24122 static inline void ID3D12GraphicsCommandList7_ExecuteBundle(ID3D12GraphicsCommandList7* This,ID3D12GraphicsCommandList *command_list) {
  24123     This->lpVtbl->ExecuteBundle(This,command_list);
  24124 }
  24125 static inline void ID3D12GraphicsCommandList7_SetDescriptorHeaps(ID3D12GraphicsCommandList7* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
  24126     This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
  24127 }
  24128 static inline void ID3D12GraphicsCommandList7_SetComputeRootSignature(ID3D12GraphicsCommandList7* This,ID3D12RootSignature *root_signature) {
  24129     This->lpVtbl->SetComputeRootSignature(This,root_signature);
  24130 }
  24131 static inline void ID3D12GraphicsCommandList7_SetGraphicsRootSignature(ID3D12GraphicsCommandList7* This,ID3D12RootSignature *root_signature) {
  24132     This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
  24133 }
  24134 static inline void ID3D12GraphicsCommandList7_SetComputeRootDescriptorTable(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
  24135     This->lpVtbl->SetComputeRootDescriptorTable(This,root_parameter_index,base_descriptor);
  24136 }
  24137 static inline void ID3D12GraphicsCommandList7_SetGraphicsRootDescriptorTable(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor) {
  24138     This->lpVtbl->SetGraphicsRootDescriptorTable(This,root_parameter_index,base_descriptor);
  24139 }
  24140 static inline void ID3D12GraphicsCommandList7_SetComputeRoot32BitConstant(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
  24141     This->lpVtbl->SetComputeRoot32BitConstant(This,root_parameter_index,data,dst_offset);
  24142 }
  24143 static inline void ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstant(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,UINT data,UINT dst_offset) {
  24144     This->lpVtbl->SetGraphicsRoot32BitConstant(This,root_parameter_index,data,dst_offset);
  24145 }
  24146 static inline void ID3D12GraphicsCommandList7_SetComputeRoot32BitConstants(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
  24147     This->lpVtbl->SetComputeRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
  24148 }
  24149 static inline void ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstants(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,UINT constant_count,const void *data,UINT dst_offset) {
  24150     This->lpVtbl->SetGraphicsRoot32BitConstants(This,root_parameter_index,constant_count,data,dst_offset);
  24151 }
  24152 static inline void ID3D12GraphicsCommandList7_SetComputeRootConstantBufferView(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  24153     This->lpVtbl->SetComputeRootConstantBufferView(This,root_parameter_index,address);
  24154 }
  24155 static inline void ID3D12GraphicsCommandList7_SetGraphicsRootConstantBufferView(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  24156     This->lpVtbl->SetGraphicsRootConstantBufferView(This,root_parameter_index,address);
  24157 }
  24158 static inline void ID3D12GraphicsCommandList7_SetComputeRootShaderResourceView(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  24159     This->lpVtbl->SetComputeRootShaderResourceView(This,root_parameter_index,address);
  24160 }
  24161 static inline void ID3D12GraphicsCommandList7_SetGraphicsRootShaderResourceView(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  24162     This->lpVtbl->SetGraphicsRootShaderResourceView(This,root_parameter_index,address);
  24163 }
  24164 static inline void ID3D12GraphicsCommandList7_SetComputeRootUnorderedAccessView(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  24165     This->lpVtbl->SetComputeRootUnorderedAccessView(This,root_parameter_index,address);
  24166 }
  24167 static inline void ID3D12GraphicsCommandList7_SetGraphicsRootUnorderedAccessView(ID3D12GraphicsCommandList7* This,UINT root_parameter_index,D3D12_GPU_VIRTUAL_ADDRESS address) {
  24168     This->lpVtbl->SetGraphicsRootUnorderedAccessView(This,root_parameter_index,address);
  24169 }
  24170 static inline void ID3D12GraphicsCommandList7_IASetIndexBuffer(ID3D12GraphicsCommandList7* This,const D3D12_INDEX_BUFFER_VIEW *view) {
  24171     This->lpVtbl->IASetIndexBuffer(This,view);
  24172 }
  24173 static inline void ID3D12GraphicsCommandList7_IASetVertexBuffers(ID3D12GraphicsCommandList7* This,UINT start_slot,UINT view_count,const D3D12_VERTEX_BUFFER_VIEW *views) {
  24174     This->lpVtbl->IASetVertexBuffers(This,start_slot,view_count,views);
  24175 }
  24176 static inline void ID3D12GraphicsCommandList7_SOSetTargets(ID3D12GraphicsCommandList7* This,UINT start_slot,UINT view_count,const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views) {
  24177     This->lpVtbl->SOSetTargets(This,start_slot,view_count,views);
  24178 }
  24179 static inline void ID3D12GraphicsCommandList7_OMSetRenderTargets(ID3D12GraphicsCommandList7* This,UINT render_target_descriptor_count,const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,WINBOOL single_descriptor_handle,const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor) {
  24180     This->lpVtbl->OMSetRenderTargets(This,render_target_descriptor_count,render_target_descriptors,single_descriptor_handle,depth_stencil_descriptor);
  24181 }
  24182 static inline void ID3D12GraphicsCommandList7_ClearDepthStencilView(ID3D12GraphicsCommandList7* This,D3D12_CPU_DESCRIPTOR_HANDLE dsv,D3D12_CLEAR_FLAGS flags,FLOAT depth,UINT8 stencil,UINT rect_count,const D3D12_RECT *rects) {
  24183     This->lpVtbl->ClearDepthStencilView(This,dsv,flags,depth,stencil,rect_count,rects);
  24184 }
  24185 static inline void ID3D12GraphicsCommandList7_ClearRenderTargetView(ID3D12GraphicsCommandList7* This,D3D12_CPU_DESCRIPTOR_HANDLE rtv,const FLOAT color[4],UINT rect_count,const D3D12_RECT *rects) {
  24186     This->lpVtbl->ClearRenderTargetView(This,rtv,color,rect_count,rects);
  24187 }
  24188 static inline void ID3D12GraphicsCommandList7_ClearUnorderedAccessViewUint(ID3D12GraphicsCommandList7* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const UINT values[4],UINT rect_count,const D3D12_RECT *rects) {
  24189     This->lpVtbl->ClearUnorderedAccessViewUint(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
  24190 }
  24191 static inline void ID3D12GraphicsCommandList7_ClearUnorderedAccessViewFloat(ID3D12GraphicsCommandList7* This,D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle,ID3D12Resource *resource,const float values[4],UINT rect_count,const D3D12_RECT *rects) {
  24192     This->lpVtbl->ClearUnorderedAccessViewFloat(This,gpu_handle,cpu_handle,resource,values,rect_count,rects);
  24193 }
  24194 static inline void ID3D12GraphicsCommandList7_DiscardResource(ID3D12GraphicsCommandList7* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
  24195     This->lpVtbl->DiscardResource(This,resource,region);
  24196 }
  24197 static inline void ID3D12GraphicsCommandList7_BeginQuery(ID3D12GraphicsCommandList7* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
  24198     This->lpVtbl->BeginQuery(This,heap,type,index);
  24199 }
  24200 static inline void ID3D12GraphicsCommandList7_EndQuery(ID3D12GraphicsCommandList7* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
  24201     This->lpVtbl->EndQuery(This,heap,type,index);
  24202 }
  24203 static inline void ID3D12GraphicsCommandList7_ResolveQueryData(ID3D12GraphicsCommandList7* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT start_index,UINT query_count,ID3D12Resource *dst_buffer,UINT64 aligned_dst_buffer_offset) {
  24204     This->lpVtbl->ResolveQueryData(This,heap,type,start_index,query_count,dst_buffer,aligned_dst_buffer_offset);
  24205 }
  24206 static inline void ID3D12GraphicsCommandList7_SetPredication(ID3D12GraphicsCommandList7* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
  24207     This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
  24208 }
  24209 static inline void ID3D12GraphicsCommandList7_SetMarker(ID3D12GraphicsCommandList7* This,UINT metadata,const void *data,UINT size) {
  24210     This->lpVtbl->SetMarker(This,metadata,data,size);
  24211 }
  24212 static inline void ID3D12GraphicsCommandList7_BeginEvent(ID3D12GraphicsCommandList7* This,UINT metadata,const void *data,UINT size) {
  24213     This->lpVtbl->BeginEvent(This,metadata,data,size);
  24214 }
  24215 static inline void ID3D12GraphicsCommandList7_EndEvent(ID3D12GraphicsCommandList7* This) {
  24216     This->lpVtbl->EndEvent(This);
  24217 }
  24218 static inline void ID3D12GraphicsCommandList7_ExecuteIndirect(ID3D12GraphicsCommandList7* This,ID3D12CommandSignature *command_signature,UINT max_command_count,ID3D12Resource *arg_buffer,UINT64 arg_buffer_offset,ID3D12Resource *count_buffer,UINT64 count_buffer_offset) {
  24219     This->lpVtbl->ExecuteIndirect(This,command_signature,max_command_count,arg_buffer,arg_buffer_offset,count_buffer,count_buffer_offset);
  24220 }
  24221 /*** ID3D12GraphicsCommandList1 methods ***/
  24222 static inline void ID3D12GraphicsCommandList7_AtomicCopyBufferUINT(ID3D12GraphicsCommandList7* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
  24223     This->lpVtbl->AtomicCopyBufferUINT(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
  24224 }
  24225 static inline void ID3D12GraphicsCommandList7_AtomicCopyBufferUINT64(ID3D12GraphicsCommandList7* This,ID3D12Resource *dst_buffer,UINT64 dst_offset,ID3D12Resource *src_buffer,UINT64 src_offset,UINT dependent_resource_count,ID3D12Resource *const *dependent_resources,const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges) {
  24226     This->lpVtbl->AtomicCopyBufferUINT64(This,dst_buffer,dst_offset,src_buffer,src_offset,dependent_resource_count,dependent_resources,dependent_sub_resource_ranges);
  24227 }
  24228 static inline void ID3D12GraphicsCommandList7_OMSetDepthBounds(ID3D12GraphicsCommandList7* This,FLOAT min,FLOAT max) {
  24229     This->lpVtbl->OMSetDepthBounds(This,min,max);
  24230 }
  24231 static inline void ID3D12GraphicsCommandList7_SetSamplePositions(ID3D12GraphicsCommandList7* This,UINT sample_count,UINT pixel_count,D3D12_SAMPLE_POSITION *sample_positions) {
  24232     This->lpVtbl->SetSamplePositions(This,sample_count,pixel_count,sample_positions);
  24233 }
  24234 static inline void ID3D12GraphicsCommandList7_ResolveSubresourceRegion(ID3D12GraphicsCommandList7* This,ID3D12Resource *dst_resource,UINT dst_sub_resource_idx,UINT dst_x,UINT dst_y,ID3D12Resource *src_resource,UINT src_sub_resource_idx,D3D12_RECT *src_rect,DXGI_FORMAT format,D3D12_RESOLVE_MODE mode) {
  24235     This->lpVtbl->ResolveSubresourceRegion(This,dst_resource,dst_sub_resource_idx,dst_x,dst_y,src_resource,src_sub_resource_idx,src_rect,format,mode);
  24236 }
  24237 static inline void ID3D12GraphicsCommandList7_SetViewInstanceMask(ID3D12GraphicsCommandList7* This,UINT mask) {
  24238     This->lpVtbl->SetViewInstanceMask(This,mask);
  24239 }
  24240 /*** ID3D12GraphicsCommandList2 methods ***/
  24241 static inline void ID3D12GraphicsCommandList7_WriteBufferImmediate(ID3D12GraphicsCommandList7* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
  24242     This->lpVtbl->WriteBufferImmediate(This,count,parameters,modes);
  24243 }
  24244 /*** ID3D12GraphicsCommandList3 methods ***/
  24245 static inline void ID3D12GraphicsCommandList7_SetProtectedResourceSession(ID3D12GraphicsCommandList7* This,ID3D12ProtectedResourceSession *protected_resource_session) {
  24246     This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
  24247 }
  24248 /*** ID3D12GraphicsCommandList4 methods ***/
  24249 static inline void ID3D12GraphicsCommandList7_BeginRenderPass(ID3D12GraphicsCommandList7* This,UINT render_targets_count,const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,D3D12_RENDER_PASS_FLAGS flags) {
  24250     This->lpVtbl->BeginRenderPass(This,render_targets_count,render_targets,depth_stencil,flags);
  24251 }
  24252 static inline void ID3D12GraphicsCommandList7_EndRenderPass(ID3D12GraphicsCommandList7* This) {
  24253     This->lpVtbl->EndRenderPass(This);
  24254 }
  24255 static inline void ID3D12GraphicsCommandList7_InitializeMetaCommand(ID3D12GraphicsCommandList7* This,ID3D12MetaCommand *meta_command,const void *initialization_parameters_data,SIZE_T initialization_parameters_data_size_in_bytes) {
  24256     This->lpVtbl->InitializeMetaCommand(This,meta_command,initialization_parameters_data,initialization_parameters_data_size_in_bytes);
  24257 }
  24258 static inline void ID3D12GraphicsCommandList7_ExecuteMetaCommand(ID3D12GraphicsCommandList7* This,ID3D12MetaCommand *meta_command,const void *execution_parameters_data,SIZE_T execution_parameters_data_size_in_bytes) {
  24259     This->lpVtbl->ExecuteMetaCommand(This,meta_command,execution_parameters_data,execution_parameters_data_size_in_bytes);
  24260 }
  24261 static inline void ID3D12GraphicsCommandList7_BuildRaytracingAccelerationStructure(ID3D12GraphicsCommandList7* This,const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,UINT postbuild_info_descs_count,const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs) {
  24262     This->lpVtbl->BuildRaytracingAccelerationStructure(This,desc,postbuild_info_descs_count,postbuild_info_descs);
  24263 }
  24264 static inline void ID3D12GraphicsCommandList7_EmitRaytracingAccelerationStructurePostbuildInfo(ID3D12GraphicsCommandList7* This,const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,UINT src_acceleration_structures_count,const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data) {
  24265     This->lpVtbl->EmitRaytracingAccelerationStructurePostbuildInfo(This,desc,src_acceleration_structures_count,src_acceleration_structure_data);
  24266 }
  24267 static inline void ID3D12GraphicsCommandList7_CopyRaytracingAccelerationStructure(ID3D12GraphicsCommandList7* This,D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode) {
  24268     This->lpVtbl->CopyRaytracingAccelerationStructure(This,dst_acceleration_structure_data,src_acceleration_structure_data,mode);
  24269 }
  24270 static inline void ID3D12GraphicsCommandList7_SetPipelineState1(ID3D12GraphicsCommandList7* This,ID3D12StateObject *state_object) {
  24271     This->lpVtbl->SetPipelineState1(This,state_object);
  24272 }
  24273 static inline void ID3D12GraphicsCommandList7_DispatchRays(ID3D12GraphicsCommandList7* This,const D3D12_DISPATCH_RAYS_DESC *desc) {
  24274     This->lpVtbl->DispatchRays(This,desc);
  24275 }
  24276 /*** ID3D12GraphicsCommandList5 methods ***/
  24277 static inline void ID3D12GraphicsCommandList7_RSSetShadingRate(ID3D12GraphicsCommandList7* This,D3D12_SHADING_RATE base_shading_rate,const D3D12_SHADING_RATE_COMBINER *combiners) {
  24278     This->lpVtbl->RSSetShadingRate(This,base_shading_rate,combiners);
  24279 }
  24280 static inline void ID3D12GraphicsCommandList7_RSSetShadingRateImage(ID3D12GraphicsCommandList7* This,ID3D12Resource *shading_rate_image) {
  24281     This->lpVtbl->RSSetShadingRateImage(This,shading_rate_image);
  24282 }
  24283 /*** ID3D12GraphicsCommandList6 methods ***/
  24284 static inline void ID3D12GraphicsCommandList7_DispatchMesh(ID3D12GraphicsCommandList7* This,UINT thread_group_count_x,UINT thread_group_count_y,UINT thread_group_count_z) {
  24285     This->lpVtbl->DispatchMesh(This,thread_group_count_x,thread_group_count_y,thread_group_count_z);
  24286 }
  24287 /*** ID3D12GraphicsCommandList7 methods ***/
  24288 static inline void ID3D12GraphicsCommandList7_Barrier(ID3D12GraphicsCommandList7* This,UINT32 barrier_groups_count,const D3D12_BARRIER_GROUP *barrier_groups) {
  24289     This->lpVtbl->Barrier(This,barrier_groups_count,barrier_groups);
  24290 }
  24291 #endif
  24292 #endif
  24293 
  24294 #endif
  24295 
  24296 
  24297 #endif  /* __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__ */
  24298 
  24299 #ifndef D3D12_IGNORE_SDK_LAYERS
  24300 #include "d3d12sdklayers.h"
  24301 #endif
  24302 typedef HRESULT (__stdcall *PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(const void *data,SIZE_T data_size,REFIID iid,void **deserializer);
  24303 HRESULT __stdcall  D3D12CreateRootSignatureDeserializer(const void *data,SIZE_T data_size,REFIID iid,void **deserializer);
  24304 
  24305 typedef HRESULT (__stdcall *PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(const void *data,SIZE_T data_size,REFIID iid,void **deserializer);
  24306 HRESULT __stdcall  D3D12CreateVersionedRootSignatureDeserializer(const void *data,SIZE_T data_size,REFIID iid,void **deserializer);
  24307 
  24308 typedef HRESULT (__stdcall *PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(const D3D12_ROOT_SIGNATURE_DESC *root_signature_desc,D3D_ROOT_SIGNATURE_VERSION version,ID3DBlob **blob,ID3DBlob **error_blob);
  24309 HRESULT __stdcall  D3D12SerializeRootSignature(const D3D12_ROOT_SIGNATURE_DESC *root_signature_desc,D3D_ROOT_SIGNATURE_VERSION version,ID3DBlob **blob,ID3DBlob **error_blob);
  24310 
  24311 typedef HRESULT (__stdcall *PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc,ID3DBlob **blob,ID3DBlob **error_blob);
  24312 HRESULT __stdcall  D3D12SerializeVersionedRootSignature(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *root_signature_desc,ID3DBlob **blob,ID3DBlob **error_blob);
  24313 
  24314 typedef HRESULT (__stdcall *PFN_D3D12_CREATE_DEVICE)(IUnknown *adapter,D3D_FEATURE_LEVEL minimum_feature_level,REFIID iid,void **device);
  24315 HRESULT __stdcall  D3D12CreateDevice(IUnknown *adapter,D3D_FEATURE_LEVEL minimum_feature_level,REFIID iid,void **device);
  24316 
  24317 typedef HRESULT (__stdcall *PFN_D3D12_GET_DEBUG_INTERFACE)(REFIID iid,void **debug);
  24318 HRESULT __stdcall  D3D12GetDebugInterface(REFIID iid,void **debug);
  24319 
  24320 HRESULT __stdcall  D3D12EnableExperimentalFeatures(UINT feature_count,const IID *iids,void *configurations,UINT *configurations_sizes);
  24321 
  24322 static const UUID D3D12ExperimentalShaderModels = { 0x76f5573e, 0xf13a, 0x40f5, { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f } };
  24323 static const UUID D3D12TiledResourceTier4 = { 0xc9c4725f, 0xa81a, 0x4f56, { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb } };
  24324 static const UUID D3D12MetaCommand = { 0xc734c97e, 0x8077, 0x48c8, { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77 } };
  24325 typedef HRESULT (__stdcall *PFN_D3D12_GET_INTERFACE)(REFCLSID clsid,REFIID iid,void **debug);
  24326 HRESULT __stdcall  D3D12GetInterface(REFCLSID clsid,REFIID iid,void **debug);
  24327 
  24328 /* Begin additional prototypes for all interfaces */
  24329 
  24330 
  24331 /* End additional prototypes */
  24332 
  24333 #ifdef __cplusplus
  24334 }
  24335 #endif
  24336 
  24337 #endif /* __d3d12_h__ */