Browse Source

d3d12: Generate Xbox C macros, adjust SDL_Render files accordingly

Ethan Lee 8 months ago
parent
commit
15bfef57cd

+ 99 - 95
src/render/direct3d12/SDL_render_d3d12.c

@@ -435,7 +435,7 @@ static void D3D12_ReleaseAll(SDL_Renderer *renderer)
         /* Check for any leaks if in debug mode */
         if (data->dxgiDebug) {
             DXGI_DEBUG_RLO_FLAGS rloFlags = (DXGI_DEBUG_RLO_FLAGS)(DXGI_DEBUG_RLO_DETAIL | DXGI_DEBUG_RLO_IGNORE_INTERNAL);
-            D3D_CALL(data->dxgiDebug, ReportLiveObjects, SDL_DXGI_DEBUG_ALL, rloFlags);
+            IDXGIDebug_ReportLiveObjects(data->dxgiDebug, SDL_DXGI_DEBUG_ALL, rloFlags);
             D3D_SAFE_RELEASE(data->dxgiDebug);
         }
 #endif
@@ -473,9 +473,9 @@ static D3D12_GPU_DESCRIPTOR_HANDLE D3D12_CPUtoGPUHandle(ID3D12DescriptorHeap *he
 static void D3D12_WaitForGPU(D3D12_RenderData *data)
 {
     if (data->commandQueue && data->fence && data->fenceEvent) {
-        D3D_CALL(data->commandQueue, Signal, data->fence, data->fenceValue);
-        if (D3D_CALL(data->fence, GetCompletedValue) < data->fenceValue) {
-            D3D_CALL(data->fence, SetEventOnCompletion,
+        ID3D12CommandQueue_Signal(data->commandQueue, data->fence, data->fenceValue);
+        if (ID3D12Fence_GetCompletedValue(data->fence) < data->fenceValue) {
+            ID3D12Fence_SetEventOnCompletion(data->fence,
                      data->fenceValue,
                      data->fenceEvent);
             WaitForSingleObjectEx(data->fenceEvent, INFINITE, FALSE);
@@ -515,7 +515,7 @@ static void D3D12_TransitionResource(D3D12_RenderData *data,
         barrier.Transition.StateAfter = afterState;
         barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
 
-        D3D_CALL(data->commandList, ResourceBarrier, 1, &barrier);
+        ID3D12GraphicsCommandList2_ResourceBarrier(data->commandList, 1, &barrier);
     }
 }
 
@@ -525,8 +525,8 @@ static void D3D12_ResetCommandList(D3D12_RenderData *data)
     ID3D12DescriptorHeap *rootDescriptorHeaps[] = { data->srvDescriptorHeap, data->samplerDescriptorHeap };
     ID3D12CommandAllocator *commandAllocator = data->commandAllocators[data->currentBackBufferIndex];
 
-    D3D_CALL(commandAllocator, Reset);
-    D3D_CALL(data->commandList, Reset, commandAllocator, NULL);
+    ID3D12CommandAllocator_Reset(commandAllocator);
+    ID3D12GraphicsCommandList2_Reset(data->commandList, commandAllocator, NULL);
     data->currentPipelineState = NULL;
     data->currentVertexBuffer = 0;
     data->issueBatch = SDL_FALSE;
@@ -541,7 +541,7 @@ static void D3D12_ResetCommandList(D3D12_RenderData *data)
     }
     data->currentUploadBuffer = 0;
 
-    D3D_CALL(data->commandList, SetDescriptorHeaps, 2, rootDescriptorHeaps);
+    ID3D12GraphicsCommandList2_SetDescriptorHeaps(data->commandList, 2, rootDescriptorHeaps);
 }
 
 static int D3D12_IssueBatch(D3D12_RenderData *data)
@@ -549,12 +549,12 @@ static int D3D12_IssueBatch(D3D12_RenderData *data)
     HRESULT result = S_OK;
 
     /* Issue the command list */
-    result = D3D_CALL(data->commandList, Close);
+    result = ID3D12GraphicsCommandList2_Close(data->commandList);
     if (FAILED(result)) {
         WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("D3D12_IssueBatch"), result);
         return result;
     }
-    D3D_CALL(data->commandQueue, ExecuteCommandLists, 1, (ID3D12CommandList *const *)&data->commandList);
+    ID3D12CommandQueue_ExecuteCommandLists(data->commandQueue, 1, (ID3D12CommandList *const *)&data->commandList);
 
     D3D12_WaitForGPU(data);
 
@@ -685,7 +685,7 @@ static D3D12_PipelineState *D3D12_CreatePipelineState(SDL_Renderer *renderer,
     pipelineDesc.SampleDesc.Count = 1;
     pipelineDesc.SampleDesc.Quality = 0;
 
-    result = D3D_CALL(data->d3dDevice, CreateGraphicsPipelineState,
+    result = ID3D12Device1_CreateGraphicsPipelineState(data->d3dDevice,
                       &pipelineDesc,
                       D3D_GUID(SDL_IID_ID3D12PipelineState),
                       (void **)&pipelineState);
@@ -737,7 +737,7 @@ static HRESULT D3D12_CreateVertexBuffer(D3D12_RenderData *data, size_t vbidx, si
     vbufferDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
     vbufferDesc.Flags = D3D12_RESOURCE_FLAG_NONE;
 
-    result = D3D_CALL(data->d3dDevice, CreateCommittedResource,
+    result = ID3D12Device1_CreateCommittedResource(data->d3dDevice,
                       &vbufferHeapProps,
                       D3D12_HEAP_FLAG_NONE,
                       &vbufferDesc,
@@ -751,7 +751,7 @@ static HRESULT D3D12_CreateVertexBuffer(D3D12_RenderData *data, size_t vbidx, si
         return result;
     }
 
-    data->vertexBuffers[vbidx].view.BufferLocation = D3D_CALL(data->vertexBuffers[vbidx].resource, GetGPUVirtualAddress);
+    data->vertexBuffers[vbidx].view.BufferLocation = ID3D12Resource_GetGPUVirtualAddress(data->vertexBuffers[vbidx].resource);
     data->vertexBuffers[vbidx].view.StrideInBytes = sizeof(VertexPositionColor);
     data->vertexBuffers[vbidx].size = size;
 
@@ -835,7 +835,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
             goto done;
         }
         if (SUCCEEDED(D3D12GetDebugInterfaceFunc(D3D_GUID(SDL_IID_ID3D12Debug), (void **)&data->debugInterface))) {
-            D3D_CALL(data->debugInterface, EnableDebugLayer);
+            ID3D12Debug_EnableDebugLayer(data->debugInterface);
         }
     }
 #endif /*!defined(SDL_PLATFORM_XBOXONE) && !defined(SDL_PLATFORM_XBOXSERIES)*/
@@ -871,8 +871,8 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
             goto done;
         }
 
-        D3D_CALL(dxgiInfoQueue, SetBreakOnSeverity, SDL_DXGI_DEBUG_ALL, DXGI_INFO_QUEUE_MESSAGE_SEVERITY_ERROR, TRUE);
-        D3D_CALL(dxgiInfoQueue, SetBreakOnSeverity, SDL_DXGI_DEBUG_ALL, DXGI_INFO_QUEUE_MESSAGE_SEVERITY_CORRUPTION, TRUE);
+        IDXGIInfoQueue_SetBreakOnSeverity(dxgiInfoQueue, SDL_DXGI_DEBUG_ALL, DXGI_INFO_QUEUE_MESSAGE_SEVERITY_ERROR, TRUE);
+        IDXGIInfoQueue_SetBreakOnSeverity(dxgiInfoQueue, SDL_DXGI_DEBUG_ALL, DXGI_INFO_QUEUE_MESSAGE_SEVERITY_CORRUPTION, TRUE);
         D3D_SAFE_RELEASE(dxgiInfoQueue);
 #endif /* __IDXGIInfoQueue_INTERFACE_DEFINED__ */
         creationFlags = DXGI_CREATE_FACTORY_DEBUG;
@@ -885,7 +885,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
     }
 
     /* Prefer a high performance adapter if there are multiple choices */
-    result = D3D_CALL(data->dxgiFactory, EnumAdapterByGpuPreference,
+    result = IDXGIFactory6_EnumAdapterByGpuPreference(data->dxgiFactory,
                       0,
                       DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE,
                       D3D_GUID(SDL_IID_IDXGIAdapter4),
@@ -910,7 +910,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
         D3D12_MESSAGE_SEVERITY severities[] = { D3D12_MESSAGE_SEVERITY_INFO };
         D3D12_INFO_QUEUE_FILTER filter;
 
-        result = D3D_CALL(d3dDevice, QueryInterface, D3D_GUID(SDL_IID_ID3D12InfoQueue), (void **)&infoQueue);
+        result = ID3D12Device1_QueryInterface(d3dDevice, D3D_GUID(SDL_IID_ID3D12InfoQueue), (void **)&infoQueue);
         if (FAILED(result)) {
             WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device to ID3D12InfoQueue"), result);
             goto done;
@@ -919,16 +919,16 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
         SDL_zero(filter);
         filter.DenyList.NumSeverities = 1;
         filter.DenyList.pSeverityList = severities;
-        D3D_CALL(infoQueue, PushStorageFilter, &filter);
+        ID3D12InfoQueue_PushStorageFilter(infoQueue, &filter);
 
-        D3D_CALL(infoQueue, SetBreakOnSeverity, D3D12_MESSAGE_SEVERITY_ERROR, TRUE);
-        D3D_CALL(infoQueue, SetBreakOnSeverity, D3D12_MESSAGE_SEVERITY_CORRUPTION, TRUE);
+        ID3D12InfoQueue_SetBreakOnSeverity(infoQueue, D3D12_MESSAGE_SEVERITY_ERROR, TRUE);
+        ID3D12InfoQueue_SetBreakOnSeverity(infoQueue, D3D12_MESSAGE_SEVERITY_CORRUPTION, TRUE);
 
         D3D_SAFE_RELEASE(infoQueue);
     }
 #endif /*!defined(SDL_PLATFORM_XBOXONE) && !defined(SDL_PLATFORM_XBOXSERIES)*/
 
-    result = D3D_CALL(d3dDevice, QueryInterface, D3D_GUID(SDL_IID_ID3D12Device1), (void **)&data->d3dDevice);
+    result = ID3D12Device_QueryInterface(d3dDevice, D3D_GUID(SDL_IID_ID3D12Device1), (void **)&data->d3dDevice);
     if (FAILED(result)) {
         WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device to ID3D12Device1"), result);
         goto done;
@@ -939,7 +939,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
     queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
     queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
 
-    result = D3D_CALL(data->d3dDevice, CreateCommandQueue,
+    result = ID3D12Device1_CreateCommandQueue(data->d3dDevice,
                       &queueDesc,
                       D3D_GUID(SDL_IID_ID3D12CommandQueue),
                       (void **)&data->commandQueue);
@@ -952,7 +952,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
     SDL_zero(descriptorHeapDesc);
     descriptorHeapDesc.NumDescriptors = SDL_D3D12_NUM_BUFFERS;
     descriptorHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
-    result = D3D_CALL(data->d3dDevice, CreateDescriptorHeap,
+    result = ID3D12Device1_CreateDescriptorHeap(data->d3dDevice,
                       &descriptorHeapDesc,
                       D3D_GUID(SDL_IID_ID3D12DescriptorHeap),
                       (void **)&data->rtvDescriptorHeap);
@@ -960,10 +960,10 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
         WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateDescriptorHeap [rtv]"), result);
         goto done;
     }
-    data->rtvDescriptorSize = D3D_CALL(d3dDevice, GetDescriptorHandleIncrementSize, D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
+    data->rtvDescriptorSize = ID3D12Device1_GetDescriptorHandleIncrementSize(d3dDevice, D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
 
     descriptorHeapDesc.NumDescriptors = SDL_D3D12_MAX_NUM_TEXTURES;
-    result = D3D_CALL(data->d3dDevice, CreateDescriptorHeap,
+    result = ID3D12Device1_CreateDescriptorHeap(data->d3dDevice,
                       &descriptorHeapDesc,
                       D3D_GUID(SDL_IID_ID3D12DescriptorHeap),
                       (void **)&data->textureRTVDescriptorHeap);
@@ -976,7 +976,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
     descriptorHeapDesc.NumDescriptors = SDL_D3D12_MAX_NUM_TEXTURES;
     descriptorHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
     descriptorHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
-    result = D3D_CALL(data->d3dDevice, CreateDescriptorHeap,
+    result = ID3D12Device1_CreateDescriptorHeap(data->d3dDevice,
                       &descriptorHeapDesc,
                       D3D_GUID(SDL_IID_ID3D12DescriptorHeap),
                       (void **)&data->srvDescriptorHeap);
@@ -985,13 +985,13 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
         goto done;
     }
     rootDescriptorHeaps[0] = data->srvDescriptorHeap;
-    data->srvDescriptorSize = D3D_CALL(d3dDevice, GetDescriptorHandleIncrementSize, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
+    data->srvDescriptorSize = ID3D12Device1_GetDescriptorHandleIncrementSize(d3dDevice, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
 
     SDL_zero(descriptorHeapDesc);
     descriptorHeapDesc.NumDescriptors = 4;
     descriptorHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER;
     descriptorHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
-    result = D3D_CALL(data->d3dDevice, CreateDescriptorHeap,
+    result = ID3D12Device1_CreateDescriptorHeap(data->d3dDevice,
                       &descriptorHeapDesc,
                       D3D_GUID(SDL_IID_ID3D12DescriptorHeap),
                       (void **)&data->samplerDescriptorHeap);
@@ -1000,11 +1000,11 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
         goto done;
     }
     rootDescriptorHeaps[1] = data->samplerDescriptorHeap;
-    data->samplerDescriptorSize = D3D_CALL(d3dDevice, GetDescriptorHandleIncrementSize, D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
+    data->samplerDescriptorSize = ID3D12Device1_GetDescriptorHandleIncrementSize(d3dDevice, D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
 
     /* Create a command allocator for each back buffer */
     for (i = 0; i < SDL_D3D12_NUM_BUFFERS; ++i) {
-        result = D3D_CALL(data->d3dDevice, CreateCommandAllocator,
+        result = ID3D12Device1_CreateCommandAllocator(data->d3dDevice,
                           D3D12_COMMAND_LIST_TYPE_DIRECT,
                           D3D_GUID(SDL_IID_ID3D12CommandAllocator),
                           (void **)&data->commandAllocators[i]);
@@ -1015,7 +1015,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
     }
 
     /* Create the command list */
-    result = D3D_CALL(data->d3dDevice, CreateCommandList,
+    result = ID3D12Device1_CreateCommandList(data->d3dDevice,
                       0,
                       D3D12_COMMAND_LIST_TYPE_DIRECT,
                       data->commandAllocators[0],
@@ -1028,10 +1028,10 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
     }
 
     /* Set the descriptor heaps to the correct initial value */
-    D3D_CALL(data->commandList, SetDescriptorHeaps, 2, rootDescriptorHeaps);
+    ID3D12GraphicsCommandList2_SetDescriptorHeaps(data->commandList, 2, rootDescriptorHeaps);
 
     /* Create the fence and fence event */
-    result = D3D_CALL(data->d3dDevice, CreateFence,
+    result = ID3D12Device_CreateFence(data->d3dDevice,
                       data->fenceValue,
                       D3D12_FENCE_FLAG_NONE,
                       D3D_GUID(SDL_IID_ID3D12Fence),
@@ -1053,7 +1053,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
     for (i = 0; i < NUM_ROOTSIGS; ++i) {
         D3D12_SHADER_BYTECODE rootSigData;
         D3D12_GetRootSignatureData((D3D12_RootSignature)i, &rootSigData);
-        result = D3D_CALL(data->d3dDevice, CreateRootSignature,
+        result = ID3D12Device1_CreateRootSignature(data->d3dDevice,
                           0,
                           rootSigData.pShaderBytecode,
                           rootSigData.BytecodeLength,
@@ -1120,7 +1120,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
         samplerDesc.AddressU = samplerParams[i].address;
         samplerDesc.AddressV = samplerParams[i].address;
         data->samplers[i].ptr = data->samplers[0].ptr + i * data->samplerDescriptorSize;
-        D3D_CALL(data->d3dDevice, CreateSampler, &samplerDesc, data->samplers[i]);
+        ID3D12Device1_CreateSampler(data->d3dDevice, &samplerDesc, data->samplers[i]);
     }
 
     /* Initialize the pool allocator for SRVs */
@@ -1258,7 +1258,7 @@ static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
         goto done;
     }
 
-    result = D3D_CALL(data->dxgiFactory, CreateSwapChainForHwnd,
+    result = IDXGIFactory2_CreateSwapChainForHwnd(data->dxgiFactory,
                       (IUnknown *)data->commandQueue,
                       hwnd,
                       &swapChainDesc,
@@ -1270,9 +1270,9 @@ static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
         goto done;
     }
 
-    D3D_CALL(data->dxgiFactory, MakeWindowAssociation, hwnd, DXGI_MWA_NO_WINDOW_CHANGES);
+    IDXGIFactory6_MakeWindowAssociation(data->dxgiFactory, hwnd, DXGI_MWA_NO_WINDOW_CHANGES);
 
-    result = D3D_CALL(swapChain, QueryInterface, D3D_GUID(SDL_IID_IDXGISwapChain4), (void **)&data->swapChain);
+    result = IDXGISwapChain1_QueryInterface(swapChain, D3D_GUID(SDL_IID_IDXGISwapChain4), (void **)&data->swapChain);
     if (FAILED(result)) {
         WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain1::QueryInterface"), result);
         goto done;
@@ -1281,7 +1281,7 @@ static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
     /* Ensure that the swapchain does not queue more than one frame at a time. This both reduces latency
      * and ensures that the application will only render after each VSync, minimizing power consumption.
      */
-    result = D3D_CALL(data->swapChain, SetMaximumFrameLatency, 1);
+    result = IDXGISwapChain4_SetMaximumFrameLatency(data->swapChain, 1);
     if (FAILED(result)) {
         WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain4::SetMaximumFrameLatency"), result);
         goto done;
@@ -1304,9 +1304,9 @@ static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
         colorspace = DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709;
         break;
     }
-    if (SUCCEEDED(D3D_CALL(data->swapChain, CheckColorSpaceSupport, colorspace, &colorspace_support)) &&
+    if (SUCCEEDED(IDXGISwapChain3_CheckColorSpaceSupport(data->swapChain, colorspace, &colorspace_support)) &&
         (colorspace_support & DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT)) {
-        result = D3D_CALL(data->swapChain, SetColorSpace1, colorspace);
+        result = IDXGISwapChain3_SetColorSpace1(data->swapChain, colorspace);
         if (FAILED(result)) {
             WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain3::SetColorSpace1"), result);
             goto done;
@@ -1369,7 +1369,7 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
 
     /* Release resources in the current command list */
     D3D12_IssueBatch(data);
-    D3D_CALL(data->commandList, OMSetRenderTargets, 0, NULL, FALSE, NULL);
+    ID3D12GraphicsCommandList2_OMSetRenderTargets(data->commandList, 0, NULL, FALSE, NULL);
 
     /* Release render targets */
     for (i = 0; i < SDL_D3D12_NUM_BUFFERS; ++i) {
@@ -1390,7 +1390,7 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
 #if !defined(SDL_PLATFORM_XBOXONE) && !defined(SDL_PLATFORM_XBOXSERIES)
     if (data->swapChain) {
         /* If the swap chain already exists, resize it. */
-        result = D3D_CALL(data->swapChain, ResizeBuffers,
+        result = IDXGISwapChain_ResizeBuffers(data->swapChain,
                           0,
                           w, h,
                           DXGI_FORMAT_UNKNOWN,
@@ -1417,7 +1417,7 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
     /* Set the proper rotation for the swap chain. */
     if (WIN_IsWindows8OrGreater()) {
         if (data->swapEffect == DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL) {
-            result = D3D_CALL(data->swapChain, SetRotation, data->rotation); /* NOLINT(clang-analyzer-core.NullDereference) */
+            result = IDXGISwapChain4_SetRotation(data->swapChain, data->rotation); /* NOLINT(clang-analyzer-core.NullDereference) */
             if (FAILED(result)) {
                 WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain4::SetRotation"), result);
                 goto done;
@@ -1435,7 +1435,7 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
             goto done;
         }
 #else
-        result = D3D_CALL(data->swapChain, GetBuffer, /* NOLINT(clang-analyzer-core.NullDereference) */
+        result = IDXGISwapChain4_GetBuffer(data->swapChain, /* NOLINT(clang-analyzer-core.NullDereference) */
                           i,
                           D3D_GUID(SDL_IID_ID3D12Resource),
                           (void **)&data->renderTargets[i]);
@@ -1452,14 +1452,14 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
         SDL_zero(rtvDescriptor);
         D3D_CALL_RET(data->rtvDescriptorHeap, GetCPUDescriptorHandleForHeapStart, &rtvDescriptor);
         rtvDescriptor.ptr += i * data->rtvDescriptorSize;
-        D3D_CALL(data->d3dDevice, CreateRenderTargetView, data->renderTargets[i], &rtvDesc, rtvDescriptor);
+        ID3D12Device1_CreateRenderTargetView(data->d3dDevice, data->renderTargets[i], &rtvDesc, rtvDescriptor);
     }
 
     /* Set back buffer index to current buffer */
 #if defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES)
     data->currentBackBufferIndex = 0;
 #else
-    data->currentBackBufferIndex = D3D_CALL(data->swapChain, GetCurrentBackBufferIndex);
+    data->currentBackBufferIndex = IDXGISwapChain4_GetCurrentBackBufferIndex(data->swapChain);
 #endif
 
     /* Set the swap chain target immediately, so that a target is always set
@@ -1467,7 +1467,7 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
      * null references in places like ReadPixels!
      */
     data->currentRenderTargetView = D3D12_GetCurrentRenderTargetView(renderer);
-    D3D_CALL(data->commandList, OMSetRenderTargets, 1, &data->currentRenderTargetView, FALSE, NULL);
+    ID3D12GraphicsCommandList2_OMSetRenderTargets(data->commandList, 1, &data->currentRenderTargetView, FALSE, NULL);
     D3D12_TransitionResource(data,
                              data->renderTargets[data->currentBackBufferIndex],
                              D3D12_RESOURCE_STATE_PRESENT,
@@ -1543,7 +1543,11 @@ static int GetTextureProperty(SDL_PropertiesID props, const char *name, ID3D12Re
 {
     IUnknown *unknown = (IUnknown*)SDL_GetPointerProperty(props, name, NULL);
     if (unknown) {
-        HRESULT result = D3D_CALL(unknown, QueryInterface, D3D_GUID(SDL_IID_ID3D12Resource), (void **)texture);
+#if defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES)
+        HRESULT result = unknown->QueryInterface(D3D_GUID(SDL_IID_ID3D12Resource), (void **)texture);
+#else
+        HRESULT result = IUnknown_QueryInterface(unknown, D3D_GUID(SDL_IID_ID3D12Resource), (void **)texture);
+#endif
         if (FAILED(result)) {
             return WIN_SetErrorFromHRESULT(name, result);
         }
@@ -1613,7 +1617,7 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
         return -1;
     }
     if (!textureData->mainTexture) {
-        result = D3D_CALL(rendererData->d3dDevice, CreateCommittedResource,
+        result = ID3D12Device1_CreateCommittedResource(rendererData->d3dDevice,
                           &heapProps,
                           D3D12_HEAP_FLAG_NONE,
                           &textureDesc,
@@ -1639,7 +1643,7 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
             return -1;
         }
         if (!textureData->mainTextureU) {
-            result = D3D_CALL(rendererData->d3dDevice, CreateCommittedResource,
+            result = ID3D12Device1_CreateCommittedResource(rendererData->d3dDevice,
                               &heapProps,
                               D3D12_HEAP_FLAG_NONE,
                               &textureDesc,
@@ -1658,7 +1662,7 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
             return -1;
         }
         if (!textureData->mainTextureV) {
-            result = D3D_CALL(rendererData->d3dDevice, CreateCommittedResource,
+            result = ID3D12Device1_CreateCommittedResource(rendererData->d3dDevice,
                               &heapProps,
                               D3D12_HEAP_FLAG_NONE,
                               &textureDesc,
@@ -1710,7 +1714,7 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
     D3D_CALL_RET(rendererData->srvDescriptorHeap, GetCPUDescriptorHandleForHeapStart, &textureData->mainTextureResourceView);
     textureData->mainTextureResourceView.ptr += textureData->mainSRVIndex * rendererData->srvDescriptorSize;
 
-    D3D_CALL(rendererData->d3dDevice, CreateShaderResourceView,
+    ID3D12Device1_CreateShaderResourceView(rendererData->d3dDevice,
              textureData->mainTexture,
              &resourceViewDesc,
              textureData->mainTextureResourceView);
@@ -1719,7 +1723,7 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
         D3D_CALL_RET(rendererData->srvDescriptorHeap, GetCPUDescriptorHandleForHeapStart, &textureData->mainTextureResourceViewU);
         textureData->mainSRVIndexU = D3D12_GetAvailableSRVIndex(renderer);
         textureData->mainTextureResourceViewU.ptr += textureData->mainSRVIndexU * rendererData->srvDescriptorSize;
-        D3D_CALL(rendererData->d3dDevice, CreateShaderResourceView,
+        ID3D12Device1_CreateShaderResourceView(rendererData->d3dDevice,
                  textureData->mainTextureU,
                  &resourceViewDesc,
                  textureData->mainTextureResourceViewU);
@@ -1727,7 +1731,7 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
         D3D_CALL_RET(rendererData->srvDescriptorHeap, GetCPUDescriptorHandleForHeapStart, &textureData->mainTextureResourceViewV);
         textureData->mainSRVIndexV = D3D12_GetAvailableSRVIndex(renderer);
         textureData->mainTextureResourceViewV.ptr += textureData->mainSRVIndexV * rendererData->srvDescriptorSize;
-        D3D_CALL(rendererData->d3dDevice, CreateShaderResourceView,
+        ID3D12Device1_CreateShaderResourceView(rendererData->d3dDevice,
                  textureData->mainTextureV,
                  &resourceViewDesc,
                  textureData->mainTextureResourceViewV);
@@ -1746,7 +1750,7 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
         D3D_CALL_RET(rendererData->srvDescriptorHeap, GetCPUDescriptorHandleForHeapStart, &textureData->mainTextureResourceViewNV);
         textureData->mainSRVIndexNV = D3D12_GetAvailableSRVIndex(renderer);
         textureData->mainTextureResourceViewNV.ptr += textureData->mainSRVIndexNV * rendererData->srvDescriptorSize;
-        D3D_CALL(rendererData->d3dDevice, CreateShaderResourceView,
+        ID3D12Device1_CreateShaderResourceView(rendererData->d3dDevice,
                  textureData->mainTexture,
                  &nvResourceViewDesc,
                  textureData->mainTextureResourceViewNV);
@@ -1763,7 +1767,7 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
         D3D_CALL_RET(rendererData->textureRTVDescriptorHeap, GetCPUDescriptorHandleForHeapStart, &textureData->mainTextureRenderTargetView);
         textureData->mainTextureRenderTargetView.ptr += textureData->mainSRVIndex * rendererData->rtvDescriptorSize;
 
-        D3D_CALL(rendererData->d3dDevice, CreateRenderTargetView,
+        ID3D12Device1_CreateRenderTargetView(rendererData->d3dDevice,
                  (ID3D12Resource *)textureData->mainTexture,
                  &renderTargetViewDesc,
                  textureData->mainTextureRenderTargetView);
@@ -1846,7 +1850,7 @@ static int D3D12_UpdateTextureInternal(D3D12_RenderData *rendererData, ID3D12Res
     uploadDesc.Flags = D3D12_RESOURCE_FLAG_NONE;
 
     /* Figure out how much we need to allocate for the upload buffer */
-    D3D_CALL(rendererData->d3dDevice, GetCopyableFootprints,
+    ID3D12Device1_GetCopyableFootprints(rendererData->d3dDevice,
              &textureDesc,
              plane,
              1,
@@ -1863,7 +1867,7 @@ static int D3D12_UpdateTextureInternal(D3D12_RenderData *rendererData, ID3D12Res
     heapProps.VisibleNodeMask = 1;
 
     /* Create the upload buffer */
-    result = D3D_CALL(rendererData->d3dDevice, CreateCommittedResource,
+    result = ID3D12Device1_CreateCommittedResource(rendererData->d3dDevice,
                       &heapProps,
                       D3D12_HEAP_FLAG_NONE,
                       &uploadDesc,
@@ -1877,7 +1881,7 @@ static int D3D12_UpdateTextureInternal(D3D12_RenderData *rendererData, ID3D12Res
 
     /* Get a write-only pointer to data in the upload buffer: */
     uploadBuffer = rendererData->uploadBuffers[rendererData->currentUploadBuffer];
-    result = D3D_CALL(uploadBuffer, Map,
+    result = ID3D12Resource_Map(uploadBuffer,
                       0,
                       NULL,
                       (void **)&textureMemory);
@@ -1906,7 +1910,7 @@ static int D3D12_UpdateTextureInternal(D3D12_RenderData *rendererData, ID3D12Res
     }
 
     /* Commit the changes back to the upload buffer: */
-    D3D_CALL(uploadBuffer, Unmap, 0, NULL);
+    ID3D12Resource_Unmap(uploadBuffer, 0, NULL);
 
     /* Make sure the destination is in the correct resource state */
     D3D12_TransitionResource(rendererData, texture, *resourceState, D3D12_RESOURCE_STATE_COPY_DEST);
@@ -1922,7 +1926,7 @@ static int D3D12_UpdateTextureInternal(D3D12_RenderData *rendererData, ID3D12Res
     srcLocation.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
     srcLocation.PlacedFootprint = placedTextureDesc;
 
-    D3D_CALL(rendererData->commandList, CopyTextureRegion,
+    ID3D12GraphicsCommandList2_CopyTextureRegion(rendererData->commandList,
              &dstLocation,
              x,
              y,
@@ -2097,7 +2101,7 @@ static int D3D12_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture,
     uploadDesc.Flags = D3D12_RESOURCE_FLAG_NONE;
 
     /* Figure out how much we need to allocate for the upload buffer */
-    D3D_CALL(rendererData->d3dDevice, GetCopyableFootprints,
+    ID3D12Device1_GetCopyableFootprints(rendererData->d3dDevice,
              &textureDesc,
              0,
              1,
@@ -2113,7 +2117,7 @@ static int D3D12_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture,
     heapProps.VisibleNodeMask = 1;
 
     /* Create the upload buffer */
-    result = D3D_CALL(rendererData->d3dDevice, CreateCommittedResource,
+    result = ID3D12Device1_CreateCommittedResource(rendererData->d3dDevice,
                       &heapProps,
                       D3D12_HEAP_FLAG_NONE,
                       &uploadDesc,
@@ -2126,7 +2130,7 @@ static int D3D12_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture,
     }
 
     /* Get a write-only pointer to data in the upload buffer: */
-    result = D3D_CALL(textureData->stagingBuffer, Map,
+    result = ID3D12Resource_Map(textureData->stagingBuffer,
                       0,
                       NULL,
                       (void **)&textureMemory);
@@ -2186,7 +2190,7 @@ static void D3D12_UnlockTexture(SDL_Renderer *renderer, SDL_Texture *texture)
     }
 #endif
     /* Commit the pixel buffer's changes back to the staging texture: */
-    D3D_CALL(textureData->stagingBuffer, Unmap, 0, NULL);
+    ID3D12Resource_Unmap(textureData->stagingBuffer, 0, NULL);
 
     SDL_zero(textureDesc);
     D3D_CALL_RET(textureData->mainTexture, GetDesc, &textureDesc);
@@ -2222,7 +2226,7 @@ static void D3D12_UnlockTexture(SDL_Renderer *renderer, SDL_Texture *texture)
     srcLocation.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
     srcLocation.PlacedFootprint = placedTextureDesc;
 
-    D3D_CALL(rendererData->commandList, CopyTextureRegion,
+    ID3D12GraphicsCommandList2_CopyTextureRegion(rendererData->commandList,
              &dstLocation,
              textureData->lockedRect.x,
              textureData->lockedRect.y,
@@ -2403,16 +2407,16 @@ static int D3D12_UpdateVertexBuffer(SDL_Renderer *renderer,
     }
 
     vertexBuffer = rendererData->vertexBuffers[vbidx].resource;
-    result = D3D_CALL(vertexBuffer, Map, 0, &range, (void **)&vertexBufferData);
+    result = ID3D12Resource_Map(vertexBuffer, 0, &range, (void **)&vertexBufferData);
     if (FAILED(result)) {
         return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Resource::Map [vertex buffer]"), result);
     }
     SDL_memcpy(vertexBufferData, vertexData, dataSizeInBytes);
-    D3D_CALL(vertexBuffer, Unmap, 0, NULL);
+    ID3D12Resource_Unmap(vertexBuffer, 0, NULL);
 
     rendererData->vertexBuffers[vbidx].view.SizeInBytes = (UINT)dataSizeInBytes;
 
-    D3D_CALL(rendererData->commandList, IASetVertexBuffers, 0, 1, &rendererData->vertexBuffers[vbidx].view);
+    ID3D12GraphicsCommandList2_IASetVertexBuffers(rendererData->commandList, 0, 1, &rendererData->vertexBuffers[vbidx].view);
 
     rendererData->currentVertexBuffer++;
     if (rendererData->currentVertexBuffer >= SDL_D3D12_NUM_VERTEX_BUFFERS) {
@@ -2507,7 +2511,7 @@ static int D3D12_UpdateViewport(SDL_Renderer *renderer)
     d3dviewport.MinDepth = 0.0f;
     d3dviewport.MaxDepth = 1.0f;
     /* SDL_Log("%s: D3D viewport = {%f,%f,%f,%f}\n", __FUNCTION__, d3dviewport.TopLeftX, d3dviewport.TopLeftY, d3dviewport.Width, d3dviewport.Height); */
-    D3D_CALL(data->commandList, RSSetViewports, 1, &d3dviewport);
+    ID3D12GraphicsCommandList_RSSetViewports(data->commandList, 1, &d3dviewport);
 
     data->viewportDirty = SDL_FALSE;
 
@@ -2632,8 +2636,8 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
             return -1;
         }
 
-        D3D_CALL(rendererData->commandList, SetPipelineState, currentPipelineState->pipelineState);
-        D3D_CALL(rendererData->commandList, SetGraphicsRootSignature,
+        ID3D12GraphicsCommandList2_SetPipelineState(rendererData->commandList, currentPipelineState->pipelineState);
+        ID3D12GraphicsCommandList2_SetGraphicsRootSignature(rendererData->commandList,
                  rendererData->rootSignatures[D3D12_GetRootSignatureType(currentPipelineState->shader)]);
         /* When we change these we will need to re-upload the constant buffer and reset any descriptors */
         updateSubresource = SDL_TRUE;
@@ -2643,7 +2647,7 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
     }
 
     if (renderTargetView.ptr != rendererData->currentRenderTargetView.ptr) {
-        D3D_CALL(rendererData->commandList, OMSetRenderTargets, 1, &renderTargetView, FALSE, NULL);
+        ID3D12GraphicsCommandList2_OMSetRenderTargets(rendererData->commandList, 1, &renderTargetView, FALSE, NULL);
         rendererData->currentRenderTargetView = renderTargetView;
     }
 
@@ -2660,7 +2664,7 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
             /* D3D12_GetViewportAlignedD3DRect will have set the SDL error */
             return -1;
         }
-        D3D_CALL(rendererData->commandList, RSSetScissorRects, 1, &scissorRect);
+        ID3D12GraphicsCommandList2_RSSetScissorRects(rendererData->commandList, 1, &scissorRect);
         rendererData->cliprectDirty = SDL_FALSE;
     }
 
@@ -2672,7 +2676,7 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
     if (firstShaderResource.ptr != rendererData->currentShaderResource.ptr) {
         for (i = 0; i < numShaderResources; ++i) {
             D3D12_GPU_DESCRIPTOR_HANDLE GPUHandle = D3D12_CPUtoGPUHandle(rendererData->srvDescriptorHeap, shaderResources[i]);
-            D3D_CALL(rendererData->commandList, SetGraphicsRootDescriptorTable, i + 2, GPUHandle);
+            ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(rendererData->commandList, i + 2, GPUHandle);
         }
         rendererData->currentShaderResource.ptr = firstShaderResource.ptr;
     }
@@ -2694,13 +2698,13 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
             break;
         }
 
-        D3D_CALL(rendererData->commandList, SetGraphicsRootDescriptorTable, tableIndex, GPUHandle);
+        ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(rendererData->commandList, tableIndex, GPUHandle);
         rendererData->currentSampler = *sampler;
     }
 
     if (updateSubresource == SDL_TRUE || SDL_memcmp(&rendererData->vertexShaderConstantsData.model, newmatrix, sizeof(*newmatrix)) != 0) {
         SDL_memcpy(&rendererData->vertexShaderConstantsData.model, newmatrix, sizeof(*newmatrix));
-        D3D_CALL(rendererData->commandList, SetGraphicsRoot32BitConstants,
+        ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(rendererData->commandList,
                  0,
                  32,
                  &rendererData->vertexShaderConstantsData,
@@ -2714,7 +2718,7 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 
     if (updateSubresource == SDL_TRUE ||
         SDL_memcmp(shader_constants, &currentPipelineState->shader_constants, sizeof(*shader_constants)) != 0) {
-        D3D_CALL(rendererData->commandList, SetGraphicsRoot32BitConstants,
+        ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(rendererData->commandList,
                  1,
                  sizeof(*shader_constants) / sizeof(float),
                  shader_constants,
@@ -2802,8 +2806,8 @@ static int D3D12_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 static void D3D12_DrawPrimitives(SDL_Renderer *renderer, D3D12_PRIMITIVE_TOPOLOGY primitiveTopology, const size_t vertexStart, const size_t vertexCount)
 {
     D3D12_RenderData *rendererData = (D3D12_RenderData *)renderer->internal;
-    D3D_CALL(rendererData->commandList, IASetPrimitiveTopology, primitiveTopology);
-    D3D_CALL(rendererData->commandList, DrawInstanced, (UINT)vertexCount, 1, (UINT)vertexStart, 0);
+    ID3D12GraphicsCommandList2_IASetPrimitiveTopology(rendererData->commandList, primitiveTopology);
+    ID3D12GraphicsCommandList2_DrawInstanced(rendererData->commandList, (UINT)vertexCount, 1, (UINT)vertexStart, 0);
 }
 
 static void D3D12_InvalidateCachedState(SDL_Renderer *renderer)
@@ -2888,7 +2892,7 @@ static int D3D12_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
             color.r *= cmd->data.color.color_scale;
             color.g *= cmd->data.color.color_scale;
             color.b *= cmd->data.color.color_scale;
-            D3D_CALL(rendererData->commandList, ClearRenderTargetView, rtvDescriptor, &color.r, 0, NULL);
+            ID3D12GraphicsCommandList2_ClearRenderTargetView(rendererData->commandList, rtvDescriptor, &color.r, 0, NULL);
             break;
         }
 
@@ -2996,7 +3000,7 @@ static SDL_Surface *D3D12_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
     readbackDesc.Flags = D3D12_RESOURCE_FLAG_NONE;
 
     /* Figure out how much we need to allocate for the upload buffer */
-    D3D_CALL(data->d3dDevice, GetCopyableFootprints,
+    ID3D12Device1_GetCopyableFootprints(data->d3dDevice,
              &textureDesc,
              0,
              1,
@@ -3011,7 +3015,7 @@ static SDL_Surface *D3D12_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
     heapProps.CreationNodeMask = 1;
     heapProps.VisibleNodeMask = 1;
 
-    result = D3D_CALL(data->d3dDevice, CreateCommittedResource,
+    result = ID3D12Device1_CreateCommittedResource(data->d3dDevice,
                       &heapProps,
                       D3D12_HEAP_FLAG_NONE,
                       &readbackDesc,
@@ -3062,7 +3066,7 @@ static SDL_Surface *D3D12_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
     srcLocation.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
     srcLocation.SubresourceIndex = 0;
 
-    D3D_CALL(data->commandList, CopyTextureRegion,
+    ID3D12GraphicsCommandList2_CopyTextureRegion(data->commandList,
              &dstLocation,
              0, 0, 0,
              &srcLocation,
@@ -3075,7 +3079,7 @@ static SDL_Surface *D3D12_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
     D3D12_TransitionResource(data, backBuffer, D3D12_RESOURCE_STATE_COPY_SOURCE, D3D12_RESOURCE_STATE_RENDER_TARGET);
 
     /* Map the staging texture's data to CPU-accessible memory: */
-    result = D3D_CALL(readbackBuffer, Map,
+    result = ID3D12Resource_Map(readbackBuffer,
                       0,
                       NULL,
                       (void **)&textureMemory);
@@ -3092,7 +3096,7 @@ static SDL_Surface *D3D12_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
         pitchedDesc.RowPitch);
 
     /* Unmap the texture: */
-    D3D_CALL(readbackBuffer, Unmap, 0, NULL);
+    ID3D12Resource_Unmap(readbackBuffer, 0, NULL);
 
 done:
     D3D_SAFE_RELEASE(readbackBuffer);
@@ -3111,8 +3115,8 @@ static int D3D12_RenderPresent(SDL_Renderer *renderer)
                              D3D12_RESOURCE_STATE_PRESENT);
 
     /* Issue the command list */
-    result = D3D_CALL(data->commandList, Close);
-    D3D_CALL(data->commandQueue, ExecuteCommandLists, 1, (ID3D12CommandList *const *)&data->commandList);
+    result = ID3D12GraphicsCommandList2_Close(data->commandList);
+    ID3D12CommandQueue_ExecuteCommandLists(data->commandQueue, 1, (ID3D12CommandList *const *)&data->commandList);
 
 #if defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES)
     result = D3D12_XBOX_PresentFrame(data->commandQueue, data->frameToken, data->renderTargets[data->currentBackBufferIndex]);
@@ -3120,7 +3124,7 @@ static int D3D12_RenderPresent(SDL_Renderer *renderer)
     /* The application may optionally specify "dirty" or "scroll"
      * rects to improve efficiency in certain scenarios.
      */
-    result = D3D_CALL(data->swapChain, Present, data->syncInterval, data->presentFlags);
+    result = IDXGISwapChain_Present(data->swapChain, data->syncInterval, data->presentFlags);
 #endif
 
     if (FAILED(result) && result != DXGI_ERROR_WAS_STILL_DRAWING) {
@@ -3138,10 +3142,10 @@ static int D3D12_RenderPresent(SDL_Renderer *renderer)
         return -1;
     } else {
         /* Wait for the GPU and move to the next frame */
-        result = D3D_CALL(data->commandQueue, Signal, data->fence, data->fenceValue);
+        result = ID3D12CommandQueue_Signal(data->commandQueue, data->fence, data->fenceValue);
 
-        if (D3D_CALL(data->fence, GetCompletedValue) < data->fenceValue) {
-            result = D3D_CALL(data->fence, SetEventOnCompletion,
+        if (ID3D12Fence_GetCompletedValue(data->fence) < data->fenceValue) {
+            result = ID3D12Fence_SetEventOnCompletion(data->fence,
                               data->fenceValue,
                               data->fenceEvent);
             WaitForSingleObjectEx(data->fenceEvent, INFINITE, FALSE);
@@ -3152,7 +3156,7 @@ static int D3D12_RenderPresent(SDL_Renderer *renderer)
         data->currentBackBufferIndex++;
         data->currentBackBufferIndex %= SDL_D3D12_NUM_BUFFERS;
 #else
-        data->currentBackBufferIndex = D3D_CALL(data->swapChain, GetCurrentBackBufferIndex);
+        data->currentBackBufferIndex = IDXGISwapChain4_GetCurrentBackBufferIndex(data->swapChain);
 #endif
 
         /* Reset the command allocator and command list, and transition back to render target */

+ 1 - 1
src/render/direct3d12/SDL_shaders_d3d12_xboxone.cpp

@@ -25,7 +25,7 @@
 #include <SDL3/SDL_stdinc.h>
 
 #include "../../core/windows/SDL_windows.h"
-#include <d3d12_x.h>
+#include "../../video/directx/SDL_d3d12.h"
 
 #include "SDL_shaders_d3d12.h"
 

+ 1 - 1
src/render/direct3d12/SDL_shaders_d3d12_xboxseries.cpp

@@ -25,7 +25,7 @@
 #include <SDL3/SDL_stdinc.h>
 
 #include "../../core/windows/SDL_windows.h"
-#include <d3d12_xs.h>
+#include "../../video/directx/SDL_d3d12.h"
 
 #include "SDL_shaders_d3d12.h"
 

+ 9 - 4
src/video/directx/SDL_d3d12.h

@@ -50,8 +50,9 @@
         X = NULL;                \
     }
 
-/* FIXME: Remove this in favor of the COBJMACROS defines */
-#define D3D_CALL(THIS, FUNC, ...)     (THIS)->lpVtbl->FUNC((THIS), ##__VA_ARGS__)
+/* Some D3D12 calls are mismatched between Windows/Xbox, so we need to wrap the
+ * C function ourselves :(
+ */
 #define D3D_CALL_RET(THIS, FUNC, ...) (THIS)->lpVtbl->FUNC((THIS), ##__VA_ARGS__)
 
 #else /* !(defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES)) */
@@ -78,8 +79,12 @@
 /* DXGI_PRESENT flags are removed on Xbox */
 #define DXGI_PRESENT_ALLOW_TEARING 0
 
-/* FIXME: Xbox D3D12 does not define the COBJMACROS, so we need to define them ourselves */
-#define D3D_CALL(THIS, FUNC, ...)             (THIS)->FUNC(__VA_ARGS__)
+/* Xbox D3D12 does not define the COBJMACROS, so we need to define them ourselves */
+#include "SDL_d3d12_xbox_cmacros.h"
+
+/* Xbox's D3D12 ABI actually varies from Windows, if a function does not exist
+ * in the above header then you need to use this instead :(
+ */
 #define D3D_CALL_RET(THIS, FUNC, RETVAL, ...) *(RETVAL) = (THIS)->FUNC(__VA_ARGS__)
 
 #endif /* !(defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES)) */

+ 4761 - 0
src/video/directx/SDL_d3d12_xbox_cmacros.h

@@ -0,0 +1,4761 @@
+/* This file is autogenerated, DO NOT MODIFY */
+#define ID3D12Object_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Object_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Object_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Object_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Object_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceChild_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceChild_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12DeviceChild_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12RootSignature_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12RootSignature_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12RootSignature_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12RootSignatureDeserializer_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12RootSignatureDeserializer_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This)	\
+    ( (This)->GetRootSignatureDesc() ) 
+#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12VersionedRootSignatureDeserializer_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12VersionedRootSignatureDeserializer_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc)	\
+    ( (This)->GetRootSignatureDescAtVersion(convertToVersion,ppDesc) ) 
+#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This)	\
+    ( (This)->GetUnconvertedRootSignatureDesc() ) 
+#define ID3D12Pageable_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Pageable_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Pageable_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Pageable_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Pageable_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12Heap_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Heap_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Heap_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Heap_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Heap_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12Resource_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Resource_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Resource_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Resource_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Resource_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData)	\
+    ( (This)->Map(Subresource,pReadRange,ppData) ) 
+#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange)	\
+    ( (This)->Unmap(Subresource,pWrittenRange) ) 
+#define ID3D12Resource_GetGPUVirtualAddress(This)	\
+    ( (This)->GetGPUVirtualAddress() ) 
+#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch)	\
+    ( (This)->WriteToSubresource(DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) ) 
+#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox)	\
+    ( (This)->ReadFromSubresource(pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) ) 
+#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags)	\
+    ( (This)->GetHeapProperties(pHeapProperties,pHeapFlags) ) 
+#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12CommandAllocator_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12CommandAllocator_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12CommandAllocator_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12CommandAllocator_Reset(This)	\
+    ( (This)->Reset() ) 
+#define ID3D12Fence_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Fence_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Fence_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Fence_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Fence_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12Fence_GetCompletedValue(This)	\
+    ( (This)->GetCompletedValue() ) 
+#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent)	\
+    ( (This)->SetEventOnCompletion(Value,hEvent) ) 
+#define ID3D12Fence_Signal(This,Value)	\
+    ( (This)->Signal(Value) ) 
+#define ID3D12Fence1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Fence1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Fence1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Fence1_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Fence1_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12Fence1_GetCompletedValue(This)	\
+    ( (This)->GetCompletedValue() ) 
+#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent)	\
+    ( (This)->SetEventOnCompletion(Value,hEvent) ) 
+#define ID3D12Fence1_Signal(This,Value)	\
+    ( (This)->Signal(Value) ) 
+#define ID3D12Fence1_GetCreationFlags(This)	\
+    ( (This)->GetCreationFlags() ) 
+#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12PipelineState_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12PipelineState_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12PipelineState_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12PipelineState_GetCachedBlob(This,ppBlob)	\
+    ( (This)->GetCachedBlob(ppBlob) ) 
+#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DescriptorHeap_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DescriptorHeap_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12DescriptorHeap_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12QueryHeap_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12QueryHeap_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12QueryHeap_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12CommandSignature_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12CommandSignature_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12CommandSignature_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12CommandList_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12CommandList_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12CommandList_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12CommandList_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12CommandList_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12CommandList_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList1_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList1_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList1_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList1_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList2_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList2_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList2_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList2_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList2_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList2_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes)	\
+    ( (This)->WriteBufferImmediate(Count,pParams,pModes) ) 
+#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12CommandQueue_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12CommandQueue_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12CommandQueue_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags)	\
+    ( (This)->UpdateTileMappings(pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) ) 
+#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags)	\
+    ( (This)->CopyTileMappings(pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) ) 
+#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists)	\
+    ( (This)->ExecuteCommandLists(NumCommandLists,ppCommandLists) ) 
+#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12CommandQueue_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12CommandQueue_Signal(This,pFence,Value)	\
+    ( (This)->Signal(pFence,Value) ) 
+#define ID3D12CommandQueue_Wait(This,pFence,Value)	\
+    ( (This)->Wait(pFence,Value) ) 
+#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency)	\
+    ( (This)->GetTimestampFrequency(pFrequency) ) 
+#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp)	\
+    ( (This)->GetClockCalibration(pGpuTimestamp,pCpuTimestamp) ) 
+#define ID3D12Device_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12PipelineLibrary_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12PipelineLibrary_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12PipelineLibrary_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline)	\
+    ( (This)->StorePipeline(pName,pPipeline) ) 
+#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState)	\
+    ( (This)->LoadGraphicsPipeline(pName,pDesc,riid,ppPipelineState) ) 
+#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState)	\
+    ( (This)->LoadComputePipeline(pName,pDesc,riid,ppPipelineState) ) 
+#define ID3D12PipelineLibrary_GetSerializedSize(This)	\
+    ( (This)->GetSerializedSize() ) 
+#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes)	\
+    ( (This)->Serialize(pData,DataSizeInBytes) ) 
+#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12PipelineLibrary1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12PipelineLibrary1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12PipelineLibrary1_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline)	\
+    ( (This)->StorePipeline(pName,pPipeline) ) 
+#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState)	\
+    ( (This)->LoadGraphicsPipeline(pName,pDesc,riid,ppPipelineState) ) 
+#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState)	\
+    ( (This)->LoadComputePipeline(pName,pDesc,riid,ppPipelineState) ) 
+#define ID3D12PipelineLibrary1_GetSerializedSize(This)	\
+    ( (This)->GetSerializedSize() ) 
+#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes)	\
+    ( (This)->Serialize(pData,DataSizeInBytes) ) 
+#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState)	\
+    ( (This)->LoadPipeline(pName,pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device1_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device1_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device1_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device1_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device1_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device2_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device2_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device2_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device2_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device2_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device2_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device2_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device2_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device3_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device3_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device3_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device3_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device3_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device3_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device3_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device3_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12ProtectedSession_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12ProtectedSession_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12ProtectedSession_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence)	\
+    ( (This)->GetStatusFence(riid,ppFence) ) 
+#define ID3D12ProtectedSession_GetSessionStatus(This)	\
+    ( (This)->GetSessionStatus() ) 
+#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12ProtectedResourceSession_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12ProtectedResourceSession_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12ProtectedResourceSession_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence)	\
+    ( (This)->GetStatusFence(riid,ppFence) ) 
+#define ID3D12ProtectedResourceSession_GetSessionStatus(This)	\
+    ( (This)->GetSessionStatus() ) 
+#define ID3D12Device4_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device4_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device4_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device4_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device4_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device4_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device4_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device4_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12LifetimeOwner_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12LifetimeOwner_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState)	\
+    ( (This)->LifetimeStateUpdated(NewState) ) 
+#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12SwapChainAssistant_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12SwapChainAssistant_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv)	\
+    ( (This)->GetSwapChainObject(riid,ppv) ) 
+#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue)	\
+    ( (This)->GetCurrentResourceAndCommandQueue(riidResource,ppvResource,riidQueue,ppvQueue) ) 
+#define ID3D12SwapChainAssistant_InsertImplicitSync(This)	\
+    ( (This)->InsertImplicitSync() ) 
+#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12LifetimeTracker_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12LifetimeTracker_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12LifetimeTracker_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject)	\
+    ( (This)->DestroyOwnedObject(pObject) ) 
+#define ID3D12StateObject_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12StateObject_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12StateObject_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12StateObject_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12StateObject_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12StateObjectProperties_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12StateObjectProperties_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName)	\
+    ( (This)->GetShaderIdentifier(pExportName) ) 
+#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName)	\
+    ( (This)->GetShaderStackSize(pExportName) ) 
+#define ID3D12StateObjectProperties_GetPipelineStackSize(This)	\
+    ( (This)->GetPipelineStackSize() ) 
+#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes)	\
+    ( (This)->SetPipelineStackSize(PipelineStackSizeInBytes) ) 
+#define ID3D12StateObjectProperties1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12StateObjectProperties1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12StateObjectProperties1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12StateObjectProperties1_GetShaderIdentifier(This,pExportName)	\
+    ( (This)->GetShaderIdentifier(pExportName) ) 
+#define ID3D12StateObjectProperties1_GetShaderStackSize(This,pExportName)	\
+    ( (This)->GetShaderStackSize(pExportName) ) 
+#define ID3D12StateObjectProperties1_GetPipelineStackSize(This)	\
+    ( (This)->GetPipelineStackSize() ) 
+#define ID3D12StateObjectProperties1_SetPipelineStackSize(This,PipelineStackSizeInBytes)	\
+    ( (This)->SetPipelineStackSize(PipelineStackSizeInBytes) ) 
+#define ID3D12WorkGraphProperties_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12WorkGraphProperties_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12WorkGraphProperties_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12WorkGraphProperties_GetNumWorkGraphs(This)	\
+    ( (This)->GetNumWorkGraphs() ) 
+#define ID3D12WorkGraphProperties_GetProgramName(This,WorkGraphIndex)	\
+    ( (This)->GetProgramName(WorkGraphIndex) ) 
+#define ID3D12WorkGraphProperties_GetWorkGraphIndex(This,pProgramName)	\
+    ( (This)->GetWorkGraphIndex(pProgramName) ) 
+#define ID3D12WorkGraphProperties_GetNumNodes(This,WorkGraphIndex)	\
+    ( (This)->GetNumNodes(WorkGraphIndex) ) 
+#define ID3D12WorkGraphProperties_GetNodeIndex(This,WorkGraphIndex,NodeID)	\
+    ( (This)->GetNodeIndex(WorkGraphIndex,NodeID) ) 
+#define ID3D12WorkGraphProperties_GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex)	\
+    ( (This)->GetNodeLocalRootArgumentsTableIndex(WorkGraphIndex,NodeIndex) ) 
+#define ID3D12WorkGraphProperties_GetNumEntrypoints(This,WorkGraphIndex)	\
+    ( (This)->GetNumEntrypoints(WorkGraphIndex) ) 
+#define ID3D12WorkGraphProperties_GetEntrypointIndex(This,WorkGraphIndex,NodeID)	\
+    ( (This)->GetEntrypointIndex(WorkGraphIndex,NodeID) ) 
+#define ID3D12WorkGraphProperties_GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex)	\
+    ( (This)->GetEntrypointRecordSizeInBytes(WorkGraphIndex,EntrypointIndex) ) 
+#define ID3D12WorkGraphProperties_GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements)	\
+    ( (This)->GetWorkGraphMemoryRequirements(WorkGraphIndex,pWorkGraphMemoryRequirements) ) 
+#define ID3D12WorkGraphProperties_GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex)	\
+    ( (This)->GetEntrypointRecordAlignmentInBytes(WorkGraphIndex,EntrypointIndex) ) 
+#define ID3D12Device5_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device5_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device5_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device5_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device5_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device5_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device5_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device5_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device5_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceRemovedExtendedDataSettings_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,Enablement)	\
+    ( (This)->SetAutoBreadcrumbsEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,Enablement)	\
+    ( (This)->SetPageFaultEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,Enablement)	\
+    ( (This)->SetWatsonDumpEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceRemovedExtendedDataSettings1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,Enablement)	\
+    ( (This)->SetAutoBreadcrumbsEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,Enablement)	\
+    ( (This)->SetPageFaultEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,Enablement)	\
+    ( (This)->SetWatsonDumpEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,Enablement)	\
+    ( (This)->SetBreadcrumbContextEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings2_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings2_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceRemovedExtendedDataSettings2_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceRemovedExtendedDataSettings2_SetAutoBreadcrumbsEnablement(This,Enablement)	\
+    ( (This)->SetAutoBreadcrumbsEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings2_SetPageFaultEnablement(This,Enablement)	\
+    ( (This)->SetPageFaultEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings2_SetWatsonDumpEnablement(This,Enablement)	\
+    ( (This)->SetWatsonDumpEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings2_SetBreadcrumbContextEnablement(This,Enablement)	\
+    ( (This)->SetBreadcrumbContextEnablement(Enablement) ) 
+#define ID3D12DeviceRemovedExtendedDataSettings2_UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly)	\
+    ( (This)->UseMarkersOnlyAutoBreadcrumbs(MarkersOnly) ) 
+#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceRemovedExtendedData_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceRemovedExtendedData_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput)	\
+    ( (This)->GetAutoBreadcrumbsOutput(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput)	\
+    ( (This)->GetPageFaultAllocationOutput(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceRemovedExtendedData1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceRemovedExtendedData1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,pOutput)	\
+    ( (This)->GetAutoBreadcrumbsOutput(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,pOutput)	\
+    ( (This)->GetPageFaultAllocationOutput(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,pOutput)	\
+    ( (This)->GetAutoBreadcrumbsOutput1(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,pOutput)	\
+    ( (This)->GetPageFaultAllocationOutput1(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceRemovedExtendedData2_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceRemovedExtendedData2_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,pOutput)	\
+    ( (This)->GetAutoBreadcrumbsOutput(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,pOutput)	\
+    ( (This)->GetPageFaultAllocationOutput(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,pOutput)	\
+    ( (This)->GetAutoBreadcrumbsOutput1(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,pOutput)	\
+    ( (This)->GetPageFaultAllocationOutput1(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,pOutput)	\
+    ( (This)->GetPageFaultAllocationOutput2(pOutput) ) 
+#define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This)	\
+    ( (This)->GetDeviceState() ) 
+#define ID3D12Device6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device6_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device6_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device6_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device6_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device6_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device6_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device6_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device6_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired)	\
+    ( (This)->SetBackgroundProcessingMode(Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) 
+#define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12ProtectedResourceSession1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12ProtectedResourceSession1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12ProtectedResourceSession1_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12ProtectedResourceSession1_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,ppFence)	\
+    ( (This)->GetStatusFence(riid,ppFence) ) 
+#define ID3D12ProtectedResourceSession1_GetSessionStatus(This)	\
+    ( (This)->GetSessionStatus() ) 
+#define ID3D12Device7_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device7_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device7_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device7_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device7_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device7_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device7_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device7_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device7_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device7_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device7_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device7_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device7_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device7_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device7_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device7_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device7_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device7_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device7_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device7_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device7_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device7_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device7_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device7_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device7_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device7_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device7_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device7_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device7_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device7_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device7_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device7_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device7_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device7_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device7_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device7_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device7_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device7_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device7_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device7_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device7_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device7_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device7_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device7_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device7_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device7_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device7_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device7_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device7_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device7_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device7_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device7_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device7_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device7_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device7_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device7_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device7_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device7_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device7_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12Device7_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired)	\
+    ( (This)->SetBackgroundProcessingMode(Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) 
+#define ID3D12Device7_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject)	\
+    ( (This)->AddToStateObject(pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) ) 
+#define ID3D12Device7_CreateProtectedResourceSession1(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession1(pDesc,riid,ppSession) ) 
+#define ID3D12Device8_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device8_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device8_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device8_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device8_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device8_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device8_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device8_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device8_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device8_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device8_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device8_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device8_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device8_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device8_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device8_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device8_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device8_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device8_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device8_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device8_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device8_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device8_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device8_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device8_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device8_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device8_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device8_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device8_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device8_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device8_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device8_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device8_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device8_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device8_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device8_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device8_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device8_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device8_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device8_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device8_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device8_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device8_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device8_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device8_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device8_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device8_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device8_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device8_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device8_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device8_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device8_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device8_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device8_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device8_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device8_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device8_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device8_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device8_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12Device8_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired)	\
+    ( (This)->SetBackgroundProcessingMode(Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) 
+#define ID3D12Device8_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject)	\
+    ( (This)->AddToStateObject(pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) ) 
+#define ID3D12Device8_CreateProtectedResourceSession1(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession1(pDesc,riid,ppSession) ) 
+#define ID3D12Device8_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource2(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device8_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource1(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor)	\
+    ( (This)->CreateSamplerFeedbackUnorderedAccessView(pTargetedResource,pFeedbackResource,DestDescriptor) ) 
+#define ID3D12Device8_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints1(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Resource1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Resource1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Resource1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Resource1_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Resource1_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData)	\
+    ( (This)->Map(Subresource,pReadRange,ppData) ) 
+#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange)	\
+    ( (This)->Unmap(Subresource,pWrittenRange) ) 
+#define ID3D12Resource1_GetGPUVirtualAddress(This)	\
+    ( (This)->GetGPUVirtualAddress() ) 
+#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch)	\
+    ( (This)->WriteToSubresource(DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) ) 
+#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox)	\
+    ( (This)->ReadFromSubresource(pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) ) 
+#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags)	\
+    ( (This)->GetHeapProperties(pHeapProperties,pHeapFlags) ) 
+#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession)	\
+    ( (This)->GetProtectedResourceSession(riid,ppProtectedSession) ) 
+#define ID3D12Resource2_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Resource2_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Resource2_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Resource2_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Resource2_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Resource2_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Resource2_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Resource2_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12Resource2_Map(This,Subresource,pReadRange,ppData)	\
+    ( (This)->Map(Subresource,pReadRange,ppData) ) 
+#define ID3D12Resource2_Unmap(This,Subresource,pWrittenRange)	\
+    ( (This)->Unmap(Subresource,pWrittenRange) ) 
+#define ID3D12Resource2_GetGPUVirtualAddress(This)	\
+    ( (This)->GetGPUVirtualAddress() ) 
+#define ID3D12Resource2_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch)	\
+    ( (This)->WriteToSubresource(DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) ) 
+#define ID3D12Resource2_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox)	\
+    ( (This)->ReadFromSubresource(pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) ) 
+#define ID3D12Resource2_GetHeapProperties(This,pHeapProperties,pHeapFlags)	\
+    ( (This)->GetHeapProperties(pHeapProperties,pHeapFlags) ) 
+#define ID3D12Resource2_GetProtectedResourceSession(This,riid,ppProtectedSession)	\
+    ( (This)->GetProtectedResourceSession(riid,ppProtectedSession) ) 
+#define ID3D12Heap1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Heap1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Heap1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Heap1_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Heap1_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession)	\
+    ( (This)->GetProtectedResourceSession(riid,ppProtectedSession) ) 
+#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList3_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList3_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList3_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList3_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList3_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList3_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes)	\
+    ( (This)->WriteBufferImmediate(Count,pParams,pModes) ) 
+#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession)	\
+    ( (This)->SetProtectedResourceSession(pProtectedResourceSession) ) 
+#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12MetaCommand_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12MetaCommand_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12MetaCommand_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex)	\
+    ( (This)->GetRequiredParameterResourceSize(Stage,ParameterIndex) ) 
+#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList4_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList4_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList4_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList4_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList4_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList4_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes)	\
+    ( (This)->WriteBufferImmediate(Count,pParams,pModes) ) 
+#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession)	\
+    ( (This)->SetProtectedResourceSession(pProtectedResourceSession) ) 
+#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags)	\
+    ( (This)->BeginRenderPass(NumRenderTargets,pRenderTargets,pDepthStencil,Flags) ) 
+#define ID3D12GraphicsCommandList4_EndRenderPass(This)	\
+    ( (This)->EndRenderPass() ) 
+#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes)	\
+    ( (This)->InitializeMetaCommand(pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes)	\
+    ( (This)->ExecuteMetaCommand(pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs)	\
+    ( (This)->BuildRaytracingAccelerationStructure(pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) ) 
+#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData)	\
+    ( (This)->EmitRaytracingAccelerationStructurePostbuildInfo(pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) ) 
+#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode)	\
+    ( (This)->CopyRaytracingAccelerationStructure(DestAccelerationStructureData,SourceAccelerationStructureData,Mode) ) 
+#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject)	\
+    ( (This)->SetPipelineState1(pStateObject) ) 
+#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc)	\
+    ( (This)->DispatchRays(pDesc) ) 
+#define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12ShaderCacheSession_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12ShaderCacheSession_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12ShaderCacheSession_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12ShaderCacheSession_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12ShaderCacheSession_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12ShaderCacheSession_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12ShaderCacheSession_FindValue(This,pKey,KeySize,pValue,pValueSize)	\
+    ( (This)->FindValue(pKey,KeySize,pValue,pValueSize) ) 
+#define ID3D12ShaderCacheSession_StoreValue(This,pKey,KeySize,pValue,ValueSize)	\
+    ( (This)->StoreValue(pKey,KeySize,pValue,ValueSize) ) 
+#define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This)	\
+    ( (This)->SetDeleteOnDestroy() ) 
+#define ID3D12Device9_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device9_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device9_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device9_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device9_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device9_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device9_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device9_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device9_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device9_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device9_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device9_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device9_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device9_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device9_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device9_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device9_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device9_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device9_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device9_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device9_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device9_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device9_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device9_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device9_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device9_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device9_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device9_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device9_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device9_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device9_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device9_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device9_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device9_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device9_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device9_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device9_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device9_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device9_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device9_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device9_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device9_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device9_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device9_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device9_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device9_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device9_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device9_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device9_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device9_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device9_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device9_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device9_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device9_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device9_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device9_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device9_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device9_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device9_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12Device9_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired)	\
+    ( (This)->SetBackgroundProcessingMode(Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) 
+#define ID3D12Device9_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject)	\
+    ( (This)->AddToStateObject(pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) ) 
+#define ID3D12Device9_CreateProtectedResourceSession1(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession1(pDesc,riid,ppSession) ) 
+#define ID3D12Device9_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource2(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device9_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource1(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor)	\
+    ( (This)->CreateSamplerFeedbackUnorderedAccessView(pTargetedResource,pFeedbackResource,DestDescriptor) ) 
+#define ID3D12Device9_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints1(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device9_CreateShaderCacheSession(This,pDesc,riid,ppvSession)	\
+    ( (This)->CreateShaderCacheSession(pDesc,riid,ppvSession) ) 
+#define ID3D12Device9_ShaderCacheControl(This,Kinds,Control)	\
+    ( (This)->ShaderCacheControl(Kinds,Control) ) 
+#define ID3D12Device9_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue1(pDesc,CreatorID,riid,ppCommandQueue) ) 
+#define ID3D12Device10_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device10_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device10_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device10_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device10_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device10_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device10_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device10_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device10_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device10_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device10_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device10_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device10_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device10_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device10_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device10_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device10_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device10_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device10_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device10_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device10_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device10_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device10_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device10_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device10_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device10_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device10_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device10_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device10_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device10_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device10_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device10_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device10_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device10_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device10_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device10_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device10_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device10_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device10_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device10_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device10_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device10_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device10_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device10_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device10_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device10_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device10_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device10_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device10_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device10_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device10_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device10_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device10_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device10_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device10_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device10_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device10_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device10_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device10_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device10_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device10_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12Device10_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired)	\
+    ( (This)->SetBackgroundProcessingMode(Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) 
+#define ID3D12Device10_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject)	\
+    ( (This)->AddToStateObject(pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) ) 
+#define ID3D12Device10_CreateProtectedResourceSession1(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession1(pDesc,riid,ppSession) ) 
+#define ID3D12Device10_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource2(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device10_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource1(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device10_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor)	\
+    ( (This)->CreateSamplerFeedbackUnorderedAccessView(pTargetedResource,pFeedbackResource,DestDescriptor) ) 
+#define ID3D12Device10_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints1(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device10_CreateShaderCacheSession(This,pDesc,riid,ppvSession)	\
+    ( (This)->CreateShaderCacheSession(pDesc,riid,ppvSession) ) 
+#define ID3D12Device10_ShaderCacheControl(This,Kinds,Control)	\
+    ( (This)->ShaderCacheControl(Kinds,Control) ) 
+#define ID3D12Device10_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue1(pDesc,CreatorID,riid,ppCommandQueue) ) 
+#define ID3D12Device10_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource3(pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) ) 
+#define ID3D12Device10_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource2(pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device10_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreateReservedResource2(pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device11_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device11_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device11_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device11_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device11_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device11_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device11_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device11_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device11_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device11_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device11_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device11_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device11_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device11_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device11_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device11_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device11_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device11_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device11_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device11_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device11_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device11_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device11_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device11_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device11_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device11_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device11_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device11_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device11_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device11_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device11_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device11_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device11_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device11_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device11_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device11_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device11_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device11_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device11_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device11_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device11_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device11_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device11_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device11_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device11_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device11_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device11_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device11_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device11_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device11_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device11_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device11_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device11_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device11_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device11_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device11_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device11_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device11_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device11_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device11_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device11_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12Device11_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired)	\
+    ( (This)->SetBackgroundProcessingMode(Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) 
+#define ID3D12Device11_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject)	\
+    ( (This)->AddToStateObject(pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) ) 
+#define ID3D12Device11_CreateProtectedResourceSession1(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession1(pDesc,riid,ppSession) ) 
+#define ID3D12Device11_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource2(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device11_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource1(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device11_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor)	\
+    ( (This)->CreateSamplerFeedbackUnorderedAccessView(pTargetedResource,pFeedbackResource,DestDescriptor) ) 
+#define ID3D12Device11_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints1(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device11_CreateShaderCacheSession(This,pDesc,riid,ppvSession)	\
+    ( (This)->CreateShaderCacheSession(pDesc,riid,ppvSession) ) 
+#define ID3D12Device11_ShaderCacheControl(This,Kinds,Control)	\
+    ( (This)->ShaderCacheControl(Kinds,Control) ) 
+#define ID3D12Device11_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue1(pDesc,CreatorID,riid,ppCommandQueue) ) 
+#define ID3D12Device11_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource3(pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) ) 
+#define ID3D12Device11_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource2(pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device11_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreateReservedResource2(pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device11_CreateSampler2(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler2(pDesc,DestDescriptor) ) 
+#define ID3D12Device12_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device12_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device12_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device12_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device12_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device12_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device12_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device12_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device12_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device12_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device12_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device12_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device12_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device12_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device12_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device12_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device12_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device12_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device12_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device12_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device12_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device12_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device12_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device12_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device12_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device12_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device12_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device12_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device12_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device12_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device12_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device12_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device12_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device12_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device12_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device12_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device12_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device12_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device12_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device12_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device12_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device12_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device12_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device12_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device12_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device12_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device12_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device12_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device12_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device12_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device12_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device12_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device12_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device12_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device12_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device12_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device12_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device12_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device12_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device12_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device12_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12Device12_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired)	\
+    ( (This)->SetBackgroundProcessingMode(Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) 
+#define ID3D12Device12_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject)	\
+    ( (This)->AddToStateObject(pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) ) 
+#define ID3D12Device12_CreateProtectedResourceSession1(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession1(pDesc,riid,ppSession) ) 
+#define ID3D12Device12_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource2(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device12_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource1(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device12_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor)	\
+    ( (This)->CreateSamplerFeedbackUnorderedAccessView(pTargetedResource,pFeedbackResource,DestDescriptor) ) 
+#define ID3D12Device12_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints1(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device12_CreateShaderCacheSession(This,pDesc,riid,ppvSession)	\
+    ( (This)->CreateShaderCacheSession(pDesc,riid,ppvSession) ) 
+#define ID3D12Device12_ShaderCacheControl(This,Kinds,Control)	\
+    ( (This)->ShaderCacheControl(Kinds,Control) ) 
+#define ID3D12Device12_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue1(pDesc,CreatorID,riid,ppCommandQueue) ) 
+#define ID3D12Device12_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource3(pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) ) 
+#define ID3D12Device12_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource2(pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device12_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreateReservedResource2(pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device12_CreateSampler2(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler2(pDesc,DestDescriptor) ) 
+#define ID3D12Device13_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device13_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device13_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device13_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device13_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device13_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device13_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device13_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device13_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device13_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device13_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device13_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device13_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device13_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device13_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device13_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device13_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device13_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device13_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device13_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device13_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device13_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device13_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device13_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device13_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device13_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device13_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device13_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device13_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device13_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device13_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device13_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device13_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device13_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device13_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device13_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device13_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device13_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device13_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device13_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device13_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device13_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device13_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device13_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device13_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device13_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device13_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device13_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device13_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device13_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device13_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device13_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device13_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device13_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device13_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device13_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device13_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device13_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device13_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device13_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device13_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12Device13_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired)	\
+    ( (This)->SetBackgroundProcessingMode(Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) 
+#define ID3D12Device13_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject)	\
+    ( (This)->AddToStateObject(pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) ) 
+#define ID3D12Device13_CreateProtectedResourceSession1(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession1(pDesc,riid,ppSession) ) 
+#define ID3D12Device13_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource2(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device13_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource1(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device13_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor)	\
+    ( (This)->CreateSamplerFeedbackUnorderedAccessView(pTargetedResource,pFeedbackResource,DestDescriptor) ) 
+#define ID3D12Device13_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints1(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device13_CreateShaderCacheSession(This,pDesc,riid,ppvSession)	\
+    ( (This)->CreateShaderCacheSession(pDesc,riid,ppvSession) ) 
+#define ID3D12Device13_ShaderCacheControl(This,Kinds,Control)	\
+    ( (This)->ShaderCacheControl(Kinds,Control) ) 
+#define ID3D12Device13_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue1(pDesc,CreatorID,riid,ppCommandQueue) ) 
+#define ID3D12Device13_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource3(pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) ) 
+#define ID3D12Device13_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource2(pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device13_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreateReservedResource2(pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device13_CreateSampler2(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler2(pDesc,DestDescriptor) ) 
+#define ID3D12Device13_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress1(pAddress,size,riid,ppvHeap) ) 
+#define ID3D12Device14_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Device14_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Device14_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Device14_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12Device14_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12Device14_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12Device14_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12Device14_GetNodeCount(This)	\
+    ( (This)->GetNodeCount() ) 
+#define ID3D12Device14_CreateCommandQueue(This,pDesc,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue(pDesc,riid,ppCommandQueue) ) 
+#define ID3D12Device14_CreateCommandAllocator(This,type,riid,ppCommandAllocator)	\
+    ( (This)->CreateCommandAllocator(type,riid,ppCommandAllocator) ) 
+#define ID3D12Device14_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateGraphicsPipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device14_CreateComputePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreateComputePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device14_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList)	\
+    ( (This)->CreateCommandList(nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) 
+#define ID3D12Device14_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize)	\
+    ( (This)->CheckFeatureSupport(Feature,pFeatureSupportData,FeatureSupportDataSize) ) 
+#define ID3D12Device14_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap)	\
+    ( (This)->CreateDescriptorHeap(pDescriptorHeapDesc,riid,ppvHeap) ) 
+#define ID3D12Device14_GetDescriptorHandleIncrementSize(This,DescriptorHeapType)	\
+    ( (This)->GetDescriptorHandleIncrementSize(DescriptorHeapType) ) 
+#define ID3D12Device14_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignature(nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) 
+#define ID3D12Device14_CreateConstantBufferView(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateConstantBufferView(pDesc,DestDescriptor) ) 
+#define ID3D12Device14_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateShaderResourceView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device14_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateUnorderedAccessView(pResource,pCounterResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device14_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateRenderTargetView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device14_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor)	\
+    ( (This)->CreateDepthStencilView(pResource,pDesc,DestDescriptor) ) 
+#define ID3D12Device14_CreateSampler(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler(pDesc,DestDescriptor) ) 
+#define ID3D12Device14_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptors(NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) 
+#define ID3D12Device14_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType)	\
+    ( (This)->CopyDescriptorsSimple(NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) 
+#define ID3D12Device14_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) 
+#define ID3D12Device14_CreateHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device14_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device14_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreateReservedResource(pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device14_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle)	\
+    ( (This)->CreateSharedHandle(pObject,pAttributes,Access,Name,pHandle) ) 
+#define ID3D12Device14_OpenSharedHandle(This,NTHandle,riid,ppvObj)	\
+    ( (This)->OpenSharedHandle(NTHandle,riid,ppvObj) ) 
+#define ID3D12Device14_OpenSharedHandleByName(This,Name,Access,pNTHandle)	\
+    ( (This)->OpenSharedHandleByName(Name,Access,pNTHandle) ) 
+#define ID3D12Device14_MakeResident(This,NumObjects,ppObjects)	\
+    ( (This)->MakeResident(NumObjects,ppObjects) ) 
+#define ID3D12Device14_Evict(This,NumObjects,ppObjects)	\
+    ( (This)->Evict(NumObjects,ppObjects) ) 
+#define ID3D12Device14_CreateFence(This,InitialValue,Flags,riid,ppFence)	\
+    ( (This)->CreateFence(InitialValue,Flags,riid,ppFence) ) 
+#define ID3D12Device14_GetDeviceRemovedReason(This)	\
+    ( (This)->GetDeviceRemovedReason() ) 
+#define ID3D12Device14_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device14_CreateQueryHeap(This,pDesc,riid,ppvHeap)	\
+    ( (This)->CreateQueryHeap(pDesc,riid,ppvHeap) ) 
+#define ID3D12Device14_SetStablePowerState(This,Enable)	\
+    ( (This)->SetStablePowerState(Enable) ) 
+#define ID3D12Device14_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature)	\
+    ( (This)->CreateCommandSignature(pDesc,pRootSignature,riid,ppvCommandSignature) ) 
+#define ID3D12Device14_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips)	\
+    ( (This)->GetResourceTiling(pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) 
+#define ID3D12Device14_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary)	\
+    ( (This)->CreatePipelineLibrary(pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) 
+#define ID3D12Device14_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent)	\
+    ( (This)->SetEventOnMultipleFenceCompletion(ppFences,pFenceValues,NumFences,Flags,hEvent) ) 
+#define ID3D12Device14_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities)	\
+    ( (This)->SetResidencyPriority(NumObjects,ppObjects,pPriorities) ) 
+#define ID3D12Device14_CreatePipelineState(This,pDesc,riid,ppPipelineState)	\
+    ( (This)->CreatePipelineState(pDesc,riid,ppPipelineState) ) 
+#define ID3D12Device14_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress(pAddress,riid,ppvHeap) ) 
+#define ID3D12Device14_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromFileMapping(hFileMapping,riid,ppvHeap) ) 
+#define ID3D12Device14_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal)	\
+    ( (This)->EnqueueMakeResident(Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) 
+#define ID3D12Device14_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList)	\
+    ( (This)->CreateCommandList1(nodeMask,type,flags,riid,ppCommandList) ) 
+#define ID3D12Device14_CreateProtectedResourceSession(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession(pDesc,riid,ppSession) ) 
+#define ID3D12Device14_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource1(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device14_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap)	\
+    ( (This)->CreateHeap1(pDesc,pProtectedSession,riid,ppvHeap) ) 
+#define ID3D12Device14_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource)	\
+    ( (This)->CreateReservedResource1(pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) 
+#define ID3D12Device14_CreateLifetimeTracker(This,pOwner,riid,ppvTracker)	\
+    ( (This)->CreateLifetimeTracker(pOwner,riid,ppvTracker) ) 
+#define ID3D12Device14_RemoveDevice(This)	\
+    ( (This)->RemoveDevice() ) 
+#define ID3D12Device14_EnumerateMetaCommands(This,pNumMetaCommands,pDescs)	\
+    ( (This)->EnumerateMetaCommands(pNumMetaCommands,pDescs) ) 
+#define ID3D12Device14_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs)	\
+    ( (This)->EnumerateMetaCommandParameters(CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) 
+#define ID3D12Device14_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand)	\
+    ( (This)->CreateMetaCommand(CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) 
+#define ID3D12Device14_CreateStateObject(This,pDesc,riid,ppStateObject)	\
+    ( (This)->CreateStateObject(pDesc,riid,ppStateObject) ) 
+#define ID3D12Device14_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo)	\
+    ( (This)->GetRaytracingAccelerationStructurePrebuildInfo(pDesc,pInfo) ) 
+#define ID3D12Device14_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck)	\
+    ( (This)->CheckDriverMatchingIdentifier(SerializedDataType,pIdentifierToCheck) ) 
+#define ID3D12Device14_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired)	\
+    ( (This)->SetBackgroundProcessingMode(Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) 
+#define ID3D12Device14_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject)	\
+    ( (This)->AddToStateObject(pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) ) 
+#define ID3D12Device14_CreateProtectedResourceSession1(This,pDesc,riid,ppSession)	\
+    ( (This)->CreateProtectedResourceSession1(pDesc,riid,ppSession) ) 
+#define ID3D12Device14_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource2(pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) 
+#define ID3D12Device14_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource1(pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) 
+#define ID3D12Device14_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor)	\
+    ( (This)->CreateSamplerFeedbackUnorderedAccessView(pTargetedResource,pFeedbackResource,DestDescriptor) ) 
+#define ID3D12Device14_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes)	\
+    ( (This)->GetCopyableFootprints1(pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) 
+#define ID3D12Device14_CreateShaderCacheSession(This,pDesc,riid,ppvSession)	\
+    ( (This)->CreateShaderCacheSession(pDesc,riid,ppvSession) ) 
+#define ID3D12Device14_ShaderCacheControl(This,Kinds,Control)	\
+    ( (This)->ShaderCacheControl(Kinds,Control) ) 
+#define ID3D12Device14_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue)	\
+    ( (This)->CreateCommandQueue1(pDesc,CreatorID,riid,ppCommandQueue) ) 
+#define ID3D12Device14_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource)	\
+    ( (This)->CreateCommittedResource3(pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) ) 
+#define ID3D12Device14_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreatePlacedResource2(pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device14_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource)	\
+    ( (This)->CreateReservedResource2(pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) ) 
+#define ID3D12Device14_CreateSampler2(This,pDesc,DestDescriptor)	\
+    ( (This)->CreateSampler2(pDesc,DestDescriptor) ) 
+#define ID3D12Device14_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap)	\
+    ( (This)->OpenExistingHeapFromAddress1(pAddress,size,riid,ppvHeap) ) 
+#define ID3D12Device14_CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature)	\
+    ( (This)->CreateRootSignatureFromSubobjectInLibrary(nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) ) 
+#define ID3D12VirtualizationGuestDevice_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12VirtualizationGuestDevice_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12VirtualizationGuestDevice_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12VirtualizationGuestDevice_ShareWithHost(This,pObject,pHandle)	\
+    ( (This)->ShareWithHost(pObject,pHandle) ) 
+#define ID3D12VirtualizationGuestDevice_CreateFenceFd(This,pFence,FenceValue,pFenceFd)	\
+    ( (This)->CreateFenceFd(pFence,FenceValue,pFenceFd) ) 
+#define ID3D12Tools_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Tools_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Tools_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable)	\
+    ( (This)->EnableShaderInstrumentation(bEnable) ) 
+#define ID3D12Tools_ShaderInstrumentationEnabled(This)	\
+    ( (This)->ShaderInstrumentationEnabled() ) 
+#define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12SDKConfiguration_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12SDKConfiguration_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12SDKConfiguration_SetSDKVersion(This,SDKVersion,SDKPath)	\
+    ( (This)->SetSDKVersion(SDKVersion,SDKPath) ) 
+#define ID3D12SDKConfiguration1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12SDKConfiguration1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12SDKConfiguration1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12SDKConfiguration1_SetSDKVersion(This,SDKVersion,SDKPath)	\
+    ( (This)->SetSDKVersion(SDKVersion,SDKPath) ) 
+#define ID3D12SDKConfiguration1_CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory)	\
+    ( (This)->CreateDeviceFactory(SDKVersion,SDKPath,riid,ppvFactory) ) 
+#define ID3D12SDKConfiguration1_FreeUnusedSDKs(This)	\
+    ( (This)->FreeUnusedSDKs() ) 
+#define ID3D12DeviceFactory_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceFactory_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceFactory_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceFactory_InitializeFromGlobalState(This)	\
+    ( (This)->InitializeFromGlobalState() ) 
+#define ID3D12DeviceFactory_ApplyToGlobalState(This)	\
+    ( (This)->ApplyToGlobalState() ) 
+#define ID3D12DeviceFactory_SetFlags(This,flags)	\
+    ( (This)->SetFlags(flags) ) 
+#define ID3D12DeviceFactory_GetFlags(This)	\
+    ( (This)->GetFlags() ) 
+#define ID3D12DeviceFactory_GetConfigurationInterface(This,clsid,iid,ppv)	\
+    ( (This)->GetConfigurationInterface(clsid,iid,ppv) ) 
+#define ID3D12DeviceFactory_EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes)	\
+    ( (This)->EnableExperimentalFeatures(NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) ) 
+#define ID3D12DeviceFactory_CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice)	\
+    ( (This)->CreateDevice(adapter,FeatureLevel,riid,ppvDevice) ) 
+#define ID3D12DeviceConfiguration_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceConfiguration_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceConfiguration_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceConfiguration_GetEnabledExperimentalFeatures(This,pGuids,NumGuids)	\
+    ( (This)->GetEnabledExperimentalFeatures(pGuids,NumGuids) ) 
+#define ID3D12DeviceConfiguration_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError)	\
+    ( (This)->SerializeVersionedRootSignature(pDesc,ppResult,ppError) ) 
+#define ID3D12DeviceConfiguration_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer)	\
+    ( (This)->CreateVersionedRootSignatureDeserializer(pBlob,Size,riid,ppvDeserializer) ) 
+#define ID3D12DeviceConfiguration1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DeviceConfiguration1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DeviceConfiguration1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DeviceConfiguration1_GetEnabledExperimentalFeatures(This,pGuids,NumGuids)	\
+    ( (This)->GetEnabledExperimentalFeatures(pGuids,NumGuids) ) 
+#define ID3D12DeviceConfiguration1_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError)	\
+    ( (This)->SerializeVersionedRootSignature(pDesc,ppResult,ppError) ) 
+#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer)	\
+    ( (This)->CreateVersionedRootSignatureDeserializer(pBlob,Size,riid,ppvDeserializer) ) 
+#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer)	\
+    ( (This)->CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) ) 
+#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList5_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList5_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList5_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList5_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList5_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList5_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes)	\
+    ( (This)->WriteBufferImmediate(Count,pParams,pModes) ) 
+#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession)	\
+    ( (This)->SetProtectedResourceSession(pProtectedResourceSession) ) 
+#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags)	\
+    ( (This)->BeginRenderPass(NumRenderTargets,pRenderTargets,pDepthStencil,Flags) ) 
+#define ID3D12GraphicsCommandList5_EndRenderPass(This)	\
+    ( (This)->EndRenderPass() ) 
+#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes)	\
+    ( (This)->InitializeMetaCommand(pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes)	\
+    ( (This)->ExecuteMetaCommand(pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs)	\
+    ( (This)->BuildRaytracingAccelerationStructure(pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) ) 
+#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData)	\
+    ( (This)->EmitRaytracingAccelerationStructurePostbuildInfo(pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) ) 
+#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode)	\
+    ( (This)->CopyRaytracingAccelerationStructure(DestAccelerationStructureData,SourceAccelerationStructureData,Mode) ) 
+#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject)	\
+    ( (This)->SetPipelineState1(pStateObject) ) 
+#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc)	\
+    ( (This)->DispatchRays(pDesc) ) 
+#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners)	\
+    ( (This)->RSSetShadingRate(baseShadingRate,combiners) ) 
+#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage)	\
+    ( (This)->RSSetShadingRateImage(shadingRateImage) ) 
+#define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList6_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList6_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList6_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList6_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList6_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList6_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList6_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList6_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList6_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList6_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList6_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList6_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList6_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList6_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList6_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList6_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList6_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList6_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList6_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList6_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList6_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList6_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList6_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList6_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList6_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList6_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList6_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList6_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList6_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList6_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList6_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList6_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,Count,pParams,pModes)	\
+    ( (This)->WriteBufferImmediate(Count,pParams,pModes) ) 
+#define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,pProtectedResourceSession)	\
+    ( (This)->SetProtectedResourceSession(pProtectedResourceSession) ) 
+#define ID3D12GraphicsCommandList6_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags)	\
+    ( (This)->BeginRenderPass(NumRenderTargets,pRenderTargets,pDepthStencil,Flags) ) 
+#define ID3D12GraphicsCommandList6_EndRenderPass(This)	\
+    ( (This)->EndRenderPass() ) 
+#define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes)	\
+    ( (This)->InitializeMetaCommand(pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes)	\
+    ( (This)->ExecuteMetaCommand(pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs)	\
+    ( (This)->BuildRaytracingAccelerationStructure(pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) ) 
+#define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData)	\
+    ( (This)->EmitRaytracingAccelerationStructurePostbuildInfo(pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) ) 
+#define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode)	\
+    ( (This)->CopyRaytracingAccelerationStructure(DestAccelerationStructureData,SourceAccelerationStructureData,Mode) ) 
+#define ID3D12GraphicsCommandList6_SetPipelineState1(This,pStateObject)	\
+    ( (This)->SetPipelineState1(pStateObject) ) 
+#define ID3D12GraphicsCommandList6_DispatchRays(This,pDesc)	\
+    ( (This)->DispatchRays(pDesc) ) 
+#define ID3D12GraphicsCommandList6_RSSetShadingRate(This,baseShadingRate,combiners)	\
+    ( (This)->RSSetShadingRate(baseShadingRate,combiners) ) 
+#define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shadingRateImage)	\
+    ( (This)->RSSetShadingRateImage(shadingRateImage) ) 
+#define ID3D12GraphicsCommandList6_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->DispatchMesh(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList7_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList7_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList7_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList7_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList7_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList7_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList7_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList7_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList7_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList7_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList7_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList7_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList7_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList7_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList7_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList7_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList7_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList7_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList7_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList7_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList7_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList7_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList7_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList7_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList7_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList7_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList7_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList7_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList7_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList7_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList7_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList7_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList7_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList7_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList7_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList7_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList7_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList7_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList7_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList7_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList7_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList7_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList7_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList7_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList7_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList7_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList7_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList7_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList7_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList7_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList7_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList7_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList7_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList7_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList7_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList7_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList7_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList7_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList7_WriteBufferImmediate(This,Count,pParams,pModes)	\
+    ( (This)->WriteBufferImmediate(Count,pParams,pModes) ) 
+#define ID3D12GraphicsCommandList7_SetProtectedResourceSession(This,pProtectedResourceSession)	\
+    ( (This)->SetProtectedResourceSession(pProtectedResourceSession) ) 
+#define ID3D12GraphicsCommandList7_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags)	\
+    ( (This)->BeginRenderPass(NumRenderTargets,pRenderTargets,pDepthStencil,Flags) ) 
+#define ID3D12GraphicsCommandList7_EndRenderPass(This)	\
+    ( (This)->EndRenderPass() ) 
+#define ID3D12GraphicsCommandList7_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes)	\
+    ( (This)->InitializeMetaCommand(pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList7_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes)	\
+    ( (This)->ExecuteMetaCommand(pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList7_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs)	\
+    ( (This)->BuildRaytracingAccelerationStructure(pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) ) 
+#define ID3D12GraphicsCommandList7_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData)	\
+    ( (This)->EmitRaytracingAccelerationStructurePostbuildInfo(pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) ) 
+#define ID3D12GraphicsCommandList7_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode)	\
+    ( (This)->CopyRaytracingAccelerationStructure(DestAccelerationStructureData,SourceAccelerationStructureData,Mode) ) 
+#define ID3D12GraphicsCommandList7_SetPipelineState1(This,pStateObject)	\
+    ( (This)->SetPipelineState1(pStateObject) ) 
+#define ID3D12GraphicsCommandList7_DispatchRays(This,pDesc)	\
+    ( (This)->DispatchRays(pDesc) ) 
+#define ID3D12GraphicsCommandList7_RSSetShadingRate(This,baseShadingRate,combiners)	\
+    ( (This)->RSSetShadingRate(baseShadingRate,combiners) ) 
+#define ID3D12GraphicsCommandList7_RSSetShadingRateImage(This,shadingRateImage)	\
+    ( (This)->RSSetShadingRateImage(shadingRateImage) ) 
+#define ID3D12GraphicsCommandList7_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->DispatchMesh(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList7_Barrier(This,NumBarrierGroups,pBarrierGroups)	\
+    ( (This)->Barrier(NumBarrierGroups,pBarrierGroups) ) 
+#define ID3D12GraphicsCommandList8_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList8_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList8_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList8_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList8_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList8_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList8_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList8_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList8_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList8_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList8_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList8_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList8_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList8_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList8_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList8_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList8_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList8_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList8_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList8_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList8_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList8_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList8_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList8_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList8_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList8_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList8_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList8_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList8_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList8_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList8_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList8_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList8_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList8_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList8_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList8_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList8_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList8_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList8_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList8_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList8_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList8_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList8_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList8_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList8_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList8_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList8_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList8_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList8_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList8_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList8_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList8_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList8_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList8_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList8_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList8_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList8_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList8_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList8_WriteBufferImmediate(This,Count,pParams,pModes)	\
+    ( (This)->WriteBufferImmediate(Count,pParams,pModes) ) 
+#define ID3D12GraphicsCommandList8_SetProtectedResourceSession(This,pProtectedResourceSession)	\
+    ( (This)->SetProtectedResourceSession(pProtectedResourceSession) ) 
+#define ID3D12GraphicsCommandList8_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags)	\
+    ( (This)->BeginRenderPass(NumRenderTargets,pRenderTargets,pDepthStencil,Flags) ) 
+#define ID3D12GraphicsCommandList8_EndRenderPass(This)	\
+    ( (This)->EndRenderPass() ) 
+#define ID3D12GraphicsCommandList8_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes)	\
+    ( (This)->InitializeMetaCommand(pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList8_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes)	\
+    ( (This)->ExecuteMetaCommand(pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList8_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs)	\
+    ( (This)->BuildRaytracingAccelerationStructure(pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) ) 
+#define ID3D12GraphicsCommandList8_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData)	\
+    ( (This)->EmitRaytracingAccelerationStructurePostbuildInfo(pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) ) 
+#define ID3D12GraphicsCommandList8_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode)	\
+    ( (This)->CopyRaytracingAccelerationStructure(DestAccelerationStructureData,SourceAccelerationStructureData,Mode) ) 
+#define ID3D12GraphicsCommandList8_SetPipelineState1(This,pStateObject)	\
+    ( (This)->SetPipelineState1(pStateObject) ) 
+#define ID3D12GraphicsCommandList8_DispatchRays(This,pDesc)	\
+    ( (This)->DispatchRays(pDesc) ) 
+#define ID3D12GraphicsCommandList8_RSSetShadingRate(This,baseShadingRate,combiners)	\
+    ( (This)->RSSetShadingRate(baseShadingRate,combiners) ) 
+#define ID3D12GraphicsCommandList8_RSSetShadingRateImage(This,shadingRateImage)	\
+    ( (This)->RSSetShadingRateImage(shadingRateImage) ) 
+#define ID3D12GraphicsCommandList8_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->DispatchMesh(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList8_Barrier(This,NumBarrierGroups,pBarrierGroups)	\
+    ( (This)->Barrier(NumBarrierGroups,pBarrierGroups) ) 
+#define ID3D12GraphicsCommandList8_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef)	\
+    ( (This)->OMSetFrontAndBackStencilRef(FrontStencilRef,BackStencilRef) ) 
+#define ID3D12GraphicsCommandList9_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList9_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList9_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList9_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList9_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList9_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList9_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList9_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList9_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList9_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList9_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList9_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList9_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList9_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList9_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList9_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList9_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList9_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList9_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList9_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList9_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList9_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList9_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList9_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList9_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList9_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList9_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList9_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList9_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList9_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList9_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList9_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList9_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList9_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList9_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList9_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList9_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList9_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList9_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList9_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList9_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList9_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList9_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList9_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList9_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList9_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList9_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList9_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList9_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList9_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList9_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList9_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList9_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList9_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList9_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList9_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList9_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList9_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList9_WriteBufferImmediate(This,Count,pParams,pModes)	\
+    ( (This)->WriteBufferImmediate(Count,pParams,pModes) ) 
+#define ID3D12GraphicsCommandList9_SetProtectedResourceSession(This,pProtectedResourceSession)	\
+    ( (This)->SetProtectedResourceSession(pProtectedResourceSession) ) 
+#define ID3D12GraphicsCommandList9_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags)	\
+    ( (This)->BeginRenderPass(NumRenderTargets,pRenderTargets,pDepthStencil,Flags) ) 
+#define ID3D12GraphicsCommandList9_EndRenderPass(This)	\
+    ( (This)->EndRenderPass() ) 
+#define ID3D12GraphicsCommandList9_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes)	\
+    ( (This)->InitializeMetaCommand(pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList9_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes)	\
+    ( (This)->ExecuteMetaCommand(pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList9_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs)	\
+    ( (This)->BuildRaytracingAccelerationStructure(pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) ) 
+#define ID3D12GraphicsCommandList9_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData)	\
+    ( (This)->EmitRaytracingAccelerationStructurePostbuildInfo(pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) ) 
+#define ID3D12GraphicsCommandList9_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode)	\
+    ( (This)->CopyRaytracingAccelerationStructure(DestAccelerationStructureData,SourceAccelerationStructureData,Mode) ) 
+#define ID3D12GraphicsCommandList9_SetPipelineState1(This,pStateObject)	\
+    ( (This)->SetPipelineState1(pStateObject) ) 
+#define ID3D12GraphicsCommandList9_DispatchRays(This,pDesc)	\
+    ( (This)->DispatchRays(pDesc) ) 
+#define ID3D12GraphicsCommandList9_RSSetShadingRate(This,baseShadingRate,combiners)	\
+    ( (This)->RSSetShadingRate(baseShadingRate,combiners) ) 
+#define ID3D12GraphicsCommandList9_RSSetShadingRateImage(This,shadingRateImage)	\
+    ( (This)->RSSetShadingRateImage(shadingRateImage) ) 
+#define ID3D12GraphicsCommandList9_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->DispatchMesh(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList9_Barrier(This,NumBarrierGroups,pBarrierGroups)	\
+    ( (This)->Barrier(NumBarrierGroups,pBarrierGroups) ) 
+#define ID3D12GraphicsCommandList9_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef)	\
+    ( (This)->OMSetFrontAndBackStencilRef(FrontStencilRef,BackStencilRef) ) 
+#define ID3D12GraphicsCommandList9_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias)	\
+    ( (This)->RSSetDepthBias(DepthBias,DepthBiasClamp,SlopeScaledDepthBias) ) 
+#define ID3D12GraphicsCommandList9_IASetIndexBufferStripCutValue(This,IBStripCutValue)	\
+    ( (This)->IASetIndexBufferStripCutValue(IBStripCutValue) ) 
+#define ID3D12GraphicsCommandList10_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GraphicsCommandList10_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GraphicsCommandList10_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GraphicsCommandList10_GetPrivateData(This,guid,pDataSize,pData)	\
+    ( (This)->GetPrivateData(guid,pDataSize,pData) ) 
+#define ID3D12GraphicsCommandList10_SetPrivateData(This,guid,DataSize,pData)	\
+    ( (This)->SetPrivateData(guid,DataSize,pData) ) 
+#define ID3D12GraphicsCommandList10_SetPrivateDataInterface(This,guid,pData)	\
+    ( (This)->SetPrivateDataInterface(guid,pData) ) 
+#define ID3D12GraphicsCommandList10_SetName(This,Name)	\
+    ( (This)->SetName(Name) ) 
+#define ID3D12GraphicsCommandList10_GetDevice(This,riid,ppvDevice)	\
+    ( (This)->GetDevice(riid,ppvDevice) ) 
+#define ID3D12GraphicsCommandList10_GetType(This)	\
+    ( (This)->GetType() ) 
+#define ID3D12GraphicsCommandList10_Close(This)	\
+    ( (This)->Close() ) 
+#define ID3D12GraphicsCommandList10_Reset(This,pAllocator,pInitialState)	\
+    ( (This)->Reset(pAllocator,pInitialState) ) 
+#define ID3D12GraphicsCommandList10_ClearState(This,pPipelineState)	\
+    ( (This)->ClearState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList10_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawInstanced(VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList10_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)	\
+    ( (This)->DrawIndexedInstanced(IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) 
+#define ID3D12GraphicsCommandList10_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->Dispatch(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList10_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes)	\
+    ( (This)->CopyBufferRegion(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) 
+#define ID3D12GraphicsCommandList10_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox)	\
+    ( (This)->CopyTextureRegion(pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) 
+#define ID3D12GraphicsCommandList10_CopyResource(This,pDstResource,pSrcResource)	\
+    ( (This)->CopyResource(pDstResource,pSrcResource) ) 
+#define ID3D12GraphicsCommandList10_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags)	\
+    ( (This)->CopyTiles(pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) 
+#define ID3D12GraphicsCommandList10_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)	\
+    ( (This)->ResolveSubresource(pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) 
+#define ID3D12GraphicsCommandList10_IASetPrimitiveTopology(This,PrimitiveTopology)	\
+    ( (This)->IASetPrimitiveTopology(PrimitiveTopology) ) 
+#define ID3D12GraphicsCommandList10_RSSetViewports(This,NumViewports,pViewports)	\
+    ( (This)->RSSetViewports(NumViewports,pViewports) ) 
+#define ID3D12GraphicsCommandList10_RSSetScissorRects(This,NumRects,pRects)	\
+    ( (This)->RSSetScissorRects(NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList10_OMSetBlendFactor(This,BlendFactor)	\
+    ( (This)->OMSetBlendFactor(BlendFactor) ) 
+#define ID3D12GraphicsCommandList10_OMSetStencilRef(This,StencilRef)	\
+    ( (This)->OMSetStencilRef(StencilRef) ) 
+#define ID3D12GraphicsCommandList10_SetPipelineState(This,pPipelineState)	\
+    ( (This)->SetPipelineState(pPipelineState) ) 
+#define ID3D12GraphicsCommandList10_ResourceBarrier(This,NumBarriers,pBarriers)	\
+    ( (This)->ResourceBarrier(NumBarriers,pBarriers) ) 
+#define ID3D12GraphicsCommandList10_ExecuteBundle(This,pCommandList)	\
+    ( (This)->ExecuteBundle(pCommandList) ) 
+#define ID3D12GraphicsCommandList10_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps)	\
+    ( (This)->SetDescriptorHeaps(NumDescriptorHeaps,ppDescriptorHeaps) ) 
+#define ID3D12GraphicsCommandList10_SetComputeRootSignature(This,pRootSignature)	\
+    ( (This)->SetComputeRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList10_SetGraphicsRootSignature(This,pRootSignature)	\
+    ( (This)->SetGraphicsRootSignature(pRootSignature) ) 
+#define ID3D12GraphicsCommandList10_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetComputeRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList10_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor)	\
+    ( (This)->SetGraphicsRootDescriptorTable(RootParameterIndex,BaseDescriptor) ) 
+#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstant(RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetComputeRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues)	\
+    ( (This)->SetGraphicsRoot32BitConstants(RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) 
+#define ID3D12GraphicsCommandList10_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList10_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootConstantBufferView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList10_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList10_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootShaderResourceView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList10_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetComputeRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList10_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation)	\
+    ( (This)->SetGraphicsRootUnorderedAccessView(RootParameterIndex,BufferLocation) ) 
+#define ID3D12GraphicsCommandList10_IASetIndexBuffer(This,pView)	\
+    ( (This)->IASetIndexBuffer(pView) ) 
+#define ID3D12GraphicsCommandList10_IASetVertexBuffers(This,StartSlot,NumViews,pViews)	\
+    ( (This)->IASetVertexBuffers(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList10_SOSetTargets(This,StartSlot,NumViews,pViews)	\
+    ( (This)->SOSetTargets(StartSlot,NumViews,pViews) ) 
+#define ID3D12GraphicsCommandList10_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor)	\
+    ( (This)->OMSetRenderTargets(NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) 
+#define ID3D12GraphicsCommandList10_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects)	\
+    ( (This)->ClearDepthStencilView(DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList10_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects)	\
+    ( (This)->ClearRenderTargetView(RenderTargetView,ColorRGBA,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewUint(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects)	\
+    ( (This)->ClearUnorderedAccessViewFloat(ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) 
+#define ID3D12GraphicsCommandList10_DiscardResource(This,pResource,pRegion)	\
+    ( (This)->DiscardResource(pResource,pRegion) ) 
+#define ID3D12GraphicsCommandList10_BeginQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->BeginQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList10_EndQuery(This,pQueryHeap,Type,Index)	\
+    ( (This)->EndQuery(pQueryHeap,Type,Index) ) 
+#define ID3D12GraphicsCommandList10_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset)	\
+    ( (This)->ResolveQueryData(pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) 
+#define ID3D12GraphicsCommandList10_SetPredication(This,pBuffer,AlignedBufferOffset,Operation)	\
+    ( (This)->SetPredication(pBuffer,AlignedBufferOffset,Operation) ) 
+#define ID3D12GraphicsCommandList10_SetMarker(This,Metadata,pData,Size)	\
+    ( (This)->SetMarker(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList10_BeginEvent(This,Metadata,pData,Size)	\
+    ( (This)->BeginEvent(Metadata,pData,Size) ) 
+#define ID3D12GraphicsCommandList10_EndEvent(This)	\
+    ( (This)->EndEvent() ) 
+#define ID3D12GraphicsCommandList10_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset)	\
+    ( (This)->ExecuteIndirect(pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) 
+#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges)	\
+    ( (This)->AtomicCopyBufferUINT64(pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) 
+#define ID3D12GraphicsCommandList10_OMSetDepthBounds(This,Min,Max)	\
+    ( (This)->OMSetDepthBounds(Min,Max) ) 
+#define ID3D12GraphicsCommandList10_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions)	\
+    ( (This)->SetSamplePositions(NumSamplesPerPixel,NumPixels,pSamplePositions) ) 
+#define ID3D12GraphicsCommandList10_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode)	\
+    ( (This)->ResolveSubresourceRegion(pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) 
+#define ID3D12GraphicsCommandList10_SetViewInstanceMask(This,Mask)	\
+    ( (This)->SetViewInstanceMask(Mask) ) 
+#define ID3D12GraphicsCommandList10_WriteBufferImmediate(This,Count,pParams,pModes)	\
+    ( (This)->WriteBufferImmediate(Count,pParams,pModes) ) 
+#define ID3D12GraphicsCommandList10_SetProtectedResourceSession(This,pProtectedResourceSession)	\
+    ( (This)->SetProtectedResourceSession(pProtectedResourceSession) ) 
+#define ID3D12GraphicsCommandList10_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags)	\
+    ( (This)->BeginRenderPass(NumRenderTargets,pRenderTargets,pDepthStencil,Flags) ) 
+#define ID3D12GraphicsCommandList10_EndRenderPass(This)	\
+    ( (This)->EndRenderPass() ) 
+#define ID3D12GraphicsCommandList10_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes)	\
+    ( (This)->InitializeMetaCommand(pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList10_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes)	\
+    ( (This)->ExecuteMetaCommand(pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) ) 
+#define ID3D12GraphicsCommandList10_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs)	\
+    ( (This)->BuildRaytracingAccelerationStructure(pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) ) 
+#define ID3D12GraphicsCommandList10_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData)	\
+    ( (This)->EmitRaytracingAccelerationStructurePostbuildInfo(pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) ) 
+#define ID3D12GraphicsCommandList10_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode)	\
+    ( (This)->CopyRaytracingAccelerationStructure(DestAccelerationStructureData,SourceAccelerationStructureData,Mode) ) 
+#define ID3D12GraphicsCommandList10_SetPipelineState1(This,pStateObject)	\
+    ( (This)->SetPipelineState1(pStateObject) ) 
+#define ID3D12GraphicsCommandList10_DispatchRays(This,pDesc)	\
+    ( (This)->DispatchRays(pDesc) ) 
+#define ID3D12GraphicsCommandList10_RSSetShadingRate(This,baseShadingRate,combiners)	\
+    ( (This)->RSSetShadingRate(baseShadingRate,combiners) ) 
+#define ID3D12GraphicsCommandList10_RSSetShadingRateImage(This,shadingRateImage)	\
+    ( (This)->RSSetShadingRateImage(shadingRateImage) ) 
+#define ID3D12GraphicsCommandList10_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ)	\
+    ( (This)->DispatchMesh(ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) 
+#define ID3D12GraphicsCommandList10_Barrier(This,NumBarrierGroups,pBarrierGroups)	\
+    ( (This)->Barrier(NumBarrierGroups,pBarrierGroups) ) 
+#define ID3D12GraphicsCommandList10_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef)	\
+    ( (This)->OMSetFrontAndBackStencilRef(FrontStencilRef,BackStencilRef) ) 
+#define ID3D12GraphicsCommandList10_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias)	\
+    ( (This)->RSSetDepthBias(DepthBias,DepthBiasClamp,SlopeScaledDepthBias) ) 
+#define ID3D12GraphicsCommandList10_IASetIndexBufferStripCutValue(This,IBStripCutValue)	\
+    ( (This)->IASetIndexBufferStripCutValue(IBStripCutValue) ) 
+#define ID3D12GraphicsCommandList10_SetProgram(This,pDesc)	\
+    ( (This)->SetProgram(pDesc) ) 
+#define ID3D12GraphicsCommandList10_DispatchGraph(This,pDesc)	\
+    ( (This)->DispatchGraph(pDesc) ) 
+#define ID3D12GBVDiagnostics_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12GBVDiagnostics_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12GBVDiagnostics_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12GBVDiagnostics_GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize)	\
+    ( (This)->GetGBVEntireSubresourceStatesData(pResource,pData,DataSize) ) 
+#define ID3D12GBVDiagnostics_GetGBVSubresourceState(This,pResource,Subresource,pData)	\
+    ( (This)->GetGBVSubresourceState(pResource,Subresource,pData) ) 
+#define ID3D12GBVDiagnostics_GetGBVResourceUniformState(This,pResource,pData)	\
+    ( (This)->GetGBVResourceUniformState(pResource,pData) ) 
+#define ID3D12GBVDiagnostics_GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset)	\
+    ( (This)->GetGBVResourceInfo(pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) ) 
+#define ID3D12GBVDiagnostics_GBVReserved0(This)	\
+    ( (This)->GBVReserved0() ) 
+#define ID3D12GBVDiagnostics_GBVReserved1(This)	\
+    ( (This)->GBVReserved1() ) 
+#define ID3D12Debug_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Debug_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Debug_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Debug_EnableDebugLayer(This)	\
+    ( (This)->EnableDebugLayer() ) 
+#define ID3D12Debug1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Debug1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Debug1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Debug1_EnableDebugLayer(This)	\
+    ( (This)->EnableDebugLayer() ) 
+#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable)	\
+    ( (This)->SetEnableGPUBasedValidation(Enable) ) 
+#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable)	\
+    ( (This)->SetEnableSynchronizedCommandQueueValidation(Enable) ) 
+#define ID3D12Debug2_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Debug2_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Debug2_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags)	\
+    ( (This)->SetGPUBasedValidationFlags(Flags) ) 
+#define ID3D12Debug3_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Debug3_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Debug3_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Debug3_EnableDebugLayer(This)	\
+    ( (This)->EnableDebugLayer() ) 
+#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable)	\
+    ( (This)->SetEnableGPUBasedValidation(Enable) ) 
+#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable)	\
+    ( (This)->SetEnableSynchronizedCommandQueueValidation(Enable) ) 
+#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags)	\
+    ( (This)->SetGPUBasedValidationFlags(Flags) ) 
+#define ID3D12Debug4_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Debug4_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Debug4_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Debug4_EnableDebugLayer(This)	\
+    ( (This)->EnableDebugLayer() ) 
+#define ID3D12Debug4_SetEnableGPUBasedValidation(This,Enable)	\
+    ( (This)->SetEnableGPUBasedValidation(Enable) ) 
+#define ID3D12Debug4_SetEnableSynchronizedCommandQueueValidation(This,Enable)	\
+    ( (This)->SetEnableSynchronizedCommandQueueValidation(Enable) ) 
+#define ID3D12Debug4_SetGPUBasedValidationFlags(This,Flags)	\
+    ( (This)->SetGPUBasedValidationFlags(Flags) ) 
+#define ID3D12Debug4_DisableDebugLayer(This)	\
+    ( (This)->DisableDebugLayer() ) 
+#define ID3D12Debug5_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Debug5_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Debug5_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Debug5_EnableDebugLayer(This)	\
+    ( (This)->EnableDebugLayer() ) 
+#define ID3D12Debug5_SetEnableGPUBasedValidation(This,Enable)	\
+    ( (This)->SetEnableGPUBasedValidation(Enable) ) 
+#define ID3D12Debug5_SetEnableSynchronizedCommandQueueValidation(This,Enable)	\
+    ( (This)->SetEnableSynchronizedCommandQueueValidation(Enable) ) 
+#define ID3D12Debug5_SetGPUBasedValidationFlags(This,Flags)	\
+    ( (This)->SetGPUBasedValidationFlags(Flags) ) 
+#define ID3D12Debug5_DisableDebugLayer(This)	\
+    ( (This)->DisableDebugLayer() ) 
+#define ID3D12Debug5_SetEnableAutoName(This,Enable)	\
+    ( (This)->SetEnableAutoName(Enable) ) 
+#define ID3D12Debug6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12Debug6_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12Debug6_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12Debug6_EnableDebugLayer(This)	\
+    ( (This)->EnableDebugLayer() ) 
+#define ID3D12Debug6_SetEnableGPUBasedValidation(This,Enable)	\
+    ( (This)->SetEnableGPUBasedValidation(Enable) ) 
+#define ID3D12Debug6_SetEnableSynchronizedCommandQueueValidation(This,Enable)	\
+    ( (This)->SetEnableSynchronizedCommandQueueValidation(Enable) ) 
+#define ID3D12Debug6_SetGPUBasedValidationFlags(This,Flags)	\
+    ( (This)->SetGPUBasedValidationFlags(Flags) ) 
+#define ID3D12Debug6_DisableDebugLayer(This)	\
+    ( (This)->DisableDebugLayer() ) 
+#define ID3D12Debug6_SetEnableAutoName(This,Enable)	\
+    ( (This)->SetEnableAutoName(Enable) ) 
+#define ID3D12Debug6_SetForceLegacyBarrierValidation(This,Enable)	\
+    ( (This)->SetForceLegacyBarrierValidation(Enable) ) 
+#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DebugDevice1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DebugDevice1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->SetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->GetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags)	\
+    ( (This)->ReportLiveDeviceObjects(Flags) ) 
+#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DebugDevice_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DebugDevice_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DebugDevice_SetFeatureMask(This,Mask)	\
+    ( (This)->SetFeatureMask(Mask) ) 
+#define ID3D12DebugDevice_GetFeatureMask(This)	\
+    ( (This)->GetFeatureMask() ) 
+#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags)	\
+    ( (This)->ReportLiveDeviceObjects(Flags) ) 
+#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DebugDevice2_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DebugDevice2_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DebugDevice2_SetFeatureMask(This,Mask)	\
+    ( (This)->SetFeatureMask(Mask) ) 
+#define ID3D12DebugDevice2_GetFeatureMask(This)	\
+    ( (This)->GetFeatureMask() ) 
+#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags)	\
+    ( (This)->ReportLiveDeviceObjects(Flags) ) 
+#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->SetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->GetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DebugCommandQueue_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DebugCommandQueue_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State)	\
+    ( (This)->AssertResourceState(pResource,Subresource,State) ) 
+#define ID3D12DebugCommandQueue1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DebugCommandQueue1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DebugCommandQueue1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DebugCommandQueue1_AssertResourceState(This,pResource,Subresource,State)	\
+    ( (This)->AssertResourceState(pResource,Subresource,State) ) 
+#define ID3D12DebugCommandQueue1_AssertResourceAccess(This,pResource,Subresource,Access)	\
+    ( (This)->AssertResourceAccess(pResource,Subresource,Access) ) 
+#define ID3D12DebugCommandQueue1_AssertTextureLayout(This,pResource,Subresource,Layout)	\
+    ( (This)->AssertTextureLayout(pResource,Subresource,Layout) ) 
+#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DebugCommandList1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DebugCommandList1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State)	\
+    ( (This)->AssertResourceState(pResource,Subresource,State) ) 
+#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->SetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->GetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DebugCommandList_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DebugCommandList_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State)	\
+    ( (This)->AssertResourceState(pResource,Subresource,State) ) 
+#define ID3D12DebugCommandList_SetFeatureMask(This,Mask)	\
+    ( (This)->SetFeatureMask(Mask) ) 
+#define ID3D12DebugCommandList_GetFeatureMask(This)	\
+    ( (This)->GetFeatureMask() ) 
+#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DebugCommandList2_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DebugCommandList2_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State)	\
+    ( (This)->AssertResourceState(pResource,Subresource,State) ) 
+#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask)	\
+    ( (This)->SetFeatureMask(Mask) ) 
+#define ID3D12DebugCommandList2_GetFeatureMask(This)	\
+    ( (This)->GetFeatureMask() ) 
+#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->SetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->GetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugCommandList3_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12DebugCommandList3_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12DebugCommandList3_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12DebugCommandList3_AssertResourceState(This,pResource,Subresource,State)	\
+    ( (This)->AssertResourceState(pResource,Subresource,State) ) 
+#define ID3D12DebugCommandList3_SetFeatureMask(This,Mask)	\
+    ( (This)->SetFeatureMask(Mask) ) 
+#define ID3D12DebugCommandList3_GetFeatureMask(This)	\
+    ( (This)->GetFeatureMask() ) 
+#define ID3D12DebugCommandList3_SetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->SetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugCommandList3_GetDebugParameter(This,Type,pData,DataSize)	\
+    ( (This)->GetDebugParameter(Type,pData,DataSize) ) 
+#define ID3D12DebugCommandList3_AssertResourceAccess(This,pResource,Subresource,Access)	\
+    ( (This)->AssertResourceAccess(pResource,Subresource,Access) ) 
+#define ID3D12DebugCommandList3_AssertTextureLayout(This,pResource,Subresource,Layout)	\
+    ( (This)->AssertTextureLayout(pResource,Subresource,Layout) ) 
+#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12SharingContract_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12SharingContract_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12SharingContract_Present(This,pResource,Subresource,window)	\
+    ( (This)->Present(pResource,Subresource,window) ) 
+#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue)	\
+    ( (This)->SharedFenceSignal(pFence,FenceValue) ) 
+#define ID3D12SharingContract_BeginCapturableWork(This,guid)	\
+    ( (This)->BeginCapturableWork(guid) ) 
+#define ID3D12SharingContract_EndCapturableWork(This,guid)	\
+    ( (This)->EndCapturableWork(guid) ) 
+#define ID3D12ManualWriteTrackingResource_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12ManualWriteTrackingResource_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12ManualWriteTrackingResource_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12ManualWriteTrackingResource_TrackWrite(This,Subresource,pWrittenRange)	\
+    ( (This)->TrackWrite(Subresource,pWrittenRange) ) 
+#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12InfoQueue_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12InfoQueue_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit)	\
+    ( (This)->SetMessageCountLimit(MessageCountLimit) ) 
+#define ID3D12InfoQueue_ClearStoredMessages(This)	\
+    ( (This)->ClearStoredMessages() ) 
+#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength)	\
+    ( (This)->GetMessage(MessageIndex,pMessage,pMessageByteLength) ) 
+#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This)	\
+    ( (This)->GetNumMessagesAllowedByStorageFilter() ) 
+#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This)	\
+    ( (This)->GetNumMessagesDeniedByStorageFilter() ) 
+#define ID3D12InfoQueue_GetNumStoredMessages(This)	\
+    ( (This)->GetNumStoredMessages() ) 
+#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This)	\
+    ( (This)->GetNumStoredMessagesAllowedByRetrievalFilter() ) 
+#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This)	\
+    ( (This)->GetNumMessagesDiscardedByMessageCountLimit() ) 
+#define ID3D12InfoQueue_GetMessageCountLimit(This)	\
+    ( (This)->GetMessageCountLimit() ) 
+#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter)	\
+    ( (This)->AddStorageFilterEntries(pFilter) ) 
+#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength)	\
+    ( (This)->GetStorageFilter(pFilter,pFilterByteLength) ) 
+#define ID3D12InfoQueue_ClearStorageFilter(This)	\
+    ( (This)->ClearStorageFilter() ) 
+#define ID3D12InfoQueue_PushEmptyStorageFilter(This)	\
+    ( (This)->PushEmptyStorageFilter() ) 
+#define ID3D12InfoQueue_PushCopyOfStorageFilter(This)	\
+    ( (This)->PushCopyOfStorageFilter() ) 
+#define ID3D12InfoQueue_PushStorageFilter(This,pFilter)	\
+    ( (This)->PushStorageFilter(pFilter) ) 
+#define ID3D12InfoQueue_PopStorageFilter(This)	\
+    ( (This)->PopStorageFilter() ) 
+#define ID3D12InfoQueue_GetStorageFilterStackSize(This)	\
+    ( (This)->GetStorageFilterStackSize() ) 
+#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter)	\
+    ( (This)->AddRetrievalFilterEntries(pFilter) ) 
+#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength)	\
+    ( (This)->GetRetrievalFilter(pFilter,pFilterByteLength) ) 
+#define ID3D12InfoQueue_ClearRetrievalFilter(This)	\
+    ( (This)->ClearRetrievalFilter() ) 
+#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This)	\
+    ( (This)->PushEmptyRetrievalFilter() ) 
+#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This)	\
+    ( (This)->PushCopyOfRetrievalFilter() ) 
+#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter)	\
+    ( (This)->PushRetrievalFilter(pFilter) ) 
+#define ID3D12InfoQueue_PopRetrievalFilter(This)	\
+    ( (This)->PopRetrievalFilter() ) 
+#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This)	\
+    ( (This)->GetRetrievalFilterStackSize() ) 
+#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription)	\
+    ( (This)->AddMessage(Category,Severity,ID,pDescription) ) 
+#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription)	\
+    ( (This)->AddApplicationMessage(Severity,pDescription) ) 
+#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable)	\
+    ( (This)->SetBreakOnCategory(Category,bEnable) ) 
+#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable)	\
+    ( (This)->SetBreakOnSeverity(Severity,bEnable) ) 
+#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable)	\
+    ( (This)->SetBreakOnID(ID,bEnable) ) 
+#define ID3D12InfoQueue_GetBreakOnCategory(This,Category)	\
+    ( (This)->GetBreakOnCategory(Category) ) 
+#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity)	\
+    ( (This)->GetBreakOnSeverity(Severity) ) 
+#define ID3D12InfoQueue_GetBreakOnID(This,ID)	\
+    ( (This)->GetBreakOnID(ID) ) 
+#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute)	\
+    ( (This)->SetMuteDebugOutput(bMute) ) 
+#define ID3D12InfoQueue_GetMuteDebugOutput(This)	\
+    ( (This)->GetMuteDebugOutput() ) 
+#define ID3D12InfoQueue1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->QueryInterface(riid,ppvObject) ) 
+#define ID3D12InfoQueue1_AddRef(This)	\
+    ( (This)->AddRef() ) 
+#define ID3D12InfoQueue1_Release(This)	\
+    ( (This)->Release() ) 
+#define ID3D12InfoQueue1_SetMessageCountLimit(This,MessageCountLimit)	\
+    ( (This)->SetMessageCountLimit(MessageCountLimit) ) 
+#define ID3D12InfoQueue1_ClearStoredMessages(This)	\
+    ( (This)->ClearStoredMessages() ) 
+#define ID3D12InfoQueue1_GetMessage(This,MessageIndex,pMessage,pMessageByteLength)	\
+    ( (This)->GetMessage(MessageIndex,pMessage,pMessageByteLength) ) 
+#define ID3D12InfoQueue1_GetNumMessagesAllowedByStorageFilter(This)	\
+    ( (This)->GetNumMessagesAllowedByStorageFilter() ) 
+#define ID3D12InfoQueue1_GetNumMessagesDeniedByStorageFilter(This)	\
+    ( (This)->GetNumMessagesDeniedByStorageFilter() ) 
+#define ID3D12InfoQueue1_GetNumStoredMessages(This)	\
+    ( (This)->GetNumStoredMessages() ) 
+#define ID3D12InfoQueue1_GetNumStoredMessagesAllowedByRetrievalFilter(This)	\
+    ( (This)->GetNumStoredMessagesAllowedByRetrievalFilter() ) 
+#define ID3D12InfoQueue1_GetNumMessagesDiscardedByMessageCountLimit(This)	\
+    ( (This)->GetNumMessagesDiscardedByMessageCountLimit() ) 
+#define ID3D12InfoQueue1_GetMessageCountLimit(This)	\
+    ( (This)->GetMessageCountLimit() ) 
+#define ID3D12InfoQueue1_AddStorageFilterEntries(This,pFilter)	\
+    ( (This)->AddStorageFilterEntries(pFilter) ) 
+#define ID3D12InfoQueue1_GetStorageFilter(This,pFilter,pFilterByteLength)	\
+    ( (This)->GetStorageFilter(pFilter,pFilterByteLength) ) 
+#define ID3D12InfoQueue1_ClearStorageFilter(This)	\
+    ( (This)->ClearStorageFilter() ) 
+#define ID3D12InfoQueue1_PushEmptyStorageFilter(This)	\
+    ( (This)->PushEmptyStorageFilter() ) 
+#define ID3D12InfoQueue1_PushCopyOfStorageFilter(This)	\
+    ( (This)->PushCopyOfStorageFilter() ) 
+#define ID3D12InfoQueue1_PushStorageFilter(This,pFilter)	\
+    ( (This)->PushStorageFilter(pFilter) ) 
+#define ID3D12InfoQueue1_PopStorageFilter(This)	\
+    ( (This)->PopStorageFilter() ) 
+#define ID3D12InfoQueue1_GetStorageFilterStackSize(This)	\
+    ( (This)->GetStorageFilterStackSize() ) 
+#define ID3D12InfoQueue1_AddRetrievalFilterEntries(This,pFilter)	\
+    ( (This)->AddRetrievalFilterEntries(pFilter) ) 
+#define ID3D12InfoQueue1_GetRetrievalFilter(This,pFilter,pFilterByteLength)	\
+    ( (This)->GetRetrievalFilter(pFilter,pFilterByteLength) ) 
+#define ID3D12InfoQueue1_ClearRetrievalFilter(This)	\
+    ( (This)->ClearRetrievalFilter() ) 
+#define ID3D12InfoQueue1_PushEmptyRetrievalFilter(This)	\
+    ( (This)->PushEmptyRetrievalFilter() ) 
+#define ID3D12InfoQueue1_PushCopyOfRetrievalFilter(This)	\
+    ( (This)->PushCopyOfRetrievalFilter() ) 
+#define ID3D12InfoQueue1_PushRetrievalFilter(This,pFilter)	\
+    ( (This)->PushRetrievalFilter(pFilter) ) 
+#define ID3D12InfoQueue1_PopRetrievalFilter(This)	\
+    ( (This)->PopRetrievalFilter() ) 
+#define ID3D12InfoQueue1_GetRetrievalFilterStackSize(This)	\
+    ( (This)->GetRetrievalFilterStackSize() ) 
+#define ID3D12InfoQueue1_AddMessage(This,Category,Severity,ID,pDescription)	\
+    ( (This)->AddMessage(Category,Severity,ID,pDescription) ) 
+#define ID3D12InfoQueue1_AddApplicationMessage(This,Severity,pDescription)	\
+    ( (This)->AddApplicationMessage(Severity,pDescription) ) 
+#define ID3D12InfoQueue1_SetBreakOnCategory(This,Category,bEnable)	\
+    ( (This)->SetBreakOnCategory(Category,bEnable) ) 
+#define ID3D12InfoQueue1_SetBreakOnSeverity(This,Severity,bEnable)	\
+    ( (This)->SetBreakOnSeverity(Severity,bEnable) ) 
+#define ID3D12InfoQueue1_SetBreakOnID(This,ID,bEnable)	\
+    ( (This)->SetBreakOnID(ID,bEnable) ) 
+#define ID3D12InfoQueue1_GetBreakOnCategory(This,Category)	\
+    ( (This)->GetBreakOnCategory(Category) ) 
+#define ID3D12InfoQueue1_GetBreakOnSeverity(This,Severity)	\
+    ( (This)->GetBreakOnSeverity(Severity) ) 
+#define ID3D12InfoQueue1_GetBreakOnID(This,ID)	\
+    ( (This)->GetBreakOnID(ID) ) 
+#define ID3D12InfoQueue1_SetMuteDebugOutput(This,bMute)	\
+    ( (This)->SetMuteDebugOutput(bMute) ) 
+#define ID3D12InfoQueue1_GetMuteDebugOutput(This)	\
+    ( (This)->GetMuteDebugOutput() ) 
+#define ID3D12InfoQueue1_RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie)	\
+    ( (This)->RegisterMessageCallback(CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) ) 
+#define ID3D12InfoQueue1_UnregisterMessageCallback(This,CallbackCookie)	\
+    ( (This)->UnregisterMessageCallback(CallbackCookie) ) 

+ 91 - 0
src/video/directx/gen_xbox_cmacros.cs

@@ -0,0 +1,91 @@
+/*
+  Simple DirectMedia Layer
+  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+*/
+
+/* Build and run this any time you update d3d12.h/d3d12sdklayers.h! */
+
+using System.IO;
+
+class Program
+{
+    static void GenMacros(string[] input, StreamWriter output)
+    {
+        for (int i = 0; i < input.Length; i += 1)
+        {
+            if (input[i].StartsWith("#define I"))
+            {
+                // Strip out the bad ABI calls, use D3D_CALL_RET instead!
+                if (input[i].Contains("_GetDesc(") ||
+                    input[i].Contains("_GetDesc1(") ||
+                    input[i].Contains("_GetCPUDescriptorHandleForHeapStart(") ||
+                    input[i].Contains("_GetGPUDescriptorHandleForHeapStart(") ||
+                    input[i].Contains("_GetResourceAllocationInfo(") ||
+                    input[i].Contains("_GetResourceAllocationInfo1(") ||
+                    input[i].Contains("_GetResourceAllocationInfo2(") ||
+                    input[i].Contains("_GetResourceAllocationInfo3(") ||
+                    input[i].Contains("_GetCustomHeapProperties(") ||
+                    input[i].Contains("_GetAdapterLuid(") ||
+                    input[i].Contains("_GetLUID(") ||
+                    input[i].Contains("_GetProgramIdentifier(") ||
+                    input[i].Contains("_GetNodeID(") ||
+                    input[i].Contains("_GetEntrypointID("))
+                {
+                    // May as well skip the next line...
+                    i += 1;
+                    continue;
+                }
+
+                // The first line is fine as-is.
+                output.WriteLine(input[i]);
+
+                // The second line, however...
+                i += 1;
+
+                string notThis;
+                if (input[i].LastIndexOf("This,") > -1)
+                {
+                    // Function with arguments
+                    notThis = "This,";
+                }
+                else
+                {
+                    // Function with no arguments
+                    notThis = "This";
+                }
+
+                int lastNotThis = input[i].LastIndexOf(notThis);
+                string alias = input[i].Substring(0, lastNotThis).Replace("lpVtbl -> ", "");
+                string definition = input[i].Substring(lastNotThis).Replace(notThis, "");
+                output.WriteLine(alias + definition);
+            }
+        }
+    }
+
+    static void Main(string[] args)
+    {
+        using (FileStream SDL_d3d12_xbox_cmacros_h = File.OpenWrite("SDL_d3d12_xbox_cmacros.h"))
+        using (StreamWriter output = new StreamWriter(SDL_d3d12_xbox_cmacros_h))
+        {
+            output.WriteLine("/* This file is autogenerated, DO NOT MODIFY */");
+            GenMacros(File.ReadAllLines("d3d12.h"), output);
+            GenMacros(File.ReadAllLines("d3d12sdklayers.h"), output);
+        }
+    }
+}