master
    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__
   23typedef interface ID3D12Object ID3D12Object;
   24#ifdef __cplusplus
   25interface ID3D12Object;
   26#endif /* __cplusplus */
   27#endif
   28
   29#ifndef __ID3D12DeviceChild_FWD_DEFINED__
   30#define __ID3D12DeviceChild_FWD_DEFINED__
   31typedef interface ID3D12DeviceChild ID3D12DeviceChild;
   32#ifdef __cplusplus
   33interface ID3D12DeviceChild;
   34#endif /* __cplusplus */
   35#endif
   36
   37#ifndef __ID3D12Pageable_FWD_DEFINED__
   38#define __ID3D12Pageable_FWD_DEFINED__
   39typedef interface ID3D12Pageable ID3D12Pageable;
   40#ifdef __cplusplus
   41interface ID3D12Pageable;
   42#endif /* __cplusplus */
   43#endif
   44
   45#ifndef __ID3D12Heap_FWD_DEFINED__
   46#define __ID3D12Heap_FWD_DEFINED__
   47typedef interface ID3D12Heap ID3D12Heap;
   48#ifdef __cplusplus
   49interface ID3D12Heap;
   50#endif /* __cplusplus */
   51#endif
   52
   53#ifndef __ID3D12Resource_FWD_DEFINED__
   54#define __ID3D12Resource_FWD_DEFINED__
   55typedef interface ID3D12Resource ID3D12Resource;
   56#ifdef __cplusplus
   57interface ID3D12Resource;
   58#endif /* __cplusplus */
   59#endif
   60
   61#ifndef __ID3D12CommandList_FWD_DEFINED__
   62#define __ID3D12CommandList_FWD_DEFINED__
   63typedef interface ID3D12CommandList ID3D12CommandList;
   64#ifdef __cplusplus
   65interface ID3D12CommandList;
   66#endif /* __cplusplus */
   67#endif
   68
   69#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
   70#define __ID3D12DescriptorHeap_FWD_DEFINED__
   71typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
   72#ifdef __cplusplus
   73interface ID3D12DescriptorHeap;
   74#endif /* __cplusplus */
   75#endif
   76
   77#ifndef __ID3D12QueryHeap_FWD_DEFINED__
   78#define __ID3D12QueryHeap_FWD_DEFINED__
   79typedef interface ID3D12QueryHeap ID3D12QueryHeap;
   80#ifdef __cplusplus
   81interface ID3D12QueryHeap;
   82#endif /* __cplusplus */
   83#endif
   84
   85#ifndef __ID3D12CommandSignature_FWD_DEFINED__
   86#define __ID3D12CommandSignature_FWD_DEFINED__
   87typedef interface ID3D12CommandSignature ID3D12CommandSignature;
   88#ifdef __cplusplus
   89interface ID3D12CommandSignature;
   90#endif /* __cplusplus */
   91#endif
   92
   93#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
   94#define __ID3D12GraphicsCommandList_FWD_DEFINED__
   95typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
   96#ifdef __cplusplus
   97interface ID3D12GraphicsCommandList;
   98#endif /* __cplusplus */
   99#endif
  100
  101#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
  102#define __ID3D12GraphicsCommandList1_FWD_DEFINED__
  103typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
  104#ifdef __cplusplus
  105interface ID3D12GraphicsCommandList1;
  106#endif /* __cplusplus */
  107#endif
  108
  109#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
  110#define __ID3D12GraphicsCommandList2_FWD_DEFINED__
  111typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
  112#ifdef __cplusplus
  113interface ID3D12GraphicsCommandList2;
  114#endif /* __cplusplus */
  115#endif
  116
  117#ifndef __ID3D12ProtectedSession_FWD_DEFINED__
  118#define __ID3D12ProtectedSession_FWD_DEFINED__
  119typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
  120#ifdef __cplusplus
  121interface ID3D12ProtectedSession;
  122#endif /* __cplusplus */
  123#endif
  124
  125#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
  126#define __ID3D12ProtectedResourceSession_FWD_DEFINED__
  127typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
  128#ifdef __cplusplus
  129interface ID3D12ProtectedResourceSession;
  130#endif /* __cplusplus */
  131#endif
  132
  133#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
  134#define __ID3D12GraphicsCommandList3_FWD_DEFINED__
  135typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
  136#ifdef __cplusplus
  137interface ID3D12GraphicsCommandList3;
  138#endif /* __cplusplus */
  139#endif
  140
  141#ifndef __ID3D12CommandQueue_FWD_DEFINED__
  142#define __ID3D12CommandQueue_FWD_DEFINED__
  143typedef interface ID3D12CommandQueue ID3D12CommandQueue;
  144#ifdef __cplusplus
  145interface ID3D12CommandQueue;
  146#endif /* __cplusplus */
  147#endif
  148
  149#ifndef __ID3D12RootSignature_FWD_DEFINED__
  150#define __ID3D12RootSignature_FWD_DEFINED__
  151typedef interface ID3D12RootSignature ID3D12RootSignature;
  152#ifdef __cplusplus
  153interface ID3D12RootSignature;
  154#endif /* __cplusplus */
  155#endif
  156
  157#ifndef __ID3D12PipelineState_FWD_DEFINED__
  158#define __ID3D12PipelineState_FWD_DEFINED__
  159typedef interface ID3D12PipelineState ID3D12PipelineState;
  160#ifdef __cplusplus
  161interface ID3D12PipelineState;
  162#endif /* __cplusplus */
  163#endif
  164
  165#ifndef __ID3D12Fence_FWD_DEFINED__
  166#define __ID3D12Fence_FWD_DEFINED__
  167typedef interface ID3D12Fence ID3D12Fence;
  168#ifdef __cplusplus
  169interface ID3D12Fence;
  170#endif /* __cplusplus */
  171#endif
  172
  173#ifndef __ID3D12Fence1_FWD_DEFINED__
  174#define __ID3D12Fence1_FWD_DEFINED__
  175typedef interface ID3D12Fence1 ID3D12Fence1;
  176#ifdef __cplusplus
  177interface ID3D12Fence1;
  178#endif /* __cplusplus */
  179#endif
  180
  181#ifndef __ID3D12CommandAllocator_FWD_DEFINED__
  182#define __ID3D12CommandAllocator_FWD_DEFINED__
  183typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
  184#ifdef __cplusplus
  185interface ID3D12CommandAllocator;
  186#endif /* __cplusplus */
  187#endif
  188
  189#ifndef __ID3D12Device_FWD_DEFINED__
  190#define __ID3D12Device_FWD_DEFINED__
  191typedef interface ID3D12Device ID3D12Device;
  192#ifdef __cplusplus
  193interface ID3D12Device;
  194#endif /* __cplusplus */
  195#endif
  196
  197#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
  198#define __ID3D12PipelineLibrary_FWD_DEFINED__
  199typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
  200#ifdef __cplusplus
  201interface ID3D12PipelineLibrary;
  202#endif /* __cplusplus */
  203#endif
  204
  205#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
  206#define __ID3D12PipelineLibrary1_FWD_DEFINED__
  207typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
  208#ifdef __cplusplus
  209interface ID3D12PipelineLibrary1;
  210#endif /* __cplusplus */
  211#endif
  212
  213#ifndef __ID3D12Device1_FWD_DEFINED__
  214#define __ID3D12Device1_FWD_DEFINED__
  215typedef interface ID3D12Device1 ID3D12Device1;
  216#ifdef __cplusplus
  217interface ID3D12Device1;
  218#endif /* __cplusplus */
  219#endif
  220
  221#ifndef __ID3D12Device2_FWD_DEFINED__
  222#define __ID3D12Device2_FWD_DEFINED__
  223typedef interface ID3D12Device2 ID3D12Device2;
  224#ifdef __cplusplus
  225interface ID3D12Device2;
  226#endif /* __cplusplus */
  227#endif
  228
  229#ifndef __ID3D12Device3_FWD_DEFINED__
  230#define __ID3D12Device3_FWD_DEFINED__
  231typedef interface ID3D12Device3 ID3D12Device3;
  232#ifdef __cplusplus
  233interface ID3D12Device3;
  234#endif /* __cplusplus */
  235#endif
  236
  237#ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
  238#define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
  239typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
  240#ifdef __cplusplus
  241interface ID3D12RootSignatureDeserializer;
  242#endif /* __cplusplus */
  243#endif
  244
  245#ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
  246#define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
  247typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
  248#ifdef __cplusplus
  249interface ID3D12VersionedRootSignatureDeserializer;
  250#endif /* __cplusplus */
  251#endif
  252
  253#ifndef __ID3D12Device4_FWD_DEFINED__
  254#define __ID3D12Device4_FWD_DEFINED__
  255typedef interface ID3D12Device4 ID3D12Device4;
  256#ifdef __cplusplus
  257interface ID3D12Device4;
  258#endif /* __cplusplus */
  259#endif
  260
  261#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
  262#define __ID3D12LifetimeOwner_FWD_DEFINED__
  263typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
  264#ifdef __cplusplus
  265interface ID3D12LifetimeOwner;
  266#endif /* __cplusplus */
  267#endif
  268
  269#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
  270#define __ID3D12SwapChainAssistant_FWD_DEFINED__
  271typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
  272#ifdef __cplusplus
  273interface ID3D12SwapChainAssistant;
  274#endif /* __cplusplus */
  275#endif
  276
  277#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
  278#define __ID3D12LifetimeTracker_FWD_DEFINED__
  279typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
  280#ifdef __cplusplus
  281interface ID3D12LifetimeTracker;
  282#endif /* __cplusplus */
  283#endif
  284
  285#ifndef __ID3D12StateObject_FWD_DEFINED__
  286#define __ID3D12StateObject_FWD_DEFINED__
  287typedef interface ID3D12StateObject ID3D12StateObject;
  288#ifdef __cplusplus
  289interface ID3D12StateObject;
  290#endif /* __cplusplus */
  291#endif
  292
  293#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
  294#define __ID3D12StateObjectProperties_FWD_DEFINED__
  295typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
  296#ifdef __cplusplus
  297interface ID3D12StateObjectProperties;
  298#endif /* __cplusplus */
  299#endif
  300
  301#ifndef __ID3D12Device5_FWD_DEFINED__
  302#define __ID3D12Device5_FWD_DEFINED__
  303typedef interface ID3D12Device5 ID3D12Device5;
  304#ifdef __cplusplus
  305interface ID3D12Device5;
  306#endif /* __cplusplus */
  307#endif
  308
  309#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
  310#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
  311typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
  312#ifdef __cplusplus
  313interface ID3D12DeviceRemovedExtendedDataSettings;
  314#endif /* __cplusplus */
  315#endif
  316
  317#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
  318#define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
  319typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
  320#ifdef __cplusplus
  321interface ID3D12DeviceRemovedExtendedDataSettings1;
  322#endif /* __cplusplus */
  323#endif
  324
  325#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
  326#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
  327typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
  328#ifdef __cplusplus
  329interface ID3D12DeviceRemovedExtendedData;
  330#endif /* __cplusplus */
  331#endif
  332
  333#ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
  334#define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
  335typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
  336#ifdef __cplusplus
  337interface ID3D12DeviceRemovedExtendedData1;
  338#endif /* __cplusplus */
  339#endif
  340
  341#ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
  342#define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
  343typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
  344#ifdef __cplusplus
  345interface ID3D12DeviceRemovedExtendedData2;
  346#endif /* __cplusplus */
  347#endif
  348
  349#ifndef __ID3D12Device6_FWD_DEFINED__
  350#define __ID3D12Device6_FWD_DEFINED__
  351typedef interface ID3D12Device6 ID3D12Device6;
  352#ifdef __cplusplus
  353interface ID3D12Device6;
  354#endif /* __cplusplus */
  355#endif
  356
  357#ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
  358#define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
  359typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
  360#ifdef __cplusplus
  361interface ID3D12ProtectedResourceSession1;
  362#endif /* __cplusplus */
  363#endif
  364
  365#ifndef __ID3D12Device7_FWD_DEFINED__
  366#define __ID3D12Device7_FWD_DEFINED__
  367typedef interface ID3D12Device7 ID3D12Device7;
  368#ifdef __cplusplus
  369interface ID3D12Device7;
  370#endif /* __cplusplus */
  371#endif
  372
  373#ifndef __ID3D12Device8_FWD_DEFINED__
  374#define __ID3D12Device8_FWD_DEFINED__
  375typedef interface ID3D12Device8 ID3D12Device8;
  376#ifdef __cplusplus
  377interface ID3D12Device8;
  378#endif /* __cplusplus */
  379#endif
  380
  381#ifndef __ID3D12Resource1_FWD_DEFINED__
  382#define __ID3D12Resource1_FWD_DEFINED__
  383typedef interface ID3D12Resource1 ID3D12Resource1;
  384#ifdef __cplusplus
  385interface ID3D12Resource1;
  386#endif /* __cplusplus */
  387#endif
  388
  389#ifndef __ID3D12Resource2_FWD_DEFINED__
  390#define __ID3D12Resource2_FWD_DEFINED__
  391typedef interface ID3D12Resource2 ID3D12Resource2;
  392#ifdef __cplusplus
  393interface ID3D12Resource2;
  394#endif /* __cplusplus */
  395#endif
  396
  397#ifndef __ID3D12Heap1_FWD_DEFINED__
  398#define __ID3D12Heap1_FWD_DEFINED__
  399typedef interface ID3D12Heap1 ID3D12Heap1;
  400#ifdef __cplusplus
  401interface ID3D12Heap1;
  402#endif /* __cplusplus */
  403#endif
  404
  405#ifndef __ID3D12MetaCommand_FWD_DEFINED__
  406#define __ID3D12MetaCommand_FWD_DEFINED__
  407typedef interface ID3D12MetaCommand ID3D12MetaCommand;
  408#ifdef __cplusplus
  409interface ID3D12MetaCommand;
  410#endif /* __cplusplus */
  411#endif
  412
  413#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
  414#define __ID3D12GraphicsCommandList4_FWD_DEFINED__
  415typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
  416#ifdef __cplusplus
  417interface ID3D12GraphicsCommandList4;
  418#endif /* __cplusplus */
  419#endif
  420
  421#ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
  422#define __ID3D12ShaderCacheSession_FWD_DEFINED__
  423typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
  424#ifdef __cplusplus
  425interface ID3D12ShaderCacheSession;
  426#endif /* __cplusplus */
  427#endif
  428
  429#ifndef __ID3D12Device9_FWD_DEFINED__
  430#define __ID3D12Device9_FWD_DEFINED__
  431typedef interface ID3D12Device9 ID3D12Device9;
  432#ifdef __cplusplus
  433interface ID3D12Device9;
  434#endif /* __cplusplus */
  435#endif
  436
  437#ifndef __ID3D12Device10_FWD_DEFINED__
  438#define __ID3D12Device10_FWD_DEFINED__
  439typedef interface ID3D12Device10 ID3D12Device10;
  440#ifdef __cplusplus
  441interface ID3D12Device10;
  442#endif /* __cplusplus */
  443#endif
  444
  445#ifndef __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
  446#define __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
  447typedef interface ID3D12VirtualizationGuestDevice ID3D12VirtualizationGuestDevice;
  448#ifdef __cplusplus
  449interface ID3D12VirtualizationGuestDevice;
  450#endif /* __cplusplus */
  451#endif
  452
  453#ifndef __ID3D12Tools_FWD_DEFINED__
  454#define __ID3D12Tools_FWD_DEFINED__
  455typedef interface ID3D12Tools ID3D12Tools;
  456#ifdef __cplusplus
  457interface ID3D12Tools;
  458#endif /* __cplusplus */
  459#endif
  460
  461#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
  462#define __ID3D12SDKConfiguration_FWD_DEFINED__
  463typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
  464#ifdef __cplusplus
  465interface ID3D12SDKConfiguration;
  466#endif /* __cplusplus */
  467#endif
  468
  469#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
  470#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
  471typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
  472#ifdef __cplusplus
  473interface ID3D12GraphicsCommandList5;
  474#endif /* __cplusplus */
  475#endif
  476
  477#ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
  478#define __ID3D12GraphicsCommandList6_FWD_DEFINED__
  479typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
  480#ifdef __cplusplus
  481interface ID3D12GraphicsCommandList6;
  482#endif /* __cplusplus */
  483#endif
  484
  485#ifndef __ID3D12GraphicsCommandList7_FWD_DEFINED__
  486#define __ID3D12GraphicsCommandList7_FWD_DEFINED__
  487typedef interface ID3D12GraphicsCommandList7 ID3D12GraphicsCommandList7;
  488#ifdef __cplusplus
  489interface 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
  501extern "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
 1310typedef 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;
 1315DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_MIN_PRECISION_SUPPORT);
 1316typedef 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;
 1322typedef 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;
 1327typedef 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;
 1333typedef 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;
 1340typedef enum D3D12_RESOURCE_HEAP_TIER {
 1341    D3D12_RESOURCE_HEAP_TIER_1 = 1,
 1342    D3D12_RESOURCE_HEAP_TIER_2 = 2
 1343} D3D12_RESOURCE_HEAP_TIER;
 1344typedef 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;
 1376DEFINE_ENUM_FLAG_OPERATORS(D3D12_FORMAT_SUPPORT1);
 1377typedef 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;
 1392DEFINE_ENUM_FLAG_OPERATORS(D3D12_FORMAT_SUPPORT2);
 1393typedef 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;
 1398typedef 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;
 1403typedef 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;
 1413DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_SUPPORT_FLAGS);
 1414typedef 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;
 1424DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_LIST_SUPPORT_FLAGS);
 1425typedef 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;
 1431typedef 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;
 1436typedef struct D3D12_FEATURE_DATA_DISPLAYABLE {
 1437    WINBOOL DisplayableTexture;
 1438    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
 1439} D3D12_FEATURE_DATA_DISPLAYABLE;
 1440typedef enum D3D12_HEAP_SERIALIZATION_TIER {
 1441    D3D12_HEAP_SERIALIZATION_TIER_0 = 0x0,
 1442    D3D12_HEAP_SERIALIZATION_TIER_10 = 0xa
 1443} D3D12_HEAP_SERIALIZATION_TIER;
 1444typedef 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;
 1449typedef 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;
 1454typedef enum D3D12_RESIDENCY_FLAGS {
 1455    D3D12_RESIDENCY_FLAG_NONE = 0x0,
 1456    D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
 1457} D3D12_RESIDENCY_FLAGS;
 1458DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESIDENCY_FLAGS);
 1459#ifndef __ID3D12Fence_FWD_DEFINED__
 1460#define __ID3D12Fence_FWD_DEFINED__
 1461typedef interface ID3D12Fence ID3D12Fence;
 1462#ifdef __cplusplus
 1463interface ID3D12Fence;
 1464#endif /* __cplusplus */
 1465#endif
 1466
 1467#ifndef __ID3D12RootSignature_FWD_DEFINED__
 1468#define __ID3D12RootSignature_FWD_DEFINED__
 1469typedef interface ID3D12RootSignature ID3D12RootSignature;
 1470#ifdef __cplusplus
 1471interface ID3D12RootSignature;
 1472#endif /* __cplusplus */
 1473#endif
 1474
 1475#ifndef __ID3D12Heap_FWD_DEFINED__
 1476#define __ID3D12Heap_FWD_DEFINED__
 1477typedef interface ID3D12Heap ID3D12Heap;
 1478#ifdef __cplusplus
 1479interface ID3D12Heap;
 1480#endif /* __cplusplus */
 1481#endif
 1482
 1483#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
 1484#define __ID3D12DescriptorHeap_FWD_DEFINED__
 1485typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
 1486#ifdef __cplusplus
 1487interface ID3D12DescriptorHeap;
 1488#endif /* __cplusplus */
 1489#endif
 1490
 1491#ifndef __ID3D12Resource_FWD_DEFINED__
 1492#define __ID3D12Resource_FWD_DEFINED__
 1493typedef interface ID3D12Resource ID3D12Resource;
 1494#ifdef __cplusplus
 1495interface ID3D12Resource;
 1496#endif /* __cplusplus */
 1497#endif
 1498
 1499#ifndef __ID3D12CommandAllocator_FWD_DEFINED__
 1500#define __ID3D12CommandAllocator_FWD_DEFINED__
 1501typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
 1502#ifdef __cplusplus
 1503interface ID3D12CommandAllocator;
 1504#endif /* __cplusplus */
 1505#endif
 1506
 1507#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
 1508#define __ID3D12GraphicsCommandList_FWD_DEFINED__
 1509typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
 1510#ifdef __cplusplus
 1511interface ID3D12GraphicsCommandList;
 1512#endif /* __cplusplus */
 1513#endif
 1514
 1515#ifndef __ID3D12CommandQueue_FWD_DEFINED__
 1516#define __ID3D12CommandQueue_FWD_DEFINED__
 1517typedef interface ID3D12CommandQueue ID3D12CommandQueue;
 1518#ifdef __cplusplus
 1519interface ID3D12CommandQueue;
 1520#endif /* __cplusplus */
 1521#endif
 1522
 1523#ifndef __ID3D12PipelineState_FWD_DEFINED__
 1524#define __ID3D12PipelineState_FWD_DEFINED__
 1525typedef interface ID3D12PipelineState ID3D12PipelineState;
 1526#ifdef __cplusplus
 1527interface ID3D12PipelineState;
 1528#endif /* __cplusplus */
 1529#endif
 1530
 1531#ifndef __ID3D12Device_FWD_DEFINED__
 1532#define __ID3D12Device_FWD_DEFINED__
 1533typedef interface ID3D12Device ID3D12Device;
 1534#ifdef __cplusplus
 1535interface ID3D12Device;
 1536#endif /* __cplusplus */
 1537#endif
 1538
 1539typedef RECT D3D12_RECT;
 1540typedef struct D3D12_BOX {
 1541    UINT left;
 1542    UINT top;
 1543    UINT front;
 1544    UINT right;
 1545    UINT bottom;
 1546    UINT back;
 1547} D3D12_BOX;
 1548typedef struct D3D12_VIEWPORT {
 1549    FLOAT TopLeftX;
 1550    FLOAT TopLeftY;
 1551    FLOAT Width;
 1552    FLOAT Height;
 1553    FLOAT MinDepth;
 1554    FLOAT MaxDepth;
 1555} D3D12_VIEWPORT;
 1556typedef struct D3D12_RANGE {
 1557    SIZE_T Begin;
 1558    SIZE_T End;
 1559} D3D12_RANGE;
 1560typedef struct D3D12_RANGE_UINT64 {
 1561    UINT64 Begin;
 1562    UINT64 End;
 1563} D3D12_RANGE_UINT64;
 1564typedef struct D3D12_SUBRESOURCE_RANGE_UINT64 {
 1565    UINT Subresource;
 1566    D3D12_RANGE_UINT64 Range;
 1567} D3D12_SUBRESOURCE_RANGE_UINT64;
 1568typedef struct D3D12_SUBRESOURCE_INFO {
 1569    UINT64 Offset;
 1570    UINT RowPitch;
 1571    UINT DepthPitch;
 1572} D3D12_SUBRESOURCE_INFO;
 1573typedef struct D3D12_RESOURCE_ALLOCATION_INFO {
 1574    UINT64 SizeInBytes;
 1575    UINT64 Alignment;
 1576} D3D12_RESOURCE_ALLOCATION_INFO;
 1577typedef struct D3D12_RESOURCE_ALLOCATION_INFO1 {
 1578    UINT64 Offset;
 1579    UINT64 Alignment;
 1580    UINT64 SizeInBytes;
 1581} D3D12_RESOURCE_ALLOCATION_INFO1;
 1582typedef struct D3D12_DRAW_ARGUMENTS {
 1583    UINT VertexCountPerInstance;
 1584    UINT InstanceCount;
 1585    UINT StartVertexLocation;
 1586    UINT StartInstanceLocation;
 1587} D3D12_DRAW_ARGUMENTS;
 1588typedef 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;
 1595typedef struct D3D12_DISPATCH_ARGUMENTS {
 1596    UINT ThreadGroupCountX;
 1597    UINT ThreadGroupCountY;
 1598    UINT ThreadGroupCountZ;
 1599} D3D12_DISPATCH_ARGUMENTS;
 1600typedef 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;
 1617typedef 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;
 1622typedef 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;
 1626DEFINE_ENUM_FLAG_OPERATORS(D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS);
 1627typedef 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;
 1633typedef 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;
 1639typedef 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;
 1645typedef 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;
 1650typedef 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;
 1657typedef 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;
 1675DEFINE_ENUM_FLAG_OPERATORS(D3D12_HEAP_FLAGS);
 1676typedef struct D3D12_HEAP_DESC {
 1677    UINT64 SizeInBytes;
 1678    D3D12_HEAP_PROPERTIES Properties;
 1679    UINT64 Alignment;
 1680    D3D12_HEAP_FLAGS Flags;
 1681} D3D12_HEAP_DESC;
 1682typedef struct D3D12_TILED_RESOURCE_COORDINATE {
 1683    UINT X;
 1684    UINT Y;
 1685    UINT Z;
 1686    UINT Subresource;
 1687} D3D12_TILED_RESOURCE_COORDINATE;
 1688typedef 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;
 1695typedef struct D3D12_SUBRESOURCE_TILING {
 1696    UINT WidthInTiles;
 1697    UINT16 HeightInTiles;
 1698    UINT16 DepthInTiles;
 1699    UINT StartTileIndexInOverallResource;
 1700} D3D12_SUBRESOURCE_TILING;
 1701typedef struct D3D12_TILE_SHAPE {
 1702    UINT WidthInTexels;
 1703    UINT HeightInTexels;
 1704    UINT DepthInTexels;
 1705} D3D12_TILE_SHAPE;
 1706typedef struct D3D12_SHADER_BYTECODE {
 1707    const void *pShaderBytecode;
 1708    SIZE_T BytecodeLength;
 1709} D3D12_SHADER_BYTECODE;
 1710typedef struct D3D12_DEPTH_STENCIL_VALUE {
 1711    FLOAT Depth;
 1712    UINT8 Stencil;
 1713} D3D12_DEPTH_STENCIL_VALUE;
 1714typedef 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;
 1721typedef struct D3D12_PACKED_MIP_INFO {
 1722    UINT8 NumStandardMips;
 1723    UINT8 NumPackedMips;
 1724    UINT NumTilesForPackedMips;
 1725    UINT StartTileIndexInOverallResource;
 1726} D3D12_PACKED_MIP_INFO;
 1727typedef 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;
 1756DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESOURCE_STATES);
 1757typedef 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;
 1762typedef 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;
 1767DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESOURCE_BARRIER_FLAGS);
 1768typedef 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;
 1774typedef struct D3D12_RESOURCE_ALIASING_BARRIER_ALIASING {
 1775    ID3D12Resource *pResourceBefore;
 1776    ID3D12Resource *pResourceAfter;
 1777} D3D12_RESOURCE_ALIASING_BARRIER;
 1778typedef struct D3D12_RESOURCE_UAV_BARRIER {
 1779    ID3D12Resource *pResource;
 1780} D3D12_RESOURCE_UAV_BARRIER;
 1781typedef 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;
 1790typedef 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;
 1797typedef 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;
 1803typedef 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;
 1815DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESOURCE_FLAGS);
 1816typedef struct D3D12_MIP_REGION {
 1817    UINT Width;
 1818    UINT Height;
 1819    UINT Depth;
 1820} D3D12_MIP_REGION;
 1821typedef 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;
 1833typedef 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;
 1846typedef 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;
 1854typedef struct D3D12_SAMPLE_POSITION {
 1855    INT8 X;
 1856    INT8 Y;
 1857} D3D12_SAMPLE_POSITION;
 1858typedef 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;
 1862typedef struct D3D12_SUBRESOURCE_FOOTPRINT {
 1863    DXGI_FORMAT Format;
 1864    UINT Width;
 1865    UINT Height;
 1866    UINT Depth;
 1867    UINT RowPitch;
 1868} D3D12_SUBRESOURCE_FOOTPRINT;
 1869typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT {
 1870    UINT64 Offset;
 1871    D3D12_SUBRESOURCE_FOOTPRINT Footprint;
 1872} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
 1873typedef 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;
 1881typedef 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;
 1887typedef 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;
 1894typedef 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;
 1902DEFINE_ENUM_FLAG_OPERATORS(D3D12_DESCRIPTOR_RANGE_FLAGS);
 1903typedef 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;
 1911typedef struct D3D12_ROOT_DESCRIPTOR_TABLE {
 1912    UINT NumDescriptorRanges;
 1913    const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
 1914} D3D12_ROOT_DESCRIPTOR_TABLE;
 1915typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1 {
 1916    UINT NumDescriptorRanges;
 1917    const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
 1918} D3D12_ROOT_DESCRIPTOR_TABLE1;
 1919typedef struct D3D12_ROOT_CONSTANTS {
 1920    UINT ShaderRegister;
 1921    UINT RegisterSpace;
 1922    UINT Num32BitValues;
 1923} D3D12_ROOT_CONSTANTS;
 1924typedef struct D3D12_ROOT_DESCRIPTOR {
 1925    UINT ShaderRegister;
 1926    UINT RegisterSpace;
 1927} D3D12_ROOT_DESCRIPTOR;
 1928typedef 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;
 1934DEFINE_ENUM_FLAG_OPERATORS(D3D12_ROOT_DESCRIPTOR_FLAGS);
 1935typedef struct D3D12_ROOT_DESCRIPTOR1 {
 1936    UINT ShaderRegister;
 1937    UINT RegisterSpace;
 1938    D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
 1939} D3D12_ROOT_DESCRIPTOR1;
 1940typedef 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;
 1947typedef 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;
 1957typedef 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;
 1966typedef 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;
 1975typedef 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;
 1980typedef 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;
 2018typedef 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
 2032typedef 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)
 2071typedef 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;
 2078typedef 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;
 2088typedef 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;
 2103typedef 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;
 2118DEFINE_ENUM_FLAG_OPERATORS(D3D12_ROOT_SIGNATURE_FLAGS);
 2119typedef 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;
 2126typedef 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;
 2133typedef 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;
 2138typedef 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;
 2145typedef 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;
 2152typedef 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;
 2156DEFINE_ENUM_FLAG_OPERATORS(D3D12_DESCRIPTOR_HEAP_FLAGS);
 2157typedef 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;
 2163typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
 2164typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC {
 2165    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
 2166    UINT SizeInBytes;
 2167} D3D12_CONSTANT_BUFFER_VIEW_DESC;
 2168typedef 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;
 2182typedef enum D3D12_BUFFER_SRV_FLAGS {
 2183    D3D12_BUFFER_SRV_FLAG_NONE = 0x0,
 2184    D3D12_BUFFER_SRV_FLAG_RAW = 0x1
 2185} D3D12_BUFFER_SRV_FLAGS;
 2186DEFINE_ENUM_FLAG_OPERATORS(D3D12_BUFFER_SRV_FLAGS);
 2187typedef 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))
 2205typedef struct D3D12_BUFFER_SRV {
 2206    UINT64 FirstElement;
 2207    UINT NumElements;
 2208    UINT StructureByteStride;
 2209    D3D12_BUFFER_SRV_FLAGS Flags;
 2210} D3D12_BUFFER_SRV;
 2211typedef struct D3D12_TEX1D_SRV {
 2212    UINT MostDetailedMip;
 2213    UINT MipLevels;
 2214    FLOAT ResourceMinLODClamp;
 2215} D3D12_TEX1D_SRV;
 2216typedef 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;
 2223typedef struct D3D12_TEX2D_SRV {
 2224    UINT MostDetailedMip;
 2225    UINT MipLevels;
 2226    UINT PlaneSlice;
 2227    FLOAT ResourceMinLODClamp;
 2228} D3D12_TEX2D_SRV;
 2229typedef 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;
 2237typedef struct D3D12_TEX2DMS_SRV {
 2238    UINT UnusedField_NothingToDefine;
 2239} D3D12_TEX2DMS_SRV;
 2240typedef struct D3D12_TEX2DMS_ARRAY_SRV {
 2241    UINT FirstArraySlice;
 2242    UINT ArraySize;
 2243} D3D12_TEX2DMS_ARRAY_SRV;
 2244typedef struct D3D12_TEX3D_SRV {
 2245    UINT MostDetailedMip;
 2246    UINT MipLevels;
 2247    FLOAT ResourceMinLODClamp;
 2248} D3D12_TEX3D_SRV;
 2249typedef struct D3D12_TEXCUBE_SRV {
 2250    UINT MostDetailedMip;
 2251    UINT MipLevels;
 2252    FLOAT ResourceMinLODClamp;
 2253} D3D12_TEXCUBE_SRV;
 2254typedef 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;
 2261typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV {
 2262    D3D12_GPU_VIRTUAL_ADDRESS Location;
 2263} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
 2264typedef 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;
 2282typedef 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;
 2291typedef enum D3D12_BUFFER_UAV_FLAGS {
 2292    D3D12_BUFFER_UAV_FLAG_NONE = 0x0,
 2293    D3D12_BUFFER_UAV_FLAG_RAW = 0x1
 2294} D3D12_BUFFER_UAV_FLAGS;
 2295DEFINE_ENUM_FLAG_OPERATORS(D3D12_BUFFER_UAV_FLAGS);
 2296typedef 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;
 2303typedef struct D3D12_TEX1D_UAV {
 2304    UINT MipSlice;
 2305} D3D12_TEX1D_UAV;
 2306typedef struct D3D12_TEX1D_ARRAY_UAV {
 2307    UINT MipSlice;
 2308    UINT FirstArraySlice;
 2309    UINT ArraySize;
 2310} D3D12_TEX1D_ARRAY_UAV;
 2311typedef struct D3D12_TEX2D_UAV {
 2312    UINT MipSlice;
 2313    UINT PlaneSlice;
 2314} D3D12_TEX2D_UAV;
 2315typedef struct D3D12_TEX2D_ARRAY_UAV {
 2316    UINT MipSlice;
 2317    UINT FirstArraySlice;
 2318    UINT ArraySize;
 2319    UINT PlaneSlice;
 2320} D3D12_TEX2D_ARRAY_UAV;
 2321typedef struct D3D12_TEX3D_UAV {
 2322    UINT MipSlice;
 2323    UINT FirstWSlice;
 2324    UINT WSize;
 2325} D3D12_TEX3D_UAV;
 2326typedef 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;
 2338typedef 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;
 2349typedef struct D3D12_BUFFER_RTV {
 2350    UINT64 FirstElement;
 2351    UINT NumElements;
 2352} D3D12_BUFFER_RTV;
 2353typedef struct D3D12_TEX1D_RTV {
 2354    UINT MipSlice;
 2355} D3D12_TEX1D_RTV;
 2356typedef struct D3D12_TEX1D_ARRAY_RTV {
 2357    UINT MipSlice;
 2358    UINT FirstArraySlice;
 2359    UINT ArraySize;
 2360} D3D12_TEX1D_ARRAY_RTV;
 2361typedef struct D3D12_TEX2D_RTV {
 2362    UINT MipSlice;
 2363    UINT PlaneSlice;
 2364} D3D12_TEX2D_RTV;
 2365typedef struct D3D12_TEX2D_ARRAY_RTV {
 2366    UINT MipSlice;
 2367    UINT FirstArraySlice;
 2368    UINT ArraySize;
 2369    UINT PlaneSlice;
 2370} D3D12_TEX2D_ARRAY_RTV;
 2371typedef struct D3D12_TEX2DMS_RTV {
 2372    UINT UnusedField_NothingToDefine;
 2373} D3D12_TEX2DMS_RTV;
 2374typedef struct D3D12_TEX2DMS_ARRAY_RTV {
 2375    UINT FirstArraySlice;
 2376    UINT ArraySize;
 2377} D3D12_TEX2DMS_ARRAY_RTV;
 2378typedef struct D3D12_TEX3D_RTV {
 2379    UINT MipSlice;
 2380    UINT FirstWSlice;
 2381    UINT WSize;
 2382} D3D12_TEX3D_RTV;
 2383typedef 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;
 2397typedef 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;
 2406typedef 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;
 2411DEFINE_ENUM_FLAG_OPERATORS(D3D12_DSV_FLAGS);
 2412typedef struct D3D12_TEX1D_DSV {
 2413    UINT MipSlice;
 2414} D3D12_TEX1D_DSV;
 2415typedef struct D3D12_TEX1D_ARRAY_DSV {
 2416    UINT MipSlice;
 2417    UINT FirstArraySlice;
 2418    UINT ArraySize;
 2419} D3D12_TEX1D_ARRAY_DSV;
 2420typedef struct D3D12_TEX2D_DSV {
 2421    UINT MipSlice;
 2422} D3D12_TEX2D_DSV;
 2423typedef struct D3D12_TEX2D_ARRAY_DSV {
 2424    UINT MipSlice;
 2425    UINT FirstArraySlice;
 2426    UINT ArraySize;
 2427} D3D12_TEX2D_ARRAY_DSV;
 2428typedef struct D3D12_TEX2DMS_DSV {
 2429    UINT UnusedField_NothingToDefine;
 2430} D3D12_TEX2DMS_DSV;
 2431typedef struct D3D12_TEX2DMS_ARRAY_DSV {
 2432    UINT FirstArraySlice;
 2433    UINT ArraySize;
 2434} D3D12_TEX2DMS_ARRAY_DSV;
 2435typedef 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;
 2448typedef 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;
 2460typedef struct D3D12_CPU_DESCRIPTOR_HANDLE {
 2461    SIZE_T ptr;
 2462} D3D12_CPU_DESCRIPTOR_HANDLE;
 2463typedef struct D3D12_GPU_DESCRIPTOR_HANDLE {
 2464    UINT64 ptr;
 2465} D3D12_GPU_DESCRIPTOR_HANDLE;
 2466typedef 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;
 2476typedef 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;
 2482typedef enum D3D12_DEPTH_WRITE_MASK {
 2483    D3D12_DEPTH_WRITE_MASK_ZERO = 0,
 2484    D3D12_DEPTH_WRITE_MASK_ALL = 1
 2485} D3D12_DEPTH_WRITE_MASK;
 2486typedef 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;
 2496typedef 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;
 2507typedef 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;
 2528typedef 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;
 2535typedef 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;
 2553typedef 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;
 2560typedef 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;
 2572typedef struct D3D12_BLEND_DESC {
 2573    WINBOOL AlphaToCoverageEnable;
 2574    WINBOOL IndependentBlendEnable;
 2575    D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[8];
 2576} D3D12_BLEND_DESC;
 2577typedef enum D3D12_FILL_MODE {
 2578    D3D12_FILL_MODE_WIREFRAME = 2,
 2579    D3D12_FILL_MODE_SOLID = 3
 2580} D3D12_FILL_MODE;
 2581typedef 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;
 2586typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE {
 2587    D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
 2588    D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
 2589} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
 2590typedef 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;
 2603typedef 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;
 2611typedef 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;
 2618typedef enum D3D12_INPUT_CLASSIFICATION {
 2619    D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
 2620    D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
 2621} D3D12_INPUT_CLASSIFICATION;
 2622typedef 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;
 2631typedef struct D3D12_INPUT_LAYOUT_DESC {
 2632    const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
 2633    UINT NumElements;
 2634} D3D12_INPUT_LAYOUT_DESC;
 2635typedef 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;
 2640typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
 2641typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
 2642typedef 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;
 2649typedef struct D3D12_CACHED_PIPELINE_STATE {
 2650    const void *pCachedBlob;
 2651    SIZE_T CachedBlobSizeInBytes;
 2652} D3D12_CACHED_PIPELINE_STATE;
 2653typedef enum D3D12_PIPELINE_STATE_FLAGS {
 2654    D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
 2655    D3D12_PIPELINE_STATE_FLAG_DEBUG = 0x1
 2656} D3D12_PIPELINE_STATE_FLAGS;
 2657DEFINE_ENUM_FLAG_OPERATORS(D3D12_PIPELINE_STATE_FLAGS);
 2658typedef 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;
 2681typedef 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;
 2688typedef struct D3D12_PIPELINE_STATE_STREAM_DESC {
 2689    SIZE_T SizeInBytes;
 2690    void *pPipelineStateSubobjectStream;
 2691} D3D12_PIPELINE_STATE_STREAM_DESC;
 2692struct D3D12_RT_FORMAT_ARRAY {
 2693    DXGI_FORMAT RTFormats[8];
 2694    UINT NumRenderTargets;
 2695};
 2696typedef 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;
 2724typedef struct D3D12_VIEW_INSTANCE_LOCATION {
 2725    UINT ViewportArrayIndex;
 2726    UINT RenderTargetArrayIndex;
 2727} D3D12_VIEW_INSTANCE_LOCATION;
 2728typedef 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;
 2732DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIEW_INSTANCING_FLAGS);
 2733typedef 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;
 2738typedef 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;
 2747typedef 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;
 2752typedef 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;
 2756DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_QUEUE_FLAGS);
 2757typedef 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;
 2763typedef struct D3D12_FEATURE_DATA_ARCHITECTURE {
 2764    UINT NodeIndex;
 2765    WINBOOL TileBasedRenderer;
 2766    WINBOOL UMA;
 2767    WINBOOL CacheCoherentUMA;
 2768} D3D12_FEATURE_DATA_ARCHITECTURE;
 2769typedef struct D3D12_FEATURE_DATA_FORMAT_INFO {
 2770    DXGI_FORMAT Format;
 2771    UINT8 PlaneCount;
 2772} D3D12_FEATURE_DATA_FORMAT_INFO;
 2773typedef 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;
 2778typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE {
 2779    D3D_ROOT_SIGNATURE_VERSION HighestVersion;
 2780} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
 2781typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT {
 2782    UINT MaxGPUVirtualAddressBitsPerResource;
 2783    UINT MaxGPUVirtualAddressBitsPerProcess;
 2784} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
 2785typedef 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;
 2797typedef struct D3D12_FEATURE_DATA_SHADER_MODEL {
 2798    D3D_SHADER_MODEL HighestShaderModel;
 2799} D3D12_FEATURE_DATA_SHADER_MODEL;
 2800typedef 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;
 2808typedef 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;
 2815typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2 {
 2816    WINBOOL DepthBoundsTestSupported;
 2817    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
 2818} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
 2819typedef struct D3D12_FEATURE_DATA_SHADER_CACHE {
 2820    D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
 2821} D3D12_FEATURE_DATA_SHADER_CACHE;
 2822typedef 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;
 2827typedef 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;
 2834typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS {
 2835    WINBOOL Supported;
 2836} D3D12_FEATURE_DATA_EXISTING_HEAPS;
 2837typedef 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;
 2842typedef struct D3D12_FEATURE_DATA_SERIALIZATION {
 2843    UINT NodeIndex;
 2844    D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
 2845} D3D12_FEATURE_DATA_SERIALIZATION;
 2846typedef struct D3D12_FEATURE_DATA_CROSS_NODE {
 2847    D3D12_CROSS_NODE_SHARING_TIER SharingTier;
 2848    WINBOOL AtomicShaderInstructions;
 2849} D3D12_FEATURE_DATA_CROSS_NODE;
 2850typedef 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;
 2855typedef 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;
 2860typedef 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;
 2867typedef 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;
 2871typedef 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;
 2876typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7 {
 2877    D3D12_MESH_SHADER_TIER MeshShaderTier;
 2878    D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
 2879} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
 2880typedef 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;
 2888typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8 {
 2889    WINBOOL UnalignedBlockTexturesSupported;
 2890} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
 2891typedef 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;
 2895typedef 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;
 2903typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10 {
 2904    WINBOOL VariableRateShadingSumCombinerSupported;
 2905    WINBOOL MeshShaderPerPrimitiveShadingRateSupported;
 2906} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
 2907typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11 {
 2908    WINBOOL AtomicInt64OnDescriptorHeapResourceSupported;
 2909} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
 2910typedef 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;
 2915typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12 {
 2916    D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
 2917    WINBOOL EnhancedBarriersSupported;
 2918    WINBOOL RelaxedFormatCastingSupported;
 2919} D3D12_FEATURE_DATA_D3D12_OPTIONS12;
 2920typedef 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;
 2928typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14 {
 2929    WINBOOL AdvancedTextureOpsSupported;
 2930    WINBOOL WriteableMSAATexturesSupported;
 2931    WINBOOL IndependentFrontAndBackStencilRefMaskSupported;
 2932} D3D12_FEATURE_DATA_D3D12_OPTIONS14;
 2933typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15 {
 2934    WINBOOL TriangleFanSupported;
 2935    WINBOOL DynamicIndexBufferStripCutSupported;
 2936} D3D12_FEATURE_DATA_D3D12_OPTIONS15;
 2937typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16 {
 2938    WINBOOL DynamicDepthBiasSupported;
 2939    WINBOOL GPUUploadHeapSupported;
 2940} D3D12_FEATURE_DATA_D3D12_OPTIONS16;
 2941typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17 {
 2942    WINBOOL NonNormalizedCoordinateSamplersSupported;
 2943    WINBOOL ManualWriteTrackingResourceSupported;
 2944} D3D12_FEATURE_DATA_D3D12_OPTIONS17;
 2945typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18 {
 2946    WINBOOL RenderPassesValid;
 2947} D3D12_FEATURE_DATA_D3D12_OPTIONS18;
 2948typedef 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;
 2988typedef struct D3D12_MEMCPY_DEST {
 2989    void *pData;
 2990    SIZE_T RowPitch;
 2991    SIZE_T SlicePitch;
 2992} D3D12_MEMCPY_DEST;
 2993typedef struct D3D12_SUBRESOURCE_DATA {
 2994    const void *pData;
 2995    LONG_PTR RowPitch;
 2996    LONG_PTR SlicePitch;
 2997} D3D12_SUBRESOURCE_DATA;
 2998typedef 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;
 3003DEFINE_ENUM_FLAG_OPERATORS(D3D12_MULTIPLE_FENCE_WAIT_FLAGS);
 3004typedef 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;
 3011typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER {
 3012    D3D12_GPU_VIRTUAL_ADDRESS Dest;
 3013    UINT32 Value;
 3014} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
 3015typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS {
 3016    D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
 3017} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
 3018DEFINE_ENUM_FLAG_OPERATORS(D3D12_PROTECTED_RESOURCE_SESSION_FLAGS);
 3019typedef enum D3D12_PROTECTED_SESSION_STATUS {
 3020    D3D12_PROTECTED_SESSION_STATUS_OK = 0,
 3021    D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
 3022} D3D12_PROTECTED_SESSION_STATUS;
 3023typedef 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
 3033DEFINE_GUID(IID_ID3D12Object, 0xc4fec28f, 0x7966, 0x4e95, 0x9f,0x94, 0xf4,0x31,0xcb,0x56,0xc3,0xb8);
 3034#if defined(__cplusplus) && !defined(CINTERFACE)
 3035MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
 3036ID3D12Object : 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
 3060typedef 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
 3100interface 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 ***/
 3117static inline HRESULT ID3D12Object_QueryInterface(ID3D12Object* This,REFIID riid,void **ppvObject) {
 3118    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 3119}
 3120static inline ULONG ID3D12Object_AddRef(ID3D12Object* This) {
 3121    return This->lpVtbl->AddRef(This);
 3122}
 3123static inline ULONG ID3D12Object_Release(ID3D12Object* This) {
 3124    return This->lpVtbl->Release(This);
 3125}
 3126/*** ID3D12Object methods ***/
 3127static inline HRESULT ID3D12Object_GetPrivateData(ID3D12Object* This,REFGUID guid,UINT *data_size,void *data) {
 3128    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 3129}
 3130static 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}
 3133static inline HRESULT ID3D12Object_SetPrivateDataInterface(ID3D12Object* This,REFGUID guid,const IUnknown *data) {
 3134    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 3135}
 3136static 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
 3153DEFINE_GUID(IID_ID3D12DeviceChild, 0x905db94b, 0xa00c, 0x4140, 0x9d,0xf5, 0x2b,0x64,0xca,0x9e,0xa3,0x57);
 3154#if defined(__cplusplus) && !defined(CINTERFACE)
 3155MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
 3156ID3D12DeviceChild : 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
 3167typedef 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
 3213interface 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 ***/
 3232static inline HRESULT ID3D12DeviceChild_QueryInterface(ID3D12DeviceChild* This,REFIID riid,void **ppvObject) {
 3233    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 3234}
 3235static inline ULONG ID3D12DeviceChild_AddRef(ID3D12DeviceChild* This) {
 3236    return This->lpVtbl->AddRef(This);
 3237}
 3238static inline ULONG ID3D12DeviceChild_Release(ID3D12DeviceChild* This) {
 3239    return This->lpVtbl->Release(This);
 3240}
 3241/*** ID3D12Object methods ***/
 3242static inline HRESULT ID3D12DeviceChild_GetPrivateData(ID3D12DeviceChild* This,REFGUID guid,UINT *data_size,void *data) {
 3243    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 3244}
 3245static 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}
 3248static inline HRESULT ID3D12DeviceChild_SetPrivateDataInterface(ID3D12DeviceChild* This,REFGUID guid,const IUnknown *data) {
 3249    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 3250}
 3251static inline HRESULT ID3D12DeviceChild_SetName(ID3D12DeviceChild* This,const WCHAR *name) {
 3252    return This->lpVtbl->SetName(This,name);
 3253}
 3254/*** ID3D12DeviceChild methods ***/
 3255static 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
 3272DEFINE_GUID(IID_ID3D12Pageable, 0x63ee58fb, 0x1268, 0x4835, 0x86,0xda, 0xf0,0x08,0xce,0x62,0xf0,0xd6);
 3273#if defined(__cplusplus) && !defined(CINTERFACE)
 3274MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
 3275ID3D12Pageable : 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
 3282typedef 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
 3328interface 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 ***/
 3347static inline HRESULT ID3D12Pageable_QueryInterface(ID3D12Pageable* This,REFIID riid,void **ppvObject) {
 3348    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 3349}
 3350static inline ULONG ID3D12Pageable_AddRef(ID3D12Pageable* This) {
 3351    return This->lpVtbl->AddRef(This);
 3352}
 3353static inline ULONG ID3D12Pageable_Release(ID3D12Pageable* This) {
 3354    return This->lpVtbl->Release(This);
 3355}
 3356/*** ID3D12Object methods ***/
 3357static inline HRESULT ID3D12Pageable_GetPrivateData(ID3D12Pageable* This,REFGUID guid,UINT *data_size,void *data) {
 3358    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 3359}
 3360static 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}
 3363static inline HRESULT ID3D12Pageable_SetPrivateDataInterface(ID3D12Pageable* This,REFGUID guid,const IUnknown *data) {
 3364    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 3365}
 3366static inline HRESULT ID3D12Pageable_SetName(ID3D12Pageable* This,const WCHAR *name) {
 3367    return This->lpVtbl->SetName(This,name);
 3368}
 3369/*** ID3D12DeviceChild methods ***/
 3370static 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
 3387DEFINE_GUID(IID_ID3D12Heap, 0x6b3b2502, 0x6e51, 0x45b3, 0x90,0xee, 0x98,0x84,0x26,0x5e,0x8d,0xf3);
 3388#if defined(__cplusplus) && !defined(CINTERFACE)
 3389MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
 3390ID3D12Heap : 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
 3411typedef 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
 3462interface 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 ***/
 3483static inline HRESULT ID3D12Heap_QueryInterface(ID3D12Heap* This,REFIID riid,void **ppvObject) {
 3484    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 3485}
 3486static inline ULONG ID3D12Heap_AddRef(ID3D12Heap* This) {
 3487    return This->lpVtbl->AddRef(This);
 3488}
 3489static inline ULONG ID3D12Heap_Release(ID3D12Heap* This) {
 3490    return This->lpVtbl->Release(This);
 3491}
 3492/*** ID3D12Object methods ***/
 3493static inline HRESULT ID3D12Heap_GetPrivateData(ID3D12Heap* This,REFGUID guid,UINT *data_size,void *data) {
 3494    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 3495}
 3496static 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}
 3499static inline HRESULT ID3D12Heap_SetPrivateDataInterface(ID3D12Heap* This,REFGUID guid,const IUnknown *data) {
 3500    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 3501}
 3502static inline HRESULT ID3D12Heap_SetName(ID3D12Heap* This,const WCHAR *name) {
 3503    return This->lpVtbl->SetName(This,name);
 3504}
 3505/*** ID3D12DeviceChild methods ***/
 3506static inline HRESULT ID3D12Heap_GetDevice(ID3D12Heap* This,REFIID riid,void **device) {
 3507    return This->lpVtbl->GetDevice(This,riid,device);
 3508}
 3509/*** ID3D12Heap methods ***/
 3510static 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
 3528DEFINE_GUID(IID_ID3D12Resource, 0x696442be, 0xa72e, 0x4059, 0xbc,0x79, 0x5b,0x5c,0x98,0x04,0x0f,0xad);
 3529#if defined(__cplusplus) && !defined(CINTERFACE)
 3530MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
 3531ID3D12Resource : 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
 3582typedef 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
 3668interface 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 ***/
 3695static inline HRESULT ID3D12Resource_QueryInterface(ID3D12Resource* This,REFIID riid,void **ppvObject) {
 3696    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 3697}
 3698static inline ULONG ID3D12Resource_AddRef(ID3D12Resource* This) {
 3699    return This->lpVtbl->AddRef(This);
 3700}
 3701static inline ULONG ID3D12Resource_Release(ID3D12Resource* This) {
 3702    return This->lpVtbl->Release(This);
 3703}
 3704/*** ID3D12Object methods ***/
 3705static inline HRESULT ID3D12Resource_GetPrivateData(ID3D12Resource* This,REFGUID guid,UINT *data_size,void *data) {
 3706    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 3707}
 3708static 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}
 3711static inline HRESULT ID3D12Resource_SetPrivateDataInterface(ID3D12Resource* This,REFGUID guid,const IUnknown *data) {
 3712    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 3713}
 3714static inline HRESULT ID3D12Resource_SetName(ID3D12Resource* This,const WCHAR *name) {
 3715    return This->lpVtbl->SetName(This,name);
 3716}
 3717/*** ID3D12DeviceChild methods ***/
 3718static inline HRESULT ID3D12Resource_GetDevice(ID3D12Resource* This,REFIID riid,void **device) {
 3719    return This->lpVtbl->GetDevice(This,riid,device);
 3720}
 3721/*** ID3D12Resource methods ***/
 3722static 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}
 3725static inline void ID3D12Resource_Unmap(ID3D12Resource* This,UINT sub_resource,const D3D12_RANGE *written_range) {
 3726    This->lpVtbl->Unmap(This,sub_resource,written_range);
 3727}
 3728static inline D3D12_RESOURCE_DESC ID3D12Resource_GetDesc(ID3D12Resource* This) {
 3729    D3D12_RESOURCE_DESC __ret;
 3730    return *This->lpVtbl->GetDesc(This,&__ret);
 3731}
 3732static inline D3D12_GPU_VIRTUAL_ADDRESS ID3D12Resource_GetGPUVirtualAddress(ID3D12Resource* This) {
 3733    return This->lpVtbl->GetGPUVirtualAddress(This);
 3734}
 3735static 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}
 3738static 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}
 3741static 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
 3758DEFINE_GUID(IID_ID3D12CommandList, 0x7116d91c, 0xe7e4, 0x47ce, 0xb8,0xc6, 0xec,0x81,0x68,0xf4,0x37,0xe5);
 3759#if defined(__cplusplus) && !defined(CINTERFACE)
 3760MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
 3761ID3D12CommandList : 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
 3771typedef 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
 3821interface 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 ***/
 3842static inline HRESULT ID3D12CommandList_QueryInterface(ID3D12CommandList* This,REFIID riid,void **ppvObject) {
 3843    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 3844}
 3845static inline ULONG ID3D12CommandList_AddRef(ID3D12CommandList* This) {
 3846    return This->lpVtbl->AddRef(This);
 3847}
 3848static inline ULONG ID3D12CommandList_Release(ID3D12CommandList* This) {
 3849    return This->lpVtbl->Release(This);
 3850}
 3851/*** ID3D12Object methods ***/
 3852static inline HRESULT ID3D12CommandList_GetPrivateData(ID3D12CommandList* This,REFGUID guid,UINT *data_size,void *data) {
 3853    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 3854}
 3855static 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}
 3858static inline HRESULT ID3D12CommandList_SetPrivateDataInterface(ID3D12CommandList* This,REFGUID guid,const IUnknown *data) {
 3859    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 3860}
 3861static inline HRESULT ID3D12CommandList_SetName(ID3D12CommandList* This,const WCHAR *name) {
 3862    return This->lpVtbl->SetName(This,name);
 3863}
 3864/*** ID3D12DeviceChild methods ***/
 3865static inline HRESULT ID3D12CommandList_GetDevice(ID3D12CommandList* This,REFIID riid,void **device) {
 3866    return This->lpVtbl->GetDevice(This,riid,device);
 3867}
 3868/*** ID3D12CommandList methods ***/
 3869static 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
 3880typedef 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;
 3886DEFINE_ENUM_FLAG_OPERATORS(D3D12_TILE_COPY_FLAGS);
 3887typedef struct D3D12_INDEX_BUFFER_VIEW {
 3888    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
 3889    UINT SizeInBytes;
 3890    DXGI_FORMAT Format;
 3891} D3D12_INDEX_BUFFER_VIEW;
 3892typedef struct D3D12_VERTEX_BUFFER_VIEW {
 3893    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
 3894    UINT SizeInBytes;
 3895    UINT StrideInBytes;
 3896} D3D12_VERTEX_BUFFER_VIEW;
 3897typedef 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;
 3902typedef enum D3D12_CLEAR_FLAGS {
 3903    D3D12_CLEAR_FLAG_DEPTH = 0x1,
 3904    D3D12_CLEAR_FLAG_STENCIL = 0x2
 3905} D3D12_CLEAR_FLAGS;
 3906DEFINE_ENUM_FLAG_OPERATORS(D3D12_CLEAR_FLAGS);
 3907typedef struct D3D12_DISCARD_REGION {
 3908    UINT NumRects;
 3909    const D3D12_RECT *pRects;
 3910    UINT FirstSubresource;
 3911    UINT NumSubresources;
 3912} D3D12_DISCARD_REGION;
 3913typedef 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;
 3925typedef 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;
 3938typedef 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;
 3954typedef struct D3D12_QUERY_DATA_SO_STATISTICS {
 3955    UINT64 NumPrimitivesWritten;
 3956    UINT64 PrimitivesStorageNeeded;
 3957} D3D12_QUERY_DATA_SO_STATISTICS;
 3958typedef 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
 3968DEFINE_GUID(IID_ID3D12DescriptorHeap, 0x8efb471d, 0x616c, 0x4f49, 0x90,0xf7, 0x12,0x7b,0xb7,0x63,0xfa,0x51);
 3969#if defined(__cplusplus) && !defined(CINTERFACE)
 3970MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
 3971ID3D12DescriptorHeap : 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
 4020typedef 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
 4079interface 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 ***/
 4102static inline HRESULT ID3D12DescriptorHeap_QueryInterface(ID3D12DescriptorHeap* This,REFIID riid,void **ppvObject) {
 4103    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 4104}
 4105static inline ULONG ID3D12DescriptorHeap_AddRef(ID3D12DescriptorHeap* This) {
 4106    return This->lpVtbl->AddRef(This);
 4107}
 4108static inline ULONG ID3D12DescriptorHeap_Release(ID3D12DescriptorHeap* This) {
 4109    return This->lpVtbl->Release(This);
 4110}
 4111/*** ID3D12Object methods ***/
 4112static inline HRESULT ID3D12DescriptorHeap_GetPrivateData(ID3D12DescriptorHeap* This,REFGUID guid,UINT *data_size,void *data) {
 4113    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 4114}
 4115static 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}
 4118static inline HRESULT ID3D12DescriptorHeap_SetPrivateDataInterface(ID3D12DescriptorHeap* This,REFGUID guid,const IUnknown *data) {
 4119    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 4120}
 4121static inline HRESULT ID3D12DescriptorHeap_SetName(ID3D12DescriptorHeap* This,const WCHAR *name) {
 4122    return This->lpVtbl->SetName(This,name);
 4123}
 4124/*** ID3D12DeviceChild methods ***/
 4125static inline HRESULT ID3D12DescriptorHeap_GetDevice(ID3D12DescriptorHeap* This,REFIID riid,void **device) {
 4126    return This->lpVtbl->GetDevice(This,riid,device);
 4127}
 4128/*** ID3D12DescriptorHeap methods ***/
 4129static inline D3D12_DESCRIPTOR_HEAP_DESC ID3D12DescriptorHeap_GetDesc(ID3D12DescriptorHeap* This) {
 4130    D3D12_DESCRIPTOR_HEAP_DESC __ret;
 4131    return *This->lpVtbl->GetDesc(This,&__ret);
 4132}
 4133static inline D3D12_CPU_DESCRIPTOR_HANDLE ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(ID3D12DescriptorHeap* This) {
 4134    D3D12_CPU_DESCRIPTOR_HANDLE __ret;
 4135    return *This->lpVtbl->GetCPUDescriptorHandleForHeapStart(This,&__ret);
 4136}
 4137static 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
 4155DEFINE_GUID(IID_ID3D12QueryHeap, 0x0d9658ae, 0xed45, 0x469e, 0xa6,0x1d, 0x97,0x0e,0xc5,0x83,0xca,0xb4);
 4156#if defined(__cplusplus) && !defined(CINTERFACE)
 4157MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
 4158ID3D12QueryHeap : 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
 4165typedef 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
 4211interface 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 ***/
 4230static inline HRESULT ID3D12QueryHeap_QueryInterface(ID3D12QueryHeap* This,REFIID riid,void **ppvObject) {
 4231    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 4232}
 4233static inline ULONG ID3D12QueryHeap_AddRef(ID3D12QueryHeap* This) {
 4234    return This->lpVtbl->AddRef(This);
 4235}
 4236static inline ULONG ID3D12QueryHeap_Release(ID3D12QueryHeap* This) {
 4237    return This->lpVtbl->Release(This);
 4238}
 4239/*** ID3D12Object methods ***/
 4240static inline HRESULT ID3D12QueryHeap_GetPrivateData(ID3D12QueryHeap* This,REFGUID guid,UINT *data_size,void *data) {
 4241    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 4242}
 4243static 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}
 4246static inline HRESULT ID3D12QueryHeap_SetPrivateDataInterface(ID3D12QueryHeap* This,REFGUID guid,const IUnknown *data) {
 4247    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 4248}
 4249static inline HRESULT ID3D12QueryHeap_SetName(ID3D12QueryHeap* This,const WCHAR *name) {
 4250    return This->lpVtbl->SetName(This,name);
 4251}
 4252/*** ID3D12DeviceChild methods ***/
 4253static 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
 4270DEFINE_GUID(IID_ID3D12CommandSignature, 0xc36a797c, 0xec80, 0x4f0a, 0x89,0x85, 0xa7,0xb2,0x47,0x50,0x82,0xd1);
 4271#if defined(__cplusplus) && !defined(CINTERFACE)
 4272MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
 4273ID3D12CommandSignature : 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
 4280typedef 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
 4326interface 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 ***/
 4345static inline HRESULT ID3D12CommandSignature_QueryInterface(ID3D12CommandSignature* This,REFIID riid,void **ppvObject) {
 4346    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 4347}
 4348static inline ULONG ID3D12CommandSignature_AddRef(ID3D12CommandSignature* This) {
 4349    return This->lpVtbl->AddRef(This);
 4350}
 4351static inline ULONG ID3D12CommandSignature_Release(ID3D12CommandSignature* This) {
 4352    return This->lpVtbl->Release(This);
 4353}
 4354/*** ID3D12Object methods ***/
 4355static inline HRESULT ID3D12CommandSignature_GetPrivateData(ID3D12CommandSignature* This,REFGUID guid,UINT *data_size,void *data) {
 4356    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 4357}
 4358static 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}
 4361static inline HRESULT ID3D12CommandSignature_SetPrivateDataInterface(ID3D12CommandSignature* This,REFGUID guid,const IUnknown *data) {
 4362    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 4363}
 4364static inline HRESULT ID3D12CommandSignature_SetName(ID3D12CommandSignature* This,const WCHAR *name) {
 4365    return This->lpVtbl->SetName(This,name);
 4366}
 4367/*** ID3D12DeviceChild methods ***/
 4368static 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
 4385DEFINE_GUID(IID_ID3D12GraphicsCommandList, 0x5b160d0f, 0xac1b, 0x4185, 0x8b,0xa8, 0xb3,0xae,0x42,0xa5,0xa4,0x55);
 4386#if defined(__cplusplus) && !defined(CINTERFACE)
 4387MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
 4388ID3D12GraphicsCommandList : 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
 4645typedef 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
 4995interface 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 ***/
 5068static inline HRESULT ID3D12GraphicsCommandList_QueryInterface(ID3D12GraphicsCommandList* This,REFIID riid,void **ppvObject) {
 5069    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 5070}
 5071static inline ULONG ID3D12GraphicsCommandList_AddRef(ID3D12GraphicsCommandList* This) {
 5072    return This->lpVtbl->AddRef(This);
 5073}
 5074static inline ULONG ID3D12GraphicsCommandList_Release(ID3D12GraphicsCommandList* This) {
 5075    return This->lpVtbl->Release(This);
 5076}
 5077/*** ID3D12Object methods ***/
 5078static inline HRESULT ID3D12GraphicsCommandList_GetPrivateData(ID3D12GraphicsCommandList* This,REFGUID guid,UINT *data_size,void *data) {
 5079    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 5080}
 5081static 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}
 5084static inline HRESULT ID3D12GraphicsCommandList_SetPrivateDataInterface(ID3D12GraphicsCommandList* This,REFGUID guid,const IUnknown *data) {
 5085    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 5086}
 5087static inline HRESULT ID3D12GraphicsCommandList_SetName(ID3D12GraphicsCommandList* This,const WCHAR *name) {
 5088    return This->lpVtbl->SetName(This,name);
 5089}
 5090/*** ID3D12DeviceChild methods ***/
 5091static inline HRESULT ID3D12GraphicsCommandList_GetDevice(ID3D12GraphicsCommandList* This,REFIID riid,void **device) {
 5092    return This->lpVtbl->GetDevice(This,riid,device);
 5093}
 5094/*** ID3D12CommandList methods ***/
 5095static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList_GetType(ID3D12GraphicsCommandList* This) {
 5096    return This->lpVtbl->GetType(This);
 5097}
 5098/*** ID3D12GraphicsCommandList methods ***/
 5099static inline HRESULT ID3D12GraphicsCommandList_Close(ID3D12GraphicsCommandList* This) {
 5100    return This->lpVtbl->Close(This);
 5101}
 5102static inline HRESULT ID3D12GraphicsCommandList_Reset(ID3D12GraphicsCommandList* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
 5103    return This->lpVtbl->Reset(This,allocator,initial_state);
 5104}
 5105static inline void ID3D12GraphicsCommandList_ClearState(ID3D12GraphicsCommandList* This,ID3D12PipelineState *pipeline_state) {
 5106    This->lpVtbl->ClearState(This,pipeline_state);
 5107}
 5108static 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}
 5111static 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}
 5114static inline void ID3D12GraphicsCommandList_Dispatch(ID3D12GraphicsCommandList* This,UINT x,UINT u,UINT z) {
 5115    This->lpVtbl->Dispatch(This,x,u,z);
 5116}
 5117static 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}
 5120static 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}
 5123static inline void ID3D12GraphicsCommandList_CopyResource(ID3D12GraphicsCommandList* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
 5124    This->lpVtbl->CopyResource(This,dst_resource,src_resource);
 5125}
 5126static 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}
 5129static 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}
 5132static inline void ID3D12GraphicsCommandList_IASetPrimitiveTopology(ID3D12GraphicsCommandList* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
 5133    This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
 5134}
 5135static inline void ID3D12GraphicsCommandList_RSSetViewports(ID3D12GraphicsCommandList* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
 5136    This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
 5137}
 5138static inline void ID3D12GraphicsCommandList_RSSetScissorRects(ID3D12GraphicsCommandList* This,UINT rect_count,const D3D12_RECT *rects) {
 5139    This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
 5140}
 5141static inline void ID3D12GraphicsCommandList_OMSetBlendFactor(ID3D12GraphicsCommandList* This,const FLOAT blend_factor[4]) {
 5142    This->lpVtbl->OMSetBlendFactor(This,blend_factor);
 5143}
 5144static inline void ID3D12GraphicsCommandList_OMSetStencilRef(ID3D12GraphicsCommandList* This,UINT stencil_ref) {
 5145    This->lpVtbl->OMSetStencilRef(This,stencil_ref);
 5146}
 5147static inline void ID3D12GraphicsCommandList_SetPipelineState(ID3D12GraphicsCommandList* This,ID3D12PipelineState *pipeline_state) {
 5148    This->lpVtbl->SetPipelineState(This,pipeline_state);
 5149}
 5150static inline void ID3D12GraphicsCommandList_ResourceBarrier(ID3D12GraphicsCommandList* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
 5151    This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
 5152}
 5153static inline void ID3D12GraphicsCommandList_ExecuteBundle(ID3D12GraphicsCommandList* This,ID3D12GraphicsCommandList *command_list) {
 5154    This->lpVtbl->ExecuteBundle(This,command_list);
 5155}
 5156static inline void ID3D12GraphicsCommandList_SetDescriptorHeaps(ID3D12GraphicsCommandList* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
 5157    This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
 5158}
 5159static inline void ID3D12GraphicsCommandList_SetComputeRootSignature(ID3D12GraphicsCommandList* This,ID3D12RootSignature *root_signature) {
 5160    This->lpVtbl->SetComputeRootSignature(This,root_signature);
 5161}
 5162static inline void ID3D12GraphicsCommandList_SetGraphicsRootSignature(ID3D12GraphicsCommandList* This,ID3D12RootSignature *root_signature) {
 5163    This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
 5164}
 5165static 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}
 5168static 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}
 5171static 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}
 5174static 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}
 5177static 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}
 5180static 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}
 5183static 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}
 5186static 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}
 5189static 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}
 5192static 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}
 5195static 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}
 5198static 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}
 5201static inline void ID3D12GraphicsCommandList_IASetIndexBuffer(ID3D12GraphicsCommandList* This,const D3D12_INDEX_BUFFER_VIEW *view) {
 5202    This->lpVtbl->IASetIndexBuffer(This,view);
 5203}
 5204static 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}
 5207static 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}
 5210static 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}
 5213static 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}
 5216static 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}
 5219static 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}
 5222static 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}
 5225static inline void ID3D12GraphicsCommandList_DiscardResource(ID3D12GraphicsCommandList* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
 5226    This->lpVtbl->DiscardResource(This,resource,region);
 5227}
 5228static inline void ID3D12GraphicsCommandList_BeginQuery(ID3D12GraphicsCommandList* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
 5229    This->lpVtbl->BeginQuery(This,heap,type,index);
 5230}
 5231static inline void ID3D12GraphicsCommandList_EndQuery(ID3D12GraphicsCommandList* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
 5232    This->lpVtbl->EndQuery(This,heap,type,index);
 5233}
 5234static 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}
 5237static 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}
 5240static inline void ID3D12GraphicsCommandList_SetMarker(ID3D12GraphicsCommandList* This,UINT metadata,const void *data,UINT size) {
 5241    This->lpVtbl->SetMarker(This,metadata,data,size);
 5242}
 5243static inline void ID3D12GraphicsCommandList_BeginEvent(ID3D12GraphicsCommandList* This,UINT metadata,const void *data,UINT size) {
 5244    This->lpVtbl->BeginEvent(This,metadata,data,size);
 5245}
 5246static inline void ID3D12GraphicsCommandList_EndEvent(ID3D12GraphicsCommandList* This) {
 5247    This->lpVtbl->EndEvent(This);
 5248}
 5249static 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
 5266DEFINE_GUID(IID_ID3D12GraphicsCommandList1, 0x553103fb, 0x1fe7, 0x4557, 0xbb,0x38, 0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
 5267#if defined(__cplusplus) && !defined(CINTERFACE)
 5268MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
 5269ID3D12GraphicsCommandList1 : 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
 5317typedef 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
 5715interface 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 ***/
 5795static inline HRESULT ID3D12GraphicsCommandList1_QueryInterface(ID3D12GraphicsCommandList1* This,REFIID riid,void **ppvObject) {
 5796    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 5797}
 5798static inline ULONG ID3D12GraphicsCommandList1_AddRef(ID3D12GraphicsCommandList1* This) {
 5799    return This->lpVtbl->AddRef(This);
 5800}
 5801static inline ULONG ID3D12GraphicsCommandList1_Release(ID3D12GraphicsCommandList1* This) {
 5802    return This->lpVtbl->Release(This);
 5803}
 5804/*** ID3D12Object methods ***/
 5805static inline HRESULT ID3D12GraphicsCommandList1_GetPrivateData(ID3D12GraphicsCommandList1* This,REFGUID guid,UINT *data_size,void *data) {
 5806    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 5807}
 5808static 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}
 5811static inline HRESULT ID3D12GraphicsCommandList1_SetPrivateDataInterface(ID3D12GraphicsCommandList1* This,REFGUID guid,const IUnknown *data) {
 5812    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 5813}
 5814static inline HRESULT ID3D12GraphicsCommandList1_SetName(ID3D12GraphicsCommandList1* This,const WCHAR *name) {
 5815    return This->lpVtbl->SetName(This,name);
 5816}
 5817/*** ID3D12DeviceChild methods ***/
 5818static inline HRESULT ID3D12GraphicsCommandList1_GetDevice(ID3D12GraphicsCommandList1* This,REFIID riid,void **device) {
 5819    return This->lpVtbl->GetDevice(This,riid,device);
 5820}
 5821/*** ID3D12CommandList methods ***/
 5822static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList1_GetType(ID3D12GraphicsCommandList1* This) {
 5823    return This->lpVtbl->GetType(This);
 5824}
 5825/*** ID3D12GraphicsCommandList methods ***/
 5826static inline HRESULT ID3D12GraphicsCommandList1_Close(ID3D12GraphicsCommandList1* This) {
 5827    return This->lpVtbl->Close(This);
 5828}
 5829static inline HRESULT ID3D12GraphicsCommandList1_Reset(ID3D12GraphicsCommandList1* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
 5830    return This->lpVtbl->Reset(This,allocator,initial_state);
 5831}
 5832static inline void ID3D12GraphicsCommandList1_ClearState(ID3D12GraphicsCommandList1* This,ID3D12PipelineState *pipeline_state) {
 5833    This->lpVtbl->ClearState(This,pipeline_state);
 5834}
 5835static 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}
 5838static 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}
 5841static inline void ID3D12GraphicsCommandList1_Dispatch(ID3D12GraphicsCommandList1* This,UINT x,UINT u,UINT z) {
 5842    This->lpVtbl->Dispatch(This,x,u,z);
 5843}
 5844static 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}
 5847static 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}
 5850static inline void ID3D12GraphicsCommandList1_CopyResource(ID3D12GraphicsCommandList1* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
 5851    This->lpVtbl->CopyResource(This,dst_resource,src_resource);
 5852}
 5853static 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}
 5856static 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}
 5859static inline void ID3D12GraphicsCommandList1_IASetPrimitiveTopology(ID3D12GraphicsCommandList1* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
 5860    This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
 5861}
 5862static inline void ID3D12GraphicsCommandList1_RSSetViewports(ID3D12GraphicsCommandList1* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
 5863    This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
 5864}
 5865static inline void ID3D12GraphicsCommandList1_RSSetScissorRects(ID3D12GraphicsCommandList1* This,UINT rect_count,const D3D12_RECT *rects) {
 5866    This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
 5867}
 5868static inline void ID3D12GraphicsCommandList1_OMSetBlendFactor(ID3D12GraphicsCommandList1* This,const FLOAT blend_factor[4]) {
 5869    This->lpVtbl->OMSetBlendFactor(This,blend_factor);
 5870}
 5871static inline void ID3D12GraphicsCommandList1_OMSetStencilRef(ID3D12GraphicsCommandList1* This,UINT stencil_ref) {
 5872    This->lpVtbl->OMSetStencilRef(This,stencil_ref);
 5873}
 5874static inline void ID3D12GraphicsCommandList1_SetPipelineState(ID3D12GraphicsCommandList1* This,ID3D12PipelineState *pipeline_state) {
 5875    This->lpVtbl->SetPipelineState(This,pipeline_state);
 5876}
 5877static inline void ID3D12GraphicsCommandList1_ResourceBarrier(ID3D12GraphicsCommandList1* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
 5878    This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
 5879}
 5880static inline void ID3D12GraphicsCommandList1_ExecuteBundle(ID3D12GraphicsCommandList1* This,ID3D12GraphicsCommandList *command_list) {
 5881    This->lpVtbl->ExecuteBundle(This,command_list);
 5882}
 5883static inline void ID3D12GraphicsCommandList1_SetDescriptorHeaps(ID3D12GraphicsCommandList1* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
 5884    This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
 5885}
 5886static inline void ID3D12GraphicsCommandList1_SetComputeRootSignature(ID3D12GraphicsCommandList1* This,ID3D12RootSignature *root_signature) {
 5887    This->lpVtbl->SetComputeRootSignature(This,root_signature);
 5888}
 5889static inline void ID3D12GraphicsCommandList1_SetGraphicsRootSignature(ID3D12GraphicsCommandList1* This,ID3D12RootSignature *root_signature) {
 5890    This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
 5891}
 5892static 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}
 5895static 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}
 5898static 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}
 5901static 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}
 5904static 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}
 5907static 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}
 5910static 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}
 5913static 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}
 5916static 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}
 5919static 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}
 5922static 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}
 5925static 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}
 5928static inline void ID3D12GraphicsCommandList1_IASetIndexBuffer(ID3D12GraphicsCommandList1* This,const D3D12_INDEX_BUFFER_VIEW *view) {
 5929    This->lpVtbl->IASetIndexBuffer(This,view);
 5930}
 5931static 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}
 5934static 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}
 5937static 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}
 5940static 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}
 5943static 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}
 5946static 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}
 5949static 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}
 5952static inline void ID3D12GraphicsCommandList1_DiscardResource(ID3D12GraphicsCommandList1* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
 5953    This->lpVtbl->DiscardResource(This,resource,region);
 5954}
 5955static inline void ID3D12GraphicsCommandList1_BeginQuery(ID3D12GraphicsCommandList1* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
 5956    This->lpVtbl->BeginQuery(This,heap,type,index);
 5957}
 5958static inline void ID3D12GraphicsCommandList1_EndQuery(ID3D12GraphicsCommandList1* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
 5959    This->lpVtbl->EndQuery(This,heap,type,index);
 5960}
 5961static 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}
 5964static 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}
 5967static inline void ID3D12GraphicsCommandList1_SetMarker(ID3D12GraphicsCommandList1* This,UINT metadata,const void *data,UINT size) {
 5968    This->lpVtbl->SetMarker(This,metadata,data,size);
 5969}
 5970static inline void ID3D12GraphicsCommandList1_BeginEvent(ID3D12GraphicsCommandList1* This,UINT metadata,const void *data,UINT size) {
 5971    This->lpVtbl->BeginEvent(This,metadata,data,size);
 5972}
 5973static inline void ID3D12GraphicsCommandList1_EndEvent(ID3D12GraphicsCommandList1* This) {
 5974    This->lpVtbl->EndEvent(This);
 5975}
 5976static 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 ***/
 5980static 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}
 5983static 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}
 5986static inline void ID3D12GraphicsCommandList1_OMSetDepthBounds(ID3D12GraphicsCommandList1* This,FLOAT min,FLOAT max) {
 5987    This->lpVtbl->OMSetDepthBounds(This,min,max);
 5988}
 5989static 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}
 5992static 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}
 5995static 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
 6012DEFINE_GUID(IID_ID3D12GraphicsCommandList2, 0x38c3e585, 0xff17, 0x412c, 0x91,0x50, 0x4f,0xc6,0xf9,0xd7,0x2a,0x28);
 6013#if defined(__cplusplus) && !defined(CINTERFACE)
 6014MIDL_INTERFACE("38c3e585-ff17-412c-9150-4fc6f9d72a28")
 6015ID3D12GraphicsCommandList2 : 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
 6027typedef 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
 6432interface 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 ***/
 6514static inline HRESULT ID3D12GraphicsCommandList2_QueryInterface(ID3D12GraphicsCommandList2* This,REFIID riid,void **ppvObject) {
 6515    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 6516}
 6517static inline ULONG ID3D12GraphicsCommandList2_AddRef(ID3D12GraphicsCommandList2* This) {
 6518    return This->lpVtbl->AddRef(This);
 6519}
 6520static inline ULONG ID3D12GraphicsCommandList2_Release(ID3D12GraphicsCommandList2* This) {
 6521    return This->lpVtbl->Release(This);
 6522}
 6523/*** ID3D12Object methods ***/
 6524static inline HRESULT ID3D12GraphicsCommandList2_GetPrivateData(ID3D12GraphicsCommandList2* This,REFGUID guid,UINT *data_size,void *data) {
 6525    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 6526}
 6527static 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}
 6530static inline HRESULT ID3D12GraphicsCommandList2_SetPrivateDataInterface(ID3D12GraphicsCommandList2* This,REFGUID guid,const IUnknown *data) {
 6531    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 6532}
 6533static inline HRESULT ID3D12GraphicsCommandList2_SetName(ID3D12GraphicsCommandList2* This,const WCHAR *name) {
 6534    return This->lpVtbl->SetName(This,name);
 6535}
 6536/*** ID3D12DeviceChild methods ***/
 6537static inline HRESULT ID3D12GraphicsCommandList2_GetDevice(ID3D12GraphicsCommandList2* This,REFIID riid,void **device) {
 6538    return This->lpVtbl->GetDevice(This,riid,device);
 6539}
 6540/*** ID3D12CommandList methods ***/
 6541static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList2_GetType(ID3D12GraphicsCommandList2* This) {
 6542    return This->lpVtbl->GetType(This);
 6543}
 6544/*** ID3D12GraphicsCommandList methods ***/
 6545static inline HRESULT ID3D12GraphicsCommandList2_Close(ID3D12GraphicsCommandList2* This) {
 6546    return This->lpVtbl->Close(This);
 6547}
 6548static inline HRESULT ID3D12GraphicsCommandList2_Reset(ID3D12GraphicsCommandList2* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
 6549    return This->lpVtbl->Reset(This,allocator,initial_state);
 6550}
 6551static inline void ID3D12GraphicsCommandList2_ClearState(ID3D12GraphicsCommandList2* This,ID3D12PipelineState *pipeline_state) {
 6552    This->lpVtbl->ClearState(This,pipeline_state);
 6553}
 6554static 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}
 6557static 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}
 6560static inline void ID3D12GraphicsCommandList2_Dispatch(ID3D12GraphicsCommandList2* This,UINT x,UINT u,UINT z) {
 6561    This->lpVtbl->Dispatch(This,x,u,z);
 6562}
 6563static 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}
 6566static 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}
 6569static inline void ID3D12GraphicsCommandList2_CopyResource(ID3D12GraphicsCommandList2* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
 6570    This->lpVtbl->CopyResource(This,dst_resource,src_resource);
 6571}
 6572static 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}
 6575static 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}
 6578static inline void ID3D12GraphicsCommandList2_IASetPrimitiveTopology(ID3D12GraphicsCommandList2* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
 6579    This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
 6580}
 6581static inline void ID3D12GraphicsCommandList2_RSSetViewports(ID3D12GraphicsCommandList2* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
 6582    This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
 6583}
 6584static inline void ID3D12GraphicsCommandList2_RSSetScissorRects(ID3D12GraphicsCommandList2* This,UINT rect_count,const D3D12_RECT *rects) {
 6585    This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
 6586}
 6587static inline void ID3D12GraphicsCommandList2_OMSetBlendFactor(ID3D12GraphicsCommandList2* This,const FLOAT blend_factor[4]) {
 6588    This->lpVtbl->OMSetBlendFactor(This,blend_factor);
 6589}
 6590static inline void ID3D12GraphicsCommandList2_OMSetStencilRef(ID3D12GraphicsCommandList2* This,UINT stencil_ref) {
 6591    This->lpVtbl->OMSetStencilRef(This,stencil_ref);
 6592}
 6593static inline void ID3D12GraphicsCommandList2_SetPipelineState(ID3D12GraphicsCommandList2* This,ID3D12PipelineState *pipeline_state) {
 6594    This->lpVtbl->SetPipelineState(This,pipeline_state);
 6595}
 6596static inline void ID3D12GraphicsCommandList2_ResourceBarrier(ID3D12GraphicsCommandList2* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
 6597    This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
 6598}
 6599static inline void ID3D12GraphicsCommandList2_ExecuteBundle(ID3D12GraphicsCommandList2* This,ID3D12GraphicsCommandList *command_list) {
 6600    This->lpVtbl->ExecuteBundle(This,command_list);
 6601}
 6602static inline void ID3D12GraphicsCommandList2_SetDescriptorHeaps(ID3D12GraphicsCommandList2* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
 6603    This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
 6604}
 6605static inline void ID3D12GraphicsCommandList2_SetComputeRootSignature(ID3D12GraphicsCommandList2* This,ID3D12RootSignature *root_signature) {
 6606    This->lpVtbl->SetComputeRootSignature(This,root_signature);
 6607}
 6608static inline void ID3D12GraphicsCommandList2_SetGraphicsRootSignature(ID3D12GraphicsCommandList2* This,ID3D12RootSignature *root_signature) {
 6609    This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
 6610}
 6611static 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}
 6614static 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}
 6617static 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}
 6620static 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}
 6623static 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}
 6626static 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}
 6629static 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}
 6632static 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}
 6635static 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}
 6638static 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}
 6641static 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}
 6644static 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}
 6647static inline void ID3D12GraphicsCommandList2_IASetIndexBuffer(ID3D12GraphicsCommandList2* This,const D3D12_INDEX_BUFFER_VIEW *view) {
 6648    This->lpVtbl->IASetIndexBuffer(This,view);
 6649}
 6650static 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}
 6653static 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}
 6656static 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}
 6659static 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}
 6662static 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}
 6665static 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}
 6668static 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}
 6671static inline void ID3D12GraphicsCommandList2_DiscardResource(ID3D12GraphicsCommandList2* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
 6672    This->lpVtbl->DiscardResource(This,resource,region);
 6673}
 6674static inline void ID3D12GraphicsCommandList2_BeginQuery(ID3D12GraphicsCommandList2* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
 6675    This->lpVtbl->BeginQuery(This,heap,type,index);
 6676}
 6677static inline void ID3D12GraphicsCommandList2_EndQuery(ID3D12GraphicsCommandList2* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
 6678    This->lpVtbl->EndQuery(This,heap,type,index);
 6679}
 6680static 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}
 6683static 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}
 6686static inline void ID3D12GraphicsCommandList2_SetMarker(ID3D12GraphicsCommandList2* This,UINT metadata,const void *data,UINT size) {
 6687    This->lpVtbl->SetMarker(This,metadata,data,size);
 6688}
 6689static inline void ID3D12GraphicsCommandList2_BeginEvent(ID3D12GraphicsCommandList2* This,UINT metadata,const void *data,UINT size) {
 6690    This->lpVtbl->BeginEvent(This,metadata,data,size);
 6691}
 6692static inline void ID3D12GraphicsCommandList2_EndEvent(ID3D12GraphicsCommandList2* This) {
 6693    This->lpVtbl->EndEvent(This);
 6694}
 6695static 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 ***/
 6699static 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}
 6702static 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}
 6705static inline void ID3D12GraphicsCommandList2_OMSetDepthBounds(ID3D12GraphicsCommandList2* This,FLOAT min,FLOAT max) {
 6706    This->lpVtbl->OMSetDepthBounds(This,min,max);
 6707}
 6708static 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}
 6711static 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}
 6714static inline void ID3D12GraphicsCommandList2_SetViewInstanceMask(ID3D12GraphicsCommandList2* This,UINT mask) {
 6715    This->lpVtbl->SetViewInstanceMask(This,mask);
 6716}
 6717/*** ID3D12GraphicsCommandList2 methods ***/
 6718static 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
 6735DEFINE_GUID(IID_ID3D12ProtectedSession, 0xa1533d18, 0x0ac1, 0x4084, 0x85,0xb9, 0x89,0xa9,0x61,0x16,0x80,0x6b);
 6736#if defined(__cplusplus) && !defined(CINTERFACE)
 6737MIDL_INTERFACE("a1533d18-0ac1-4084-85b9-89a96116806b")
 6738ID3D12ProtectedSession : 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
 6752typedef 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
 6807interface 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 ***/
 6829static inline HRESULT ID3D12ProtectedSession_QueryInterface(ID3D12ProtectedSession* This,REFIID riid,void **ppvObject) {
 6830    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 6831}
 6832static inline ULONG ID3D12ProtectedSession_AddRef(ID3D12ProtectedSession* This) {
 6833    return This->lpVtbl->AddRef(This);
 6834}
 6835static inline ULONG ID3D12ProtectedSession_Release(ID3D12ProtectedSession* This) {
 6836    return This->lpVtbl->Release(This);
 6837}
 6838/*** ID3D12Object methods ***/
 6839static inline HRESULT ID3D12ProtectedSession_GetPrivateData(ID3D12ProtectedSession* This,REFGUID guid,UINT *data_size,void *data) {
 6840    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 6841}
 6842static 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}
 6845static inline HRESULT ID3D12ProtectedSession_SetPrivateDataInterface(ID3D12ProtectedSession* This,REFGUID guid,const IUnknown *data) {
 6846    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 6847}
 6848static inline HRESULT ID3D12ProtectedSession_SetName(ID3D12ProtectedSession* This,const WCHAR *name) {
 6849    return This->lpVtbl->SetName(This,name);
 6850}
 6851/*** ID3D12DeviceChild methods ***/
 6852static inline HRESULT ID3D12ProtectedSession_GetDevice(ID3D12ProtectedSession* This,REFIID riid,void **device) {
 6853    return This->lpVtbl->GetDevice(This,riid,device);
 6854}
 6855/*** ID3D12ProtectedSession methods ***/
 6856static inline HRESULT ID3D12ProtectedSession_GetStatusFence(ID3D12ProtectedSession* This,REFIID riid,void **fence) {
 6857    return This->lpVtbl->GetStatusFence(This,riid,fence);
 6858}
 6859static 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
 6870typedef 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;
 6874DEFINE_ENUM_FLAG_OPERATORS(D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS);
 6875typedef 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
 6885DEFINE_GUID(IID_ID3D12ProtectedResourceSession, 0x6cd696f4, 0xf289, 0x40cc, 0x80,0x91, 0x5a,0x6c,0x0a,0x09,0x9c,0x3d);
 6886#if defined(__cplusplus) && !defined(CINTERFACE)
 6887MIDL_INTERFACE("6cd696f4-f289-40cc-8091-5a6c0a099c3d")
 6888ID3D12ProtectedResourceSession : 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
 6909typedef 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
 6969interface 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 ***/
 6993static inline HRESULT ID3D12ProtectedResourceSession_QueryInterface(ID3D12ProtectedResourceSession* This,REFIID riid,void **ppvObject) {
 6994    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 6995}
 6996static inline ULONG ID3D12ProtectedResourceSession_AddRef(ID3D12ProtectedResourceSession* This) {
 6997    return This->lpVtbl->AddRef(This);
 6998}
 6999static inline ULONG ID3D12ProtectedResourceSession_Release(ID3D12ProtectedResourceSession* This) {
 7000    return This->lpVtbl->Release(This);
 7001}
 7002/*** ID3D12Object methods ***/
 7003static inline HRESULT ID3D12ProtectedResourceSession_GetPrivateData(ID3D12ProtectedResourceSession* This,REFGUID guid,UINT *data_size,void *data) {
 7004    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 7005}
 7006static 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}
 7009static inline HRESULT ID3D12ProtectedResourceSession_SetPrivateDataInterface(ID3D12ProtectedResourceSession* This,REFGUID guid,const IUnknown *data) {
 7010    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 7011}
 7012static inline HRESULT ID3D12ProtectedResourceSession_SetName(ID3D12ProtectedResourceSession* This,const WCHAR *name) {
 7013    return This->lpVtbl->SetName(This,name);
 7014}
 7015/*** ID3D12DeviceChild methods ***/
 7016static inline HRESULT ID3D12ProtectedResourceSession_GetDevice(ID3D12ProtectedResourceSession* This,REFIID riid,void **device) {
 7017    return This->lpVtbl->GetDevice(This,riid,device);
 7018}
 7019/*** ID3D12ProtectedSession methods ***/
 7020static inline HRESULT ID3D12ProtectedResourceSession_GetStatusFence(ID3D12ProtectedResourceSession* This,REFIID riid,void **fence) {
 7021    return This->lpVtbl->GetStatusFence(This,riid,fence);
 7022}
 7023static inline D3D12_PROTECTED_SESSION_STATUS ID3D12ProtectedResourceSession_GetSessionStatus(ID3D12ProtectedResourceSession* This) {
 7024    return This->lpVtbl->GetSessionStatus(This);
 7025}
 7026/*** ID3D12ProtectedResourceSession methods ***/
 7027static 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
 7045DEFINE_GUID(IID_ID3D12GraphicsCommandList3, 0x6fda83a7, 0xb84c, 0x4e38, 0x9a,0xc8, 0xc7,0xbd,0x22,0x01,0x6b,0x3d);
 7046#if defined(__cplusplus) && !defined(CINTERFACE)
 7047MIDL_INTERFACE("6fda83a7-b84c-4e38-9ac8-c7bd22016b3d")
 7048ID3D12GraphicsCommandList3 : 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
 7058typedef 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
 7468interface 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 ***/
 7552static inline HRESULT ID3D12GraphicsCommandList3_QueryInterface(ID3D12GraphicsCommandList3* This,REFIID riid,void **ppvObject) {
 7553    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 7554}
 7555static inline ULONG ID3D12GraphicsCommandList3_AddRef(ID3D12GraphicsCommandList3* This) {
 7556    return This->lpVtbl->AddRef(This);
 7557}
 7558static inline ULONG ID3D12GraphicsCommandList3_Release(ID3D12GraphicsCommandList3* This) {
 7559    return This->lpVtbl->Release(This);
 7560}
 7561/*** ID3D12Object methods ***/
 7562static inline HRESULT ID3D12GraphicsCommandList3_GetPrivateData(ID3D12GraphicsCommandList3* This,REFGUID guid,UINT *data_size,void *data) {
 7563    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 7564}
 7565static 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}
 7568static inline HRESULT ID3D12GraphicsCommandList3_SetPrivateDataInterface(ID3D12GraphicsCommandList3* This,REFGUID guid,const IUnknown *data) {
 7569    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 7570}
 7571static inline HRESULT ID3D12GraphicsCommandList3_SetName(ID3D12GraphicsCommandList3* This,const WCHAR *name) {
 7572    return This->lpVtbl->SetName(This,name);
 7573}
 7574/*** ID3D12DeviceChild methods ***/
 7575static inline HRESULT ID3D12GraphicsCommandList3_GetDevice(ID3D12GraphicsCommandList3* This,REFIID riid,void **device) {
 7576    return This->lpVtbl->GetDevice(This,riid,device);
 7577}
 7578/*** ID3D12CommandList methods ***/
 7579static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList3_GetType(ID3D12GraphicsCommandList3* This) {
 7580    return This->lpVtbl->GetType(This);
 7581}
 7582/*** ID3D12GraphicsCommandList methods ***/
 7583static inline HRESULT ID3D12GraphicsCommandList3_Close(ID3D12GraphicsCommandList3* This) {
 7584    return This->lpVtbl->Close(This);
 7585}
 7586static inline HRESULT ID3D12GraphicsCommandList3_Reset(ID3D12GraphicsCommandList3* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
 7587    return This->lpVtbl->Reset(This,allocator,initial_state);
 7588}
 7589static inline void ID3D12GraphicsCommandList3_ClearState(ID3D12GraphicsCommandList3* This,ID3D12PipelineState *pipeline_state) {
 7590    This->lpVtbl->ClearState(This,pipeline_state);
 7591}
 7592static 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}
 7595static 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}
 7598static inline void ID3D12GraphicsCommandList3_Dispatch(ID3D12GraphicsCommandList3* This,UINT x,UINT u,UINT z) {
 7599    This->lpVtbl->Dispatch(This,x,u,z);
 7600}
 7601static 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}
 7604static 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}
 7607static inline void ID3D12GraphicsCommandList3_CopyResource(ID3D12GraphicsCommandList3* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
 7608    This->lpVtbl->CopyResource(This,dst_resource,src_resource);
 7609}
 7610static 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}
 7613static 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}
 7616static inline void ID3D12GraphicsCommandList3_IASetPrimitiveTopology(ID3D12GraphicsCommandList3* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
 7617    This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
 7618}
 7619static inline void ID3D12GraphicsCommandList3_RSSetViewports(ID3D12GraphicsCommandList3* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
 7620    This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
 7621}
 7622static inline void ID3D12GraphicsCommandList3_RSSetScissorRects(ID3D12GraphicsCommandList3* This,UINT rect_count,const D3D12_RECT *rects) {
 7623    This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
 7624}
 7625static inline void ID3D12GraphicsCommandList3_OMSetBlendFactor(ID3D12GraphicsCommandList3* This,const FLOAT blend_factor[4]) {
 7626    This->lpVtbl->OMSetBlendFactor(This,blend_factor);
 7627}
 7628static inline void ID3D12GraphicsCommandList3_OMSetStencilRef(ID3D12GraphicsCommandList3* This,UINT stencil_ref) {
 7629    This->lpVtbl->OMSetStencilRef(This,stencil_ref);
 7630}
 7631static inline void ID3D12GraphicsCommandList3_SetPipelineState(ID3D12GraphicsCommandList3* This,ID3D12PipelineState *pipeline_state) {
 7632    This->lpVtbl->SetPipelineState(This,pipeline_state);
 7633}
 7634static inline void ID3D12GraphicsCommandList3_ResourceBarrier(ID3D12GraphicsCommandList3* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
 7635    This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
 7636}
 7637static inline void ID3D12GraphicsCommandList3_ExecuteBundle(ID3D12GraphicsCommandList3* This,ID3D12GraphicsCommandList *command_list) {
 7638    This->lpVtbl->ExecuteBundle(This,command_list);
 7639}
 7640static inline void ID3D12GraphicsCommandList3_SetDescriptorHeaps(ID3D12GraphicsCommandList3* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
 7641    This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
 7642}
 7643static inline void ID3D12GraphicsCommandList3_SetComputeRootSignature(ID3D12GraphicsCommandList3* This,ID3D12RootSignature *root_signature) {
 7644    This->lpVtbl->SetComputeRootSignature(This,root_signature);
 7645}
 7646static inline void ID3D12GraphicsCommandList3_SetGraphicsRootSignature(ID3D12GraphicsCommandList3* This,ID3D12RootSignature *root_signature) {
 7647    This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
 7648}
 7649static 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}
 7652static 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}
 7655static 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}
 7658static 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}
 7661static 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}
 7664static 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}
 7667static 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}
 7670static 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}
 7673static 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}
 7676static 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}
 7679static 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}
 7682static 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}
 7685static inline void ID3D12GraphicsCommandList3_IASetIndexBuffer(ID3D12GraphicsCommandList3* This,const D3D12_INDEX_BUFFER_VIEW *view) {
 7686    This->lpVtbl->IASetIndexBuffer(This,view);
 7687}
 7688static 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}
 7691static 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}
 7694static 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}
 7697static 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}
 7700static 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}
 7703static 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}
 7706static 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}
 7709static inline void ID3D12GraphicsCommandList3_DiscardResource(ID3D12GraphicsCommandList3* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
 7710    This->lpVtbl->DiscardResource(This,resource,region);
 7711}
 7712static inline void ID3D12GraphicsCommandList3_BeginQuery(ID3D12GraphicsCommandList3* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
 7713    This->lpVtbl->BeginQuery(This,heap,type,index);
 7714}
 7715static inline void ID3D12GraphicsCommandList3_EndQuery(ID3D12GraphicsCommandList3* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
 7716    This->lpVtbl->EndQuery(This,heap,type,index);
 7717}
 7718static 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}
 7721static 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}
 7724static inline void ID3D12GraphicsCommandList3_SetMarker(ID3D12GraphicsCommandList3* This,UINT metadata,const void *data,UINT size) {
 7725    This->lpVtbl->SetMarker(This,metadata,data,size);
 7726}
 7727static inline void ID3D12GraphicsCommandList3_BeginEvent(ID3D12GraphicsCommandList3* This,UINT metadata,const void *data,UINT size) {
 7728    This->lpVtbl->BeginEvent(This,metadata,data,size);
 7729}
 7730static inline void ID3D12GraphicsCommandList3_EndEvent(ID3D12GraphicsCommandList3* This) {
 7731    This->lpVtbl->EndEvent(This);
 7732}
 7733static 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 ***/
 7737static 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}
 7740static 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}
 7743static inline void ID3D12GraphicsCommandList3_OMSetDepthBounds(ID3D12GraphicsCommandList3* This,FLOAT min,FLOAT max) {
 7744    This->lpVtbl->OMSetDepthBounds(This,min,max);
 7745}
 7746static 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}
 7749static 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}
 7752static inline void ID3D12GraphicsCommandList3_SetViewInstanceMask(ID3D12GraphicsCommandList3* This,UINT mask) {
 7753    This->lpVtbl->SetViewInstanceMask(This,mask);
 7754}
 7755/*** ID3D12GraphicsCommandList2 methods ***/
 7756static 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 ***/
 7760static 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
 7771typedef 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;
 7777typedef 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;
 7781DEFINE_ENUM_FLAG_OPERATORS(D3D12_TILE_MAPPING_FLAGS);
 7782/*****************************************************************************
 7783 * ID3D12CommandQueue interface
 7784 */
 7785#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
 7786#define __ID3D12CommandQueue_INTERFACE_DEFINED__
 7787
 7788DEFINE_GUID(IID_ID3D12CommandQueue, 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c,0xfc, 0x5b,0xaa,0xe0,0x76,0x16,0xed);
 7789#if defined(__cplusplus) && !defined(CINTERFACE)
 7790MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
 7791ID3D12CommandQueue : 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
 7864typedef 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
 7976interface 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 ***/
 8007static inline HRESULT ID3D12CommandQueue_QueryInterface(ID3D12CommandQueue* This,REFIID riid,void **ppvObject) {
 8008    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 8009}
 8010static inline ULONG ID3D12CommandQueue_AddRef(ID3D12CommandQueue* This) {
 8011    return This->lpVtbl->AddRef(This);
 8012}
 8013static inline ULONG ID3D12CommandQueue_Release(ID3D12CommandQueue* This) {
 8014    return This->lpVtbl->Release(This);
 8015}
 8016/*** ID3D12Object methods ***/
 8017static inline HRESULT ID3D12CommandQueue_GetPrivateData(ID3D12CommandQueue* This,REFGUID guid,UINT *data_size,void *data) {
 8018    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 8019}
 8020static 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}
 8023static inline HRESULT ID3D12CommandQueue_SetPrivateDataInterface(ID3D12CommandQueue* This,REFGUID guid,const IUnknown *data) {
 8024    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 8025}
 8026static inline HRESULT ID3D12CommandQueue_SetName(ID3D12CommandQueue* This,const WCHAR *name) {
 8027    return This->lpVtbl->SetName(This,name);
 8028}
 8029/*** ID3D12DeviceChild methods ***/
 8030static inline HRESULT ID3D12CommandQueue_GetDevice(ID3D12CommandQueue* This,REFIID riid,void **device) {
 8031    return This->lpVtbl->GetDevice(This,riid,device);
 8032}
 8033/*** ID3D12CommandQueue methods ***/
 8034static 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}
 8037static 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}
 8040static 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}
 8043static inline void ID3D12CommandQueue_SetMarker(ID3D12CommandQueue* This,UINT metadata,const void *data,UINT size) {
 8044    This->lpVtbl->SetMarker(This,metadata,data,size);
 8045}
 8046static inline void ID3D12CommandQueue_BeginEvent(ID3D12CommandQueue* This,UINT metadata,const void *data,UINT size) {
 8047    This->lpVtbl->BeginEvent(This,metadata,data,size);
 8048}
 8049static inline void ID3D12CommandQueue_EndEvent(ID3D12CommandQueue* This) {
 8050    This->lpVtbl->EndEvent(This);
 8051}
 8052static inline HRESULT ID3D12CommandQueue_Signal(ID3D12CommandQueue* This,ID3D12Fence *fence,UINT64 value) {
 8053    return This->lpVtbl->Signal(This,fence,value);
 8054}
 8055static inline HRESULT ID3D12CommandQueue_Wait(ID3D12CommandQueue* This,ID3D12Fence *fence,UINT64 value) {
 8056    return This->lpVtbl->Wait(This,fence,value);
 8057}
 8058static inline HRESULT ID3D12CommandQueue_GetTimestampFrequency(ID3D12CommandQueue* This,UINT64 *frequency) {
 8059    return This->lpVtbl->GetTimestampFrequency(This,frequency);
 8060}
 8061static inline HRESULT ID3D12CommandQueue_GetClockCalibration(ID3D12CommandQueue* This,UINT64 *gpu_timestamp,UINT64 *cpu_timestamp) {
 8062    return This->lpVtbl->GetClockCalibration(This,gpu_timestamp,cpu_timestamp);
 8063}
 8064static 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
 8076typedef 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;
 8082DEFINE_ENUM_FLAG_OPERATORS(D3D12_FENCE_FLAGS);
 8083typedef 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;
 8092typedef struct D3D12_QUERY_HEAP_DESC {
 8093    D3D12_QUERY_HEAP_TYPE Type;
 8094    UINT Count;
 8095    UINT NodeMask;
 8096} D3D12_QUERY_HEAP_DESC;
 8097typedef 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;
 8110typedef 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;
 8132typedef 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
 8144DEFINE_GUID(IID_ID3D12RootSignature, 0xc54a6b66, 0x72df, 0x4ee8, 0x8b,0xe5, 0xa9,0x46,0xa1,0x42,0x92,0x14);
 8145#if defined(__cplusplus) && !defined(CINTERFACE)
 8146MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
 8147ID3D12RootSignature : 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
 8154typedef 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
 8200interface 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 ***/
 8219static inline HRESULT ID3D12RootSignature_QueryInterface(ID3D12RootSignature* This,REFIID riid,void **ppvObject) {
 8220    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 8221}
 8222static inline ULONG ID3D12RootSignature_AddRef(ID3D12RootSignature* This) {
 8223    return This->lpVtbl->AddRef(This);
 8224}
 8225static inline ULONG ID3D12RootSignature_Release(ID3D12RootSignature* This) {
 8226    return This->lpVtbl->Release(This);
 8227}
 8228/*** ID3D12Object methods ***/
 8229static inline HRESULT ID3D12RootSignature_GetPrivateData(ID3D12RootSignature* This,REFGUID guid,UINT *data_size,void *data) {
 8230    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 8231}
 8232static 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}
 8235static inline HRESULT ID3D12RootSignature_SetPrivateDataInterface(ID3D12RootSignature* This,REFGUID guid,const IUnknown *data) {
 8236    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 8237}
 8238static inline HRESULT ID3D12RootSignature_SetName(ID3D12RootSignature* This,const WCHAR *name) {
 8239    return This->lpVtbl->SetName(This,name);
 8240}
 8241/*** ID3D12DeviceChild methods ***/
 8242static 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
 8259DEFINE_GUID(IID_ID3D12PipelineState, 0x765a30f3, 0xf624, 0x4c6f, 0xa8,0x28, 0xac,0xe9,0x48,0x62,0x24,0x45);
 8260#if defined(__cplusplus) && !defined(CINTERFACE)
 8261MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
 8262ID3D12PipelineState : 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
 8272typedef 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
 8323interface 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 ***/
 8344static inline HRESULT ID3D12PipelineState_QueryInterface(ID3D12PipelineState* This,REFIID riid,void **ppvObject) {
 8345    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 8346}
 8347static inline ULONG ID3D12PipelineState_AddRef(ID3D12PipelineState* This) {
 8348    return This->lpVtbl->AddRef(This);
 8349}
 8350static inline ULONG ID3D12PipelineState_Release(ID3D12PipelineState* This) {
 8351    return This->lpVtbl->Release(This);
 8352}
 8353/*** ID3D12Object methods ***/
 8354static inline HRESULT ID3D12PipelineState_GetPrivateData(ID3D12PipelineState* This,REFGUID guid,UINT *data_size,void *data) {
 8355    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 8356}
 8357static 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}
 8360static inline HRESULT ID3D12PipelineState_SetPrivateDataInterface(ID3D12PipelineState* This,REFGUID guid,const IUnknown *data) {
 8361    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 8362}
 8363static inline HRESULT ID3D12PipelineState_SetName(ID3D12PipelineState* This,const WCHAR *name) {
 8364    return This->lpVtbl->SetName(This,name);
 8365}
 8366/*** ID3D12DeviceChild methods ***/
 8367static inline HRESULT ID3D12PipelineState_GetDevice(ID3D12PipelineState* This,REFIID riid,void **device) {
 8368    return This->lpVtbl->GetDevice(This,riid,device);
 8369}
 8370/*** ID3D12PipelineState methods ***/
 8371static 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
 8388DEFINE_GUID(IID_ID3D12Fence, 0x0a753dcf, 0xc4d8, 0x4b91, 0xad,0xf6, 0xbe,0x5a,0x60,0xd9,0x5a,0x76);
 8389#if defined(__cplusplus) && !defined(CINTERFACE)
 8390MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
 8391ID3D12Fence : 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
 8408typedef 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
 8467interface 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 ***/
 8490static inline HRESULT ID3D12Fence_QueryInterface(ID3D12Fence* This,REFIID riid,void **ppvObject) {
 8491    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 8492}
 8493static inline ULONG ID3D12Fence_AddRef(ID3D12Fence* This) {
 8494    return This->lpVtbl->AddRef(This);
 8495}
 8496static inline ULONG ID3D12Fence_Release(ID3D12Fence* This) {
 8497    return This->lpVtbl->Release(This);
 8498}
 8499/*** ID3D12Object methods ***/
 8500static inline HRESULT ID3D12Fence_GetPrivateData(ID3D12Fence* This,REFGUID guid,UINT *data_size,void *data) {
 8501    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 8502}
 8503static 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}
 8506static inline HRESULT ID3D12Fence_SetPrivateDataInterface(ID3D12Fence* This,REFGUID guid,const IUnknown *data) {
 8507    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 8508}
 8509static inline HRESULT ID3D12Fence_SetName(ID3D12Fence* This,const WCHAR *name) {
 8510    return This->lpVtbl->SetName(This,name);
 8511}
 8512/*** ID3D12DeviceChild methods ***/
 8513static inline HRESULT ID3D12Fence_GetDevice(ID3D12Fence* This,REFIID riid,void **device) {
 8514    return This->lpVtbl->GetDevice(This,riid,device);
 8515}
 8516/*** ID3D12Fence methods ***/
 8517static inline UINT64 ID3D12Fence_GetCompletedValue(ID3D12Fence* This) {
 8518    return This->lpVtbl->GetCompletedValue(This);
 8519}
 8520static inline HRESULT ID3D12Fence_SetEventOnCompletion(ID3D12Fence* This,UINT64 value,HANDLE event) {
 8521    return This->lpVtbl->SetEventOnCompletion(This,value,event);
 8522}
 8523static 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
 8540DEFINE_GUID(IID_ID3D12Fence1, 0x433685fe, 0xe22b, 0x4ca0, 0xa8,0xdb, 0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
 8541#if defined(__cplusplus) && !defined(CINTERFACE)
 8542MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
 8543ID3D12Fence1 : 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
 8553typedef 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
 8616interface 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 ***/
 8641static inline HRESULT ID3D12Fence1_QueryInterface(ID3D12Fence1* This,REFIID riid,void **ppvObject) {
 8642    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 8643}
 8644static inline ULONG ID3D12Fence1_AddRef(ID3D12Fence1* This) {
 8645    return This->lpVtbl->AddRef(This);
 8646}
 8647static inline ULONG ID3D12Fence1_Release(ID3D12Fence1* This) {
 8648    return This->lpVtbl->Release(This);
 8649}
 8650/*** ID3D12Object methods ***/
 8651static inline HRESULT ID3D12Fence1_GetPrivateData(ID3D12Fence1* This,REFGUID guid,UINT *data_size,void *data) {
 8652    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 8653}
 8654static 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}
 8657static inline HRESULT ID3D12Fence1_SetPrivateDataInterface(ID3D12Fence1* This,REFGUID guid,const IUnknown *data) {
 8658    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 8659}
 8660static inline HRESULT ID3D12Fence1_SetName(ID3D12Fence1* This,const WCHAR *name) {
 8661    return This->lpVtbl->SetName(This,name);
 8662}
 8663/*** ID3D12DeviceChild methods ***/
 8664static inline HRESULT ID3D12Fence1_GetDevice(ID3D12Fence1* This,REFIID riid,void **device) {
 8665    return This->lpVtbl->GetDevice(This,riid,device);
 8666}
 8667/*** ID3D12Fence methods ***/
 8668static inline UINT64 ID3D12Fence1_GetCompletedValue(ID3D12Fence1* This) {
 8669    return This->lpVtbl->GetCompletedValue(This);
 8670}
 8671static inline HRESULT ID3D12Fence1_SetEventOnCompletion(ID3D12Fence1* This,UINT64 value,HANDLE event) {
 8672    return This->lpVtbl->SetEventOnCompletion(This,value,event);
 8673}
 8674static inline HRESULT ID3D12Fence1_Signal(ID3D12Fence1* This,UINT64 value) {
 8675    return This->lpVtbl->Signal(This,value);
 8676}
 8677/*** ID3D12Fence1 methods ***/
 8678static 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
 8695DEFINE_GUID(IID_ID3D12CommandAllocator, 0x6102dee4, 0xaf59, 0x4b09, 0xb9,0x99, 0xb4,0x4d,0x73,0xf0,0x9b,0x24);
 8696#if defined(__cplusplus) && !defined(CINTERFACE)
 8697MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
 8698ID3D12CommandAllocator : 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
 8708typedef 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
 8758interface 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 ***/
 8779static inline HRESULT ID3D12CommandAllocator_QueryInterface(ID3D12CommandAllocator* This,REFIID riid,void **ppvObject) {
 8780    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 8781}
 8782static inline ULONG ID3D12CommandAllocator_AddRef(ID3D12CommandAllocator* This) {
 8783    return This->lpVtbl->AddRef(This);
 8784}
 8785static inline ULONG ID3D12CommandAllocator_Release(ID3D12CommandAllocator* This) {
 8786    return This->lpVtbl->Release(This);
 8787}
 8788/*** ID3D12Object methods ***/
 8789static inline HRESULT ID3D12CommandAllocator_GetPrivateData(ID3D12CommandAllocator* This,REFGUID guid,UINT *data_size,void *data) {
 8790    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 8791}
 8792static 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}
 8795static inline HRESULT ID3D12CommandAllocator_SetPrivateDataInterface(ID3D12CommandAllocator* This,REFGUID guid,const IUnknown *data) {
 8796    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 8797}
 8798static inline HRESULT ID3D12CommandAllocator_SetName(ID3D12CommandAllocator* This,const WCHAR *name) {
 8799    return This->lpVtbl->SetName(This,name);
 8800}
 8801/*** ID3D12DeviceChild methods ***/
 8802static inline HRESULT ID3D12CommandAllocator_GetDevice(ID3D12CommandAllocator* This,REFIID riid,void **device) {
 8803    return This->lpVtbl->GetDevice(This,riid,device);
 8804}
 8805/*** ID3D12CommandAllocator methods ***/
 8806static 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
 8823DEFINE_GUID(IID_ID3D12Device, 0x189819f1, 0x1db6, 0x4b57, 0xbe,0x54, 0x18,0x21,0x33,0x9b,0x85,0xf7);
 8824#if defined(__cplusplus) && !defined(CINTERFACE)
 8825MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
 8826ID3D12Device : 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
 9078typedef 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
 9360interface 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 ***/
 9415static inline HRESULT ID3D12Device_QueryInterface(ID3D12Device* This,REFIID riid,void **ppvObject) {
 9416    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 9417}
 9418static inline ULONG ID3D12Device_AddRef(ID3D12Device* This) {
 9419    return This->lpVtbl->AddRef(This);
 9420}
 9421static inline ULONG ID3D12Device_Release(ID3D12Device* This) {
 9422    return This->lpVtbl->Release(This);
 9423}
 9424/*** ID3D12Object methods ***/
 9425static inline HRESULT ID3D12Device_GetPrivateData(ID3D12Device* This,REFGUID guid,UINT *data_size,void *data) {
 9426    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 9427}
 9428static 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}
 9431static inline HRESULT ID3D12Device_SetPrivateDataInterface(ID3D12Device* This,REFGUID guid,const IUnknown *data) {
 9432    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 9433}
 9434static inline HRESULT ID3D12Device_SetName(ID3D12Device* This,const WCHAR *name) {
 9435    return This->lpVtbl->SetName(This,name);
 9436}
 9437/*** ID3D12Device methods ***/
 9438static inline UINT ID3D12Device_GetNodeCount(ID3D12Device* This) {
 9439    return This->lpVtbl->GetNodeCount(This);
 9440}
 9441static 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}
 9444static 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}
 9447static 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}
 9450static 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}
 9453static 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}
 9456static 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}
 9459static 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}
 9462static inline UINT ID3D12Device_GetDescriptorHandleIncrementSize(ID3D12Device* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
 9463    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
 9464}
 9465static 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}
 9468static 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}
 9471static 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}
 9474static 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}
 9477static 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}
 9480static 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}
 9483static inline void ID3D12Device_CreateSampler(ID3D12Device* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
 9484    This->lpVtbl->CreateSampler(This,desc,descriptor);
 9485}
 9486static 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}
 9489static 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}
 9492static 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}
 9496static 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}
 9500static 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}
 9503static 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}
 9506static 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}
 9509static 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}
 9512static 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}
 9515static inline HRESULT ID3D12Device_OpenSharedHandle(ID3D12Device* This,HANDLE handle,REFIID riid,void **object) {
 9516    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
 9517}
 9518static inline HRESULT ID3D12Device_OpenSharedHandleByName(ID3D12Device* This,const WCHAR *name,DWORD access,HANDLE *handle) {
 9519    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
 9520}
 9521static inline HRESULT ID3D12Device_MakeResident(ID3D12Device* This,UINT object_count,ID3D12Pageable *const *objects) {
 9522    return This->lpVtbl->MakeResident(This,object_count,objects);
 9523}
 9524static inline HRESULT ID3D12Device_Evict(ID3D12Device* This,UINT object_count,ID3D12Pageable *const *objects) {
 9525    return This->lpVtbl->Evict(This,object_count,objects);
 9526}
 9527static 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}
 9530static inline HRESULT ID3D12Device_GetDeviceRemovedReason(ID3D12Device* This) {
 9531    return This->lpVtbl->GetDeviceRemovedReason(This);
 9532}
 9533static 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}
 9536static 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}
 9539static inline HRESULT ID3D12Device_SetStablePowerState(ID3D12Device* This,WINBOOL enable) {
 9540    return This->lpVtbl->SetStablePowerState(This,enable);
 9541}
 9542static 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}
 9545static 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}
 9548static 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
 9566DEFINE_GUID(IID_ID3D12PipelineLibrary, 0xc64226a8, 0x9201, 0x46af, 0xb4,0xcc, 0x53,0xfb,0x9f,0xf7,0x41,0x4f);
 9567#if defined(__cplusplus) && !defined(CINTERFACE)
 9568MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
 9569ID3D12PipelineLibrary : 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
 9599typedef 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
 9673interface 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 ***/
 9698static inline HRESULT ID3D12PipelineLibrary_QueryInterface(ID3D12PipelineLibrary* This,REFIID riid,void **ppvObject) {
 9699    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 9700}
 9701static inline ULONG ID3D12PipelineLibrary_AddRef(ID3D12PipelineLibrary* This) {
 9702    return This->lpVtbl->AddRef(This);
 9703}
 9704static inline ULONG ID3D12PipelineLibrary_Release(ID3D12PipelineLibrary* This) {
 9705    return This->lpVtbl->Release(This);
 9706}
 9707/*** ID3D12Object methods ***/
 9708static inline HRESULT ID3D12PipelineLibrary_GetPrivateData(ID3D12PipelineLibrary* This,REFGUID guid,UINT *data_size,void *data) {
 9709    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 9710}
 9711static 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}
 9714static inline HRESULT ID3D12PipelineLibrary_SetPrivateDataInterface(ID3D12PipelineLibrary* This,REFGUID guid,const IUnknown *data) {
 9715    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 9716}
 9717static inline HRESULT ID3D12PipelineLibrary_SetName(ID3D12PipelineLibrary* This,const WCHAR *name) {
 9718    return This->lpVtbl->SetName(This,name);
 9719}
 9720/*** ID3D12DeviceChild methods ***/
 9721static inline HRESULT ID3D12PipelineLibrary_GetDevice(ID3D12PipelineLibrary* This,REFIID riid,void **device) {
 9722    return This->lpVtbl->GetDevice(This,riid,device);
 9723}
 9724/*** ID3D12PipelineLibrary methods ***/
 9725static inline HRESULT ID3D12PipelineLibrary_StorePipeline(ID3D12PipelineLibrary* This,const WCHAR *name,ID3D12PipelineState *pipeline) {
 9726    return This->lpVtbl->StorePipeline(This,name,pipeline);
 9727}
 9728static 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}
 9731static 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}
 9734static inline SIZE_T ID3D12PipelineLibrary_GetSerializedSize(ID3D12PipelineLibrary* This) {
 9735    return This->lpVtbl->GetSerializedSize(This);
 9736}
 9737static 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
 9754DEFINE_GUID(IID_ID3D12PipelineLibrary1, 0x80eabf42, 0x2568, 0x4e5e, 0xbd,0x82, 0xc3,0x7f,0x86,0x96,0x1d,0xc3);
 9755#if defined(__cplusplus) && !defined(CINTERFACE)
 9756MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
 9757ID3D12PipelineLibrary1 : 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
 9770typedef 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
 9852interface 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 ***/
 9879static inline HRESULT ID3D12PipelineLibrary1_QueryInterface(ID3D12PipelineLibrary1* This,REFIID riid,void **ppvObject) {
 9880    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 9881}
 9882static inline ULONG ID3D12PipelineLibrary1_AddRef(ID3D12PipelineLibrary1* This) {
 9883    return This->lpVtbl->AddRef(This);
 9884}
 9885static inline ULONG ID3D12PipelineLibrary1_Release(ID3D12PipelineLibrary1* This) {
 9886    return This->lpVtbl->Release(This);
 9887}
 9888/*** ID3D12Object methods ***/
 9889static inline HRESULT ID3D12PipelineLibrary1_GetPrivateData(ID3D12PipelineLibrary1* This,REFGUID guid,UINT *data_size,void *data) {
 9890    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 9891}
 9892static 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}
 9895static inline HRESULT ID3D12PipelineLibrary1_SetPrivateDataInterface(ID3D12PipelineLibrary1* This,REFGUID guid,const IUnknown *data) {
 9896    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
 9897}
 9898static inline HRESULT ID3D12PipelineLibrary1_SetName(ID3D12PipelineLibrary1* This,const WCHAR *name) {
 9899    return This->lpVtbl->SetName(This,name);
 9900}
 9901/*** ID3D12DeviceChild methods ***/
 9902static inline HRESULT ID3D12PipelineLibrary1_GetDevice(ID3D12PipelineLibrary1* This,REFIID riid,void **device) {
 9903    return This->lpVtbl->GetDevice(This,riid,device);
 9904}
 9905/*** ID3D12PipelineLibrary methods ***/
 9906static inline HRESULT ID3D12PipelineLibrary1_StorePipeline(ID3D12PipelineLibrary1* This,const WCHAR *name,ID3D12PipelineState *pipeline) {
 9907    return This->lpVtbl->StorePipeline(This,name,pipeline);
 9908}
 9909static 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}
 9912static 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}
 9915static inline SIZE_T ID3D12PipelineLibrary1_GetSerializedSize(ID3D12PipelineLibrary1* This) {
 9916    return This->lpVtbl->GetSerializedSize(This);
 9917}
 9918static 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 ***/
 9922static 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
 9939DEFINE_GUID(IID_ID3D12Device1, 0x77acce80, 0x638e, 0x4e65, 0x88,0x95, 0xc1,0xf2,0x33,0x86,0x86,0x3e);
 9940#if defined(__cplusplus) && !defined(CINTERFACE)
 9941MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
 9942ID3D12Device1 : 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
 9967typedef 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
10271interface 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 ***/
10330static inline HRESULT ID3D12Device1_QueryInterface(ID3D12Device1* This,REFIID riid,void **ppvObject) {
10331    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10332}
10333static inline ULONG ID3D12Device1_AddRef(ID3D12Device1* This) {
10334    return This->lpVtbl->AddRef(This);
10335}
10336static inline ULONG ID3D12Device1_Release(ID3D12Device1* This) {
10337    return This->lpVtbl->Release(This);
10338}
10339/*** ID3D12Object methods ***/
10340static inline HRESULT ID3D12Device1_GetPrivateData(ID3D12Device1* This,REFGUID guid,UINT *data_size,void *data) {
10341    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
10342}
10343static 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}
10346static inline HRESULT ID3D12Device1_SetPrivateDataInterface(ID3D12Device1* This,REFGUID guid,const IUnknown *data) {
10347    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
10348}
10349static inline HRESULT ID3D12Device1_SetName(ID3D12Device1* This,const WCHAR *name) {
10350    return This->lpVtbl->SetName(This,name);
10351}
10352/*** ID3D12Device methods ***/
10353static inline UINT ID3D12Device1_GetNodeCount(ID3D12Device1* This) {
10354    return This->lpVtbl->GetNodeCount(This);
10355}
10356static 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}
10359static 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}
10362static 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}
10365static 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}
10368static 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}
10371static 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}
10374static 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}
10377static inline UINT ID3D12Device1_GetDescriptorHandleIncrementSize(ID3D12Device1* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
10378    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
10379}
10380static 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}
10383static 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}
10386static 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}
10389static 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}
10392static 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}
10395static 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}
10398static inline void ID3D12Device1_CreateSampler(ID3D12Device1* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
10399    This->lpVtbl->CreateSampler(This,desc,descriptor);
10400}
10401static 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}
10404static 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}
10407static 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}
10411static 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}
10415static 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}
10418static 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}
10421static 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}
10424static 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}
10427static 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}
10430static inline HRESULT ID3D12Device1_OpenSharedHandle(ID3D12Device1* This,HANDLE handle,REFIID riid,void **object) {
10431    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
10432}
10433static inline HRESULT ID3D12Device1_OpenSharedHandleByName(ID3D12Device1* This,const WCHAR *name,DWORD access,HANDLE *handle) {
10434    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
10435}
10436static inline HRESULT ID3D12Device1_MakeResident(ID3D12Device1* This,UINT object_count,ID3D12Pageable *const *objects) {
10437    return This->lpVtbl->MakeResident(This,object_count,objects);
10438}
10439static inline HRESULT ID3D12Device1_Evict(ID3D12Device1* This,UINT object_count,ID3D12Pageable *const *objects) {
10440    return This->lpVtbl->Evict(This,object_count,objects);
10441}
10442static 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}
10445static inline HRESULT ID3D12Device1_GetDeviceRemovedReason(ID3D12Device1* This) {
10446    return This->lpVtbl->GetDeviceRemovedReason(This);
10447}
10448static 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}
10451static 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}
10454static inline HRESULT ID3D12Device1_SetStablePowerState(ID3D12Device1* This,WINBOOL enable) {
10455    return This->lpVtbl->SetStablePowerState(This,enable);
10456}
10457static 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}
10460static 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}
10463static inline LUID ID3D12Device1_GetAdapterLuid(ID3D12Device1* This) {
10464    LUID __ret;
10465    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
10466}
10467/*** ID3D12Device1 methods ***/
10468static 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}
10471static 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}
10474static 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
10491DEFINE_GUID(IID_ID3D12Device2, 0x30baa41e, 0xb15b, 0x475c, 0xa0,0xbb, 0x1a,0xf5,0xc5,0xb6,0x43,0x28);
10492#if defined(__cplusplus) && !defined(CINTERFACE)
10493MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
10494ID3D12Device2 : 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
10506typedef 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
10817interface 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 ***/
10878static inline HRESULT ID3D12Device2_QueryInterface(ID3D12Device2* This,REFIID riid,void **ppvObject) {
10879    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10880}
10881static inline ULONG ID3D12Device2_AddRef(ID3D12Device2* This) {
10882    return This->lpVtbl->AddRef(This);
10883}
10884static inline ULONG ID3D12Device2_Release(ID3D12Device2* This) {
10885    return This->lpVtbl->Release(This);
10886}
10887/*** ID3D12Object methods ***/
10888static inline HRESULT ID3D12Device2_GetPrivateData(ID3D12Device2* This,REFGUID guid,UINT *data_size,void *data) {
10889    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
10890}
10891static 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}
10894static inline HRESULT ID3D12Device2_SetPrivateDataInterface(ID3D12Device2* This,REFGUID guid,const IUnknown *data) {
10895    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
10896}
10897static inline HRESULT ID3D12Device2_SetName(ID3D12Device2* This,const WCHAR *name) {
10898    return This->lpVtbl->SetName(This,name);
10899}
10900/*** ID3D12Device methods ***/
10901static inline UINT ID3D12Device2_GetNodeCount(ID3D12Device2* This) {
10902    return This->lpVtbl->GetNodeCount(This);
10903}
10904static 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}
10907static 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}
10910static 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}
10913static 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}
10916static 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}
10919static 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}
10922static 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}
10925static inline UINT ID3D12Device2_GetDescriptorHandleIncrementSize(ID3D12Device2* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
10926    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
10927}
10928static 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}
10931static 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}
10934static 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}
10937static 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}
10940static 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}
10943static 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}
10946static inline void ID3D12Device2_CreateSampler(ID3D12Device2* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
10947    This->lpVtbl->CreateSampler(This,desc,descriptor);
10948}
10949static 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}
10952static 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}
10955static 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}
10959static 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}
10963static 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}
10966static 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}
10969static 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}
10972static 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}
10975static 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}
10978static inline HRESULT ID3D12Device2_OpenSharedHandle(ID3D12Device2* This,HANDLE handle,REFIID riid,void **object) {
10979    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
10980}
10981static inline HRESULT ID3D12Device2_OpenSharedHandleByName(ID3D12Device2* This,const WCHAR *name,DWORD access,HANDLE *handle) {
10982    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
10983}
10984static inline HRESULT ID3D12Device2_MakeResident(ID3D12Device2* This,UINT object_count,ID3D12Pageable *const *objects) {
10985    return This->lpVtbl->MakeResident(This,object_count,objects);
10986}
10987static inline HRESULT ID3D12Device2_Evict(ID3D12Device2* This,UINT object_count,ID3D12Pageable *const *objects) {
10988    return This->lpVtbl->Evict(This,object_count,objects);
10989}
10990static 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}
10993static inline HRESULT ID3D12Device2_GetDeviceRemovedReason(ID3D12Device2* This) {
10994    return This->lpVtbl->GetDeviceRemovedReason(This);
10995}
10996static 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}
10999static 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}
11002static inline HRESULT ID3D12Device2_SetStablePowerState(ID3D12Device2* This,WINBOOL enable) {
11003    return This->lpVtbl->SetStablePowerState(This,enable);
11004}
11005static 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}
11008static 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}
11011static inline LUID ID3D12Device2_GetAdapterLuid(ID3D12Device2* This) {
11012    LUID __ret;
11013    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
11014}
11015/*** ID3D12Device1 methods ***/
11016static 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}
11019static 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}
11022static 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 ***/
11026static 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
11043DEFINE_GUID(IID_ID3D12Device3, 0x81dadc15, 0x2bad, 0x4392, 0x93,0xc5, 0x10,0x13,0x45,0xc4,0xaa,0x98);
11044#if defined(__cplusplus) && !defined(CINTERFACE)
11045MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
11046ID3D12Device3 : 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
11070typedef 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
11402interface 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 ***/
11467static inline HRESULT ID3D12Device3_QueryInterface(ID3D12Device3* This,REFIID riid,void **ppvObject) {
11468    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
11469}
11470static inline ULONG ID3D12Device3_AddRef(ID3D12Device3* This) {
11471    return This->lpVtbl->AddRef(This);
11472}
11473static inline ULONG ID3D12Device3_Release(ID3D12Device3* This) {
11474    return This->lpVtbl->Release(This);
11475}
11476/*** ID3D12Object methods ***/
11477static inline HRESULT ID3D12Device3_GetPrivateData(ID3D12Device3* This,REFGUID guid,UINT *data_size,void *data) {
11478    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
11479}
11480static 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}
11483static inline HRESULT ID3D12Device3_SetPrivateDataInterface(ID3D12Device3* This,REFGUID guid,const IUnknown *data) {
11484    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
11485}
11486static inline HRESULT ID3D12Device3_SetName(ID3D12Device3* This,const WCHAR *name) {
11487    return This->lpVtbl->SetName(This,name);
11488}
11489/*** ID3D12Device methods ***/
11490static inline UINT ID3D12Device3_GetNodeCount(ID3D12Device3* This) {
11491    return This->lpVtbl->GetNodeCount(This);
11492}
11493static 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}
11496static 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}
11499static 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}
11502static 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}
11505static 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}
11508static 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}
11511static 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}
11514static inline UINT ID3D12Device3_GetDescriptorHandleIncrementSize(ID3D12Device3* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
11515    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
11516}
11517static 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}
11520static 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}
11523static 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}
11526static 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}
11529static 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}
11532static 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}
11535static inline void ID3D12Device3_CreateSampler(ID3D12Device3* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
11536    This->lpVtbl->CreateSampler(This,desc,descriptor);
11537}
11538static 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}
11541static 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}
11544static 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}
11548static 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}
11552static 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}
11555static 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}
11558static 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}
11561static 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}
11564static 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}
11567static inline HRESULT ID3D12Device3_OpenSharedHandle(ID3D12Device3* This,HANDLE handle,REFIID riid,void **object) {
11568    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
11569}
11570static inline HRESULT ID3D12Device3_OpenSharedHandleByName(ID3D12Device3* This,const WCHAR *name,DWORD access,HANDLE *handle) {
11571    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
11572}
11573static inline HRESULT ID3D12Device3_MakeResident(ID3D12Device3* This,UINT object_count,ID3D12Pageable *const *objects) {
11574    return This->lpVtbl->MakeResident(This,object_count,objects);
11575}
11576static inline HRESULT ID3D12Device3_Evict(ID3D12Device3* This,UINT object_count,ID3D12Pageable *const *objects) {
11577    return This->lpVtbl->Evict(This,object_count,objects);
11578}
11579static 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}
11582static inline HRESULT ID3D12Device3_GetDeviceRemovedReason(ID3D12Device3* This) {
11583    return This->lpVtbl->GetDeviceRemovedReason(This);
11584}
11585static 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}
11588static 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}
11591static inline HRESULT ID3D12Device3_SetStablePowerState(ID3D12Device3* This,WINBOOL enable) {
11592    return This->lpVtbl->SetStablePowerState(This,enable);
11593}
11594static 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}
11597static 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}
11600static inline LUID ID3D12Device3_GetAdapterLuid(ID3D12Device3* This) {
11601    LUID __ret;
11602    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
11603}
11604/*** ID3D12Device1 methods ***/
11605static 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}
11608static 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}
11611static 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 ***/
11615static 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 ***/
11619static inline HRESULT ID3D12Device3_OpenExistingHeapFromAddress(ID3D12Device3* This,const void *address,REFIID riid,void **heap) {
11620    return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
11621}
11622static inline HRESULT ID3D12Device3_OpenExistingHeapFromFileMapping(ID3D12Device3* This,HANDLE file_mapping,REFIID riid,void **heap) {
11623    return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
11624}
11625static 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
11642DEFINE_GUID(IID_ID3D12RootSignatureDeserializer, 0x34ab647b, 0x3cc8, 0x46ac, 0x84,0x1b, 0xc0,0x96,0x56,0x45,0xc0,0x46);
11643#if defined(__cplusplus) && !defined(CINTERFACE)
11644MIDL_INTERFACE("34ab647b-3cc8-46ac-841b-c0965645c046")
11645ID3D12RootSignatureDeserializer : 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
11655typedef 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
11677interface 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 ***/
11691static inline HRESULT ID3D12RootSignatureDeserializer_QueryInterface(ID3D12RootSignatureDeserializer* This,REFIID riid,void **ppvObject) {
11692    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
11693}
11694static inline ULONG ID3D12RootSignatureDeserializer_AddRef(ID3D12RootSignatureDeserializer* This) {
11695    return This->lpVtbl->AddRef(This);
11696}
11697static inline ULONG ID3D12RootSignatureDeserializer_Release(ID3D12RootSignatureDeserializer* This) {
11698    return This->lpVtbl->Release(This);
11699}
11700/*** ID3D12RootSignatureDeserializer methods ***/
11701static 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
11718DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer, 0x7f91ce67, 0x090c, 0x4bb7, 0xb7,0x8e, 0xed,0x8f,0xf2,0xe3,0x1d,0xa0);
11719#if defined(__cplusplus) && !defined(CINTERFACE)
11720MIDL_INTERFACE("7f91ce67-090c-4bb7-b78e-ed8ff2e31da0")
11721ID3D12VersionedRootSignatureDeserializer : 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
11735typedef 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
11762interface 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 ***/
11777static inline HRESULT ID3D12VersionedRootSignatureDeserializer_QueryInterface(ID3D12VersionedRootSignatureDeserializer* This,REFIID riid,void **ppvObject) {
11778    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
11779}
11780static inline ULONG ID3D12VersionedRootSignatureDeserializer_AddRef(ID3D12VersionedRootSignatureDeserializer* This) {
11781    return This->lpVtbl->AddRef(This);
11782}
11783static inline ULONG ID3D12VersionedRootSignatureDeserializer_Release(ID3D12VersionedRootSignatureDeserializer* This) {
11784    return This->lpVtbl->Release(This);
11785}
11786/*** ID3D12VersionedRootSignatureDeserializer methods ***/
11787static 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}
11790static 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
11801typedef enum D3D12_COMMAND_LIST_FLAGS {
11802    D3D12_COMMAND_LIST_FLAG_NONE = 0x0
11803} D3D12_COMMAND_LIST_FLAGS;
11804DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_LIST_FLAGS);
11805typedef enum D3D12_COMMAND_POOL_FLAGS {
11806    D3D12_COMMAND_POOL_FLAG_NONE = 0x0
11807} D3D12_COMMAND_POOL_FLAGS;
11808DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_POOL_FLAGS);
11809typedef enum D3D12_COMMAND_RECORDER_FLAGS {
11810    D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0
11811} D3D12_COMMAND_RECORDER_FLAGS;
11812DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_RECORDER_FLAGS);
11813/*****************************************************************************
11814 * ID3D12Device4 interface
11815 */
11816#ifndef __ID3D12Device4_INTERFACE_DEFINED__
11817#define __ID3D12Device4_INTERFACE_DEFINED__
11818
11819DEFINE_GUID(IID_ID3D12Device4, 0xe865df17, 0xa9ee, 0x46f9, 0xa4,0x63, 0x30,0x98,0x31,0x5a,0xa2,0xe5);
11820#if defined(__cplusplus) && !defined(CINTERFACE)
11821MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
11822ID3D12Device4 : 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
11889typedef 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
12271interface 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 ***/
12343static inline HRESULT ID3D12Device4_QueryInterface(ID3D12Device4* This,REFIID riid,void **ppvObject) {
12344    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
12345}
12346static inline ULONG ID3D12Device4_AddRef(ID3D12Device4* This) {
12347    return This->lpVtbl->AddRef(This);
12348}
12349static inline ULONG ID3D12Device4_Release(ID3D12Device4* This) {
12350    return This->lpVtbl->Release(This);
12351}
12352/*** ID3D12Object methods ***/
12353static inline HRESULT ID3D12Device4_GetPrivateData(ID3D12Device4* This,REFGUID guid,UINT *data_size,void *data) {
12354    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
12355}
12356static 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}
12359static inline HRESULT ID3D12Device4_SetPrivateDataInterface(ID3D12Device4* This,REFGUID guid,const IUnknown *data) {
12360    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
12361}
12362static inline HRESULT ID3D12Device4_SetName(ID3D12Device4* This,const WCHAR *name) {
12363    return This->lpVtbl->SetName(This,name);
12364}
12365/*** ID3D12Device methods ***/
12366static inline UINT ID3D12Device4_GetNodeCount(ID3D12Device4* This) {
12367    return This->lpVtbl->GetNodeCount(This);
12368}
12369static 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}
12372static 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}
12375static 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}
12378static 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}
12381static 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}
12384static 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}
12387static 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}
12390static inline UINT ID3D12Device4_GetDescriptorHandleIncrementSize(ID3D12Device4* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
12391    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
12392}
12393static 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}
12396static 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}
12399static 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}
12402static 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}
12405static 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}
12408static 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}
12411static inline void ID3D12Device4_CreateSampler(ID3D12Device4* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
12412    This->lpVtbl->CreateSampler(This,desc,descriptor);
12413}
12414static 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}
12417static 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}
12420static 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}
12424static 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}
12428static 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}
12431static 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}
12434static 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}
12437static 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}
12440static 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}
12443static inline HRESULT ID3D12Device4_OpenSharedHandle(ID3D12Device4* This,HANDLE handle,REFIID riid,void **object) {
12444    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
12445}
12446static inline HRESULT ID3D12Device4_OpenSharedHandleByName(ID3D12Device4* This,const WCHAR *name,DWORD access,HANDLE *handle) {
12447    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
12448}
12449static inline HRESULT ID3D12Device4_MakeResident(ID3D12Device4* This,UINT object_count,ID3D12Pageable *const *objects) {
12450    return This->lpVtbl->MakeResident(This,object_count,objects);
12451}
12452static inline HRESULT ID3D12Device4_Evict(ID3D12Device4* This,UINT object_count,ID3D12Pageable *const *objects) {
12453    return This->lpVtbl->Evict(This,object_count,objects);
12454}
12455static 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}
12458static inline HRESULT ID3D12Device4_GetDeviceRemovedReason(ID3D12Device4* This) {
12459    return This->lpVtbl->GetDeviceRemovedReason(This);
12460}
12461static 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}
12464static 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}
12467static inline HRESULT ID3D12Device4_SetStablePowerState(ID3D12Device4* This,WINBOOL enable) {
12468    return This->lpVtbl->SetStablePowerState(This,enable);
12469}
12470static 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}
12473static 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}
12476static inline LUID ID3D12Device4_GetAdapterLuid(ID3D12Device4* This) {
12477    LUID __ret;
12478    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
12479}
12480/*** ID3D12Device1 methods ***/
12481static 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}
12484static 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}
12487static 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 ***/
12491static 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 ***/
12495static inline HRESULT ID3D12Device4_OpenExistingHeapFromAddress(ID3D12Device4* This,const void *address,REFIID riid,void **heap) {
12496    return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
12497}
12498static inline HRESULT ID3D12Device4_OpenExistingHeapFromFileMapping(ID3D12Device4* This,HANDLE file_mapping,REFIID riid,void **heap) {
12499    return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
12500}
12501static 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 ***/
12505static 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}
12508static 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}
12511static 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}
12514static 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}
12517static 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}
12520static 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
12532typedef 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
12542DEFINE_GUID(IID_ID3D12LifetimeOwner, 0xe667af9f, 0xcd56, 0x4f46, 0x83,0xce, 0x03,0x2e,0x59,0x5d,0x70,0xa8);
12543#if defined(__cplusplus) && !defined(CINTERFACE)
12544MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
12545ID3D12LifetimeOwner : 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
12555typedef 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
12578interface 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 ***/
12592static inline HRESULT ID3D12LifetimeOwner_QueryInterface(ID3D12LifetimeOwner* This,REFIID riid,void **ppvObject) {
12593    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
12594}
12595static inline ULONG ID3D12LifetimeOwner_AddRef(ID3D12LifetimeOwner* This) {
12596    return This->lpVtbl->AddRef(This);
12597}
12598static inline ULONG ID3D12LifetimeOwner_Release(ID3D12LifetimeOwner* This) {
12599    return This->lpVtbl->Release(This);
12600}
12601/*** ID3D12LifetimeOwner methods ***/
12602static 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
12619DEFINE_GUID(IID_ID3D12SwapChainAssistant, 0xf1df64b6, 0x57fd, 0x49cd, 0x88,0x07, 0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
12620#if defined(__cplusplus) && !defined(CINTERFACE)
12621MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
12622ID3D12SwapChainAssistant : 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
12656typedef 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
12694interface 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 ***/
12711static inline HRESULT ID3D12SwapChainAssistant_QueryInterface(ID3D12SwapChainAssistant* This,REFIID riid,void **ppvObject) {
12712    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
12713}
12714static inline ULONG ID3D12SwapChainAssistant_AddRef(ID3D12SwapChainAssistant* This) {
12715    return This->lpVtbl->AddRef(This);
12716}
12717static inline ULONG ID3D12SwapChainAssistant_Release(ID3D12SwapChainAssistant* This) {
12718    return This->lpVtbl->Release(This);
12719}
12720/*** ID3D12SwapChainAssistant methods ***/
12721static inline LUID ID3D12SwapChainAssistant_GetLUID(ID3D12SwapChainAssistant* This) {
12722    LUID __ret;
12723    return *This->lpVtbl->GetLUID(This,&__ret);
12724}
12725static inline HRESULT ID3D12SwapChainAssistant_GetSwapChainObject(ID3D12SwapChainAssistant* This,REFIID riid,void **ppv) {
12726    return This->lpVtbl->GetSwapChainObject(This,riid,ppv);
12727}
12728static 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}
12731static 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
12748DEFINE_GUID(IID_ID3D12LifetimeTracker, 0x3fd03d36, 0x4eb1, 0x424a, 0xa5,0x82, 0x49,0x4e,0xcb,0x8b,0xa8,0x13);
12749#if defined(__cplusplus) && !defined(CINTERFACE)
12750MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
12751ID3D12LifetimeTracker : 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
12761typedef 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
12812interface 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 ***/
12833static inline HRESULT ID3D12LifetimeTracker_QueryInterface(ID3D12LifetimeTracker* This,REFIID riid,void **ppvObject) {
12834    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
12835}
12836static inline ULONG ID3D12LifetimeTracker_AddRef(ID3D12LifetimeTracker* This) {
12837    return This->lpVtbl->AddRef(This);
12838}
12839static inline ULONG ID3D12LifetimeTracker_Release(ID3D12LifetimeTracker* This) {
12840    return This->lpVtbl->Release(This);
12841}
12842/*** ID3D12Object methods ***/
12843static inline HRESULT ID3D12LifetimeTracker_GetPrivateData(ID3D12LifetimeTracker* This,REFGUID guid,UINT *data_size,void *data) {
12844    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
12845}
12846static 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}
12849static inline HRESULT ID3D12LifetimeTracker_SetPrivateDataInterface(ID3D12LifetimeTracker* This,REFGUID guid,const IUnknown *data) {
12850    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
12851}
12852static inline HRESULT ID3D12LifetimeTracker_SetName(ID3D12LifetimeTracker* This,const WCHAR *name) {
12853    return This->lpVtbl->SetName(This,name);
12854}
12855/*** ID3D12DeviceChild methods ***/
12856static inline HRESULT ID3D12LifetimeTracker_GetDevice(ID3D12LifetimeTracker* This,REFIID riid,void **device) {
12857    return This->lpVtbl->GetDevice(This,riid,device);
12858}
12859/*** ID3D12LifetimeTracker methods ***/
12860static 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
12871typedef 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;
12878typedef 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;
12882DEFINE_ENUM_FLAG_OPERATORS(D3D12_META_COMMAND_PARAMETER_FLAGS);
12883typedef 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;
12888typedef 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;
12895typedef 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;
12915DEFINE_ENUM_FLAG_OPERATORS(D3D12_GRAPHICS_STATES);
12916typedef 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
12928DEFINE_GUID(IID_ID3D12StateObject, 0x47016943, 0xfca8, 0x4594, 0x93,0xea, 0xaf,0x25,0x8b,0x55,0x34,0x6d);
12929#if defined(__cplusplus) && !defined(CINTERFACE)
12930MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
12931ID3D12StateObject : 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
12938typedef 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
12984interface 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 ***/
13003static inline HRESULT ID3D12StateObject_QueryInterface(ID3D12StateObject* This,REFIID riid,void **ppvObject) {
13004    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
13005}
13006static inline ULONG ID3D12StateObject_AddRef(ID3D12StateObject* This) {
13007    return This->lpVtbl->AddRef(This);
13008}
13009static inline ULONG ID3D12StateObject_Release(ID3D12StateObject* This) {
13010    return This->lpVtbl->Release(This);
13011}
13012/*** ID3D12Object methods ***/
13013static inline HRESULT ID3D12StateObject_GetPrivateData(ID3D12StateObject* This,REFGUID guid,UINT *data_size,void *data) {
13014    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
13015}
13016static 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}
13019static inline HRESULT ID3D12StateObject_SetPrivateDataInterface(ID3D12StateObject* This,REFGUID guid,const IUnknown *data) {
13020    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
13021}
13022static inline HRESULT ID3D12StateObject_SetName(ID3D12StateObject* This,const WCHAR *name) {
13023    return This->lpVtbl->SetName(This,name);
13024}
13025/*** ID3D12DeviceChild methods ***/
13026static 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
13043DEFINE_GUID(IID_ID3D12StateObjectProperties, 0xde5fa827, 0x9bf9, 0x4f26, 0x89,0xff, 0xd7,0xf5,0x6f,0xde,0x38,0x60);
13044#if defined(__cplusplus) && !defined(CINTERFACE)
13045MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
13046ID3D12StateObjectProperties : 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
13065typedef 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
13099interface 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 ***/
13116static inline HRESULT ID3D12StateObjectProperties_QueryInterface(ID3D12StateObjectProperties* This,REFIID riid,void **ppvObject) {
13117    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
13118}
13119static inline ULONG ID3D12StateObjectProperties_AddRef(ID3D12StateObjectProperties* This) {
13120    return This->lpVtbl->AddRef(This);
13121}
13122static inline ULONG ID3D12StateObjectProperties_Release(ID3D12StateObjectProperties* This) {
13123    return This->lpVtbl->Release(This);
13124}
13125/*** ID3D12StateObjectProperties methods ***/
13126static inline void * ID3D12StateObjectProperties_GetShaderIdentifier(ID3D12StateObjectProperties* This,const WCHAR *export_name) {
13127    return This->lpVtbl->GetShaderIdentifier(This,export_name);
13128}
13129static inline UINT64 ID3D12StateObjectProperties_GetShaderStackSize(ID3D12StateObjectProperties* This,const WCHAR *export_name) {
13130    return This->lpVtbl->GetShaderStackSize(This,export_name);
13131}
13132static inline UINT64 ID3D12StateObjectProperties_GetPipelineStackSize(ID3D12StateObjectProperties* This) {
13133    return This->lpVtbl->GetPipelineStackSize(This);
13134}
13135static 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
13146typedef 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;
13161typedef struct D3D12_STATE_SUBOBJECT {
13162    D3D12_STATE_SUBOBJECT_TYPE Type;
13163    const void *pDesc;
13164} D3D12_STATE_SUBOBJECT;
13165typedef 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;
13171DEFINE_ENUM_FLAG_OPERATORS(D3D12_STATE_OBJECT_FLAGS);
13172typedef struct D3D12_STATE_OBJECT_CONFIG {
13173    D3D12_STATE_OBJECT_FLAGS Flags;
13174} D3D12_STATE_OBJECT_CONFIG;
13175typedef struct D3D12_GLOBAL_ROOT_SIGNATURE {
13176    ID3D12RootSignature *pGlobalRootSignature;
13177} D3D12_GLOBAL_ROOT_SIGNATURE;
13178typedef struct D3D12_LOCAL_ROOT_SIGNATURE {
13179    ID3D12RootSignature *pLocalRootSignature;
13180} D3D12_LOCAL_ROOT_SIGNATURE;
13181typedef struct D3D12_NODE_MASK {
13182    UINT NodeMask;
13183} D3D12_NODE_MASK;
13184typedef enum D3D12_EXPORT_FLAGS {
13185    D3D12_EXPORT_FLAG_NONE = 0x0
13186} D3D12_EXPORT_FLAGS;
13187DEFINE_ENUM_FLAG_OPERATORS(D3D12_EXPORT_FLAGS);
13188typedef struct D3D12_EXPORT_DESC {
13189    const WCHAR *Name;
13190    const WCHAR *ExportToRename;
13191    D3D12_EXPORT_FLAGS Flags;
13192} D3D12_EXPORT_DESC;
13193typedef struct D3D12_DXIL_LIBRARY_DESC {
13194    D3D12_SHADER_BYTECODE DXILLibrary;
13195    UINT NumExports;
13196    D3D12_EXPORT_DESC *pExports;
13197} D3D12_DXIL_LIBRARY_DESC;
13198typedef struct D3D12_EXISTING_COLLECTION_DESC {
13199    ID3D12StateObject *pExistingCollection;
13200    UINT NumExports;
13201    D3D12_EXPORT_DESC *pExports;
13202} D3D12_EXISTING_COLLECTION_DESC;
13203typedef 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;
13208typedef 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;
13213typedef 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;
13217typedef 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;
13224typedef struct D3D12_RAYTRACING_SHADER_CONFIG {
13225    UINT MaxPayloadSizeInBytes;
13226    UINT MaxAttributeSizeInBytes;
13227} D3D12_RAYTRACING_SHADER_CONFIG;
13228typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG {
13229    UINT MaxTraceRecursionDepth;
13230} D3D12_RAYTRACING_PIPELINE_CONFIG;
13231typedef 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;
13236DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_PIPELINE_FLAGS);
13237typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1 {
13238    UINT MaxTraceRecursionDepth;
13239    D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
13240} D3D12_RAYTRACING_PIPELINE_CONFIG1;
13241typedef 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;
13245typedef 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;
13250typedef 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;
13255DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_GEOMETRY_FLAGS);
13256typedef 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;
13260typedef 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;
13267DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_INSTANCE_FLAGS);
13268typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE {
13269    D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13270    UINT64 StrideInBytes;
13271} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
13272typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE {
13273    D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13274    UINT64 SizeInBytes;
13275} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
13276typedef 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;
13281typedef 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;
13290typedef 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;
13298typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC {
13299    UINT64 AABBCount;
13300    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
13301} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
13302typedef 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;
13311DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS);
13312typedef 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;
13319typedef 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;
13323typedef enum D3D12_ELEMENTS_LAYOUT {
13324    D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
13325    D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
13326} D3D12_ELEMENTS_LAYOUT;
13327typedef 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;
13333typedef 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;
13337typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC {
13338    UINT64 CompactedSizeInBytes;
13339} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
13340typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC {
13341    UINT64 DecodedSizeInBytes;
13342} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
13343typedef 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;
13347typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC {
13348    UINT64 SerializedSizeInBytes;
13349    UINT64 NumBottomLevelAccelerationStructurePointers;
13350} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
13351typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER {
13352    GUID DriverOpaqueGUID;
13353    BYTE DriverOpaqueVersioningData[16];
13354} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
13355typedef enum D3D12_SERIALIZED_DATA_TYPE {
13356    D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0
13357} D3D12_SERIALIZED_DATA_TYPE;
13358typedef 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;
13365typedef 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;
13371typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC {
13372    UINT64 CurrentSizeInBytes;
13373} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
13374typedef 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;
13382typedef 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;
13390typedef 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;
13401typedef 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;
13407typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO {
13408    UINT64 ResultDataMaxSizeInBytes;
13409    UINT64 ScratchDataSizeInBytes;
13410    UINT64 UpdateScratchDataSizeInBytes;
13411} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
13412typedef 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;
13425DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAY_FLAGS);
13426typedef 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
13436DEFINE_GUID(IID_ID3D12Device5, 0x8b4f173b, 0x2fea, 0x4b80, 0x8f,0x58, 0x43,0x07,0x19,0x1a,0xb9,0x5d);
13437#if defined(__cplusplus) && !defined(CINTERFACE)
13438MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
13439ID3D12Device5 : 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
13486typedef 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
13916interface 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 ***/
13997static inline HRESULT ID3D12Device5_QueryInterface(ID3D12Device5* This,REFIID riid,void **ppvObject) {
13998    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
13999}
14000static inline ULONG ID3D12Device5_AddRef(ID3D12Device5* This) {
14001    return This->lpVtbl->AddRef(This);
14002}
14003static inline ULONG ID3D12Device5_Release(ID3D12Device5* This) {
14004    return This->lpVtbl->Release(This);
14005}
14006/*** ID3D12Object methods ***/
14007static inline HRESULT ID3D12Device5_GetPrivateData(ID3D12Device5* This,REFGUID guid,UINT *data_size,void *data) {
14008    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
14009}
14010static 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}
14013static inline HRESULT ID3D12Device5_SetPrivateDataInterface(ID3D12Device5* This,REFGUID guid,const IUnknown *data) {
14014    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
14015}
14016static inline HRESULT ID3D12Device5_SetName(ID3D12Device5* This,const WCHAR *name) {
14017    return This->lpVtbl->SetName(This,name);
14018}
14019/*** ID3D12Device methods ***/
14020static inline UINT ID3D12Device5_GetNodeCount(ID3D12Device5* This) {
14021    return This->lpVtbl->GetNodeCount(This);
14022}
14023static 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}
14026static 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}
14029static 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}
14032static 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}
14035static 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}
14038static 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}
14041static 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}
14044static inline UINT ID3D12Device5_GetDescriptorHandleIncrementSize(ID3D12Device5* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
14045    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
14046}
14047static 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}
14050static 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}
14053static 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}
14056static 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}
14059static 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}
14062static 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}
14065static inline void ID3D12Device5_CreateSampler(ID3D12Device5* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
14066    This->lpVtbl->CreateSampler(This,desc,descriptor);
14067}
14068static 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}
14071static 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}
14074static 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}
14078static 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}
14082static 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}
14085static 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}
14088static 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}
14091static 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}
14094static 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}
14097static inline HRESULT ID3D12Device5_OpenSharedHandle(ID3D12Device5* This,HANDLE handle,REFIID riid,void **object) {
14098    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
14099}
14100static inline HRESULT ID3D12Device5_OpenSharedHandleByName(ID3D12Device5* This,const WCHAR *name,DWORD access,HANDLE *handle) {
14101    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
14102}
14103static inline HRESULT ID3D12Device5_MakeResident(ID3D12Device5* This,UINT object_count,ID3D12Pageable *const *objects) {
14104    return This->lpVtbl->MakeResident(This,object_count,objects);
14105}
14106static inline HRESULT ID3D12Device5_Evict(ID3D12Device5* This,UINT object_count,ID3D12Pageable *const *objects) {
14107    return This->lpVtbl->Evict(This,object_count,objects);
14108}
14109static 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}
14112static inline HRESULT ID3D12Device5_GetDeviceRemovedReason(ID3D12Device5* This) {
14113    return This->lpVtbl->GetDeviceRemovedReason(This);
14114}
14115static 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}
14118static 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}
14121static inline HRESULT ID3D12Device5_SetStablePowerState(ID3D12Device5* This,WINBOOL enable) {
14122    return This->lpVtbl->SetStablePowerState(This,enable);
14123}
14124static 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}
14127static 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}
14130static inline LUID ID3D12Device5_GetAdapterLuid(ID3D12Device5* This) {
14131    LUID __ret;
14132    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
14133}
14134/*** ID3D12Device1 methods ***/
14135static 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}
14138static 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}
14141static 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 ***/
14145static 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 ***/
14149static inline HRESULT ID3D12Device5_OpenExistingHeapFromAddress(ID3D12Device5* This,const void *address,REFIID riid,void **heap) {
14150    return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
14151}
14152static inline HRESULT ID3D12Device5_OpenExistingHeapFromFileMapping(ID3D12Device5* This,HANDLE file_mapping,REFIID riid,void **heap) {
14153    return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
14154}
14155static 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 ***/
14159static 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}
14162static 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}
14165static 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}
14168static 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}
14171static 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}
14174static 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 ***/
14179static inline HRESULT ID3D12Device5_CreateLifetimeTracker(ID3D12Device5* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
14180    return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
14181}
14182static inline void ID3D12Device5_RemoveDevice(ID3D12Device5* This) {
14183    This->lpVtbl->RemoveDevice(This);
14184}
14185static 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}
14188static 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}
14191static 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}
14194static 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}
14197static 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}
14200static 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
14211typedef 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;
14258typedef 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;
14270typedef struct D3D12_DRED_BREADCRUMB_CONTEXT {
14271    UINT BreadcrumbIndex;
14272    const WCHAR *pContextString;
14273} D3D12_DRED_BREADCRUMB_CONTEXT;
14274typedef 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;
14288typedef 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;
14294typedef 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;
14299DEFINE_ENUM_FLAG_OPERATORS(D3D12_DRED_FLAGS);
14300typedef 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;
14305typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA {
14306    D3D12_DRED_FLAGS Flags;
14307    D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
14308} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
14309typedef 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;
14340typedef 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;
14346typedef 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;
14353typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT {
14354    const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
14355} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
14356typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 {
14357    const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
14358} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
14359typedef 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;
14364typedef 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;
14369typedef enum D3D12_DRED_PAGE_FAULT_FLAGS {
14370    D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0x0
14371} D3D12_DRED_PAGE_FAULT_FLAGS;
14372DEFINE_ENUM_FLAG_OPERATORS(D3D12_DRED_PAGE_FAULT_FLAGS);
14373typedef 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;
14379typedef 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;
14385typedef 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;
14390typedef 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;
14395typedef 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;
14401typedef 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
14416DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings, 0x82bc481c, 0x6b9b, 0x4030, 0xae,0xdb, 0x7e,0xe3,0xd1,0xdf,0x1e,0x63);
14417#if defined(__cplusplus) && !defined(CINTERFACE)
14418MIDL_INTERFACE("82bc481c-6b9b-4030-aedb-7ee3d1df1e63")
14419ID3D12DeviceRemovedExtendedDataSettings : 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
14435typedef 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
14466interface 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 ***/
14482static inline HRESULT ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(ID3D12DeviceRemovedExtendedDataSettings* This,REFIID riid,void **ppvObject) {
14483    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
14484}
14485static inline ULONG ID3D12DeviceRemovedExtendedDataSettings_AddRef(ID3D12DeviceRemovedExtendedDataSettings* This) {
14486    return This->lpVtbl->AddRef(This);
14487}
14488static inline ULONG ID3D12DeviceRemovedExtendedDataSettings_Release(ID3D12DeviceRemovedExtendedDataSettings* This) {
14489    return This->lpVtbl->Release(This);
14490}
14491/*** ID3D12DeviceRemovedExtendedDataSettings methods ***/
14492static inline void ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(ID3D12DeviceRemovedExtendedDataSettings* This,D3D12_DRED_ENABLEMENT enablement) {
14493    This->lpVtbl->SetAutoBreadcrumbsEnablement(This,enablement);
14494}
14495static inline void ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(ID3D12DeviceRemovedExtendedDataSettings* This,D3D12_DRED_ENABLEMENT enablement) {
14496    This->lpVtbl->SetPageFaultEnablement(This,enablement);
14497}
14498static 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
14515DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1, 0xdbd5ae51, 0x3317, 0x4f0a, 0xad,0xf9, 0x1d,0x7c,0xed,0xca,0xae,0x0b);
14516#if defined(__cplusplus) && !defined(CINTERFACE)
14517MIDL_INTERFACE("dbd5ae51-3317-4f0a-adf9-1d7cedcaae0b")
14518ID3D12DeviceRemovedExtendedDataSettings1 : 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
14528typedef 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
14564interface 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 ***/
14582static inline HRESULT ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(ID3D12DeviceRemovedExtendedDataSettings1* This,REFIID riid,void **ppvObject) {
14583    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
14584}
14585static inline ULONG ID3D12DeviceRemovedExtendedDataSettings1_AddRef(ID3D12DeviceRemovedExtendedDataSettings1* This) {
14586    return This->lpVtbl->AddRef(This);
14587}
14588static inline ULONG ID3D12DeviceRemovedExtendedDataSettings1_Release(ID3D12DeviceRemovedExtendedDataSettings1* This) {
14589    return This->lpVtbl->Release(This);
14590}
14591/*** ID3D12DeviceRemovedExtendedDataSettings methods ***/
14592static inline void ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(ID3D12DeviceRemovedExtendedDataSettings1* This,D3D12_DRED_ENABLEMENT enablement) {
14593    This->lpVtbl->SetAutoBreadcrumbsEnablement(This,enablement);
14594}
14595static inline void ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(ID3D12DeviceRemovedExtendedDataSettings1* This,D3D12_DRED_ENABLEMENT enablement) {
14596    This->lpVtbl->SetPageFaultEnablement(This,enablement);
14597}
14598static inline void ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(ID3D12DeviceRemovedExtendedDataSettings1* This,D3D12_DRED_ENABLEMENT enablement) {
14599    This->lpVtbl->SetWatsonDumpEnablement(This,enablement);
14600}
14601/*** ID3D12DeviceRemovedExtendedDataSettings1 methods ***/
14602static 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
14619DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData, 0x98931d33, 0x5ae8, 0x4791, 0xaa,0x3c, 0x1a,0x73,0xa2,0x93,0x4e,0x71);
14620#if defined(__cplusplus) && !defined(CINTERFACE)
14621MIDL_INTERFACE("98931d33-5ae8-4791-aa3c-1a73a2934e71")
14622ID3D12DeviceRemovedExtendedData : 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
14635typedef 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
14662interface 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 ***/
14677static inline HRESULT ID3D12DeviceRemovedExtendedData_QueryInterface(ID3D12DeviceRemovedExtendedData* This,REFIID riid,void **ppvObject) {
14678    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
14679}
14680static inline ULONG ID3D12DeviceRemovedExtendedData_AddRef(ID3D12DeviceRemovedExtendedData* This) {
14681    return This->lpVtbl->AddRef(This);
14682}
14683static inline ULONG ID3D12DeviceRemovedExtendedData_Release(ID3D12DeviceRemovedExtendedData* This) {
14684    return This->lpVtbl->Release(This);
14685}
14686/*** ID3D12DeviceRemovedExtendedData methods ***/
14687static inline HRESULT ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(ID3D12DeviceRemovedExtendedData* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output) {
14688    return This->lpVtbl->GetAutoBreadcrumbsOutput(This,output);
14689}
14690static 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
14707DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1, 0x9727a022, 0xcf1d, 0x4dda, 0x9e,0xba, 0xef,0xfa,0x65,0x3f,0xc5,0x06);
14708#if defined(__cplusplus) && !defined(CINTERFACE)
14709MIDL_INTERFACE("9727a022-cf1d-4dda-9eba-effa653fc506")
14710ID3D12DeviceRemovedExtendedData1 : 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
14723typedef 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
14759interface 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 ***/
14777static inline HRESULT ID3D12DeviceRemovedExtendedData1_QueryInterface(ID3D12DeviceRemovedExtendedData1* This,REFIID riid,void **ppvObject) {
14778    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
14779}
14780static inline ULONG ID3D12DeviceRemovedExtendedData1_AddRef(ID3D12DeviceRemovedExtendedData1* This) {
14781    return This->lpVtbl->AddRef(This);
14782}
14783static inline ULONG ID3D12DeviceRemovedExtendedData1_Release(ID3D12DeviceRemovedExtendedData1* This) {
14784    return This->lpVtbl->Release(This);
14785}
14786/*** ID3D12DeviceRemovedExtendedData methods ***/
14787static inline HRESULT ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(ID3D12DeviceRemovedExtendedData1* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output) {
14788    return This->lpVtbl->GetAutoBreadcrumbsOutput(This,output);
14789}
14790static inline HRESULT ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(ID3D12DeviceRemovedExtendedData1* This,D3D12_DRED_PAGE_FAULT_OUTPUT *output) {
14791    return This->lpVtbl->GetPageFaultAllocationOutput(This,output);
14792}
14793/*** ID3D12DeviceRemovedExtendedData1 methods ***/
14794static inline HRESULT ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(ID3D12DeviceRemovedExtendedData1* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *output) {
14795    return This->lpVtbl->GetAutoBreadcrumbsOutput1(This,output);
14796}
14797static 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
14814DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2, 0x67fc5816, 0xe4ca, 0x4915, 0xbf,0x18, 0x42,0x54,0x12,0x72,0xda,0x54);
14815#if defined(__cplusplus) && !defined(CINTERFACE)
14816MIDL_INTERFACE("67fc5816-e4ca-4915-bf18-42541272da54")
14817ID3D12DeviceRemovedExtendedData2 : 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
14830typedef 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
14874interface 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 ***/
14895static inline HRESULT ID3D12DeviceRemovedExtendedData2_QueryInterface(ID3D12DeviceRemovedExtendedData2* This,REFIID riid,void **ppvObject) {
14896    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
14897}
14898static inline ULONG ID3D12DeviceRemovedExtendedData2_AddRef(ID3D12DeviceRemovedExtendedData2* This) {
14899    return This->lpVtbl->AddRef(This);
14900}
14901static inline ULONG ID3D12DeviceRemovedExtendedData2_Release(ID3D12DeviceRemovedExtendedData2* This) {
14902    return This->lpVtbl->Release(This);
14903}
14904/*** ID3D12DeviceRemovedExtendedData methods ***/
14905static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *output) {
14906    return This->lpVtbl->GetAutoBreadcrumbsOutput(This,output);
14907}
14908static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_PAGE_FAULT_OUTPUT *output) {
14909    return This->lpVtbl->GetPageFaultAllocationOutput(This,output);
14910}
14911/*** ID3D12DeviceRemovedExtendedData1 methods ***/
14912static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *output) {
14913    return This->lpVtbl->GetAutoBreadcrumbsOutput1(This,output);
14914}
14915static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_PAGE_FAULT_OUTPUT1 *output) {
14916    return This->lpVtbl->GetPageFaultAllocationOutput1(This,output);
14917}
14918/*** ID3D12DeviceRemovedExtendedData2 methods ***/
14919static inline HRESULT ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(ID3D12DeviceRemovedExtendedData2* This,D3D12_DRED_PAGE_FAULT_OUTPUT2 *output) {
14920    return This->lpVtbl->GetPageFaultAllocationOutput2(This,output);
14921}
14922static 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
14933typedef 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;
14939typedef 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
14951DEFINE_GUID(IID_ID3D12Device6, 0xc70b221b, 0x40e4, 0x4a17, 0x89,0xaf, 0x02,0x5a,0x07,0x27,0xa6,0xdc);
14952#if defined(__cplusplus) && !defined(CINTERFACE)
14953MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
14954ID3D12Device6 : 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
14967typedef 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
15405interface 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 ***/
15488static inline HRESULT ID3D12Device6_QueryInterface(ID3D12Device6* This,REFIID riid,void **ppvObject) {
15489    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
15490}
15491static inline ULONG ID3D12Device6_AddRef(ID3D12Device6* This) {
15492    return This->lpVtbl->AddRef(This);
15493}
15494static inline ULONG ID3D12Device6_Release(ID3D12Device6* This) {
15495    return This->lpVtbl->Release(This);
15496}
15497/*** ID3D12Object methods ***/
15498static inline HRESULT ID3D12Device6_GetPrivateData(ID3D12Device6* This,REFGUID guid,UINT *data_size,void *data) {
15499    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
15500}
15501static 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}
15504static inline HRESULT ID3D12Device6_SetPrivateDataInterface(ID3D12Device6* This,REFGUID guid,const IUnknown *data) {
15505    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
15506}
15507static inline HRESULT ID3D12Device6_SetName(ID3D12Device6* This,const WCHAR *name) {
15508    return This->lpVtbl->SetName(This,name);
15509}
15510/*** ID3D12Device methods ***/
15511static inline UINT ID3D12Device6_GetNodeCount(ID3D12Device6* This) {
15512    return This->lpVtbl->GetNodeCount(This);
15513}
15514static 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}
15517static 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}
15520static 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}
15523static 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}
15526static 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}
15529static 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}
15532static 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}
15535static inline UINT ID3D12Device6_GetDescriptorHandleIncrementSize(ID3D12Device6* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
15536    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
15537}
15538static 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}
15541static 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}
15544static 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}
15547static 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}
15550static 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}
15553static 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}
15556static inline void ID3D12Device6_CreateSampler(ID3D12Device6* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
15557    This->lpVtbl->CreateSampler(This,desc,descriptor);
15558}
15559static 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}
15562static 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}
15565static 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}
15569static 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}
15573static 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}
15576static 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}
15579static 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}
15582static 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}
15585static 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}
15588static inline HRESULT ID3D12Device6_OpenSharedHandle(ID3D12Device6* This,HANDLE handle,REFIID riid,void **object) {
15589    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
15590}
15591static inline HRESULT ID3D12Device6_OpenSharedHandleByName(ID3D12Device6* This,const WCHAR *name,DWORD access,HANDLE *handle) {
15592    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
15593}
15594static inline HRESULT ID3D12Device6_MakeResident(ID3D12Device6* This,UINT object_count,ID3D12Pageable *const *objects) {
15595    return This->lpVtbl->MakeResident(This,object_count,objects);
15596}
15597static inline HRESULT ID3D12Device6_Evict(ID3D12Device6* This,UINT object_count,ID3D12Pageable *const *objects) {
15598    return This->lpVtbl->Evict(This,object_count,objects);
15599}
15600static 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}
15603static inline HRESULT ID3D12Device6_GetDeviceRemovedReason(ID3D12Device6* This) {
15604    return This->lpVtbl->GetDeviceRemovedReason(This);
15605}
15606static 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}
15609static 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}
15612static inline HRESULT ID3D12Device6_SetStablePowerState(ID3D12Device6* This,WINBOOL enable) {
15613    return This->lpVtbl->SetStablePowerState(This,enable);
15614}
15615static 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}
15618static 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}
15621static inline LUID ID3D12Device6_GetAdapterLuid(ID3D12Device6* This) {
15622    LUID __ret;
15623    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
15624}
15625/*** ID3D12Device1 methods ***/
15626static 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}
15629static 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}
15632static 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 ***/
15636static 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 ***/
15640static inline HRESULT ID3D12Device6_OpenExistingHeapFromAddress(ID3D12Device6* This,const void *address,REFIID riid,void **heap) {
15641    return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
15642}
15643static inline HRESULT ID3D12Device6_OpenExistingHeapFromFileMapping(ID3D12Device6* This,HANDLE file_mapping,REFIID riid,void **heap) {
15644    return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
15645}
15646static 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 ***/
15650static 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}
15653static 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}
15656static 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}
15659static 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}
15662static 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}
15665static 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 ***/
15670static inline HRESULT ID3D12Device6_CreateLifetimeTracker(ID3D12Device6* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
15671    return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
15672}
15673static inline void ID3D12Device6_RemoveDevice(ID3D12Device6* This) {
15674    This->lpVtbl->RemoveDevice(This);
15675}
15676static 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}
15679static 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}
15682static 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}
15685static 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}
15688static 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}
15691static 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 ***/
15695static 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
15706DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62b0084e, 0xc70e, 0x4daa, 0xa1, 0x09, 0x30, 0xff, 0x8d, 0x5a, 0x04, 0x82);
15707typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT {
15708    UINT NodeIndex;
15709    UINT Count;
15710} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
15711typedef 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;
15716typedef 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
15727DEFINE_GUID(IID_ID3D12ProtectedResourceSession1, 0xd6f12dd6, 0x76fb, 0x406e, 0x89,0x61, 0x42,0x96,0xee,0xfc,0x04,0x09);
15728#if defined(__cplusplus) && !defined(CINTERFACE)
15729MIDL_INTERFACE("d6f12dd6-76fb-406e-8961-4296eefc0409")
15730ID3D12ProtectedResourceSession1 : 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
15751typedef 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
15816interface 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 ***/
15842static inline HRESULT ID3D12ProtectedResourceSession1_QueryInterface(ID3D12ProtectedResourceSession1* This,REFIID riid,void **ppvObject) {
15843    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
15844}
15845static inline ULONG ID3D12ProtectedResourceSession1_AddRef(ID3D12ProtectedResourceSession1* This) {
15846    return This->lpVtbl->AddRef(This);
15847}
15848static inline ULONG ID3D12ProtectedResourceSession1_Release(ID3D12ProtectedResourceSession1* This) {
15849    return This->lpVtbl->Release(This);
15850}
15851/*** ID3D12Object methods ***/
15852static inline HRESULT ID3D12ProtectedResourceSession1_GetPrivateData(ID3D12ProtectedResourceSession1* This,REFGUID guid,UINT *data_size,void *data) {
15853    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
15854}
15855static 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}
15858static inline HRESULT ID3D12ProtectedResourceSession1_SetPrivateDataInterface(ID3D12ProtectedResourceSession1* This,REFGUID guid,const IUnknown *data) {
15859    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
15860}
15861static inline HRESULT ID3D12ProtectedResourceSession1_SetName(ID3D12ProtectedResourceSession1* This,const WCHAR *name) {
15862    return This->lpVtbl->SetName(This,name);
15863}
15864/*** ID3D12DeviceChild methods ***/
15865static inline HRESULT ID3D12ProtectedResourceSession1_GetDevice(ID3D12ProtectedResourceSession1* This,REFIID riid,void **device) {
15866    return This->lpVtbl->GetDevice(This,riid,device);
15867}
15868/*** ID3D12ProtectedSession methods ***/
15869static inline HRESULT ID3D12ProtectedResourceSession1_GetStatusFence(ID3D12ProtectedResourceSession1* This,REFIID riid,void **fence) {
15870    return This->lpVtbl->GetStatusFence(This,riid,fence);
15871}
15872static inline D3D12_PROTECTED_SESSION_STATUS ID3D12ProtectedResourceSession1_GetSessionStatus(ID3D12ProtectedResourceSession1* This) {
15873    return This->lpVtbl->GetSessionStatus(This);
15874}
15875/*** ID3D12ProtectedResourceSession methods ***/
15876static 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 ***/
15881static 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
15899DEFINE_GUID(IID_ID3D12Device7, 0x5c014b53, 0x68a1, 0x4b9b, 0x8b,0xd1, 0xdd,0x60,0x46,0xb9,0x35,0x8b);
15900#if defined(__cplusplus) && !defined(CINTERFACE)
15901MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
15902ID3D12Device7 : 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
15920typedef 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
16372interface 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 ***/
16458static inline HRESULT ID3D12Device7_QueryInterface(ID3D12Device7* This,REFIID riid,void **ppvObject) {
16459    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
16460}
16461static inline ULONG ID3D12Device7_AddRef(ID3D12Device7* This) {
16462    return This->lpVtbl->AddRef(This);
16463}
16464static inline ULONG ID3D12Device7_Release(ID3D12Device7* This) {
16465    return This->lpVtbl->Release(This);
16466}
16467/*** ID3D12Object methods ***/
16468static inline HRESULT ID3D12Device7_GetPrivateData(ID3D12Device7* This,REFGUID guid,UINT *data_size,void *data) {
16469    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
16470}
16471static 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}
16474static inline HRESULT ID3D12Device7_SetPrivateDataInterface(ID3D12Device7* This,REFGUID guid,const IUnknown *data) {
16475    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
16476}
16477static inline HRESULT ID3D12Device7_SetName(ID3D12Device7* This,const WCHAR *name) {
16478    return This->lpVtbl->SetName(This,name);
16479}
16480/*** ID3D12Device methods ***/
16481static inline UINT ID3D12Device7_GetNodeCount(ID3D12Device7* This) {
16482    return This->lpVtbl->GetNodeCount(This);
16483}
16484static 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}
16487static 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}
16490static 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}
16493static 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}
16496static 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}
16499static 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}
16502static 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}
16505static inline UINT ID3D12Device7_GetDescriptorHandleIncrementSize(ID3D12Device7* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
16506    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
16507}
16508static 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}
16511static 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}
16514static 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}
16517static 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}
16520static 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}
16523static 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}
16526static inline void ID3D12Device7_CreateSampler(ID3D12Device7* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
16527    This->lpVtbl->CreateSampler(This,desc,descriptor);
16528}
16529static 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}
16532static 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}
16535static 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}
16539static 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}
16543static 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}
16546static 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}
16549static 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}
16552static 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}
16555static 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}
16558static inline HRESULT ID3D12Device7_OpenSharedHandle(ID3D12Device7* This,HANDLE handle,REFIID riid,void **object) {
16559    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
16560}
16561static inline HRESULT ID3D12Device7_OpenSharedHandleByName(ID3D12Device7* This,const WCHAR *name,DWORD access,HANDLE *handle) {
16562    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
16563}
16564static inline HRESULT ID3D12Device7_MakeResident(ID3D12Device7* This,UINT object_count,ID3D12Pageable *const *objects) {
16565    return This->lpVtbl->MakeResident(This,object_count,objects);
16566}
16567static inline HRESULT ID3D12Device7_Evict(ID3D12Device7* This,UINT object_count,ID3D12Pageable *const *objects) {
16568    return This->lpVtbl->Evict(This,object_count,objects);
16569}
16570static 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}
16573static inline HRESULT ID3D12Device7_GetDeviceRemovedReason(ID3D12Device7* This) {
16574    return This->lpVtbl->GetDeviceRemovedReason(This);
16575}
16576static 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}
16579static 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}
16582static inline HRESULT ID3D12Device7_SetStablePowerState(ID3D12Device7* This,WINBOOL enable) {
16583    return This->lpVtbl->SetStablePowerState(This,enable);
16584}
16585static 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}
16588static 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}
16591static inline LUID ID3D12Device7_GetAdapterLuid(ID3D12Device7* This) {
16592    LUID __ret;
16593    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
16594}
16595/*** ID3D12Device1 methods ***/
16596static 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}
16599static 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}
16602static 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 ***/
16606static 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 ***/
16610static inline HRESULT ID3D12Device7_OpenExistingHeapFromAddress(ID3D12Device7* This,const void *address,REFIID riid,void **heap) {
16611    return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
16612}
16613static inline HRESULT ID3D12Device7_OpenExistingHeapFromFileMapping(ID3D12Device7* This,HANDLE file_mapping,REFIID riid,void **heap) {
16614    return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
16615}
16616static 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 ***/
16620static 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}
16623static 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}
16626static 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}
16629static 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}
16632static 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}
16635static 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 ***/
16640static inline HRESULT ID3D12Device7_CreateLifetimeTracker(ID3D12Device7* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
16641    return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
16642}
16643static inline void ID3D12Device7_RemoveDevice(ID3D12Device7* This) {
16644    This->lpVtbl->RemoveDevice(This);
16645}
16646static 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}
16649static 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}
16652static 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}
16655static 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}
16658static 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}
16661static 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 ***/
16665static 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 ***/
16669static 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}
16672static 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
16689DEFINE_GUID(IID_ID3D12Device8, 0x9218e6bb, 0xf944, 0x4f7e, 0xa7,0x5c, 0xb1,0xb2,0xc7,0xb7,0x01,0xf3);
16690#if defined(__cplusplus) && !defined(CINTERFACE)
16691MIDL_INTERFACE("9218e6bb-f944-4f7e-a75c-b1b2c7b701f3")
16692ID3D12Device8 : 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
16757typedef 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
17256interface 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 ***/
17348static inline HRESULT ID3D12Device8_QueryInterface(ID3D12Device8* This,REFIID riid,void **ppvObject) {
17349    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
17350}
17351static inline ULONG ID3D12Device8_AddRef(ID3D12Device8* This) {
17352    return This->lpVtbl->AddRef(This);
17353}
17354static inline ULONG ID3D12Device8_Release(ID3D12Device8* This) {
17355    return This->lpVtbl->Release(This);
17356}
17357/*** ID3D12Object methods ***/
17358static inline HRESULT ID3D12Device8_GetPrivateData(ID3D12Device8* This,REFGUID guid,UINT *data_size,void *data) {
17359    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
17360}
17361static 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}
17364static inline HRESULT ID3D12Device8_SetPrivateDataInterface(ID3D12Device8* This,REFGUID guid,const IUnknown *data) {
17365    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
17366}
17367static inline HRESULT ID3D12Device8_SetName(ID3D12Device8* This,const WCHAR *name) {
17368    return This->lpVtbl->SetName(This,name);
17369}
17370/*** ID3D12Device methods ***/
17371static inline UINT ID3D12Device8_GetNodeCount(ID3D12Device8* This) {
17372    return This->lpVtbl->GetNodeCount(This);
17373}
17374static 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}
17377static 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}
17380static 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}
17383static 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}
17386static 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}
17389static 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}
17392static 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}
17395static inline UINT ID3D12Device8_GetDescriptorHandleIncrementSize(ID3D12Device8* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
17396    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
17397}
17398static 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}
17401static 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}
17404static 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}
17407static 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}
17410static 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}
17413static 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}
17416static inline void ID3D12Device8_CreateSampler(ID3D12Device8* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
17417    This->lpVtbl->CreateSampler(This,desc,descriptor);
17418}
17419static 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}
17422static 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}
17425static 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}
17429static 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}
17433static 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}
17436static 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}
17439static 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}
17442static 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}
17445static 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}
17448static inline HRESULT ID3D12Device8_OpenSharedHandle(ID3D12Device8* This,HANDLE handle,REFIID riid,void **object) {
17449    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
17450}
17451static inline HRESULT ID3D12Device8_OpenSharedHandleByName(ID3D12Device8* This,const WCHAR *name,DWORD access,HANDLE *handle) {
17452    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
17453}
17454static inline HRESULT ID3D12Device8_MakeResident(ID3D12Device8* This,UINT object_count,ID3D12Pageable *const *objects) {
17455    return This->lpVtbl->MakeResident(This,object_count,objects);
17456}
17457static inline HRESULT ID3D12Device8_Evict(ID3D12Device8* This,UINT object_count,ID3D12Pageable *const *objects) {
17458    return This->lpVtbl->Evict(This,object_count,objects);
17459}
17460static 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}
17463static inline HRESULT ID3D12Device8_GetDeviceRemovedReason(ID3D12Device8* This) {
17464    return This->lpVtbl->GetDeviceRemovedReason(This);
17465}
17466static 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}
17469static 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}
17472static inline HRESULT ID3D12Device8_SetStablePowerState(ID3D12Device8* This,WINBOOL enable) {
17473    return This->lpVtbl->SetStablePowerState(This,enable);
17474}
17475static 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}
17478static 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}
17481static inline LUID ID3D12Device8_GetAdapterLuid(ID3D12Device8* This) {
17482    LUID __ret;
17483    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
17484}
17485/*** ID3D12Device1 methods ***/
17486static 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}
17489static 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}
17492static 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 ***/
17496static 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 ***/
17500static inline HRESULT ID3D12Device8_OpenExistingHeapFromAddress(ID3D12Device8* This,const void *address,REFIID riid,void **heap) {
17501    return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
17502}
17503static inline HRESULT ID3D12Device8_OpenExistingHeapFromFileMapping(ID3D12Device8* This,HANDLE file_mapping,REFIID riid,void **heap) {
17504    return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
17505}
17506static 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 ***/
17510static 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}
17513static 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}
17516static 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}
17519static 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}
17522static 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}
17525static 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 ***/
17530static inline HRESULT ID3D12Device8_CreateLifetimeTracker(ID3D12Device8* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
17531    return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
17532}
17533static inline void ID3D12Device8_RemoveDevice(ID3D12Device8* This) {
17534    This->lpVtbl->RemoveDevice(This);
17535}
17536static 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}
17539static 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}
17542static 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}
17545static 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}
17548static 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}
17551static 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 ***/
17555static 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 ***/
17559static 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}
17562static 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 ***/
17566static 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}
17570static 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}
17573static 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}
17576static 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}
17579static 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
17596DEFINE_GUID(IID_ID3D12Resource1, 0x9d5e227a, 0x4430, 0x4161, 0x88,0xb3, 0x3e,0xca,0x6b,0xb1,0x6e,0x19);
17597#if defined(__cplusplus) && !defined(CINTERFACE)
17598MIDL_INTERFACE("9d5e227a-4430-4161-88b3-3eca6bb16e19")
17599ID3D12Resource1 : 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
17610typedef 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
17702interface 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 ***/
17731static inline HRESULT ID3D12Resource1_QueryInterface(ID3D12Resource1* This,REFIID riid,void **ppvObject) {
17732    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
17733}
17734static inline ULONG ID3D12Resource1_AddRef(ID3D12Resource1* This) {
17735    return This->lpVtbl->AddRef(This);
17736}
17737static inline ULONG ID3D12Resource1_Release(ID3D12Resource1* This) {
17738    return This->lpVtbl->Release(This);
17739}
17740/*** ID3D12Object methods ***/
17741static inline HRESULT ID3D12Resource1_GetPrivateData(ID3D12Resource1* This,REFGUID guid,UINT *data_size,void *data) {
17742    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
17743}
17744static 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}
17747static inline HRESULT ID3D12Resource1_SetPrivateDataInterface(ID3D12Resource1* This,REFGUID guid,const IUnknown *data) {
17748    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
17749}
17750static inline HRESULT ID3D12Resource1_SetName(ID3D12Resource1* This,const WCHAR *name) {
17751    return This->lpVtbl->SetName(This,name);
17752}
17753/*** ID3D12DeviceChild methods ***/
17754static inline HRESULT ID3D12Resource1_GetDevice(ID3D12Resource1* This,REFIID riid,void **device) {
17755    return This->lpVtbl->GetDevice(This,riid,device);
17756}
17757/*** ID3D12Resource methods ***/
17758static 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}
17761static inline void ID3D12Resource1_Unmap(ID3D12Resource1* This,UINT sub_resource,const D3D12_RANGE *written_range) {
17762    This->lpVtbl->Unmap(This,sub_resource,written_range);
17763}
17764static inline D3D12_RESOURCE_DESC ID3D12Resource1_GetDesc(ID3D12Resource1* This) {
17765    D3D12_RESOURCE_DESC __ret;
17766    return *This->lpVtbl->GetDesc(This,&__ret);
17767}
17768static inline D3D12_GPU_VIRTUAL_ADDRESS ID3D12Resource1_GetGPUVirtualAddress(ID3D12Resource1* This) {
17769    return This->lpVtbl->GetGPUVirtualAddress(This);
17770}
17771static 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}
17774static 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}
17777static 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 ***/
17781static 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
17798DEFINE_GUID(IID_ID3D12Resource2, 0xbe36ec3b, 0xea85, 0x4aeb, 0xa4,0x5a, 0xe9,0xd7,0x64,0x04,0xa4,0x95);
17799#if defined(__cplusplus) && !defined(CINTERFACE)
17800MIDL_INTERFACE("be36ec3b-ea85-4aeb-a45a-e9d76404a495")
17801ID3D12Resource2 : 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
17822typedef 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
17919interface 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 ***/
17950static inline HRESULT ID3D12Resource2_QueryInterface(ID3D12Resource2* This,REFIID riid,void **ppvObject) {
17951    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
17952}
17953static inline ULONG ID3D12Resource2_AddRef(ID3D12Resource2* This) {
17954    return This->lpVtbl->AddRef(This);
17955}
17956static inline ULONG ID3D12Resource2_Release(ID3D12Resource2* This) {
17957    return This->lpVtbl->Release(This);
17958}
17959/*** ID3D12Object methods ***/
17960static inline HRESULT ID3D12Resource2_GetPrivateData(ID3D12Resource2* This,REFGUID guid,UINT *data_size,void *data) {
17961    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
17962}
17963static 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}
17966static inline HRESULT ID3D12Resource2_SetPrivateDataInterface(ID3D12Resource2* This,REFGUID guid,const IUnknown *data) {
17967    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
17968}
17969static inline HRESULT ID3D12Resource2_SetName(ID3D12Resource2* This,const WCHAR *name) {
17970    return This->lpVtbl->SetName(This,name);
17971}
17972/*** ID3D12DeviceChild methods ***/
17973static inline HRESULT ID3D12Resource2_GetDevice(ID3D12Resource2* This,REFIID riid,void **device) {
17974    return This->lpVtbl->GetDevice(This,riid,device);
17975}
17976/*** ID3D12Resource methods ***/
17977static 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}
17980static inline void ID3D12Resource2_Unmap(ID3D12Resource2* This,UINT sub_resource,const D3D12_RANGE *written_range) {
17981    This->lpVtbl->Unmap(This,sub_resource,written_range);
17982}
17983static inline D3D12_RESOURCE_DESC ID3D12Resource2_GetDesc(ID3D12Resource2* This) {
17984    D3D12_RESOURCE_DESC __ret;
17985    return *This->lpVtbl->GetDesc(This,&__ret);
17986}
17987static inline D3D12_GPU_VIRTUAL_ADDRESS ID3D12Resource2_GetGPUVirtualAddress(ID3D12Resource2* This) {
17988    return This->lpVtbl->GetGPUVirtualAddress(This);
17989}
17990static 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}
17993static 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}
17996static 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 ***/
18000static inline HRESULT ID3D12Resource2_GetProtectedResourceSession(ID3D12Resource2* This,REFIID riid,void **protected_session) {
18001    return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
18002}
18003/*** ID3D12Resource2 methods ***/
18004static 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
18022DEFINE_GUID(IID_ID3D12Heap1, 0x572f7389, 0x2168, 0x49e3, 0x96,0x93, 0xd6,0xdf,0x58,0x71,0xbf,0x6d);
18023#if defined(__cplusplus) && !defined(CINTERFACE)
18024MIDL_INTERFACE("572f7389-2168-49e3-9693-d6df5871bf6d")
18025ID3D12Heap1 : 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
18036typedef 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
18093interface 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 ***/
18116static inline HRESULT ID3D12Heap1_QueryInterface(ID3D12Heap1* This,REFIID riid,void **ppvObject) {
18117    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
18118}
18119static inline ULONG ID3D12Heap1_AddRef(ID3D12Heap1* This) {
18120    return This->lpVtbl->AddRef(This);
18121}
18122static inline ULONG ID3D12Heap1_Release(ID3D12Heap1* This) {
18123    return This->lpVtbl->Release(This);
18124}
18125/*** ID3D12Object methods ***/
18126static inline HRESULT ID3D12Heap1_GetPrivateData(ID3D12Heap1* This,REFGUID guid,UINT *data_size,void *data) {
18127    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
18128}
18129static 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}
18132static inline HRESULT ID3D12Heap1_SetPrivateDataInterface(ID3D12Heap1* This,REFGUID guid,const IUnknown *data) {
18133    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
18134}
18135static inline HRESULT ID3D12Heap1_SetName(ID3D12Heap1* This,const WCHAR *name) {
18136    return This->lpVtbl->SetName(This,name);
18137}
18138/*** ID3D12DeviceChild methods ***/
18139static inline HRESULT ID3D12Heap1_GetDevice(ID3D12Heap1* This,REFIID riid,void **device) {
18140    return This->lpVtbl->GetDevice(This,riid,device);
18141}
18142/*** ID3D12Heap methods ***/
18143static inline D3D12_HEAP_DESC ID3D12Heap1_GetDesc(ID3D12Heap1* This) {
18144    D3D12_HEAP_DESC __ret;
18145    return *This->lpVtbl->GetDesc(This,&__ret);
18146}
18147/*** ID3D12Heap1 methods ***/
18148static 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
18159typedef 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;
18165typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS {
18166    D3D12_CLEAR_VALUE ClearValue;
18167} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
18168typedef 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;
18174typedef 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;
18180typedef 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;
18187typedef 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;
18196typedef 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;
18202typedef 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;
18207typedef 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;
18214typedef 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;
18220DEFINE_ENUM_FLAG_OPERATORS(D3D12_RENDER_PASS_FLAGS);
18221/*****************************************************************************
18222 * ID3D12MetaCommand interface
18223 */
18224#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
18225#define __ID3D12MetaCommand_INTERFACE_DEFINED__
18226
18227DEFINE_GUID(IID_ID3D12MetaCommand, 0xdbb84c27, 0x36ce, 0x4fc9, 0xb8,0x01, 0xf0,0x48,0xc4,0x6a,0xc5,0x70);
18228#if defined(__cplusplus) && !defined(CINTERFACE)
18229MIDL_INTERFACE("dbb84c27-36ce-4fc9-b801-f048c46ac570")
18230ID3D12MetaCommand : 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
18241typedef 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
18293interface 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 ***/
18314static inline HRESULT ID3D12MetaCommand_QueryInterface(ID3D12MetaCommand* This,REFIID riid,void **ppvObject) {
18315    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
18316}
18317static inline ULONG ID3D12MetaCommand_AddRef(ID3D12MetaCommand* This) {
18318    return This->lpVtbl->AddRef(This);
18319}
18320static inline ULONG ID3D12MetaCommand_Release(ID3D12MetaCommand* This) {
18321    return This->lpVtbl->Release(This);
18322}
18323/*** ID3D12Object methods ***/
18324static inline HRESULT ID3D12MetaCommand_GetPrivateData(ID3D12MetaCommand* This,REFGUID guid,UINT *data_size,void *data) {
18325    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
18326}
18327static 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}
18330static inline HRESULT ID3D12MetaCommand_SetPrivateDataInterface(ID3D12MetaCommand* This,REFGUID guid,const IUnknown *data) {
18331    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
18332}
18333static inline HRESULT ID3D12MetaCommand_SetName(ID3D12MetaCommand* This,const WCHAR *name) {
18334    return This->lpVtbl->SetName(This,name);
18335}
18336/*** ID3D12DeviceChild methods ***/
18337static inline HRESULT ID3D12MetaCommand_GetDevice(ID3D12MetaCommand* This,REFIID riid,void **device) {
18338    return This->lpVtbl->GetDevice(This,riid,device);
18339}
18340/*** ID3D12MetaCommand methods ***/
18341static 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
18352typedef 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
18367DEFINE_GUID(IID_ID3D12GraphicsCommandList4, 0x8754318e, 0xd3a9, 0x4541, 0x98,0xcf, 0x64,0x5b,0x50,0xdc,0x48,0x74);
18368#if defined(__cplusplus) && !defined(CINTERFACE)
18369MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
18370ID3D12GraphicsCommandList4 : 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
18417typedef 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
18876interface 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 ***/
18970static inline HRESULT ID3D12GraphicsCommandList4_QueryInterface(ID3D12GraphicsCommandList4* This,REFIID riid,void **ppvObject) {
18971    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
18972}
18973static inline ULONG ID3D12GraphicsCommandList4_AddRef(ID3D12GraphicsCommandList4* This) {
18974    return This->lpVtbl->AddRef(This);
18975}
18976static inline ULONG ID3D12GraphicsCommandList4_Release(ID3D12GraphicsCommandList4* This) {
18977    return This->lpVtbl->Release(This);
18978}
18979/*** ID3D12Object methods ***/
18980static inline HRESULT ID3D12GraphicsCommandList4_GetPrivateData(ID3D12GraphicsCommandList4* This,REFGUID guid,UINT *data_size,void *data) {
18981    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
18982}
18983static 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}
18986static inline HRESULT ID3D12GraphicsCommandList4_SetPrivateDataInterface(ID3D12GraphicsCommandList4* This,REFGUID guid,const IUnknown *data) {
18987    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
18988}
18989static inline HRESULT ID3D12GraphicsCommandList4_SetName(ID3D12GraphicsCommandList4* This,const WCHAR *name) {
18990    return This->lpVtbl->SetName(This,name);
18991}
18992/*** ID3D12DeviceChild methods ***/
18993static inline HRESULT ID3D12GraphicsCommandList4_GetDevice(ID3D12GraphicsCommandList4* This,REFIID riid,void **device) {
18994    return This->lpVtbl->GetDevice(This,riid,device);
18995}
18996/*** ID3D12CommandList methods ***/
18997static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList4_GetType(ID3D12GraphicsCommandList4* This) {
18998    return This->lpVtbl->GetType(This);
18999}
19000/*** ID3D12GraphicsCommandList methods ***/
19001static inline HRESULT ID3D12GraphicsCommandList4_Close(ID3D12GraphicsCommandList4* This) {
19002    return This->lpVtbl->Close(This);
19003}
19004static inline HRESULT ID3D12GraphicsCommandList4_Reset(ID3D12GraphicsCommandList4* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
19005    return This->lpVtbl->Reset(This,allocator,initial_state);
19006}
19007static inline void ID3D12GraphicsCommandList4_ClearState(ID3D12GraphicsCommandList4* This,ID3D12PipelineState *pipeline_state) {
19008    This->lpVtbl->ClearState(This,pipeline_state);
19009}
19010static 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}
19013static 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}
19016static inline void ID3D12GraphicsCommandList4_Dispatch(ID3D12GraphicsCommandList4* This,UINT x,UINT u,UINT z) {
19017    This->lpVtbl->Dispatch(This,x,u,z);
19018}
19019static 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}
19022static 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}
19025static inline void ID3D12GraphicsCommandList4_CopyResource(ID3D12GraphicsCommandList4* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
19026    This->lpVtbl->CopyResource(This,dst_resource,src_resource);
19027}
19028static 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}
19031static 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}
19034static inline void ID3D12GraphicsCommandList4_IASetPrimitiveTopology(ID3D12GraphicsCommandList4* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
19035    This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
19036}
19037static inline void ID3D12GraphicsCommandList4_RSSetViewports(ID3D12GraphicsCommandList4* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
19038    This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
19039}
19040static inline void ID3D12GraphicsCommandList4_RSSetScissorRects(ID3D12GraphicsCommandList4* This,UINT rect_count,const D3D12_RECT *rects) {
19041    This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
19042}
19043static inline void ID3D12GraphicsCommandList4_OMSetBlendFactor(ID3D12GraphicsCommandList4* This,const FLOAT blend_factor[4]) {
19044    This->lpVtbl->OMSetBlendFactor(This,blend_factor);
19045}
19046static inline void ID3D12GraphicsCommandList4_OMSetStencilRef(ID3D12GraphicsCommandList4* This,UINT stencil_ref) {
19047    This->lpVtbl->OMSetStencilRef(This,stencil_ref);
19048}
19049static inline void ID3D12GraphicsCommandList4_SetPipelineState(ID3D12GraphicsCommandList4* This,ID3D12PipelineState *pipeline_state) {
19050    This->lpVtbl->SetPipelineState(This,pipeline_state);
19051}
19052static inline void ID3D12GraphicsCommandList4_ResourceBarrier(ID3D12GraphicsCommandList4* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
19053    This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
19054}
19055static inline void ID3D12GraphicsCommandList4_ExecuteBundle(ID3D12GraphicsCommandList4* This,ID3D12GraphicsCommandList *command_list) {
19056    This->lpVtbl->ExecuteBundle(This,command_list);
19057}
19058static inline void ID3D12GraphicsCommandList4_SetDescriptorHeaps(ID3D12GraphicsCommandList4* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
19059    This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
19060}
19061static inline void ID3D12GraphicsCommandList4_SetComputeRootSignature(ID3D12GraphicsCommandList4* This,ID3D12RootSignature *root_signature) {
19062    This->lpVtbl->SetComputeRootSignature(This,root_signature);
19063}
19064static inline void ID3D12GraphicsCommandList4_SetGraphicsRootSignature(ID3D12GraphicsCommandList4* This,ID3D12RootSignature *root_signature) {
19065    This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
19066}
19067static 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}
19070static 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}
19073static 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}
19076static 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}
19079static 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}
19082static 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}
19085static 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}
19088static 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}
19091static 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}
19094static 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}
19097static 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}
19100static 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}
19103static inline void ID3D12GraphicsCommandList4_IASetIndexBuffer(ID3D12GraphicsCommandList4* This,const D3D12_INDEX_BUFFER_VIEW *view) {
19104    This->lpVtbl->IASetIndexBuffer(This,view);
19105}
19106static 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}
19109static 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}
19112static 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}
19115static 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}
19118static 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}
19121static 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}
19124static 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}
19127static inline void ID3D12GraphicsCommandList4_DiscardResource(ID3D12GraphicsCommandList4* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
19128    This->lpVtbl->DiscardResource(This,resource,region);
19129}
19130static inline void ID3D12GraphicsCommandList4_BeginQuery(ID3D12GraphicsCommandList4* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
19131    This->lpVtbl->BeginQuery(This,heap,type,index);
19132}
19133static inline void ID3D12GraphicsCommandList4_EndQuery(ID3D12GraphicsCommandList4* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
19134    This->lpVtbl->EndQuery(This,heap,type,index);
19135}
19136static 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}
19139static 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}
19142static inline void ID3D12GraphicsCommandList4_SetMarker(ID3D12GraphicsCommandList4* This,UINT metadata,const void *data,UINT size) {
19143    This->lpVtbl->SetMarker(This,metadata,data,size);
19144}
19145static inline void ID3D12GraphicsCommandList4_BeginEvent(ID3D12GraphicsCommandList4* This,UINT metadata,const void *data,UINT size) {
19146    This->lpVtbl->BeginEvent(This,metadata,data,size);
19147}
19148static inline void ID3D12GraphicsCommandList4_EndEvent(ID3D12GraphicsCommandList4* This) {
19149    This->lpVtbl->EndEvent(This);
19150}
19151static 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 ***/
19155static 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}
19158static 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}
19161static inline void ID3D12GraphicsCommandList4_OMSetDepthBounds(ID3D12GraphicsCommandList4* This,FLOAT min,FLOAT max) {
19162    This->lpVtbl->OMSetDepthBounds(This,min,max);
19163}
19164static 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}
19167static 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}
19170static inline void ID3D12GraphicsCommandList4_SetViewInstanceMask(ID3D12GraphicsCommandList4* This,UINT mask) {
19171    This->lpVtbl->SetViewInstanceMask(This,mask);
19172}
19173/*** ID3D12GraphicsCommandList2 methods ***/
19174static 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 ***/
19178static inline void ID3D12GraphicsCommandList4_SetProtectedResourceSession(ID3D12GraphicsCommandList4* This,ID3D12ProtectedResourceSession *protected_resource_session) {
19179    This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
19180}
19181/*** ID3D12GraphicsCommandList4 methods ***/
19182static 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}
19185static inline void ID3D12GraphicsCommandList4_EndRenderPass(ID3D12GraphicsCommandList4* This) {
19186    This->lpVtbl->EndRenderPass(This);
19187}
19188static 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}
19191static 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}
19194static 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}
19197static 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}
19200static 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}
19203static inline void ID3D12GraphicsCommandList4_SetPipelineState1(ID3D12GraphicsCommandList4* This,ID3D12StateObject *state_object) {
19204    This->lpVtbl->SetPipelineState1(This,state_object);
19205}
19206static 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
19217typedef enum D3D12_SHADER_CACHE_MODE {
19218    D3D12_SHADER_CACHE_MODE_MEMORY = 0x0,
19219    D3D12_SHADER_CACHE_MODE_DISK = 0x1
19220} D3D12_SHADER_CACHE_MODE;
19221typedef 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;
19226DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_FLAGS);
19227typedef 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;
19236typedef 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;
19271typedef 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;
19296DEFINE_ENUM_FLAG_OPERATORS(D3D12_BARRIER_SYNC);
19297typedef 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;
19325DEFINE_ENUM_FLAG_OPERATORS(D3D12_BARRIER_ACCESS);
19326typedef 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;
19331typedef enum D3D12_TEXTURE_BARRIER_FLAGS {
19332    D3D12_TEXTURE_BARRIER_FLAG_NONE = 0x0,
19333    D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1
19334} D3D12_TEXTURE_BARRIER_FLAGS;
19335DEFINE_ENUM_FLAG_OPERATORS(D3D12_TEXTURE_BARRIER_FLAGS);
19336typedef 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;
19344typedef 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;
19350typedef 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;
19361typedef 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;
19370typedef 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
19385DEFINE_GUID(IID_ID3D12ShaderCacheSession, 0x28e2495d, 0x0f64, 0x4ae4, 0xa6,0xec, 0x12,0x92,0x55,0xdc,0x49,0xa8);
19386#if defined(__cplusplus) && !defined(CINTERFACE)
19387MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
19388ID3D12ShaderCacheSession : 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
19424typedef 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
19492interface 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 ***/
19516static inline HRESULT ID3D12ShaderCacheSession_QueryInterface(ID3D12ShaderCacheSession* This,REFIID riid,void **ppvObject) {
19517    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
19518}
19519static inline ULONG ID3D12ShaderCacheSession_AddRef(ID3D12ShaderCacheSession* This) {
19520    return This->lpVtbl->AddRef(This);
19521}
19522static inline ULONG ID3D12ShaderCacheSession_Release(ID3D12ShaderCacheSession* This) {
19523    return This->lpVtbl->Release(This);
19524}
19525/*** ID3D12Object methods ***/
19526static inline HRESULT ID3D12ShaderCacheSession_GetPrivateData(ID3D12ShaderCacheSession* This,REFGUID guid,UINT *data_size,void *data) {
19527    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
19528}
19529static 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}
19532static inline HRESULT ID3D12ShaderCacheSession_SetPrivateDataInterface(ID3D12ShaderCacheSession* This,REFGUID guid,const IUnknown *data) {
19533    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
19534}
19535static inline HRESULT ID3D12ShaderCacheSession_SetName(ID3D12ShaderCacheSession* This,const WCHAR *name) {
19536    return This->lpVtbl->SetName(This,name);
19537}
19538/*** ID3D12DeviceChild methods ***/
19539static inline HRESULT ID3D12ShaderCacheSession_GetDevice(ID3D12ShaderCacheSession* This,REFIID riid,void **device) {
19540    return This->lpVtbl->GetDevice(This,riid,device);
19541}
19542/*** ID3D12ShaderCacheSession methods ***/
19543static 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}
19546static 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}
19549static inline void ID3D12ShaderCacheSession_SetDeleteOnDestroy(ID3D12ShaderCacheSession* This) {
19550    This->lpVtbl->SetDeleteOnDestroy(This);
19551}
19552static 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
19564typedef 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;
19570DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_KIND_FLAGS);
19571typedef 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;
19576DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_CONTROL_FLAGS);
19577/*****************************************************************************
19578 * ID3D12Device9 interface
19579 */
19580#ifndef __ID3D12Device9_INTERFACE_DEFINED__
19581#define __ID3D12Device9_INTERFACE_DEFINED__
19582
19583DEFINE_GUID(IID_ID3D12Device9, 0x4c80e962, 0xf032, 0x4f60, 0xbc,0x9e, 0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
19584#if defined(__cplusplus) && !defined(CINTERFACE)
19585MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
19586ID3D12Device9 : 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
19608typedef 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
20126interface 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 ***/
20222static inline HRESULT ID3D12Device9_QueryInterface(ID3D12Device9* This,REFIID riid,void **ppvObject) {
20223    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
20224}
20225static inline ULONG ID3D12Device9_AddRef(ID3D12Device9* This) {
20226    return This->lpVtbl->AddRef(This);
20227}
20228static inline ULONG ID3D12Device9_Release(ID3D12Device9* This) {
20229    return This->lpVtbl->Release(This);
20230}
20231/*** ID3D12Object methods ***/
20232static inline HRESULT ID3D12Device9_GetPrivateData(ID3D12Device9* This,REFGUID guid,UINT *data_size,void *data) {
20233    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
20234}
20235static 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}
20238static inline HRESULT ID3D12Device9_SetPrivateDataInterface(ID3D12Device9* This,REFGUID guid,const IUnknown *data) {
20239    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
20240}
20241static inline HRESULT ID3D12Device9_SetName(ID3D12Device9* This,const WCHAR *name) {
20242    return This->lpVtbl->SetName(This,name);
20243}
20244/*** ID3D12Device methods ***/
20245static inline UINT ID3D12Device9_GetNodeCount(ID3D12Device9* This) {
20246    return This->lpVtbl->GetNodeCount(This);
20247}
20248static 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}
20251static 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}
20254static 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}
20257static 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}
20260static 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}
20263static 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}
20266static 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}
20269static inline UINT ID3D12Device9_GetDescriptorHandleIncrementSize(ID3D12Device9* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
20270    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
20271}
20272static 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}
20275static 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}
20278static 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}
20281static 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}
20284static 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}
20287static 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}
20290static inline void ID3D12Device9_CreateSampler(ID3D12Device9* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
20291    This->lpVtbl->CreateSampler(This,desc,descriptor);
20292}
20293static 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}
20296static 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}
20299static 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}
20303static 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}
20307static 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}
20310static 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}
20313static 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}
20316static 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}
20319static 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}
20322static inline HRESULT ID3D12Device9_OpenSharedHandle(ID3D12Device9* This,HANDLE handle,REFIID riid,void **object) {
20323    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
20324}
20325static inline HRESULT ID3D12Device9_OpenSharedHandleByName(ID3D12Device9* This,const WCHAR *name,DWORD access,HANDLE *handle) {
20326    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
20327}
20328static inline HRESULT ID3D12Device9_MakeResident(ID3D12Device9* This,UINT object_count,ID3D12Pageable *const *objects) {
20329    return This->lpVtbl->MakeResident(This,object_count,objects);
20330}
20331static inline HRESULT ID3D12Device9_Evict(ID3D12Device9* This,UINT object_count,ID3D12Pageable *const *objects) {
20332    return This->lpVtbl->Evict(This,object_count,objects);
20333}
20334static 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}
20337static inline HRESULT ID3D12Device9_GetDeviceRemovedReason(ID3D12Device9* This) {
20338    return This->lpVtbl->GetDeviceRemovedReason(This);
20339}
20340static 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}
20343static 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}
20346static inline HRESULT ID3D12Device9_SetStablePowerState(ID3D12Device9* This,WINBOOL enable) {
20347    return This->lpVtbl->SetStablePowerState(This,enable);
20348}
20349static 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}
20352static 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}
20355static inline LUID ID3D12Device9_GetAdapterLuid(ID3D12Device9* This) {
20356    LUID __ret;
20357    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
20358}
20359/*** ID3D12Device1 methods ***/
20360static 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}
20363static 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}
20366static 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 ***/
20370static 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 ***/
20374static inline HRESULT ID3D12Device9_OpenExistingHeapFromAddress(ID3D12Device9* This,const void *address,REFIID riid,void **heap) {
20375    return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
20376}
20377static inline HRESULT ID3D12Device9_OpenExistingHeapFromFileMapping(ID3D12Device9* This,HANDLE file_mapping,REFIID riid,void **heap) {
20378    return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
20379}
20380static 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 ***/
20384static 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}
20387static 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}
20390static 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}
20393static 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}
20396static 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}
20399static 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 ***/
20404static inline HRESULT ID3D12Device9_CreateLifetimeTracker(ID3D12Device9* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
20405    return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
20406}
20407static inline void ID3D12Device9_RemoveDevice(ID3D12Device9* This) {
20408    This->lpVtbl->RemoveDevice(This);
20409}
20410static 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}
20413static 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}
20416static 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}
20419static 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}
20422static 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}
20425static 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 ***/
20429static 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 ***/
20433static 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}
20436static 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 ***/
20440static 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}
20444static 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}
20447static 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}
20450static 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}
20453static 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 ***/
20457static 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}
20460static 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}
20463static 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
20480DEFINE_GUID(IID_ID3D12Device10, 0x517f8718, 0xaa66, 0x49f9, 0xb0,0x2b, 0xa7,0xab,0x89,0xc0,0x60,0x31);
20481#if defined(__cplusplus) && !defined(CINTERFACE)
20482MIDL_INTERFACE("517f8718-aa66-49f9-b02b-a7ab89c06031")
20483ID3D12Device10 : 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
20523typedef 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
21078interface 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 ***/
21178static inline HRESULT ID3D12Device10_QueryInterface(ID3D12Device10* This,REFIID riid,void **ppvObject) {
21179    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
21180}
21181static inline ULONG ID3D12Device10_AddRef(ID3D12Device10* This) {
21182    return This->lpVtbl->AddRef(This);
21183}
21184static inline ULONG ID3D12Device10_Release(ID3D12Device10* This) {
21185    return This->lpVtbl->Release(This);
21186}
21187/*** ID3D12Object methods ***/
21188static inline HRESULT ID3D12Device10_GetPrivateData(ID3D12Device10* This,REFGUID guid,UINT *data_size,void *data) {
21189    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
21190}
21191static 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}
21194static inline HRESULT ID3D12Device10_SetPrivateDataInterface(ID3D12Device10* This,REFGUID guid,const IUnknown *data) {
21195    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
21196}
21197static inline HRESULT ID3D12Device10_SetName(ID3D12Device10* This,const WCHAR *name) {
21198    return This->lpVtbl->SetName(This,name);
21199}
21200/*** ID3D12Device methods ***/
21201static inline UINT ID3D12Device10_GetNodeCount(ID3D12Device10* This) {
21202    return This->lpVtbl->GetNodeCount(This);
21203}
21204static 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}
21207static 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}
21210static 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}
21213static 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}
21216static 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}
21219static 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}
21222static 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}
21225static inline UINT ID3D12Device10_GetDescriptorHandleIncrementSize(ID3D12Device10* This,D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) {
21226    return This->lpVtbl->GetDescriptorHandleIncrementSize(This,descriptor_heap_type);
21227}
21228static 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}
21231static 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}
21234static 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}
21237static 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}
21240static 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}
21243static 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}
21246static inline void ID3D12Device10_CreateSampler(ID3D12Device10* This,const D3D12_SAMPLER_DESC *desc,D3D12_CPU_DESCRIPTOR_HANDLE descriptor) {
21247    This->lpVtbl->CreateSampler(This,desc,descriptor);
21248}
21249static 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}
21252static 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}
21255static 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}
21259static 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}
21263static 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}
21266static 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}
21269static 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}
21272static 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}
21275static 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}
21278static inline HRESULT ID3D12Device10_OpenSharedHandle(ID3D12Device10* This,HANDLE handle,REFIID riid,void **object) {
21279    return This->lpVtbl->OpenSharedHandle(This,handle,riid,object);
21280}
21281static inline HRESULT ID3D12Device10_OpenSharedHandleByName(ID3D12Device10* This,const WCHAR *name,DWORD access,HANDLE *handle) {
21282    return This->lpVtbl->OpenSharedHandleByName(This,name,access,handle);
21283}
21284static inline HRESULT ID3D12Device10_MakeResident(ID3D12Device10* This,UINT object_count,ID3D12Pageable *const *objects) {
21285    return This->lpVtbl->MakeResident(This,object_count,objects);
21286}
21287static inline HRESULT ID3D12Device10_Evict(ID3D12Device10* This,UINT object_count,ID3D12Pageable *const *objects) {
21288    return This->lpVtbl->Evict(This,object_count,objects);
21289}
21290static 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}
21293static inline HRESULT ID3D12Device10_GetDeviceRemovedReason(ID3D12Device10* This) {
21294    return This->lpVtbl->GetDeviceRemovedReason(This);
21295}
21296static 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}
21299static 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}
21302static inline HRESULT ID3D12Device10_SetStablePowerState(ID3D12Device10* This,WINBOOL enable) {
21303    return This->lpVtbl->SetStablePowerState(This,enable);
21304}
21305static 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}
21308static 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}
21311static inline LUID ID3D12Device10_GetAdapterLuid(ID3D12Device10* This) {
21312    LUID __ret;
21313    return *This->lpVtbl->GetAdapterLuid(This,&__ret);
21314}
21315/*** ID3D12Device1 methods ***/
21316static 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}
21319static 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}
21322static 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 ***/
21326static 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 ***/
21330static inline HRESULT ID3D12Device10_OpenExistingHeapFromAddress(ID3D12Device10* This,const void *address,REFIID riid,void **heap) {
21331    return This->lpVtbl->OpenExistingHeapFromAddress(This,address,riid,heap);
21332}
21333static inline HRESULT ID3D12Device10_OpenExistingHeapFromFileMapping(ID3D12Device10* This,HANDLE file_mapping,REFIID riid,void **heap) {
21334    return This->lpVtbl->OpenExistingHeapFromFileMapping(This,file_mapping,riid,heap);
21335}
21336static 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 ***/
21340static 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}
21343static 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}
21346static 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}
21349static 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}
21352static 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}
21355static 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 ***/
21360static inline HRESULT ID3D12Device10_CreateLifetimeTracker(ID3D12Device10* This,ID3D12LifetimeOwner *owner,REFIID riid,void **tracker) {
21361    return This->lpVtbl->CreateLifetimeTracker(This,owner,riid,tracker);
21362}
21363static inline void ID3D12Device10_RemoveDevice(ID3D12Device10* This) {
21364    This->lpVtbl->RemoveDevice(This);
21365}
21366static 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}
21369static 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}
21372static 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}
21375static 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}
21378static 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}
21381static 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 ***/
21385static 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 ***/
21389static 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}
21392static 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 ***/
21396static 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}
21400static 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}
21403static 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}
21406static 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}
21409static 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 ***/
21413static 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}
21416static 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}
21419static 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 ***/
21423static 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}
21426static 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}
21429static 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
21446DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice, 0xbc66d368, 0x7373, 0x4943, 0x87,0x57, 0xfc,0x87,0xdc,0x79,0xe4,0x76);
21447#if defined(__cplusplus) && !defined(CINTERFACE)
21448MIDL_INTERFACE("bc66d368-7373-4943-8757-fc87dc79e476")
21449ID3D12VirtualizationGuestDevice : 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
21465typedef 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
21495interface 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 ***/
21510static inline HRESULT ID3D12VirtualizationGuestDevice_QueryInterface(ID3D12VirtualizationGuestDevice* This,REFIID riid,void **ppvObject) {
21511    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
21512}
21513static inline ULONG ID3D12VirtualizationGuestDevice_AddRef(ID3D12VirtualizationGuestDevice* This) {
21514    return This->lpVtbl->AddRef(This);
21515}
21516static inline ULONG ID3D12VirtualizationGuestDevice_Release(ID3D12VirtualizationGuestDevice* This) {
21517    return This->lpVtbl->Release(This);
21518}
21519/*** ID3D12VirtualizationGuestDevice methods ***/
21520static inline HRESULT ID3D12VirtualizationGuestDevice_ShareWithHost(ID3D12VirtualizationGuestDevice* This,ID3D12DeviceChild *object,HANDLE *handle) {
21521    return This->lpVtbl->ShareWithHost(This,object,handle);
21522}
21523static 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
21540DEFINE_GUID(IID_ID3D12Tools, 0x7071e1f0, 0xe84b, 0x4b33, 0x97,0x4f, 0x12,0xfa,0x49,0xde,0x65,0xc5);
21541#if defined(__cplusplus) && !defined(CINTERFACE)
21542MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
21543ID3D12Tools : 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
21556typedef 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
21582interface 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 ***/
21597static inline HRESULT ID3D12Tools_QueryInterface(ID3D12Tools* This,REFIID riid,void **ppvObject) {
21598    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
21599}
21600static inline ULONG ID3D12Tools_AddRef(ID3D12Tools* This) {
21601    return This->lpVtbl->AddRef(This);
21602}
21603static inline ULONG ID3D12Tools_Release(ID3D12Tools* This) {
21604    return This->lpVtbl->Release(This);
21605}
21606/*** ID3D12Tools methods ***/
21607static inline void ID3D12Tools_EnableShaderInstrumentation(ID3D12Tools* This,WINBOOL enable) {
21608    This->lpVtbl->EnableShaderInstrumentation(This,enable);
21609}
21610static 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
21621DEFINE_GUID(CLSID_D3D12Debug,                     0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
21622DEFINE_GUID(CLSID_D3D12Tools,                     0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
21623DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
21624DEFINE_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
21631DEFINE_GUID(IID_ID3D12SDKConfiguration, 0xe9eb5314, 0x33aa, 0x42b2, 0xa7,0x18, 0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
21632#if defined(__cplusplus) && !defined(CINTERFACE)
21633MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
21634ID3D12SDKConfiguration : 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
21645typedef 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
21669interface 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 ***/
21683static inline HRESULT ID3D12SDKConfiguration_QueryInterface(ID3D12SDKConfiguration* This,REFIID riid,void **ppvObject) {
21684    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
21685}
21686static inline ULONG ID3D12SDKConfiguration_AddRef(ID3D12SDKConfiguration* This) {
21687    return This->lpVtbl->AddRef(This);
21688}
21689static inline ULONG ID3D12SDKConfiguration_Release(ID3D12SDKConfiguration* This) {
21690    return This->lpVtbl->Release(This);
21691}
21692/*** ID3D12SDKConfiguration methods ***/
21693static 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
21704typedef 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;
21709typedef 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;
21718typedef 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
21731DEFINE_GUID(IID_ID3D12GraphicsCommandList5, 0x55050859, 0x4024, 0x474c, 0x87,0xf5, 0x64,0x72,0xea,0xee,0x44,0xea);
21732#if defined(__cplusplus) && !defined(CINTERFACE)
21733MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
21734ID3D12GraphicsCommandList5 : 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
21748typedef 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
22217interface 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 ***/
22314static inline HRESULT ID3D12GraphicsCommandList5_QueryInterface(ID3D12GraphicsCommandList5* This,REFIID riid,void **ppvObject) {
22315    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
22316}
22317static inline ULONG ID3D12GraphicsCommandList5_AddRef(ID3D12GraphicsCommandList5* This) {
22318    return This->lpVtbl->AddRef(This);
22319}
22320static inline ULONG ID3D12GraphicsCommandList5_Release(ID3D12GraphicsCommandList5* This) {
22321    return This->lpVtbl->Release(This);
22322}
22323/*** ID3D12Object methods ***/
22324static inline HRESULT ID3D12GraphicsCommandList5_GetPrivateData(ID3D12GraphicsCommandList5* This,REFGUID guid,UINT *data_size,void *data) {
22325    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
22326}
22327static 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}
22330static inline HRESULT ID3D12GraphicsCommandList5_SetPrivateDataInterface(ID3D12GraphicsCommandList5* This,REFGUID guid,const IUnknown *data) {
22331    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
22332}
22333static inline HRESULT ID3D12GraphicsCommandList5_SetName(ID3D12GraphicsCommandList5* This,const WCHAR *name) {
22334    return This->lpVtbl->SetName(This,name);
22335}
22336/*** ID3D12DeviceChild methods ***/
22337static inline HRESULT ID3D12GraphicsCommandList5_GetDevice(ID3D12GraphicsCommandList5* This,REFIID riid,void **device) {
22338    return This->lpVtbl->GetDevice(This,riid,device);
22339}
22340/*** ID3D12CommandList methods ***/
22341static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList5_GetType(ID3D12GraphicsCommandList5* This) {
22342    return This->lpVtbl->GetType(This);
22343}
22344/*** ID3D12GraphicsCommandList methods ***/
22345static inline HRESULT ID3D12GraphicsCommandList5_Close(ID3D12GraphicsCommandList5* This) {
22346    return This->lpVtbl->Close(This);
22347}
22348static inline HRESULT ID3D12GraphicsCommandList5_Reset(ID3D12GraphicsCommandList5* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
22349    return This->lpVtbl->Reset(This,allocator,initial_state);
22350}
22351static inline void ID3D12GraphicsCommandList5_ClearState(ID3D12GraphicsCommandList5* This,ID3D12PipelineState *pipeline_state) {
22352    This->lpVtbl->ClearState(This,pipeline_state);
22353}
22354static 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}
22357static 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}
22360static inline void ID3D12GraphicsCommandList5_Dispatch(ID3D12GraphicsCommandList5* This,UINT x,UINT u,UINT z) {
22361    This->lpVtbl->Dispatch(This,x,u,z);
22362}
22363static 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}
22366static 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}
22369static inline void ID3D12GraphicsCommandList5_CopyResource(ID3D12GraphicsCommandList5* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
22370    This->lpVtbl->CopyResource(This,dst_resource,src_resource);
22371}
22372static 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}
22375static 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}
22378static inline void ID3D12GraphicsCommandList5_IASetPrimitiveTopology(ID3D12GraphicsCommandList5* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
22379    This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
22380}
22381static inline void ID3D12GraphicsCommandList5_RSSetViewports(ID3D12GraphicsCommandList5* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
22382    This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
22383}
22384static inline void ID3D12GraphicsCommandList5_RSSetScissorRects(ID3D12GraphicsCommandList5* This,UINT rect_count,const D3D12_RECT *rects) {
22385    This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
22386}
22387static inline void ID3D12GraphicsCommandList5_OMSetBlendFactor(ID3D12GraphicsCommandList5* This,const FLOAT blend_factor[4]) {
22388    This->lpVtbl->OMSetBlendFactor(This,blend_factor);
22389}
22390static inline void ID3D12GraphicsCommandList5_OMSetStencilRef(ID3D12GraphicsCommandList5* This,UINT stencil_ref) {
22391    This->lpVtbl->OMSetStencilRef(This,stencil_ref);
22392}
22393static inline void ID3D12GraphicsCommandList5_SetPipelineState(ID3D12GraphicsCommandList5* This,ID3D12PipelineState *pipeline_state) {
22394    This->lpVtbl->SetPipelineState(This,pipeline_state);
22395}
22396static inline void ID3D12GraphicsCommandList5_ResourceBarrier(ID3D12GraphicsCommandList5* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
22397    This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
22398}
22399static inline void ID3D12GraphicsCommandList5_ExecuteBundle(ID3D12GraphicsCommandList5* This,ID3D12GraphicsCommandList *command_list) {
22400    This->lpVtbl->ExecuteBundle(This,command_list);
22401}
22402static inline void ID3D12GraphicsCommandList5_SetDescriptorHeaps(ID3D12GraphicsCommandList5* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
22403    This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
22404}
22405static inline void ID3D12GraphicsCommandList5_SetComputeRootSignature(ID3D12GraphicsCommandList5* This,ID3D12RootSignature *root_signature) {
22406    This->lpVtbl->SetComputeRootSignature(This,root_signature);
22407}
22408static inline void ID3D12GraphicsCommandList5_SetGraphicsRootSignature(ID3D12GraphicsCommandList5* This,ID3D12RootSignature *root_signature) {
22409    This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
22410}
22411static 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}
22414static 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}
22417static 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}
22420static 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}
22423static 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}
22426static 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}
22429static 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}
22432static 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}
22435static 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}
22438static 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}
22441static 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}
22444static 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}
22447static inline void ID3D12GraphicsCommandList5_IASetIndexBuffer(ID3D12GraphicsCommandList5* This,const D3D12_INDEX_BUFFER_VIEW *view) {
22448    This->lpVtbl->IASetIndexBuffer(This,view);
22449}
22450static 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}
22453static 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}
22456static 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}
22459static 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}
22462static 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}
22465static 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}
22468static 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}
22471static inline void ID3D12GraphicsCommandList5_DiscardResource(ID3D12GraphicsCommandList5* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
22472    This->lpVtbl->DiscardResource(This,resource,region);
22473}
22474static inline void ID3D12GraphicsCommandList5_BeginQuery(ID3D12GraphicsCommandList5* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
22475    This->lpVtbl->BeginQuery(This,heap,type,index);
22476}
22477static inline void ID3D12GraphicsCommandList5_EndQuery(ID3D12GraphicsCommandList5* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
22478    This->lpVtbl->EndQuery(This,heap,type,index);
22479}
22480static 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}
22483static 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}
22486static inline void ID3D12GraphicsCommandList5_SetMarker(ID3D12GraphicsCommandList5* This,UINT metadata,const void *data,UINT size) {
22487    This->lpVtbl->SetMarker(This,metadata,data,size);
22488}
22489static inline void ID3D12GraphicsCommandList5_BeginEvent(ID3D12GraphicsCommandList5* This,UINT metadata,const void *data,UINT size) {
22490    This->lpVtbl->BeginEvent(This,metadata,data,size);
22491}
22492static inline void ID3D12GraphicsCommandList5_EndEvent(ID3D12GraphicsCommandList5* This) {
22493    This->lpVtbl->EndEvent(This);
22494}
22495static 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 ***/
22499static 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}
22502static 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}
22505static inline void ID3D12GraphicsCommandList5_OMSetDepthBounds(ID3D12GraphicsCommandList5* This,FLOAT min,FLOAT max) {
22506    This->lpVtbl->OMSetDepthBounds(This,min,max);
22507}
22508static 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}
22511static 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}
22514static inline void ID3D12GraphicsCommandList5_SetViewInstanceMask(ID3D12GraphicsCommandList5* This,UINT mask) {
22515    This->lpVtbl->SetViewInstanceMask(This,mask);
22516}
22517/*** ID3D12GraphicsCommandList2 methods ***/
22518static 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 ***/
22522static inline void ID3D12GraphicsCommandList5_SetProtectedResourceSession(ID3D12GraphicsCommandList5* This,ID3D12ProtectedResourceSession *protected_resource_session) {
22523    This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
22524}
22525/*** ID3D12GraphicsCommandList4 methods ***/
22526static 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}
22529static inline void ID3D12GraphicsCommandList5_EndRenderPass(ID3D12GraphicsCommandList5* This) {
22530    This->lpVtbl->EndRenderPass(This);
22531}
22532static 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}
22535static 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}
22538static 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}
22541static 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}
22544static 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}
22547static inline void ID3D12GraphicsCommandList5_SetPipelineState1(ID3D12GraphicsCommandList5* This,ID3D12StateObject *state_object) {
22548    This->lpVtbl->SetPipelineState1(This,state_object);
22549}
22550static inline void ID3D12GraphicsCommandList5_DispatchRays(ID3D12GraphicsCommandList5* This,const D3D12_DISPATCH_RAYS_DESC *desc) {
22551    This->lpVtbl->DispatchRays(This,desc);
22552}
22553/*** ID3D12GraphicsCommandList5 methods ***/
22554static 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}
22557static 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)
22575typedef 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
22586DEFINE_GUID(IID_ID3D12GraphicsCommandList6, 0xc3827890, 0xe548, 0x4cfa, 0x96,0xcf, 0x56,0x89,0xa9,0x37,0x0f,0x80);
22587#if defined(__cplusplus) && !defined(CINTERFACE)
22588MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
22589ID3D12GraphicsCommandList6 : 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
22601typedef 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
23077interface 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 ***/
23176static inline HRESULT ID3D12GraphicsCommandList6_QueryInterface(ID3D12GraphicsCommandList6* This,REFIID riid,void **ppvObject) {
23177    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
23178}
23179static inline ULONG ID3D12GraphicsCommandList6_AddRef(ID3D12GraphicsCommandList6* This) {
23180    return This->lpVtbl->AddRef(This);
23181}
23182static inline ULONG ID3D12GraphicsCommandList6_Release(ID3D12GraphicsCommandList6* This) {
23183    return This->lpVtbl->Release(This);
23184}
23185/*** ID3D12Object methods ***/
23186static inline HRESULT ID3D12GraphicsCommandList6_GetPrivateData(ID3D12GraphicsCommandList6* This,REFGUID guid,UINT *data_size,void *data) {
23187    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
23188}
23189static 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}
23192static inline HRESULT ID3D12GraphicsCommandList6_SetPrivateDataInterface(ID3D12GraphicsCommandList6* This,REFGUID guid,const IUnknown *data) {
23193    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
23194}
23195static inline HRESULT ID3D12GraphicsCommandList6_SetName(ID3D12GraphicsCommandList6* This,const WCHAR *name) {
23196    return This->lpVtbl->SetName(This,name);
23197}
23198/*** ID3D12DeviceChild methods ***/
23199static inline HRESULT ID3D12GraphicsCommandList6_GetDevice(ID3D12GraphicsCommandList6* This,REFIID riid,void **device) {
23200    return This->lpVtbl->GetDevice(This,riid,device);
23201}
23202/*** ID3D12CommandList methods ***/
23203static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList6_GetType(ID3D12GraphicsCommandList6* This) {
23204    return This->lpVtbl->GetType(This);
23205}
23206/*** ID3D12GraphicsCommandList methods ***/
23207static inline HRESULT ID3D12GraphicsCommandList6_Close(ID3D12GraphicsCommandList6* This) {
23208    return This->lpVtbl->Close(This);
23209}
23210static inline HRESULT ID3D12GraphicsCommandList6_Reset(ID3D12GraphicsCommandList6* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
23211    return This->lpVtbl->Reset(This,allocator,initial_state);
23212}
23213static inline void ID3D12GraphicsCommandList6_ClearState(ID3D12GraphicsCommandList6* This,ID3D12PipelineState *pipeline_state) {
23214    This->lpVtbl->ClearState(This,pipeline_state);
23215}
23216static 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}
23219static 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}
23222static inline void ID3D12GraphicsCommandList6_Dispatch(ID3D12GraphicsCommandList6* This,UINT x,UINT u,UINT z) {
23223    This->lpVtbl->Dispatch(This,x,u,z);
23224}
23225static 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}
23228static 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}
23231static inline void ID3D12GraphicsCommandList6_CopyResource(ID3D12GraphicsCommandList6* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
23232    This->lpVtbl->CopyResource(This,dst_resource,src_resource);
23233}
23234static 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}
23237static 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}
23240static inline void ID3D12GraphicsCommandList6_IASetPrimitiveTopology(ID3D12GraphicsCommandList6* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
23241    This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
23242}
23243static inline void ID3D12GraphicsCommandList6_RSSetViewports(ID3D12GraphicsCommandList6* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
23244    This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
23245}
23246static inline void ID3D12GraphicsCommandList6_RSSetScissorRects(ID3D12GraphicsCommandList6* This,UINT rect_count,const D3D12_RECT *rects) {
23247    This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
23248}
23249static inline void ID3D12GraphicsCommandList6_OMSetBlendFactor(ID3D12GraphicsCommandList6* This,const FLOAT blend_factor[4]) {
23250    This->lpVtbl->OMSetBlendFactor(This,blend_factor);
23251}
23252static inline void ID3D12GraphicsCommandList6_OMSetStencilRef(ID3D12GraphicsCommandList6* This,UINT stencil_ref) {
23253    This->lpVtbl->OMSetStencilRef(This,stencil_ref);
23254}
23255static inline void ID3D12GraphicsCommandList6_SetPipelineState(ID3D12GraphicsCommandList6* This,ID3D12PipelineState *pipeline_state) {
23256    This->lpVtbl->SetPipelineState(This,pipeline_state);
23257}
23258static inline void ID3D12GraphicsCommandList6_ResourceBarrier(ID3D12GraphicsCommandList6* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
23259    This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
23260}
23261static inline void ID3D12GraphicsCommandList6_ExecuteBundle(ID3D12GraphicsCommandList6* This,ID3D12GraphicsCommandList *command_list) {
23262    This->lpVtbl->ExecuteBundle(This,command_list);
23263}
23264static inline void ID3D12GraphicsCommandList6_SetDescriptorHeaps(ID3D12GraphicsCommandList6* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
23265    This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
23266}
23267static inline void ID3D12GraphicsCommandList6_SetComputeRootSignature(ID3D12GraphicsCommandList6* This,ID3D12RootSignature *root_signature) {
23268    This->lpVtbl->SetComputeRootSignature(This,root_signature);
23269}
23270static inline void ID3D12GraphicsCommandList6_SetGraphicsRootSignature(ID3D12GraphicsCommandList6* This,ID3D12RootSignature *root_signature) {
23271    This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
23272}
23273static 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}
23276static 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}
23279static 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}
23282static 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}
23285static 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}
23288static 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}
23291static 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}
23294static 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}
23297static 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}
23300static 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}
23303static 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}
23306static 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}
23309static inline void ID3D12GraphicsCommandList6_IASetIndexBuffer(ID3D12GraphicsCommandList6* This,const D3D12_INDEX_BUFFER_VIEW *view) {
23310    This->lpVtbl->IASetIndexBuffer(This,view);
23311}
23312static 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}
23315static 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}
23318static 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}
23321static 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}
23324static 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}
23327static 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}
23330static 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}
23333static inline void ID3D12GraphicsCommandList6_DiscardResource(ID3D12GraphicsCommandList6* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
23334    This->lpVtbl->DiscardResource(This,resource,region);
23335}
23336static inline void ID3D12GraphicsCommandList6_BeginQuery(ID3D12GraphicsCommandList6* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
23337    This->lpVtbl->BeginQuery(This,heap,type,index);
23338}
23339static inline void ID3D12GraphicsCommandList6_EndQuery(ID3D12GraphicsCommandList6* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
23340    This->lpVtbl->EndQuery(This,heap,type,index);
23341}
23342static 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}
23345static 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}
23348static inline void ID3D12GraphicsCommandList6_SetMarker(ID3D12GraphicsCommandList6* This,UINT metadata,const void *data,UINT size) {
23349    This->lpVtbl->SetMarker(This,metadata,data,size);
23350}
23351static inline void ID3D12GraphicsCommandList6_BeginEvent(ID3D12GraphicsCommandList6* This,UINT metadata,const void *data,UINT size) {
23352    This->lpVtbl->BeginEvent(This,metadata,data,size);
23353}
23354static inline void ID3D12GraphicsCommandList6_EndEvent(ID3D12GraphicsCommandList6* This) {
23355    This->lpVtbl->EndEvent(This);
23356}
23357static 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 ***/
23361static 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}
23364static 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}
23367static inline void ID3D12GraphicsCommandList6_OMSetDepthBounds(ID3D12GraphicsCommandList6* This,FLOAT min,FLOAT max) {
23368    This->lpVtbl->OMSetDepthBounds(This,min,max);
23369}
23370static 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}
23373static 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}
23376static inline void ID3D12GraphicsCommandList6_SetViewInstanceMask(ID3D12GraphicsCommandList6* This,UINT mask) {
23377    This->lpVtbl->SetViewInstanceMask(This,mask);
23378}
23379/*** ID3D12GraphicsCommandList2 methods ***/
23380static 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 ***/
23384static inline void ID3D12GraphicsCommandList6_SetProtectedResourceSession(ID3D12GraphicsCommandList6* This,ID3D12ProtectedResourceSession *protected_resource_session) {
23385    This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
23386}
23387/*** ID3D12GraphicsCommandList4 methods ***/
23388static 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}
23391static inline void ID3D12GraphicsCommandList6_EndRenderPass(ID3D12GraphicsCommandList6* This) {
23392    This->lpVtbl->EndRenderPass(This);
23393}
23394static 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}
23397static 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}
23400static 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}
23403static 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}
23406static 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}
23409static inline void ID3D12GraphicsCommandList6_SetPipelineState1(ID3D12GraphicsCommandList6* This,ID3D12StateObject *state_object) {
23410    This->lpVtbl->SetPipelineState1(This,state_object);
23411}
23412static inline void ID3D12GraphicsCommandList6_DispatchRays(ID3D12GraphicsCommandList6* This,const D3D12_DISPATCH_RAYS_DESC *desc) {
23413    This->lpVtbl->DispatchRays(This,desc);
23414}
23415/*** ID3D12GraphicsCommandList5 methods ***/
23416static 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}
23419static inline void ID3D12GraphicsCommandList6_RSSetShadingRateImage(ID3D12GraphicsCommandList6* This,ID3D12Resource *shading_rate_image) {
23420    This->lpVtbl->RSSetShadingRateImage(This,shading_rate_image);
23421}
23422/*** ID3D12GraphicsCommandList6 methods ***/
23423static 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
23440DEFINE_GUID(IID_ID3D12GraphicsCommandList7, 0xdd171223, 0x8b61, 0x4769, 0x90,0xe3, 0x16,0x0c,0xcd,0xe4,0xe2,0xc1);
23441#if defined(__cplusplus) && !defined(CINTERFACE)
23442MIDL_INTERFACE("dd171223-8b61-4769-90e3-160ccde4e2c1")
23443ID3D12GraphicsCommandList7 : 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
23454typedef 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
23936interface 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 ***/
24037static inline HRESULT ID3D12GraphicsCommandList7_QueryInterface(ID3D12GraphicsCommandList7* This,REFIID riid,void **ppvObject) {
24038    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
24039}
24040static inline ULONG ID3D12GraphicsCommandList7_AddRef(ID3D12GraphicsCommandList7* This) {
24041    return This->lpVtbl->AddRef(This);
24042}
24043static inline ULONG ID3D12GraphicsCommandList7_Release(ID3D12GraphicsCommandList7* This) {
24044    return This->lpVtbl->Release(This);
24045}
24046/*** ID3D12Object methods ***/
24047static inline HRESULT ID3D12GraphicsCommandList7_GetPrivateData(ID3D12GraphicsCommandList7* This,REFGUID guid,UINT *data_size,void *data) {
24048    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
24049}
24050static 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}
24053static inline HRESULT ID3D12GraphicsCommandList7_SetPrivateDataInterface(ID3D12GraphicsCommandList7* This,REFGUID guid,const IUnknown *data) {
24054    return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
24055}
24056static inline HRESULT ID3D12GraphicsCommandList7_SetName(ID3D12GraphicsCommandList7* This,const WCHAR *name) {
24057    return This->lpVtbl->SetName(This,name);
24058}
24059/*** ID3D12DeviceChild methods ***/
24060static inline HRESULT ID3D12GraphicsCommandList7_GetDevice(ID3D12GraphicsCommandList7* This,REFIID riid,void **device) {
24061    return This->lpVtbl->GetDevice(This,riid,device);
24062}
24063/*** ID3D12CommandList methods ***/
24064static inline D3D12_COMMAND_LIST_TYPE ID3D12GraphicsCommandList7_GetType(ID3D12GraphicsCommandList7* This) {
24065    return This->lpVtbl->GetType(This);
24066}
24067/*** ID3D12GraphicsCommandList methods ***/
24068static inline HRESULT ID3D12GraphicsCommandList7_Close(ID3D12GraphicsCommandList7* This) {
24069    return This->lpVtbl->Close(This);
24070}
24071static inline HRESULT ID3D12GraphicsCommandList7_Reset(ID3D12GraphicsCommandList7* This,ID3D12CommandAllocator *allocator,ID3D12PipelineState *initial_state) {
24072    return This->lpVtbl->Reset(This,allocator,initial_state);
24073}
24074static inline void ID3D12GraphicsCommandList7_ClearState(ID3D12GraphicsCommandList7* This,ID3D12PipelineState *pipeline_state) {
24075    This->lpVtbl->ClearState(This,pipeline_state);
24076}
24077static 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}
24080static 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}
24083static inline void ID3D12GraphicsCommandList7_Dispatch(ID3D12GraphicsCommandList7* This,UINT x,UINT u,UINT z) {
24084    This->lpVtbl->Dispatch(This,x,u,z);
24085}
24086static 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}
24089static 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}
24092static inline void ID3D12GraphicsCommandList7_CopyResource(ID3D12GraphicsCommandList7* This,ID3D12Resource *dst_resource,ID3D12Resource *src_resource) {
24093    This->lpVtbl->CopyResource(This,dst_resource,src_resource);
24094}
24095static 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}
24098static 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}
24101static inline void ID3D12GraphicsCommandList7_IASetPrimitiveTopology(ID3D12GraphicsCommandList7* This,D3D12_PRIMITIVE_TOPOLOGY primitive_topology) {
24102    This->lpVtbl->IASetPrimitiveTopology(This,primitive_topology);
24103}
24104static inline void ID3D12GraphicsCommandList7_RSSetViewports(ID3D12GraphicsCommandList7* This,UINT viewport_count,const D3D12_VIEWPORT *viewports) {
24105    This->lpVtbl->RSSetViewports(This,viewport_count,viewports);
24106}
24107static inline void ID3D12GraphicsCommandList7_RSSetScissorRects(ID3D12GraphicsCommandList7* This,UINT rect_count,const D3D12_RECT *rects) {
24108    This->lpVtbl->RSSetScissorRects(This,rect_count,rects);
24109}
24110static inline void ID3D12GraphicsCommandList7_OMSetBlendFactor(ID3D12GraphicsCommandList7* This,const FLOAT blend_factor[4]) {
24111    This->lpVtbl->OMSetBlendFactor(This,blend_factor);
24112}
24113static inline void ID3D12GraphicsCommandList7_OMSetStencilRef(ID3D12GraphicsCommandList7* This,UINT stencil_ref) {
24114    This->lpVtbl->OMSetStencilRef(This,stencil_ref);
24115}
24116static inline void ID3D12GraphicsCommandList7_SetPipelineState(ID3D12GraphicsCommandList7* This,ID3D12PipelineState *pipeline_state) {
24117    This->lpVtbl->SetPipelineState(This,pipeline_state);
24118}
24119static inline void ID3D12GraphicsCommandList7_ResourceBarrier(ID3D12GraphicsCommandList7* This,UINT barrier_count,const D3D12_RESOURCE_BARRIER *barriers) {
24120    This->lpVtbl->ResourceBarrier(This,barrier_count,barriers);
24121}
24122static inline void ID3D12GraphicsCommandList7_ExecuteBundle(ID3D12GraphicsCommandList7* This,ID3D12GraphicsCommandList *command_list) {
24123    This->lpVtbl->ExecuteBundle(This,command_list);
24124}
24125static inline void ID3D12GraphicsCommandList7_SetDescriptorHeaps(ID3D12GraphicsCommandList7* This,UINT heap_count,ID3D12DescriptorHeap *const *heaps) {
24126    This->lpVtbl->SetDescriptorHeaps(This,heap_count,heaps);
24127}
24128static inline void ID3D12GraphicsCommandList7_SetComputeRootSignature(ID3D12GraphicsCommandList7* This,ID3D12RootSignature *root_signature) {
24129    This->lpVtbl->SetComputeRootSignature(This,root_signature);
24130}
24131static inline void ID3D12GraphicsCommandList7_SetGraphicsRootSignature(ID3D12GraphicsCommandList7* This,ID3D12RootSignature *root_signature) {
24132    This->lpVtbl->SetGraphicsRootSignature(This,root_signature);
24133}
24134static 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}
24137static 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}
24140static 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}
24143static 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}
24146static 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}
24149static 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}
24152static 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}
24155static 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}
24158static 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}
24161static 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}
24164static 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}
24167static 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}
24170static inline void ID3D12GraphicsCommandList7_IASetIndexBuffer(ID3D12GraphicsCommandList7* This,const D3D12_INDEX_BUFFER_VIEW *view) {
24171    This->lpVtbl->IASetIndexBuffer(This,view);
24172}
24173static 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}
24176static 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}
24179static 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}
24182static 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}
24185static 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}
24188static 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}
24191static 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}
24194static inline void ID3D12GraphicsCommandList7_DiscardResource(ID3D12GraphicsCommandList7* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
24195    This->lpVtbl->DiscardResource(This,resource,region);
24196}
24197static inline void ID3D12GraphicsCommandList7_BeginQuery(ID3D12GraphicsCommandList7* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
24198    This->lpVtbl->BeginQuery(This,heap,type,index);
24199}
24200static inline void ID3D12GraphicsCommandList7_EndQuery(ID3D12GraphicsCommandList7* This,ID3D12QueryHeap *heap,D3D12_QUERY_TYPE type,UINT index) {
24201    This->lpVtbl->EndQuery(This,heap,type,index);
24202}
24203static 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}
24206static 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}
24209static inline void ID3D12GraphicsCommandList7_SetMarker(ID3D12GraphicsCommandList7* This,UINT metadata,const void *data,UINT size) {
24210    This->lpVtbl->SetMarker(This,metadata,data,size);
24211}
24212static inline void ID3D12GraphicsCommandList7_BeginEvent(ID3D12GraphicsCommandList7* This,UINT metadata,const void *data,UINT size) {
24213    This->lpVtbl->BeginEvent(This,metadata,data,size);
24214}
24215static inline void ID3D12GraphicsCommandList7_EndEvent(ID3D12GraphicsCommandList7* This) {
24216    This->lpVtbl->EndEvent(This);
24217}
24218static 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 ***/
24222static 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}
24225static 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}
24228static inline void ID3D12GraphicsCommandList7_OMSetDepthBounds(ID3D12GraphicsCommandList7* This,FLOAT min,FLOAT max) {
24229    This->lpVtbl->OMSetDepthBounds(This,min,max);
24230}
24231static 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}
24234static 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}
24237static inline void ID3D12GraphicsCommandList7_SetViewInstanceMask(ID3D12GraphicsCommandList7* This,UINT mask) {
24238    This->lpVtbl->SetViewInstanceMask(This,mask);
24239}
24240/*** ID3D12GraphicsCommandList2 methods ***/
24241static 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 ***/
24245static inline void ID3D12GraphicsCommandList7_SetProtectedResourceSession(ID3D12GraphicsCommandList7* This,ID3D12ProtectedResourceSession *protected_resource_session) {
24246    This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
24247}
24248/*** ID3D12GraphicsCommandList4 methods ***/
24249static 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}
24252static inline void ID3D12GraphicsCommandList7_EndRenderPass(ID3D12GraphicsCommandList7* This) {
24253    This->lpVtbl->EndRenderPass(This);
24254}
24255static 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}
24258static 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}
24261static 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}
24264static 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}
24267static 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}
24270static inline void ID3D12GraphicsCommandList7_SetPipelineState1(ID3D12GraphicsCommandList7* This,ID3D12StateObject *state_object) {
24271    This->lpVtbl->SetPipelineState1(This,state_object);
24272}
24273static inline void ID3D12GraphicsCommandList7_DispatchRays(ID3D12GraphicsCommandList7* This,const D3D12_DISPATCH_RAYS_DESC *desc) {
24274    This->lpVtbl->DispatchRays(This,desc);
24275}
24276/*** ID3D12GraphicsCommandList5 methods ***/
24277static 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}
24280static inline void ID3D12GraphicsCommandList7_RSSetShadingRateImage(ID3D12GraphicsCommandList7* This,ID3D12Resource *shading_rate_image) {
24281    This->lpVtbl->RSSetShadingRateImage(This,shading_rate_image);
24282}
24283/*** ID3D12GraphicsCommandList6 methods ***/
24284static 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 ***/
24288static 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
24302typedef HRESULT (__stdcall *PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(const void *data,SIZE_T data_size,REFIID iid,void **deserializer);
24303HRESULT __stdcall  D3D12CreateRootSignatureDeserializer(const void *data,SIZE_T data_size,REFIID iid,void **deserializer);
24304
24305typedef HRESULT (__stdcall *PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(const void *data,SIZE_T data_size,REFIID iid,void **deserializer);
24306HRESULT __stdcall  D3D12CreateVersionedRootSignatureDeserializer(const void *data,SIZE_T data_size,REFIID iid,void **deserializer);
24307
24308typedef 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);
24309HRESULT __stdcall  D3D12SerializeRootSignature(const D3D12_ROOT_SIGNATURE_DESC *root_signature_desc,D3D_ROOT_SIGNATURE_VERSION version,ID3DBlob **blob,ID3DBlob **error_blob);
24310
24311typedef HRESULT (__stdcall *PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc,ID3DBlob **blob,ID3DBlob **error_blob);
24312HRESULT __stdcall  D3D12SerializeVersionedRootSignature(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *root_signature_desc,ID3DBlob **blob,ID3DBlob **error_blob);
24313
24314typedef HRESULT (__stdcall *PFN_D3D12_CREATE_DEVICE)(IUnknown *adapter,D3D_FEATURE_LEVEL minimum_feature_level,REFIID iid,void **device);
24315HRESULT __stdcall  D3D12CreateDevice(IUnknown *adapter,D3D_FEATURE_LEVEL minimum_feature_level,REFIID iid,void **device);
24316
24317typedef HRESULT (__stdcall *PFN_D3D12_GET_DEBUG_INTERFACE)(REFIID iid,void **debug);
24318HRESULT __stdcall  D3D12GetDebugInterface(REFIID iid,void **debug);
24319
24320HRESULT __stdcall  D3D12EnableExperimentalFeatures(UINT feature_count,const IID *iids,void *configurations,UINT *configurations_sizes);
24321
24322static const UUID D3D12ExperimentalShaderModels = { 0x76f5573e, 0xf13a, 0x40f5, { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f } };
24323static const UUID D3D12TiledResourceTier4 = { 0xc9c4725f, 0xa81a, 0x4f56, { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb } };
24324static const UUID D3D12MetaCommand = { 0xc734c97e, 0x8077, 0x48c8, { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77 } };
24325typedef HRESULT (__stdcall *PFN_D3D12_GET_INTERFACE)(REFCLSID clsid,REFIID iid,void **debug);
24326HRESULT __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__ */